1. 배치 정규화? 앞 절에선 가중치 초기화를 적절히 설정해서 각 층의 활성화값 분포를 적당히 퍼뜨려 원활한 학습을 유도했다. 이와 달리 배치 정규화는 각 층의 활성화값을 적당히 퍼뜨리도록 강제하는 기법이다. 배치 정규화의 장점은 아래와 같다. 학습 속도를 빠르게 한다. 가중치 초깃값에 크게 의존하지 않는다. 오버피팅을 억제한다. 2. 배치 정규화 알고리즘 배치 정규화는 그 이름과 같이, 학습 시 미니배치 단위로 정규화를 한다. 구체적으로는 한 배치안의 값의 분포를 평균이 0, 분산이 1이 되도록 정규화한다. 수식으로는 위와 같다. 이러한 변환을 활성화 함수의 앞 혹은 뒤에 삽입함으로써 데이터 분포가 덜 치우치게 강제한다. 배치 정규화를 활성화 함수의 앞과 뒤 중 어느 쪽에 삽입할 지에 대한 정답은 없다..
1. 가중치 초기화의 중요성 신경망의 가중치를 어떻게 초기화할지에 따라 학습의 성패가 갈린다. 단순하게 모든 가중치를 0으로 초기화 해보자(정확히는 모든 가중치를 동일한 값으로 설정해보자). 이 신경망은 학습이 제대로 되지 않는다. 그 이유는 오차역전파에서 모든 가중치가 똑같은 값으로 갱신되기 때문이다. 예를들어 2층 신경망이 있다고 하자. 1층과 2층 사이에 모든 가중치가 0이라면, 순전파 때 두 번째 층의 뉴런에 모두 같은 값이 전달된다. 이는 역전파때 두 번째 층의 가중치가 모두 똑같이 갱신된다는 뜻이다. 이는 가중치를 여러 개 갖는 의미를 상실시킨다. 이렇듯 가중치가 고르게 되어버리는 상황을 방지하려면 가중치의 초깃값을 무작위로 설정해야 한다. 2. 은닉층의 활성화값 분포 은닉층의 활성화값(활성화..
1. 확률적 경사 하강법(SGD) SGD는 그라디언트의 방향으로 일정 거리만큼 가는 단순한 매개변수 갱신 방법이다. SGD는 단순하고 구현도 쉽지만, 문제에 따라서 비효율적인 경우가 있다. 아래와 같은 비등방성 함수에서 그렇다. 비등방성 함수란 각 지점에서의 기울기가 전체에서 한 점만을 가리키지 않는 함수라고 이해하면 된다. 함수의 최솟값을 가지는 좌표는 $(0, 0)$이지만, 대부분의 지점에서 기울기는 $(0, 0)$ 방향을 가리키지 않는다. 이 함수에 SGD를 적용해보자. 갱신 경로가 지그재그로, 비효율적인 탐색 결과를 볼 수 있다. 이런 함수에는 SGD 같이 무작정 기울어진 방향으로 진행하는 단순한 방식보다 더 영리한 방법이 필요하다. 또한 SGD가 지그재그로 탐색하는 근본 원인이 기울기 방향이 최..
1. 계산 그래프 오차역전파를 이해하기 위해 계산 그래프를 사용한다. 계산 그래프의 이점은 다음과 같다. 전체 계산이 아무리 복잡해도, 각 노드에서는 단순한 계산에 집중하여 문제를 단순화할 수 있다. 중간 계산 결과를 보관할 수 있다. 역전파를 통해 미분을 효율적으로 계산할 수 있다. 2. 연쇄법칙 역전파는 국소적인 미분을 계산 그래프의 오른쪽에서 왼쪽으로 전달하면서 이루어진다. 국소적 미분을 전달하는 원리는 연쇄법칙(chain rule)에 따른 것이다. 연쇄법칙을 설명하려면 합성 함수부터 시작해야 한다. 합성 함수란 여러 함수로 구성된 함수이다. 예를들어 $y=(x+y)^2$는 $z=t^2$와 $t=x+y$ 두 개의 함수가 합성된 형태이다. 연쇄법칙은 합성 함수의 미분에 대한 성질이며, 합성 함수의 미..
1. 학습 알고리즘 신경망에는 매개변수(가중치, 편향)이 있고, 이를 데이터에 적응하도록 조정하는 과정을 학습이라고 한다. 학습은 다음과 같은 4단계로 수행된다. 1단계 : 미니배치 : 학습 데이터의 일부를 무작위로 가져온다. 선별된 데이터를 미니배치라고 한다. 2단계 : 기울기 산출 : 미니배치의 손실 함수 값을 줄이기 위해, 손실 함수에 대한 각 매개변수의 기울기를 구한다. 3단계 : 매개변수 갱신 : 가중치 매개변수를 기울기 방향으로 아주 조금 갱신한다. 4단계 : 1~3단계를 반복한다. 무작위 확률적으로 골라낸 데이터에 대해 수행하는 경사 하강법이므로, 이를 확률적 경사 하강법이라고 부른다. 2. 그라디언트를 구하는 방법 수치 미분 방식(아주 작은 차분으로 미분)으로 각각의 매개변수의 손실 함수에..
1. 기울기 손실 함수에 대한 모든 매개 변수의 편미분을 담은 벡터를 기울기(gradient)라고 한다. 기울기는 무엇을 의미할까? 위 그림은 기울기에 음수를 붙인 벡터를 시각화한 것이다. 기울기는 함수의 가장 낮은 장소(최솟값)을 가리킨다. 또한 가장 낮은 곳에서 멀어질수록 화살표의 크기가 커진다. 사실 화살표가 반드시 함수의 가장 낮은 장소를 가리킨다고 할 수 없다. 더 정확히 말하자면, 기울기가 가리키는 쪽은 각 장소에서 함수의 출력값을 가장 크게 줄이는 방향이다. 2. 경사 하강법 경사법은 현 위치에서 기울어진 방향으로 일정 거리만큼 이동하는 방법이다. 그 다음 이동을 마친 곳에서 마찬가지로 기울기를 구하고 또 일정 거리만큼 이동하기를 반복한다. 이렇게 하여 함수의 값을 점차 줄이는 것이 경사법이..
1. 배치(batch) 처리 배치 처리는 컴퓨터로 계산할 때 큰 이점을 준다. 두 가지 이유가 있다. 수치 계산 라이브러리 대부분이 큰 배열을 효율적으로 처리하게끔 최적화 되어있다. 느린 I/O를 통해 데이터를 읽는 횟수가 줄어, 빠른 CPU나 GPU로 순수 계산을 수행하는 비율이 높아진다. 2. 데이터 주도 학습 전통적인 기계학습에선 사람이 특징을 설계했지만, 신경망은 이미지에 포함된 중요한 특징까지도 기계가 스스로 학습한다. 그러므로 딥러닝을 종단간(end-to-end) 기계학습이라고 한다. 처음부터 끝까지 데이터에서 목표 결과를 사람의 개입 없이 얻는다는 뜻이다. 3. 손실 함수 신경망 학습에선 현재의 상태를 하나의 지표로 표현한다. 이 지표를 가장 좋게 만드는 가중치 매개변수 값을 탐색한다. 신경..
1. 신경망 앞장에서, AND, OR 게이트의 진리표를 보면 인간이 직접 적절한 가중치를 설정해야 했다. 신경망은 적절한 가중치 값을 데이터로부터 자동으로 학습한다. 본 장에선 신경망의 개요와, 신경망이 입력 데이터를 식별하는 처리 과정을 알아본다. 2. 활성화 함수 퍼셉트론의 동작을 간단히 요약하면 아래와 같다. $h(x)$와 같이 입력 신호의 총합을 출력 신호로 변환하는 함수를 활성화 함수라고 한다. 현재 $h(x)$는 0을 경계로 출력이 바뀌는 계단 함수이다. 그렇기에 퍼셉트론은 활성화 함수로 계단 함수를 이용한다. 다른 활성화 함수를 사용하는 것은 신경망으로 나아가는 길이다. 신경망에서 활성화 함수로 자주 이용했던 시그모이드 함수는 아래와 같다. 3. 시그모이드 함수와 계단 함수의 차이 가장 먼저..
1. 퍼셉트론의 정의 퍼셉트론(perceptron)은 1957년에 고안된 알고리즘이다. 퍼셉트론은 신경망의 기원이다. 퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력한다. 퍼셉트론 신호는 1 또는 0의 두 가지 값을 가진다. 위 그림은 입력으로 2개으 신호를 받은 퍼셉트론이다. 그림의 원을 뉴런 혹은 노드라고 부른다. 입력 신호가 뉴런에 보내질 때는 각각 고유한 가중치가 곱해진다. 가중치가 클수록 해당 신호가 그만큼 더 중요하다는 뜻이다. 뉴런에서 보내온 신호의 총합이 임계값을 넘어설 때만 1을 출력한다. 이를 뉴런이 활성화 되었다고 표현한다. 2. 퍼셉트론의 한계 퍼셉트론의 매개변수 값(가중치, 임계값)을 적절히 정하면 AND, NAND, OR 게이트를 구현할 수 있다. 하지만 두 입력값 중..