[핸즈온 머신러닝] DL 10장

Nahyun Kim·2023년 1월 3일
0

핸즈온 머신러닝

목록 보기
2/5

한 때는 강력한 머신러닝 기술들이 개발되면서 인공 신경망 연구가 침체기에 들어서기도 했었다. 신경망을 훈련시키기 위한 데이터의 양이 늘어나고, 컴퓨터 하드웨어가 크게 발전함에 따라 대규모 신경망을 훈련할 수 있는 여건이 점차 만들어졌다.

Biological Neuron & Artificial Neuron

생물학적 뉴런은 단순하게 동작하지만, 보통은 수십억 개로 구성된 거대한 네트워크로 조직되며, 이는 보통 다른 뉴런 네트워크 수천 개와도 연결된다. 매컬러와 피츠가 이러한 생물학적 뉴런에서 착안하여 단순한 신경망 모델을 제안했는데, 이것이 인공 뉴런이 된다.

Perceptron

Perceptron은 층이 하나뿐인 TLU(threshold logic unit)으로 구성된다. 각 TLU는 모든 입력에 연결되어 있다. 한 층에 있는 모든 뉴런이 이전 층의 모든 뉴런과 연결되어 있을 때 이를 'Fully connected layer' 혹은 'dense layer'라고 부른다.
퍼셉트론의 입력층은 모두 입력 뉴런으로 구성되는데, 보통 이곳에 편향 특성(bias)이 더해진다.

Perceptron의 훈련 알고리즘은 Hebb's rule에서 영감을 많이 받았는데, 이 규칙은 서로 활성화되는 세포가 서로 연결된다, 즉, 두 뉴런이 동시에 활성화될 때마다 이들 사이의 연결 가중치가 증가하는 경향이 있다는 것이라 말한다.

MLP & Back Propagation

퍼셉트론을 여러 개 쌓아올린 인공 신경망을 다층 퍼셉트론(MLP)라고 한다.
다층 퍼셉트론은 input layer, hidden layer, output layer로 구성된다.

hidden layer를 여러 개 쌓아 올린 인공 신경망을 심층 신경망(DNN)이라고 한다. 딥러닝은 심층 신경망을 연구하는 분야이며 조금 더 일반적으로는 연산이 연속하여 길게 연결된 모델을 연구한다.

Backpropagation은 다층 퍼셉트론을 훈련하는 알고리즘이다. 이 알고리즘은 효율적인 기법으로 gradient를 자동으로 계산하는 경사 하강법이다. 네트워크를 두 번(정방향1, 역방향1) 통과하는 것만으로 Backpropagation은 모든 모델 파라미터에 대한 네트워크 오차의 gradient를 구할 수 있다. gradient를 구하고 나면 평범한 경사 하강법을 수행한다.

  • 한 번에 하나의 미니배치씩 진행, 이 과정을 여러 번 반복 (epoch)
  • 정방향 계산
  • 네트워크의 출력 오차 측정 (ground truth와 loss function사용한 출력)
  • 각 출력 연결이 오차에 기여하는 정도 측정 (연쇄법칙 적용)
  • 이전 층의 연결 가중치가 오차에 기여하는 정도 측정
  • 역방향 계산 👉 오차 gradient를 거꾸로 전파함으로써 모든 연결 가중치에 대한 오차 gradient를 측정한다.
  • gradient descent를 수행하여 이전 단계를 통해 계산한 오차 gradient를 사용해 네트워크의 모든 연결 가중치를 수정한다.

정리하면,

  1. 각 훈련 샘플에 대해 역전파 알고리즘이 먼저 예측을 만들고(정방향 계산) 오차를 측정한다.
  2. 역방향으로 각 층을 거치면서 각 연결이 오차에 기여한 정도를 측정한다.(역방향 계산)
  3. 이 오차가 감소하도록 가중치를 조정한다.(경사 하강법 단계)

backpropagation을 잘 작동시키기 위해 다층 퍼셉트론 구조에 중요한 변화를 주었는데, 활성화 함수로 threshold function 대신 logistic(sigmoid)함수를 사용했다. 다른 활성화 함수도 사용될 수 있는데, 대표적으로는 hyperbolic tangent function과 ReLU 함수가 있다.

이러한 다층 퍼셉트론은 회귀 작업과 분류 작업 등 다양하게 활용될 수 있다.

profile
studying computer vision & NLP

0개의 댓글