BraveTiger
CH6. 딥러닝_인공신경망 개요 본문
인공신경망
- 사람의 뇌 속 뉴런의 작용을 본떠 패턴을 구성한 컴퓨팅 시스템
- 분류 및 예측이 가능
- 입력층, 은닉층, 출력층 3개의 층으로 구성
- Single Layer Perceptron(은닉층 없음)
- SLP의 문제점은 XOR문제를 해결할 수 없다는 것!
- XOR문제: 두 값이 같으면 1, 다르면 0을 출력하는 문제
- SLP의 문제점은 XOR문제를 해결할 수 없다는 것!
- Multi Layer Perceptron(은닉층 1개 이상)
- Single Layer Perceptron(은닉층 없음)
- 각 층(Layer)에 node가 여러 개 포함되어 있다.
인공신경망의 학습이란?
- 입력에 대한 올바른 출력이 나오도록 가중치 Weight를 조절하는 것
- 파라미터: 가중치 (Weight) -> 입력이 출력에 미치는 영향
- 하이퍼 파라미터: 학습률(leaning rate), 배치 크기(batch size), hidden layer 수, hiden unit(node) 수
인공신경망의 학습 방법
: 다음과 같은 과정을 n번 반복하여 가장 오류가 적게 발생하는 parameter를 찾도록 학습한다.
1. Forward Propagation(순전파)
: 입력 데이터를 기반으로 신경망을 따라 입력층(Input Layer)부터 출력층(Output Layer)까지 차례대로 변수들을 계산하고 추론(Inference) 한 결과
- 모든 weight의 임의값 초기화
- 모델에 입력값(X)을 입력하여 순전파 연산 진행
- 입력(X), weight를 사용하여 예측 값 구하기
- 예측 값을 활성화 함수로 전달
- 최종 활성화 함수에서 출력값 y^ 계산
2 손실/비용/에러 구하기
- 예측 값 y^과 실제 값 y을 손실함수에 적용하여 오차를 구함
3. Backward Propagation
: 순전파 과정을 통해 나온 오차를 활용하여 각 layer의 가중치(weight)와 편향(bias)을 최적화하는 단계
- 손실함수에 대한 기울기 미분이 발생(연쇄 법칙Chain Rule 사용: 미분과 관련)
- 손실 함수 값을 최소화하는 파라미터를 구하는 과정인 최적화(Optimization)를 거쳐 오차를 최소로 줄일 수 있는 weight와 bias 업데이트
퍼셉트론(Perceptron)의 구조
: 생물학적 뇌의 뉴런을 모방하여 만든 인공신경망의 기본 단위
1. weighted sum
- 입력값과 가중치 곱들의 전체 합 + bias
$X_1W_1 + X_2W_2 + X_3W_3 ... +X_nW_n + bias$
2. Output = Activation Function(weighted sum)
- 입력 신호의 총합을 출력 신호로 변환하는 단계
- 활성화 함수는 네트워크 모델링 기능에 비선형성을 갖도록 함
- Sigmoid
- Hyperbolid Tangent
- Relu
- Leaky Relu
- softmax
=> (X값이 -∞ ~ +∞을 가질 때 y값이 -∞ ~ +∞값을 갖지 않도록 조절하는 역할)
※ Activation Function의 Vanishing Gradient(기울기 소실) 문제
- 다층신경망에서 역전파 알고리즘이 입력층으로 갈수록 Gradient가 점점 작아져 0에 수렴하여, weight가 업데이트되지 않는 현상
- Activation Function으로 sigmoid 함수를 사용할 때 발생
Activation Function
- 입력 신호의 총합을 출력 신호로 변환하는 함수
- 가중치 값을 학습할 때 에러가 적게 나도록 돕는 역할
- 풀고자 하는 문제에 따라 활성화 함수의 선택이 다르며 Layer마다 다르게 사용할 수 있다.
- 항등함수
- y = x
- 계단함수
- y = if x >= 0: 1 x < 0: 0
- 부호함수
- y = if x >= 0: +1 x < 0: -1
- Sigmoid
- $1 \over {1 + e{-x}}$
- Logistic 함수라 불리기도 함
- 선형적인 MLP에서 비선형 값을 얻기 위해 사용
- Hyperbolid Tangent
- sigmoid의 중심값을 0으로 이동한 것
- -1 <= x <= 1
- Relu
- y = if x >= 0 : 1 x < 0 : 0
- 학습이 빠르고 자원 소모가 적은 일반적인 함수
- x < 0인 경우 Dying Relu 현상이 발생
- Leaky Relu
- x < 0인 경우 Dying Relu 현상이 발생을 보완한 방법
- softmax
- $exp(x_i) \over \sum_j{{exp(x_j)}}$
- 각 클래스에 속할 확률 값을 출력
- 모든 출력의 합이 1이 되도록 output을 정규화한 것
- sigmoid의 일반화된 형태로 각 범주에 속할 사후확률을 제공하는 함수
- 항등함수
※ 활성화 함수로 비선형 함수를 사용해야 하는 이유
활성화 함수에는 크게 이진 활성화 함수, 선형 활성화 함수, 비선형 활성화 함수가 있지만, 활성화 함수로 비선형 함수를 사용하는 것이 일반적이다.
- 은닉층에서 이진 활성화 함수를 활성화 함수로 사용할 경우
- 다중 출력이 불가능하다는 문제점이 존재한다.
- 은닉층에서 선형 활성화 함수를 활성화 함수로 사용할 경우
- 역전파가 불가능하고 층(layer)을 깊게 쌓는 의미가 사라진다는 문제점이 존재한다.
Loss Function(Cost Function)
LOSS/COST: 실제 값과 예측 값의 차이로 오차를 구하는 기준을 의미, 손실함수의 궁극적인 목표는 최소가 되도록 하는 weight와 bias를 구하고자 한다.
1. Binary crossentropy(이항 교차 엔트로피)
- 클래스가 2개인 이진 분류기를 사용할 때 사용되는 손실 함수
- 활성화 함수로 Sigmoid를 사용
2. Categorical crossentropy(범주형 교차 엔트로피)
- 출력을 클래스 소속 확률에 대한 예측으로 이애할 수 있는 문제에서 사용(클래스가 2개 이상인 멀티 클래스인 경우)
- 활성화 함수로 Softmax 사용
- Lable이 One_Hot_Encoding 형식으로 제공될 때 사용된다.
3. Sparse Categorical crossentropy(범주형 교차 엔트로피)
- 출력을 클래스 소속 확률에 대한 예측으로 이애할 수 있는 문제에서 사용(클래스가 2개 이상인 멀티 클래스인 경우)
- 활성화 함수로 Softmax 사용
- Lable이 Integer_Encoding 형식으로 제공될 때 사용된다.
4. MSE
- 타겟이 연속값인 회귀 문제에서 사용하는 손실함수
- MAE, RMSE등 다른 회귀 손실 함수도 사용 가능하다.
최적화, Optimization
: 손실함수를 최소화할 수 있는 파라미터를 찾는 것. 즉, 딥러닝 학습단계에서 최적의 파라미터를 찾아내는 것.(최적 = 손실함수의 최소)
손실함수를 최소화할 수 있는 최적의 weight와 bias를 찾는 것.
하지만, 현실을 반영하는 함수는 매우 복잡한 형태이기 때문에 여러 문제점이 있다.
- Learning rate 및 Gradient 부분 값을 적절하게 수정하여 학습 속도를 높이고 안정적인 결과를 얻도록 한다.
- Plateau(평지) 문제를 해결
- zig zag 현상을 해결: w 갱신 행렬의 부호가 동일하여 w 목표점을 지그재그로 찾아가는 현상(미분 값이 양수인 sigmoid, relu 사용시 발생)
- 극소점(Local minimum)을 찾은 뒤 더 이상 학습하지 않는 문제 해결
종류
- Gradient 수정: Momentum, NAG
- Learning rate 수정: Adagrad, Adadelta, RMSProp
- Gradient, Learning rate 수정: Adam, Nadam
인공신경망의 장단점
- 장점
- 변수의 수가 많거나 입/출력변수 간 복잡한 비선형 관계에 유용
- 이상치에 대해 민감하지 않다.
- 입출력변수가 연속형, 이산형인 경우 모두 처리 가능
- 단점
- 결과 해석이 쉽지 않다.(모델 내에서 feature selection과 모델링이 이뤄짐)
- 모델이 복잡하면 시간이 많이 소모되고 과적합에 빠지기 쉬움
- 데이터를 정규화하지 않으면 Local minimum에 빠지기 쉬움
'취업 준비 > AIVLE SCHOOL' 카테고리의 다른 글
CH6. 딥러닝_Multi Layer Perceptron의 Overfitting (0) | 2023.04.25 |
---|---|
CH6. 딥러닝(1) - 딥러닝 개요와 Keras 코드 파헤치기 (2) | 2023.04.25 |
AICE ASSOCIATE 후기와 팁 (0) | 2023.04.25 |
미니프로젝트 3차 회고 (0) | 2023.03.28 |
CH5. 머신러닝_Ensemble(2) - Boosting (0) | 2023.03.28 |