woo0429 2022. 12. 27. 01:44
반응형

지난 강의에서는 perceptron과 mlp가 무엇인지에 대해 배웠따.

MLP는 weights를 우리가 결정하지 않고 데이터로 결정된다. 그리고 이것이 머신러닝의 장점이다.

그러면 최적화하는 방법은 무엇일까?

  1. 변수, 목적함수, 제약 결정
  2. 수학적 형식으로 변환
  3. 최적화된 방법 찾기

먼저 필요한 요소를 정의 해야한다. 가중치와 같은 변수, 시그모이드와 같은 목적함수, 그리고 변수 등을 정의해줘야 한다. 어떤 요소를 사용하는 냐에 따라 결과가 달라질 수 있기 때문에

그리고 수학적 형식으로 정의 해야한다. weights을 선형대수 형태로 해야하고 목적함수의 에러를 최소하게 정의한다.

마지막으로 gradient descent를 이용하여 weights와 bias를 학습시킨다.

weights를 구하는 방법은 다음과 같다.

 

 

계산을 반복하면 시간이 오래걸려도 구할 수 있다. 하지만 계산을 하다보면 변수가 많기 때문에 좋은 방법이라 하기는 힘들다. 그래서 이에 대한 해결방안으로 backpropagation을 이용한다.

Forward propagation은 앞에서 봤던 것 처럼 weights를 임의로 설정한 후 원하는 output이 나올 때까지 무작정 계산을 하는 것이다.

Back propagation은 ouput에서 input 방향으로 가면서 정보를 계산하는 것이다.

Back propagation은 어떻게 역방향으로 가면서 정보를 계산할까?

computational graph(복잡한 문제를 간단한 문제로 생각)를 이용하여 보면 이해하기 쉬울 것이다.

예를들어 슈퍼에서 개당 200원인 사과 2개를 구입하였다. 한개 당 10원인 포장지가 필요하다면 지불액은 얼마일까?

이 문제를 Forward Propagation을 이용하여 풀면 다음과 같다.

 
 

 

정방향으로 계산한다.

하지만 Backpropagation을 이용하여 계산하면

 

 

여러개의 지불액 변화를 구할 수 있다. 특히 chain rule을 이용하여 다양한 매개변수에 대한 편미분을 이용하여 쉽게 계산할 수 있다.

따라서 최적화 과정에서 Forward propagation은 모든 값들을 넣어 계산해야하기 때문에 복잡하고 back propagation은 편미분을 하면 되기 때문에 계산하기 쉬워진다.

sigmoid function은 activation function을 이용한다면 다음과 같이 computational graph가 완성되고 여러가지 정보를 가져올 수 있다.

 

 

최적화 과정을 정리해보자

먼저 Forward Propagation을 이용한다. 임의의 값들을 넣어 계산하고

Back Propagation을 이용하여 감소하는 방향을 결정한다. 여기서 감소 방향은 원하는 값에 가까워지기 위해서이다.

마지막으로 learning rate를 결정하여 원하는 값을 나올 때까지 학습한다.

계산과정이 매우 복잡하지만 파이썬의 tensorflow를 이용하면 간단하게 구할 수 있다.

오기용 교수님의 강의를 듣고 강의노트를 작성한 것이다.

https://adip.hanyang.ac.kr/lecture/%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5-%EC%97%AC%EB%A6%84%ED%95%99%EA%B5%902021

반응형