archive
[4주차 (4)] 딥러닝 학습방법 이해하기 본문
1. 비선형모델 신경망 (Neural Network)
- 비선형 모델 안에는 선형 모델이 그 안에 숨겨져있음
-그 선형 모델과 비선형 함수들의 결합으로 이루어져있다
-각 행벡터 O(i)는 데이터 x(i)와 가중치 행렬W 사이의 행렬곱과 절편 b 벡터의 합으로 표현된다고 가정
-데이터가 바뀌면 결과값도 바뀌게 된다, 출력벡터의 차원은 d에서 p로 바뀌게 된다
-x라는 행벡터가 주어지게 되었을 때, x라는 행벡터를 O라는 행벡터로 선형결합하여 연결하게 될 때, p개의 모델을 만들어야하는데,
-x1에서 출발하는 화살표 p개
-화살표는 p*d개가 필요하다, 이는 가중치 행렬의 원소의 개수가 된다
-즉, 가중치행렬의 각각의 값은 곧 가중치값과 연결되게 된다. 즉, 각각의 화살표들은 이 화살표의 시작점과 끝점에 상응하는 가중치행렬의 대응 원소의 값을 가지게 된다.
-화살표 = w값
-출력벡터 o에 softmax 함수를 합성하면 확률벡터가 되므로, 특정 클래스 k에 속할 확률로 해석할 수 있다.
-이와 같은 문제를 분류 문제라고 한다.
**softmax 함수를 활용해야함!
2. softmax 소프트맥스 연산
-소프트맥스 함수 (softmax function)는 모델의 출력을 확률로 해석할 수 있게 변환해주는 연산
-분류 문제를 풀 때 선형모델과 소프트맥스함수를 결합하여 예측한다.
-즉, 선형 모델에 softmax 함수를 씌우게 되면, 특정 벡터가 어떤 클래스에 속할 확률을 구할 수 있게 된다.
-지수함수를 통해 계산하게 되며, 벡터를 확률벡터로 변환
-이를 통해분류 문제를 풀 때, 현제 모델에서 특정 클래스에 속할 확률을 구해서 학습 시 output 사용
-보통 선형결합의 경우 모든 실수 값을 가질 수 있으며, 이를 확률로 해석하기에는 어려움이 있기 때문에 확률 변환 함수인 소프트맥스 함수를 사용하는 것.
-학습용 데이터로는 소프트맥스 함수를 씌운 확률값이 적절하나, 추론을 할 때에는 one-hot 벡터로 최대값을 가진 주소만 1로 출력하는 연산을 사용하기 때문에 softmax()를 사용하진 않는다.
-즉 학습에는 소프트맥스, 추론에는 원핫을 사용
3.활성함수
-활성함수는 R위에 정의된 비선형 함수로서 딥러닝에서 매우 중요한 개념이다.
-활성함수를 사용하지 않고 딥러닝을 하게 된다면 모델의 출력값은 선형함수와 전혀 다를게 없어짐
-시그모이드 함수나 tanh 함수는 전통적으로 많이 쓰이던 활성함수지만 딥러닝에서는 ReLU 함수를 많이 쓰고 있다.
4. 신경망을 수식으로 분해
-신경망은 선형 모델과 활성함수(activation fuction) 를 합성한 함수
-활성함수는 보통 비선형함수로써, 선형모델이나 행렬곱을 사용하지 않고, 선형모델의 출력값 각각에 적용되는 함수
-softmax 와는 차이가 존재
-softmax는 모든 선형함수의 출력값을 대상으로 모두 고려, 활성함수의 경우에는 다른 주소값의 출력값은 고려하지 않고 오직 해당 주소값의 출력만 고려
-따라서 활성함수의 경우에는 벡터를 인풋으로 받지 않고 하나의 실수값만 인풋으로 받게 된다
-신경망모델에서는 하나의 선형 값을 비선형값으로 변형하여 사용, 그리고 이렇게 변형된 출력값을 우리는 잠재벡터, 혹은 hidden vector, 뉴런, 뉴런벡터 라고 부르게 된다
-선형 모델이 2개 사용, 이층 신경망, 즉 two-layered 신경망 모델이라고 부르게 된다
-선형 모델과 활성 함수를 반복적으로 사용하는 것이 기본 모델이 된다.
-즉, 선형 모델을 반복적으로 사용하되 중간에 활성함수를 반드시 사용해야한다는 것이 신경망의 중요한 핵심이다
-이러한 과정을 위와 같이 2번만 반복하는 것이 아니라 여러번 반복하게 된다면, 다층 퍼셉트론(multi-layer perceptron, MLP) 라고 부르게 되며, 이러한 모델이 오늘날 딥러닝 모델의 가장 기초가 되는 모델이다.
-위와 같은 순차적인 신경망 계산을 순전파 (forward propagation)이라고 부르게 된다.
** 왜 층을 여러개 쌓는가?
이론적으로는 2층 신경망으로도 임의의 연속함수를 근사할 수 있다
그러나 층이 깊을수록 목적 함수를 근사하는데 필요한 뉴런(노드)의 숫자가 훨씬 빨리 줄어들어 좀 더 효율적으로 학습이 가능해진다
층이 얇으면 필요한 뉴런의 수가 기하급수적으로 늘어나기 때문에 넓은 (wide)신경망이 되어야 한다.
(복잡한 패턴을 배우기 위해서는 깊은 신경망모델을 사용해 효율적인 근사가 가능)
(그러나 주의할 점은 층이 깊다고 해서 복잡한 함수 근사는 가능하나 최적화가 쉽다는 것은 아님, 층이 깊어지면 깊어질 수록 학습은 어려워진다는 것이다)
5. 역전파 알고리즘
-딥러닝은 역전파(backpropagation) 알고리즘을 이용하여 각 층에 사용된 파라미터를 학습한다.
-파라미터 :
-선형모델의 경우에 경사하강법 적용 시 한 층에서만 적용하는 원리이기 때문에 gradient 벡터를 동시에 계산할 수 있으나, 딥러닝의 경우에는 순차적으로 각층별로 계산, 한 번에 계산이 불가능
-위의 그림의 붉은색 화살표는, 각 층에서 계산된 gradient 들을 밑 층으로 전달하는 플로우이다.
-역전파 알고리즘은 윗층의 gradient 벡터를 계산한 다음에 밑층으로 역순으로 전파되는 원리라고 이해하면 된다.
-역전파 알고리즘은 합성함수 미분법인 연쇄법칙(chain-rule)기반 자동 미분(auto-differentiation)을 사용한다.
-각 노드의 텐서값(x, y)을 미리 알고있고 기억해야 미분 계산이 가능하므로 forward propagation 보다 메모리 사용량이 많다
본 포스트의 학습 내용은 부스트클래스 <AI 엔지니어 기초 다지기 : 부스트캠프 AI Tech 준비과정> 강의 내용을 바탕으로 작성되었습니다.
'ML_AI > 네이버 부클 AI 엔지니어 기초 다지기 : AI Tech 준비과정' 카테고리의 다른 글
[6주차 (1)] 딥러닝 기초 (0) | 2024.06.01 |
---|---|
[5주차 (1)] 확률론 (0) | 2024.05.25 |
[4주차 (3)] 경사하강법 (0) | 2024.05.20 |
[4주차 (2)] 행렬 (0) | 2024.05.19 |
[4주차 (1)] 벡터 (0) | 2024.05.13 |