"딥러닝 기초 이론"의 두 판 사이의 차이

Pywiki
둘러보기로 가기 검색하러 가기
52번째 줄: 52번째 줄:
  
 
== 가중치의 초기값 ==
 
== 가중치의 초기값 ==
0에 치우치면 미분값이 0이 되기 때문에 훈련이 거의 일어나지 않는다. 이를 기울기 소실이라 부른다. 그렇다고 수를 가운데로 몰면 가중치가 비슷한 값들이 많아, 같은 크기의 훈련값을 갖게 된다. 이러면 뉴런을 여러개 두는 이유가 사라진다.
+
0에 치우치면 미분값이 0이 되기 때문에 훈련이 거의 일어나지 않는다.(몇만번 반복해도 모델이 개선되지 않는 경우가 많다.) 이를 기울기 소실이라 부른다. 그렇다고 수를 가운데로 몰면 가중치가 비슷한 값들이 많아, 같은 크기의 훈련값을 갖게 된다. 이러면 뉴런을 여러개 두는 이유가 사라진다.
  
 
== Xavier ==
 
== Xavier ==
 
때문에 Xavier초기값이 제안되어 쓰인다. 가장 적절한 초깃값을 찾기 위해 앞층 노드의 수에 따라 <math>\frac{1}{\sqrt{n}}</math>의 표준편차를 갖게 설정하는 것이 적절하다 알려져 있다. 이렇게 하면 다음 층까지 적절한 분산으로 전달되고, 훈련이 효율적으로 이루어진다.
 
때문에 Xavier초기값이 제안되어 쓰인다. 가장 적절한 초깃값을 찾기 위해 앞층 노드의 수에 따라 <math>\frac{1}{\sqrt{n}}</math>의 표준편차를 갖게 설정하는 것이 적절하다 알려져 있다. 이렇게 하면 다음 층까지 적절한 분산으로 전달되고, 훈련이 효율적으로 이루어진다.
 +
 +
== He 초기값 ==
 +
Xavier 초기값은 활성화 함수가 선형인 것을 전제로 이끈 결과이다. 따라서 ReLU처럼 선형이 아닌 경우엔 여기에 맞는 초기값을 사용해야 하는데, 이를 찾아낸 카이밍 히의 이름을 따 He 초기값이라 부른다. 앞쪽의 노드가 n개일 때 <math>\frac{2}{\sqrt{n}}</math>의 표준편차를 갖게 분산시킨다. 단순히 ReLU에선 음의 영역이 0이기 때문에 2배 넓게 분포시켰다고 보아도 된다.
 +
 +
= 정규배치화 =
 +
층이 깊어지면서 인풋의 값이 점차 한 지점으로 몰리는 경향이 있어 초기값 설정이 중요했다. 그럼 자연스레 드는 의문은 '층의 끝에서 다시 초기의 정규배치를 갖게끔 조절해주면 되지 않을까?'인데, 실제로 이 방법을 쓰면 초기값 설정에 크게 구애받지 않고, 학습속도를 빠르게 만들어주었다. 초기값에 대한 전략과 정규배치화를 함께 사용하면 빠른 학습속도를 얻을 수 있다.
 +
 +
= 오버피팅 방지 =
 +
 +
== 가중치 감소 ==
 +
훈련을 많이 하다 보면 오버피팅이 일어나기도 한다. 일반적으로 오버피팅은 가중치의 값이 커서 발생하기 때문에 이를 제한하는 전략이다. 가중치 감소를 사용하면 훈련데이터의 정확도가 100%에 이르지 못하지만, 오히려 시험데이터에선 정확도가 올라간다.
 +
 +
== 드롭아웃 ==
 +
신경망이 복잡해지면 가중치 감소만으론 대응하기가 어려워진다고 한다. 이때 사용하는 방법으로, 뉴런을 임의로 삭제하면서 학습하는 방법이다.
 +
 +
학습할 땐 없애고, 추론할 땐 없앴던 비율을 곱하여 출력한다.
 +
 +
기계학습에선 여러 모델의 출력을 평균내어 답을 내는 앙상블학습이 정확도가 높다는 것이 실험적으로 알려져 있는데, 드롭아웃은 여러 모델을 만드는 효과를 한 모델에서 구현한 것이라 보아도 되겠다.
 
[[분류:딥러닝 이론]]
 
[[분류:딥러닝 이론]]

2021년 9월 14일 (화) 04:50 판

1 개요

신경망을 사용해 인공지능을 만드는 방법. 모든 문제를 같은 맥락에서 풀 수 있나는 점에 커다란 이점이 있다.

2 주요 아이디어

2.1 퍼셉트론

1957년에 프랑크 로젠블라트에 의해 고안된 알고리즘. 신경망(딥러닝)의 기원이 되는 알고리즘이다. 딥러닝의 기초 아이디어.

2.1.1 컨셉

입력신호 가 있을 때 가중치 (weight)를 곱해 처리하고 이 값 값이 특정 값을 넘으면 1, 넘지 못하면 0으로 처리하는 방식이다.

이를 통해 AND, OR 등의 진리표를 재현할 수 있으며 컴퓨터가 하는 기초연산이 가능해진다.(수많은 조합으로 같은 결과를 낼 수 있다.)

모두 똑같은 구조인데, 매개변수 의 값만 다르게 함으로써 다른 결과를 얻을 수 있다.

위의 특정 값을 편향(bias)처리하여 가 0보다 작거나 같으면 0, 0보다 크면 1로 처리하기도 한다.

가중치는 입력신호의 중요성을 나타내고, 편향은 얼마나 쉽게 활성화되느냐를 결정한다.

2.1.2 한계

AND, OR연산 등 선형 분리가 가능한 문제에서만 사용할 수 있다.(직선 하나로 값을 구분할 수 있는 문제에서만.) 즉, XOR 문제에선 사용할 수 없는데(직선 2개가 필요), 이를 비선형적이라 한다.

2.2 다층 퍼셉트론

multi layer perceptron. MLP. 마빈 민스키와 시모어 페퍼트가 다층 퍼셉트론으로 XOR 연산이 가능함을 보였다.(애초에 XOR은 2개의 게이트를 이용해 만들 수 있다. 여기에서 모티브를 얻었을진 모르겠지만..) 이처럼 1층의 연산결과를 받아 XOR게이트를 구현할 수 있었다. 이처럼 퍼셉트론을 쌓아 비선형적 처리의 가능성을 보였다.

기본적으로 2진수를 10진수로 변환하는 것이나, 가산하는 과정이나 AND, OR, NAND, XOR 만으로 만들 수 있으니, 이 방법으로 컴퓨터를 표현할 수 있다. 결국 이들만으로 컴퓨터의 일을 수행할 수 있다는 것은 학습을 통해 2층만으로도 컴퓨터를 만들어낼 수 있다는 것이다.

2.3 신경망

2.3.1 활성화함수

activation function. 가 0초과인가 이하인가를 결정하기 위해선 다음과 같이 쓸 수 있다. , 라고 하면 간단해진다. 이때, h(x)는 입력값에 따라 해당 값을 출력으로 넘기기도 하고 0을 반환하기도 한다. 이를 활성화함수라 하는데, 이것이 퍼셉트론에서 신경망으로 넘어가는 길목이다.

상황에 따라, 층마다 다른 활성화 함수를 사용한다.

다양한 활성화 함수에 대해선 다음 문서 '활성화함수'를 참고하자.

2.3.2 컨셉

신경망에서의 연산은 행렬을 이용하여 형태로 나타난다. , , 이처럼 행렬로 나타내면 많은 뉴런의 계산을 넘파이를 이용해 쉽게 해낼 수 있다. b에 해당하는 가중치는 항상 1의 입력을 보내고 여기에 가중치 b를 곱하는 형태로 구현한다.

2.3.3 구현

# 1층 구현.
A1 = np.dot(X, W1) + B1  # 출력값은 각각의 행렬연산으로 이루어진다.
Z1 = sigmoid_function(A1)  # 출력값을 기반으로 활성화함수.

# 2층 구현
A2 = np.dot(Z1, W2) + B2  # 1층에서의 결과가 입력으로 쓰인다.
Z2 = sigmoid_function(A2)

3 가중치

3.1 가중치의 초기값

0에 치우치면 미분값이 0이 되기 때문에 훈련이 거의 일어나지 않는다.(몇만번 반복해도 모델이 개선되지 않는 경우가 많다.) 이를 기울기 소실이라 부른다. 그렇다고 수를 가운데로 몰면 가중치가 비슷한 값들이 많아, 같은 크기의 훈련값을 갖게 된다. 이러면 뉴런을 여러개 두는 이유가 사라진다.

3.2 Xavier

때문에 Xavier초기값이 제안되어 쓰인다. 가장 적절한 초깃값을 찾기 위해 앞층 노드의 수에 따라 의 표준편차를 갖게 설정하는 것이 적절하다 알려져 있다. 이렇게 하면 다음 층까지 적절한 분산으로 전달되고, 훈련이 효율적으로 이루어진다.

3.3 He 초기값

Xavier 초기값은 활성화 함수가 선형인 것을 전제로 이끈 결과이다. 따라서 ReLU처럼 선형이 아닌 경우엔 여기에 맞는 초기값을 사용해야 하는데, 이를 찾아낸 카이밍 히의 이름을 따 He 초기값이라 부른다. 앞쪽의 노드가 n개일 때 의 표준편차를 갖게 분산시킨다. 단순히 ReLU에선 음의 영역이 0이기 때문에 2배 넓게 분포시켰다고 보아도 된다.

4 정규배치화

층이 깊어지면서 인풋의 값이 점차 한 지점으로 몰리는 경향이 있어 초기값 설정이 중요했다. 그럼 자연스레 드는 의문은 '층의 끝에서 다시 초기의 정규배치를 갖게끔 조절해주면 되지 않을까?'인데, 실제로 이 방법을 쓰면 초기값 설정에 크게 구애받지 않고, 학습속도를 빠르게 만들어주었다. 초기값에 대한 전략과 정규배치화를 함께 사용하면 빠른 학습속도를 얻을 수 있다.

5 오버피팅 방지

5.1 가중치 감소

훈련을 많이 하다 보면 오버피팅이 일어나기도 한다. 일반적으로 오버피팅은 가중치의 값이 커서 발생하기 때문에 이를 제한하는 전략이다. 가중치 감소를 사용하면 훈련데이터의 정확도가 100%에 이르지 못하지만, 오히려 시험데이터에선 정확도가 올라간다.

5.2 드롭아웃

신경망이 복잡해지면 가중치 감소만으론 대응하기가 어려워진다고 한다. 이때 사용하는 방법으로, 뉴런을 임의로 삭제하면서 학습하는 방법이다.

학습할 땐 없애고, 추론할 땐 없앴던 비율을 곱하여 출력한다.

기계학습에선 여러 모델의 출력을 평균내어 답을 내는 앙상블학습이 정확도가 높다는 것이 실험적으로 알려져 있는데, 드롭아웃은 여러 모델을 만드는 효과를 한 모델에서 구현한 것이라 보아도 되겠다.