본문 바로가기
머신러닝

[딥러닝] 뉴럴 네트워크 Part. 8 - 옵티마이저 (Optimizer)

by Gom Guard 2018. 3. 29.

이전 까지의 내용 

  • 이전 글에서는 각 층의 출력값 자체를 안정화하는 방법인 배치 정규화를 다루고 학습식을 개선할 필요성에 대해 살펴보았습니다. 이번 글에서는 학습식을 어떻게 개선해나가고 있는지에 대해 살펴보겠습니다.

  • 전체 내용은 SlideShare 에서 한번에 보실 수 있으며 youtube 로도 볼 수 있습니다.



Optimizer 

  • Optimization 이라는 단어는 수학적으로 많이 사용되는 단어입니다. 수리 계획 또는 수리 계획 문제라고도 하고 물리학이나 컴퓨터에서의 최적화 문제는 생각하고 있는 함수를 모델로 한 시스템의 에너지를 나타낸 것으로 여김으로써 에너지 최소화 문제라고도 부르기도 합니다. 

  • 딥러닝에서 Optimization 은 학습속도를 빠르고 안정적이게 하는 것이라고 말할 수 있습니다.

협곡에서 옵티마이저별 경로

말안장점에서 옵티마이저별 경로



  • 최근까지 개선된 여러 옵티마이저들이 어떻게 오차의 최저점을 찾아가는지 그래프로 형상화한 이미지 입니다.



배치별로 학습하기 

  • 가장 기초적인 학습식 ( Gradient Descent ) 입니다. Error 를 구할 때 전체 데이터를 고려해서 구하는 방법입니다. 전체 데이터를 고려해서 1회 학습했을 때 1 epoch 이라고 부릅니다. 그런데 전체 데이터가 1억건 10억건이 되는 상황에서 전체를 고려해서 한 번씩 가중치를 수정하는 것은 시간이 너무 오래걸렸습니다. 

  • 그래서 1억건의 데이터라면 1천만 건씩 나누어서 학습을 진행하자. 는 아이디어를 통해서 나온 학습방법이 Stochastic Gradient Descent 입니다.


  • Stochastic 방법을 사용해서 기존 방법보다 빨라지기는 했지만 만족할만한 수준은 아니었습니다. 또한 Cost 의 최소점이 아닌 극소점을 찾은 뒤 더 이상 학습이 되지 않는 현상이 발생하기 시작했습니다.



Optimizer 발전 과정 






실전에 적용하기 

  • Perceptron 을 만들고 이를 여러개 쌓아 복잡한 문제를 풀 수 있는 Multi Layer Perceptron 도 제작했습니다. MLP 가 학습하는 과정에서 문제가 될 수 있는 부분들도 모두 개선했고 느린 속도 또한 Optimizer 의 개선을 통해 해결했습니다. 이제 MLP 가 고양이를 구분할 수 있는지 살펴볼까요.


  • 추후 코드를 통해 살펴보는 글을 올릴 예정입니다만, 개와 고양이를 학습한 모델은 고양이를 고양이라고 잘 분류하는 것 같습니다.


  • 하지만 고양이른 좌로 90도 틀어서 분류를 시켜보면 어떻게 될까요. 고양이가 아닌 잘못된 결과를 도출합니다.


  • 다음 글에서는 왜 이런 결과가 나오는지, MLP 의 문제점은 무엇이고 이를 어떻게 개선해 나가는지에 대해 살펴보겠습니다.


다음 글 - CNN Part. 1 : MLP 의 문제점과 CNN






부족한 블로그에 방문해 주셔서 감사합니다.

잘못된 부분이나 질문이 있으시면 

댓글로 말씀해주세요.


금방 확인하고 피드백 드리겠습니다.


좋은 하루 되세요. ^^


댓글7