티스토리 뷰
이전 까지의 내용
이전 글에서는 MLP 를 통해 XOR Gate 를 풀어내는 과정을 살펴보았습니다. 이번 글에서는 MLP 가 어떻게 수많은 parameter 들을 학습하는 지에 대해서 살펴보겠습니다.
전체 내용은 SlideShare 에서 한번에 보실 수 있으며 youtube 로도 볼 수 있습니다.
MLP 가 학습하는 방법 - 역전파
Perceptron 은 사람의 뉴런을 모방하여 만들어냈습니다. 연구자들은 MLP 의 수많은 parameter 들을 학습시키기 위해서 사람의 학습과정을 다시 한 번 모방했습니다.
자유투를 연습하는 영상입니다. 맨 앞의 분은 학습을 마치셔서 던지는 족족 슛을 성공하지만 뒤 쪽의 분들은 실패하고 다시 던지는 과정을 반복하고 있습니다.
던진 공이 골대의 좌측으로 가서 튕겨나오면 다시 던질 때는 조금 우측으로, 너무 낮게 던졌으면 조금 더 높게 던지면서 어떻게 던져야 슛을 성공하는지를 배워나갑니다.
이것을 MLP 학습과정에 적용해보면 어떻게 될까요?
만든 모델이 계산한 값이 정답보다 작으면 좀 더 크게 나올 수 있게 parameter 들을 수정하고, 정답보다 크면 좀 더 작게 나올 수 있게 parameter 들을 수정하는 과정. 다시말해 계산 값과 정답의 차이를 작게 만들어 나가는 과정이 학습과정이라고 할 수 있습니다. 이 과정을 수식으로 표현해보면 다음과 같습니다.
새로운 w 는 기존 w 에서 수정값을 빼는 것입니다. 수정값은 lerning rate, gradient, cost function 으로 구성되어 있는데 하나하나 알아보겠습니다.
차이를 계산하는 방법 - Cost Function
차이를 계산하는데도 방법이 있습니다. 단순히 차이를 구할수도 있고, 차이들을 제곱해서 평균내는 방법도 있고, 더 복잡한 수식을 사용하여 구하는 방법도 있습니다만 본 포스트에서는 가장 많이 사용되는 2가지 Function 에 대해 살펴보겠습니다.
가장 기본적인 오차함수 입니다. 최소제곱법이라고도 불리는 Minimum Squared Error (MSE) 는 가장 직관적이며 벌써 하고계신 방법일 수도 있습니다. 각 값들의 차이를 제곱해서 평균을 내는 방법입니다. 제곱하지 않으면 부호가 존재하기 때문에 차이가 상쇄될 수 있습니다. 오차를 제곱해서 합하면 이런 왜곡을 방지할 수 있고 더 큰 차이일 수록 더 크게 반영되는 장점 또한 가지고 있습니다.
두 번째로 알아 볼 Cost Function 은 Averaged Cross Entropy Error 입니다. 이 함수는 분류 문제에 많이 사용하는 방법입니다. 분류 문제의 경우 정답이 One-hot 인코딩 되어 있는 경우가 대부분입니다.
One-hot 인코딩이란 하나의 값만 1 이고 나머지는 0 인 표기방법인데, 예를 들어 개와 고양이를 표기할 때 개는 [ 1, 0 ] , 고양이는 [ 0, 1 ] 로 표기하는 방법입니다.
따라서 정답은 0 과 1 로 구성되어 있고 계산값은 log 함수에 넣습니다. 만약 정답이 0 이라면 y*log(y_hat) 값은 0 일 것입니다. 또한 정답이 1 이라면 오차는 log (y_hat) 이고, 계산값인 y_hat 이 정답인 1에 가까워 질 수록 log(1) = 0 에 가까워 지기 때문에 전체 오차는 0으로 근접하는 것을 알 수 있습니다. log (0.5) 처럼 1보다 작은 수에 log 함수를 취하면 음수가 나오기 때문에 전체 식에 -1 을 곱해주는 것 또한 알 수 있습니다.
Learning Rate & Gradient
학습을 나타내는 수식입니다. 한 번에 얼마나 학습할지를 정해주는 Learning Rate 와 Cost 를 줄이는 방향을 나타내는 Gradient 만 구한다면 학습을 할 수 있습니다.
Gradient 표기의 뜻은 총 Error 에 weight 가 얼마나 영향을 끼치는가 입니다. 이를 알기 위해선 기초적인 미분 방법을 아셔야 합니다. 웹이나 youtube 에 기초 미분이라고 검색해보시면 여러 강좌가 있으니 잘 맞는 강의를 수강하시면 좋을 것 같습니다.
새로운 Activation Function
학습을 위한 Cost Function 도 찾았고 어떻게 학습을 할 수 있는지에 대한 방법도 찾았습니다. 하지만 문제가 하나 있습니다. Perceptron 에서 사용하던 Step Function 은 Gradient 가 어느 위치에서든 0이라는 사실입니다.
이를 해결하기 위해서 연구자들은 Step Function 과 동일하게 출력값이 0 과 1 사이에 있으면서 미분가능한 함수를 찾았습니다.
0 과 1 사이로 출력하면서 미분가능한 함수 Sigmoid Function 입니다. 이제 학습식를 풀기 위한 모든 준비를 마쳤습니다.
다음 시간엔 이 식들과 함수들을 가지고 MLP 가 학습하는 과정을 한 단계씩 살펴보겠습니다.
부족한 블로그에 방문해 주셔서 감사합니다.
잘못된 부분이나 질문이 있으시면
댓글로 말씀해주세요.
금방 확인하고 피드백 드리겠습니다.
좋은 하루 되세요. ^^
'머신러닝' 카테고리의 다른 글
[딥러닝] 뉴럴 네트워크 Part. 5 - 새로운 활성화 함수 (4) | 2018.03.25 |
---|---|
[딥러닝] 뉴럴 네트워크 Part. 4 - 역전파 (backpropagation) (26) | 2018.03.24 |
[딥러닝] 뉴럴 네트워크 Part. 2 - 멀티 레이어 퍼셉트론 (3) | 2018.03.19 |
[딥러닝] 뉴럴 네트워크 Part. 1 - 새로운 머신러닝 (4) | 2018.03.18 |
[머신러닝] 의사결정트리 (Decision Trees) (6) | 2017.12.04 |
- Total
- Today
- Yesterday
- 캠핑장추천
- 자연힐링
- 강원도여행
- 계곡캠핑
- 글램핑
- Koreancuisine
- 가평여행
- 여름캠핑
- sql
- 반려견캠핑
- SeoulTravel
- 캠핑초보
- 백준
- 영월캠핑
- 커플여행
- 머신러닝
- 파이썬
- 서울근교캠핑
- 가족캠핑
- 강원도캠핑
- bukhansannationalpark
- Oracle
- 알고리즘
- 가평캠핑
- 가족여행
- 영월여행
- 카카오
- python
- 여름휴가
- 여름휴가추천
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |