본문 바로가기
멋쟁이사자처럼 AI School 8기(fin)/TIL(Today I Learn)

[멋쟁이사자처럼 AI스쿨] TIL(23.4.10) 딥러닝

by #FF0000 2023. 4. 10.

 

 

17주차 학습 목표

1) 기본 네트워크에 대한 동작 방식 학습

2) 심층신경망(DNN), Fully Connected Network, Densely Connected Network

3) 합성곱신경망(CNN) => 이미지, 텍스트 다 사용가능하지만 주로 이미지 분류에 사용

4) 순환신경망(RNN) => 순서가 있는 데이터, 시계열데이터, 자연어처리 등에 주로 사용

 

딥러닝 => 비정형(이미지, 영상, 텍스트, 음성)데이터에 대한 피처를 추출할 때 알고리즘 내부에서 추출

 

CNN(Convolutional Neural Network)

합성곱신경망, 시각적 이미지를 분석하는 데 사용, 현재 가장 많이 사용되고 있는 알고리즘

RNN(Recurrent Neural Network)의 약자로,

순환 신경망, 입력과 출력을 시퀀스 단위로 처리하는 시퀀스(Sequence) 모델

 

 

모델이 얼마나 잘 예측했는지에 대한 실제값과 예측값을 계산해서 loss 손실 값을 봅니다.

회귀 => Square Loss

분류 => Cross Entropy Loss

 

회귀 모델에서 loss 측정 시 Absolute Error 보다는 주로 Square loss를 사용

 

초기화된 가중치는 입력이 반복됨에 따라 더욱 적합한 값을 가질 수 있도록 첫 예측값 Y와 진짜 타깃 Y의 오차를 최소화해야 한다. 이를 위해 손실함수(Loss Function)로 그 오차를 구하고, 이러한 오차를 줄이기 위해 최적화함수(Optimizer Function)를 사용하여 가중치를 최적화할 수 있도록 적절하게 조절하고 이 값을 토대로 다음 계층의 입력값을 활성화함수(Activation Function)로 계산하여 다음 입력으로 사용. 이를 반복하면 딥러닝의 신경망 모델을 최적화시키게 되는 것

 

활성화 함수(Activation Function)

인공신경망 내부에서 입력받은 데이터를 근거로 다음 계층으로 출력할 값을 결정하는 기능을 수행.

활성화함수는 신경망을 구성할 때 설정하며 각각의 레이어를 정의할 때 세부적인 함수를 선택. relu, sigmoid

 

기울기 소실

가중치를 업데이트하는 과정에서 뒤로 갈수록 가중치가 잘 업데이트 되지 않는 현상

신경망의 활성함수의 도함수 값이 계속 곱해지다 보면 가중치에 따른 결과값의 기울기가 0이 되어, 경사 하강법을 이용할 수 없게 되는 문제

 

 

순전파와 역전파

순전파 : 인공 신경망에서 입력층 -> 출력층 방향으로 예측값의 연산이 진행되는 과정

역전파 : 순전파와 반대로 출력층에서 입력층 방향으로 계산하면서 가중치를 업데이트 다층 퍼셉트론 학습에 사용되는 통계적 기법!

 

활성화 함수

인공 신경망에서 입력을 변환하는 함수 신경망에 비선형성(non-linearity)을 더해주어 데이터를 설명할 수 있게 해줌 Sigmoid, tanh, ReLU, Leaky ReLU 등

 

기울기 소실

깊은 인공신경망을 학습할 때 역전파 과정에서 입력층으로 갈수록 기울기가 점점 작아져 최적의 모델을 찾을 수 없게 되는 문제 기울기 소실 문제 완화를 위해 은닉층의 활성화 함수로 ReLU나 LeakyReLU를 사용한다.

 

딥러닝의 학습방법

출력값과 실제값을 비교하여 그 차이를 최소화하는 가중치와 편향의 조합 찾기 가중치는 오차를 최소화하는 방향으로 모델이 스스로 탐색(역전파)

-> 알맞은 손실함수를 선정해야 함! 알맞은 손실함수를 찾아 최소화하기 위해 경사하강법 고안

 

손실함수 : 예측값과 실제값의 차이. 손실함수의 함수값이 최소화되게 하는 가중치와 편향을 찾는 것이 목표 경사하강법 : 손실함수의 현재 위치에서 오차가 줄어드는 방향으로 가중치를 움직이며 최솟값을 찾음 옵티마이저(최적화 함수) : 최적화 방법을 결정해주는 방식으로, 경사하강법에 기반을 둠

 

분류의 손실함수

이항분류 : BinaryCrossentropy

다항분류 : CategoricalCrossentropy, CategoricalHinge, Hinge 등

회귀의 손실함수 CosineSimilarity, Huber, LogCosh, MAE, MAPE 등

 

 

Optimizer

데이터와 손실함수를 기반으로 모델이 업데이트 되는 방식 경사하강법 : 손실함수의 현재 위치에서 조금씩 손실이 낮아지는 쪽으로 가중치를 움직이며 최솟값을 찾는 방법

 

최적화 함수 : 손실함수를 최소화하는 방향으로 가중치를 갱신하는 알고리즘 경사하강법에 기반을 둔 옵티마이저로 SGD, RMSProp, Adam등이 있음

 

모델 컴파일하기

model.compile(optimizer=‘Adam’, loss=‘categorical_crossentropy’, metrics=[‘accuracy’]) 모델을 컴파일할 때 옵티마이저, 손실함수, 평가지표를 설정한다