일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 성내동장어
- #링글후기
- 링글리뷰
- 링글
- 해외취업컨퍼런스
- 영어로전세계와소통하기
- 강동구장어맛집
- 링글경험담
- 총각네장어
- 스몰토크
- #영어공부
- 장어랑고기같이
- CommunicateWiththeWorld
- 오피스밋업
- 링글커리어
- 둔촌역장어
- 소통챌린지
- #Ringle
- 화상영어
- Ringle
- #링글
- 영어회화
- #영어발음교정
- 영어공부
- 영어시험
- #nlp
- 뉴노멀챌린지
- 영어공부법
- #직장인영어
- #체험수업
- Today
- Total
Soohyun’s Machine-learning
신경망에 대해 이해한 것 본문
feedforward NN으로 해보자 (굳이 신경망이 아니라 feedforward NN이라고 쓰는 이유는, 신경망에 backpropagation 형태도 있기 때문)
먼저 x 라는 값이 있다. 그리고 y라는 label (일종의 정답지)이 있다. 그리고 Weight (가중치)이 있으며, bias (편향)이 있다.
이 x라는 매트릭스 (array, 벡터, 행렬.. 어떤 형태든지간에 일단은 floating point든 integer든 숫자들의 집합)가 Weight과 곱해진다.
weight 값을 그럼 어떻게 줘야 하느냐. 그냥 numpy의 random.randn / random.uniform / random.normal 등을 써서 랜덤한 값을 줄 수도 있고..
tensorflow를 써도 numpy와 비슷하게 해서 랜덤값을 줄 수 있다. Pytorch는 아직 잘 모르겠지만 아마 비슷한 형태이지 않을까 싶다.
랜덤말고 어떤 값을 주고 싶다면 He 초기값이나 Xavier 초기값을 주면 된다. 얘가 이미지 넷에서 큰 역할을 한 애들이라는 것만 알고 있다.
공식 : y = x * W
bias는 일단 제외했다. 아직 얘가 왜 있는가에 대한 정확한 이해가 되지 않았다.
x의 형태(shape)는 Weight과 bias의 형태에 영향을 끼친다. (shape을 맞춰줘야 한다. 그런데 이거 맞추기가 정말 까다로운 것 같다)
x = np.array([1, 2, 3])
y의 형태는 one-hot encoding이라는 방법으로 할 수도 있고 (해당 index, 즉 위치 정보를 반환), 얘의 확률을 반환할 수도 있다.
어쨌든 x * W를 해서 나온 값과 y (label)을 비교한다. 이때 사용되는 것이 loss function ( =cost function )이다.
loss function으로는 MSE (mean-squared error) 또는 CEE (cross-entropy error)가 있다. error는 차분인가.. 뭐 그런 단어로도 쓰이는 것 같으나 비전공자인 나로서는 그냥 실제값과 예측값간의 차이로 이해하는게 훨씬 좋은 것 같다. 더 직관적이기도 하고.
(예전에 gaussian loss라는 단어를 봤는데, 얘가 의미하는게 정확하게 어떤건지 모르겠다. 아마 이 cost function과 관련있는 듯 한데...)
강의때 가장 많이 들은걸로는 mean-squared error (이거 발음이 좋다 ㅎㅎ)인데, 예측값과 실제값을 뺀 다음에 제곱하고 그걸 평균내준 값이다. 그 평균값이 높으면 이걸 낮춰줘야 하는데, 그런 이유로 사용되는 것이 gradient descent 알고리즘이다. (이게 정확하게 맞는 말인지는 모르겠다.) 이 gradient descent 알고리즘 중에서는 Adam optimizer가 가장 많이 사용되며, RMSProp (Adagrad), Adam, SGD 등등도 있다.
그렇게 해서 나온 값을 넣고 minimize (평균값이 줄어들 수 있도록 해주는 것) 해준다.
그러면 알아서 optimization이 되는데 이게 내부에서 도는 것인지 아니면 따로 weight과 bias로 넣어줘야 하는가는 잘 모르겠다. (내부 로직을 알아야 하는 부분이니까)
여기 곱셈에서 gradient descent를 위한 위치를 얼마만큼 움직일가를 결정하는 것이 learning rate 이다.
'Machine Learning > misc' 카테고리의 다른 글
용어 이해 (0) | 2017.10.13 |
---|---|
신경망 뼈대 구축하기 (0) | 2017.10.13 |
머신러닝 잡다 정보 (0) | 2017.10.09 |
머신러닝 자료 링크들 (0) | 2017.10.09 |
텐서플로 GPU / 윈 10 설치 (0) | 2017.09.17 |