본문 바로가기
Programming/Deep learning

Linear Regression 의 cost 최소화 알고리즘의 원리 설명

by OKOK 2018. 1. 16.

가설의 값과 실제값의 차이를 제곱하고 이것을 총 더하고 데이터의 갯수로 나누었습니다. 최소화 시키는 더불유와 비의 값을 가지고 구해보자 입니다. 리니어 리그레션의 목표가 되겠습니다. 설명을 쉽게하기 위해서 가설에 대해서서 간단하게 하였습니다. 오케이 변수하나를 줄이고 계산해보도록 하겠습니다.  


더블유가 1이면 코스트는 0이지요. 더블유가 0일때, 더블유가 2일때, 오케이요. 더블유 값을 구한다음에, 코스트 함수를 구한 다음에 와이의 축에 대해서 코스트 평션이라고 하고 더블류 라고 했을떄, 2차 함수가 되는군요. 오케이요. 이것의 최소화되는 값을 찾는 것입니다. 이것은 여기서 2차 함수에서 미분하면 되겠습니다. 미분되는 값이 0이되는 값이면 됩니다. 그것이 gradient descent algorithm 이라는 것입니다. 코스트 함수를 최소화합니다. 최소화 문제에 사용됩니다. 오케이요. 경사가 가장 낮은 곳으로 내딛습니다. 그런다음에 계속 경사가 있는 쪽으로 내려갑니다. 어느 시점에 바닥에 도착합니다. 아주 간단한 알고리즘입니다. 이것이 디센트 알고리즘입니다. 경사도가 없기 때문에 0에서 머무르게 됩니다. 오케이. 


여느 점에서든 시작할 수 있습니다. 더블유를 바꿉니다. 바꾼다음에, 코스트를 줄이게 도비니다. 그 때의 경사도를 계산해서 반복합니다. 항상, 최저점에 도달할 수 있다는 것이 알고리즘의 장점입니다. 예, 미분이요. 미분이 주어진 그래프의 경사도를 구하는 것입니다. 포멀하게 가겠습니다. 미분을 적용하기 쉽게 하기 위해서 2를 왜적습니다. 현재있는 더블유에서 러닝레이트 상수라고 가정합니다. 0.1 정도 되는 값에 대해 코스트 함수를 미분하는 것입니다. 그점의 기울기를 구하는 것입니다. 아하 오케이요. 그래프에 대해서 이해를 하였습니다. 기본적인 수식에 대해서 알아가도록 합니다.  생략을 시키면 전형적인 더블유엥 대해서 원하는 디센트 알고리즘이 완성되는 것입니다. 여러번 실행시키면서 더블유 값이 변화되면 그값이 바로 처음의 코스트 최소화하는 것을 구하는 것입니다. 웹사이트에 들어가서 미분을 계산하는 것을 계산하면 됩니다. 오케이. 수식을 적용시키면 됩니다. 적용하고 설명했던, 알고리즘에 대해서 보겠스니다. 더블류 비라고 함수로 주었을 때, 이것이 바로 비용함수 입니다. 3차원으로 그려볼 수 있습니다. 원하는 것. 


처음의 시작점이 다른 것입니다. 다른 쪽으로 내려옵니다. 이렇게 된다면 알고리즘이 잘 도착하지 않지요. 2개의 변수가 있기 때문입니다. 다행이도 이것의 코스트 함수는 가설을 그리게 되면 이런 형태의 밥기릇을 콘벡스 함수라고 부릅니다. 어느 점에서 시작하든지 간에 도작하는 점이 같습니다. 이런 경우에는 콘벡스 함수라는 가정이 있어야 하네요. 코스트 펑션을 설계할 때, 모양이 콘벡스 함수 인지 알아야 합니다. 


15분 수업하고, 15분정도 실습을 통해서 하도록 하고 있습니다. 오케이요. 직접 텐서 플로우를 설명하기 전에. 한번도 설명하도록 하겠습니다. 간략하게 된것 코스트 함수를 보는 것인데요. 이부분은 생략하돌고 하겠습니다 비용함수는 차의 평균이 되겠습니다. 더블유의 함수가 됩니다. 코스트 함수는 이렇게 됩니다. 비용 최적화가 최저가 되는 더블유가 되는 죄ㅓ 입니다. 오케이. 코스트가 어떻게 생겼을까 보는 것입니다. 텐서플로우를 보는 것입니다. 오케이. 팹플로우립을 사용하도록 합니다. 아하 이것을 저렇게 임포트하는 것이군요. 오케이요.  경사면 따라가기에 굉장히 간편합니다. 최소화하는 것은 더블유가 1인것 입니다. 오케이. 이 값을 찾는 것입니다. 이 부분을 자세하게 보면, 미분을 사용할 것입니다. 그 이유는 한 점에서의 기울기를 나타냅니다. 그래서 그 기울기를 보고, 플러스입니다. 이 기울기를 뺴기가 됩니다. 오케이 더블유는 이렇게 이렇게 되어 있습니다. 그래디언트 디센트 알고리즘을 적용하도록 하겠습니다.