문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 기계학습 (문단 편집) === 학습 알고리즘: [[경사하강법|경사/기울기 하강법(Gradient Descent)]] === 특히 지도학습에서, 말은 학습이라고 써놨으니 거창하지만, 그 원리는 데이터에 맞춰서 오차값을 최소화하면서 회귀식을 만드는 것이다. 오차함수가 오목(concave)/볼록(convex)함수라는 전제하에, 반드시 최소점이 존재하므로, 이를 찾아내는 알고리즘이 바로 경사 하강법이다. 기울기는 아주 특별한 의미를 지니는 벡터장인데, '''방향도함수가 최대의 변화를 갖는 방향이 바로 기울기가 가리키는 방향이기 때문이다.'''[* 여러 가지 방법으로 이를 접근할 수 있다. 전미분의 정의를 가지고 이해할 수도 있고, 백터 스칼라곱의 기하학적 정의를 가지고도 이해할 수도 있다.] 따라서, '''오차함수가 오목(concave)/볼록(convex)함수라는 전제하에, 시작 위치를 잘 고르고 기울기의 반대 방향으로 계속 내려가다 보면 최소점을 언젠가는 찾아낼 수 있다.'''[* [math(y = x^{2})] 같은 경우가 대표적인 예이다. 0보다 큰 임의의 x값에서 출발한 뒤, 계속해서 기울기의 반대 방향으로 내려가다 보면 언젠가는 (0, 0)에 도달한다.] 과거에는 인공신경망 학습에 경사 하강법을 적용할 때 여러 허들이 존재하였다. 대표적으로 기울기가 '''사라지는(?)''' Vanishing Gradient Problem이 있었다. 보통 각 노드는 비선형성을 추가하기 위해 활성함수를 사용하는데, 대표적으로 sigmoid 함수가 있다. 이 함수의 특징은 어떤 x값이 들어와도 0~1 사이의 값을 내는데, 문제는 각 노드별 편미분값을 구하기 위해 chain rule을 이용하여 back propagation을 할 때 생긴다. 즉, 1 미만의 값이 지속적으로 곱해지며 전달되므로, 어느 순간에는 매우 0에 가까워지며, 결과적으로 컴퓨터의 부동소수점 연산으로 인하여 마치 기울깃값이 '사라져' 버리는 즉 0이 되어버린다. 그러면 그 노드보다 앞에 있는 노드들은 0만 전달받으므로 더 이상 업데이트가 불가능 즉 학습이 되지 않았다. 그러나 최근에는 이러한 문제를 완화하는 활성함수가 많이 개발되어 큰 문제가 되지는 않는다. 반드시 절대적인 최소점이 존재하지 않는 문제도 우려되었다. 무수히 많은 극솟값들 사이에서 계속해서 더 적은 극솟값을 향해 계산이 멈추지 않는 문제가 생기는데[* 똑같이 [math( y = (x - 1)(x - 2)(x - 3) )]를 예로 들어서, 임의로 1보다 적은 x값을 가지고 기울기의 반대 방향으로 계속 하강하다 보면 끊임없이 밑으로 간다.] 이 경우 임의의 값을 가지고 루프를 멈추어야 한다. 하지만 보통 경사 하강법을 적용하는 목적함수는 상한 혹은 하한값을 갖는 함수로 설계하므로 경사를 따라 무한히 오르거나 내려가는 문제는 없다. 한때 기울기를 따라 수렴하는 중 최소점이 아닌 임의의 극소점에서 수렴하는 문제(local optima)가 경사 하강법의 난제로 여겨졌다.[* [math( y = (x - 1)(x - 2)(x - 3) )] 같은 경우, 시작지점을 x = 5 같은 데로 고르고 기울기의 반대 방향으로 하강하면 약 (2.58, -0.38)이라는 극솟값에서 멈추게 된다.] 그러나 심층학습모델처럼 차원이 높은 벡터를 다루는 모델이 이러한 부분 극소점을 가질 확률은 매우 낮고, 과거 부분 극소점으로 여겨진 것들이 실제는 경사가 매우 완만한 saddle point이어서 완만한 경사로 인해 학습이 지체되는 것이므로 학습률 가속을 통해 학습을 진전할 수 있다는 것이 최근의 주류 인식이다. 자세한 내용은 [[딥 러닝]], [[인공신경망]] 참조. 이것 자체를 이용해서 무언가에 대한 예측이나 글자체 인식에 대한 답을 뱉어내는 것이 아니고, 이것을 이용해서 글자체 인식, 안면 인식 등의 작업을 행하는 알고리즘들을 학습시킨다. 경사하강법도 다양한 Optimizer를 사용하여 Converge(수렴) 속도를 가속시킬 수 있다. 가장 기본적인 것은 SGD (Stochastic Gradient Descent)이고, 여기에 Momentum을 추가하여 loss를 변화 속도가 아니라 변화 '''가속도'''로 사용할 수 있다. Nesterov Momentum 등도 존재하며, RMSProp이나 Adam처럼 기존에 존재하던 Optimizing 방식을 합친 것들도 자주 사용된다. 다만 논문에서는 SGD + Momentum이 많이 사용되는데, (엄밀하게 밝혀진 것은 아니지만) Cosine Learning rate annealing이나 LR boost, 그리고 Learning rate decay 등을 사용해서 수렴 속도를 정밀하게 조절할 수 있어서 그렇다는 설이 있다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기