티스토리 뷰
이전 까지의 내용
이전 글에서는 각 층의 출력값 자체를 안정화하는 방법인 배치 정규화를 다루고 학습식을 개선할 필요성에 대해 살펴보았습니다. 이번 글에서는 학습식을 어떻게 개선해나가고 있는지에 대해 살펴보겠습니다.
전체 내용은 SlideShare 에서 한번에 보실 수 있으며 youtube 로도 볼 수 있습니다.
Optimizer
Optimization 이라는 단어는 수학적으로 많이 사용되는 단어입니다. 수리 계획 또는 수리 계획 문제라고도 하고 물리학이나 컴퓨터에서의 최적화 문제는 생각하고 있는 함수를 모델로 한 시스템의 에너지를 나타낸 것으로 여김으로써 에너지 최소화 문제라고도 부르기도 합니다.
딥러닝에서 Optimization 은 학습속도를 빠르고 안정적이게 하는 것이라고 말할 수 있습니다.
말안장점에서 옵티마이저별 경로
최근까지 개선된 여러 옵티마이저들이 어떻게 오차의 최저점을 찾아가는지 그래프로 형상화한 이미지 입니다.
배치별로 학습하기
가장 기초적인 학습식 ( Gradient Descent ) 입니다. Error 를 구할 때 전체 데이터를 고려해서 구하는 방법입니다. 전체 데이터를 고려해서 1회 학습했을 때 1 epoch 이라고 부릅니다. 그런데 전체 데이터가 1억건 10억건이 되는 상황에서 전체를 고려해서 한 번씩 가중치를 수정하는 것은 시간이 너무 오래걸렸습니다.
그래서 1억건의 데이터라면 1천만 건씩 나누어서 학습을 진행하자. 는 아이디어를 통해서 나온 학습방법이 Stochastic Gradient Descent 입니다.
Stochastic 방법을 사용해서 기존 방법보다 빨라지기는 했지만 만족할만한 수준은 아니었습니다. 또한 Cost 의 최소점이 아닌 극소점을 찾은 뒤 더 이상 학습이 되지 않는 현상이 발생하기 시작했습니다.
Optimizer 발전 과정
학습식을 보면 수정할 수 있는 부분이 Learning Rate 와 Gradient 부분이라는 것을 알 수 있습니다. 그래서 Optimizer 의 발전 과정은 어떤 부분을 수정하느냐에 따라 나누어집니다.
Gradient 를 수정한 Momentum, Nag
Learning Rate 를 수정한 Adagrad, RMSProp, AdaDelta
이 두 종류의 장점을 합한 Adam, Nadam 으로 구성됩니다.
이 과정을 수리적으로 뛰어나게 설명한 블로그들이 있어 링크를 남깁니다.
실전에 적용하기
Perceptron 을 만들고 이를 여러개 쌓아 복잡한 문제를 풀 수 있는 Multi Layer Perceptron 도 제작했습니다. MLP 가 학습하는 과정에서 문제가 될 수 있는 부분들도 모두 개선했고 느린 속도 또한 Optimizer 의 개선을 통해 해결했습니다. 이제 MLP 가 고양이를 구분할 수 있는지 살펴볼까요.
추후 코드를 통해 살펴보는 글을 올릴 예정입니다만, 개와 고양이를 학습한 모델은 고양이를 고양이라고 잘 분류하는 것 같습니다.
하지만 고양이른 좌로 90도 틀어서 분류를 시켜보면 어떻게 될까요. 고양이가 아닌 잘못된 결과를 도출합니다.
다음 글에서는 왜 이런 결과가 나오는지, MLP 의 문제점은 무엇이고 이를 어떻게 개선해 나가는지에 대해 살펴보겠습니다.
다음 글 - CNN Part. 1 : MLP 의 문제점과 CNN
부족한 블로그에 방문해 주셔서 감사합니다.
잘못된 부분이나 질문이 있으시면
댓글로 말씀해주세요.
금방 확인하고 피드백 드리겠습니다.
좋은 하루 되세요. ^^
'머신러닝' 카테고리의 다른 글
[딥러닝] 컨볼루션 뉴럴 네트워크 Part. 1 - MLP 의 문제점과 CNN (19) | 2018.03.30 |
---|---|
[딥러닝] 뉴럴 네트워크 Part. 7 - 배치 정규화 (0) | 2018.03.28 |
[딥러닝] 뉴럴 네트워크 Part. 6 - 가중치 초기화 (2) | 2018.03.27 |
[딥러닝] 뉴럴 네트워크 Part. 5 - 새로운 활성화 함수 (4) | 2018.03.25 |
[딥러닝] 뉴럴 네트워크 Part. 4 - 역전파 (backpropagation) (26) | 2018.03.24 |
- Total
- Today
- Yesterday
- 가평캠핑
- 백준
- 영월여행
- 커플여행
- 가족캠핑
- 여름휴가추천
- 카카오
- bukhansannationalpark
- 캠핑초보
- 강원도캠핑
- 강원도여행
- 가평여행
- 글램핑
- 여름휴가
- python
- 알고리즘
- 머신러닝
- 파이썬
- 계곡캠핑
- sql
- Koreancuisine
- 가족여행
- 캠핑장추천
- 자연힐링
- 반려견캠핑
- SeoulTravel
- 여름캠핑
- 영월캠핑
- 서울근교캠핑
- Oracle
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |