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

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

by #FF0000 2023. 4. 11.

 

딥러닝 학습 개요

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

2) 심층신경망(DNN), Fully Connected Network(완전연결신경망), Densely Connected Network(밀집신경망)

3) 합성곱신경망(CNN) => 주로 이미지 분류에 사용. (이미지, 텍스트, 정형데이터) 

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

 

 

flatten -> 2차원 이미지를 1차원으로 만들어줌

dense -> unit의 개수 (하이퍼 파라미터)

 

 

네트워크를 깊게 쌓으면 대체적으로 성능이 좋아지나, 과적합 문제 발생 가능.

dropout, 여러가지 전처리, batch 사용

 

 

기울기소실 문제는 네트워크를 깊게 쌓았을 때 back propagation 과정에서 발생

기울기소실(Gradient Vanishing)

인공 신경망 학습, 역전파 과정에서 입력층으로 갈 수록 기울기(Gradient)가 점차적으로 작아지는 현상 발생.

입력층에 가까운 층들에서 가중치들이 업데이트가 제대로 되지 않으면 결국 최적의 모델을 찾을 수 없게 됨

 

 

딥러닝에서 사용하는 대표적인 활성화함수

Sigmoid

- Logistic 함수

- 입력 데이터를 0과 1 사이의 값으로 출력하는 미분가능한 연속성을 가진 함수

 

ReLU

- 음수 값은 버리고 양수는 y=x 형태로 입력 값을 그대로 출력하는 함수

- x > 0 이면 기울기가 1인 직선이고 x<0 이면 함수값이 0이된다.

 

Tanh

- 입력 데이터를 -1 과 1 사이의 값​으로 데이터의 평균이 0이다.

- 함수의 중심값을 0으로 옮겨 sigmoid의 최적화 과정이 느려지는 문제를 해결

 

손실 함수(Loss function)

- 회귀 : MSE, MAE 등등 ..

- 분류 : - 이진 분류 : binary_crossentropy

- 다중 분류 : - one-hot 형태 일 경우: [0, 1, 0, 0] : categorical_crossentropy

- 정답값이 0, 1, 2, 3, 4 와 같은 ordinal한 형태일 때 : sparse_categorical_crossentropy

 

 

 

Sigmoid

- 입력 데이터를 0과 1 사이의 값

- Gradient Vanishing 현상이 발생할 우려가 크다.

 

Softmax

- 다중 분류 예제에서 주로 사용하는 함수

- 분류할 클래스 개수만큼 각 클래스에 속할 확률값 반환

- 입력값을 0~1 사이의 값으로 모두 정규화하고, 출력 값 총합계가 1이 되도록 하는 함수

 

 

Dropout

- 모델 성능을 비교하여 서로 연결된 연결망(layer)에서 0부터 1 사이의 확률로 뉴런을 제거(drop)하는 기법.

- 일부 노드를 제거하고 사용.

 

callback

- 모델 학습 도중 모델의 상태를 모니터링하고, 특정 이벤트가 발생할 때 적절한 동작을 수행할 수 있게 설정해주는 기능

 

 

 

loss => 0 에 가까울 수록 모델의 예측력이 높은 것으로 판단

분류 => 엔트로피

회귀 => MSE

 

batch_size 
분류 모델에서 너무 작을 때 클래스 수가 불균형 하면 제대로 학습되지 못하는 문제가 발생
큰 데이터셋에서는 학습 속도를 줄일 수도 있음


DataLoader
: 데이터셋에서 미니배치를 생성
- 데이터셋을 받아와서 데이터를 미니배치로 나누고, 이를 모델에 입력으로 제공


미니 배치(Mini Batch)
전체 데이터를 더 작은 단위로 나누어서 해당 단위로 학습하는 개념


PyTorch에서 신경망 모델을 구성하는 방법
1. Sequential 모듈 사용
2. nn.Module을 상속받는 사용자 정의클래스 사용


torch.FloatTensor()
: 입력된 텐서의 데이터 타입을 32비트 부동소수점(torch.float32)으로 변경