인공지능 딥러닝

박영욱·2023년 4월 29일
1

딥러닝을 알아보자!
->딥러닝의 구조를 살펴보면,,

딥러닝을 자세히 알려면 기초적인 단어뜻은 알아야겠지??

딥러닝의 구성 요소

입력층= 데이터를 받아들이는 층.

은닉층= 모든 입력 노드부터 입력 값을 받아 가중합을 계산하고, 이 값을 활성화함수에 적용하여 출력층에 전달하는 층.

출력층= 신경망의 최종 결괏값이 포함된 층.

가중치= 노드와 노드 간 연결 강도. 즉 입력 값이 연산 결과에 미치는 영향력을 조절하는 요소를 말함.

바이어스= 가중합에 더해 주는 상수로, 하나의 뉴런에서 활성화 함수를 거쳐 최종적으로 출력되는 값을 조절한느 역할을 함.

가중합 또는 전달 함수= 가중치와 신호의 곱을 합한 것.

활성화 함수= 신호를 입력받아 이를 적절히 어리하여 출력해 주는 함수이며, 전달 함수에서 전달받은 값을 출력할 때 일정 기준에 따라 출력 값을 변화시키는 비선형 함수.

손실 함수= 가중치 학습을 위해 출력 함수의 결과와 실제 값 간의 오차를 측정하는 함수.

활성화함수

시그모이드(sigmoid)

  • 선형 함수의 결과를 0~1사이에서 비선형 형태로 변형.
  • 주로 로지스틱 회귀와 같은 분류 문제를 확률적으로 표현하는 데 사용.
  • 기울기 소멸 문제(vanishing gradient problem)가 발생하여 딥러닝 모델에서는 잘 사용하지 않음.

하이퍼볼릭 탄젠트(Hyperbolic tangent)

  • 선형 함수의 결과를 -1~1사이에서 비선형 형태로 변형
  • 시그모이드에서 결과값의 평균이 0이 아닌 양수로 편향된 문제를 해결하는 데 사용했지만, 기울기 소멸 문제는 여전함.

렐루(Relu)

  • 입력(x)이 음수일 때는 0을 출력하고, 양수일 땐느 x를 출력
  • 경사 하강법(gradient descent)에 영향을 주지 않아 학습 속도가 빠르고, 기울기 소멸 문제가 발생하지 않는 장점이 있음.
  • 일반적으로 은닉층에서 사용되며, 하이퍼볼릭 탄제트 함수 대비 학습 속도가 6배나 빠름.
  • 문제는 음수 값을 입력 받으면 항상 0을 출력하기 때문에 학습 능력이 감소한다.

리키 렐루(Learky Relu)

  • 입력 값이 음수이면 0이 아닌 0.001처럼 매우 작은 수를 반환.

딥러닝 학습: 문제점과 해결 방안

  • 딥러닝의 핵심은 활성화 함수가 적용된 여러 은닉층을 결합하여 비선형 영역을 표현하는 것.
  • 다음 그림과 같이 활성화 함수가 적용된 은닉층 개수가 많을 수록 데이터 분류가 잘되고 있음을 볼 수 있음.

은닉층이 많을수록 과적합, 기울기 소멸, 성능 저하 문제가 발생

과적합 문제 발생

과적합은 over-fitting이라 부르며 오버피팅은 훈련 데이터를 과하게 학생해서 발생한다.
일반적으로 훈련 데이터는 실제 데이터의 이룹분이며 예측값과 실제 값 차이인 오차가 감소하지만, 검증 데이터에 대해서는 오차가 증가할 수 있다.
오버피팅은 훈련 데이터에 대해 과하게 학습하여 실제 데이터에 대한 오차가 증가하는 현상을 의미한다.

이러한 과적합을 방지하기 위해서는 드롭아웃을 사용한다.
드롭 아웃은 학습 과정 중 임의로 일부 노드를 학습에서 제외시킴.

파이토치에서 드롭아웃을 구현하는 예시 코드
class DropoutModel(torch.nn.Module):
def init(self):
super(DropoutModel, self).init()
self.layer1=torch.nn.Linear(784,1200)
self.dropout1=torch.nn.Dropout(0,5)------>//50%의노드를 무작위로 선택하여 사용하지 않겠다는 의미를 뜻함.
self.layer2=torch.nn.Linear(1200,1200)
self.dropout2=torch.nn.Dropout(0,5)
self.layer3=torch.nn.Linear(1200,10)

def forward(self,x):
x=F.relu(self.layer1(X))
x=self.dropout1(X)
x=F.relu(self.layer2(X))
x=self.dropout2(X)
return self.layer3(x)

기울기 소멸 문제 발생

  • 은닉층이 많은 신경망에서 주로 발생한다.
  • 출력층에서 은닉층으로 전달되는 오차가 크게 줄어들어 학습이 되지 않는 현상
  • 즉, 기울기가 소멸되기 때문에 학습되는 양이 '0'에 가까워져 학습이 더딕 진행되다 오차를 더 줄이지 못하고 그 상태로 수렴하는 현상.
  • 기울기 소멸 문제는 시그모이드나 하이퍼볼릭 탄젠트 대신 렐루 활성화 함수를 사용하면 해결할 수 있음.
    업로드중..

다음에 계쏙 ~

profile
Medical AI

0개의 댓글