●●○상황 적용구조
XOR을 두 직선으로 분해한다.
직선 A: x1 + x2 - 0.5 > 0
직선 B: -x1 - x2 + 1.5 > 0
이 두 조건으로 XOR을 만드는 방법은 무엇인가?
둘 중 하나만 참인 영역을 고른다. 두 직선이 서로 배타적인 반평면을 정의하기 때문이다.
두 반평면은 겹치는 영역이 있어 배타적이지 않다. 그리고 둘 중 하나만 참인 영역은 XOR과 다른 집합이다.
두 부등식의 좌변을 그대로 더한 값을 1.5로 자른다.
두 식을 그대로 더하면 상수 1만 남아 입력에 무관한 값이 된다. 정보가 사라진다.
직선 A를 통과한 결과를 다시 직선 B에 입력으로 넣는다.
두 직선은 나란히 놓이는 은닉 뉴런 둘이지 직렬로 이어지는 두 층이 아니다. 같은 입력을 각자 받는다.
정답두 조건이 동시에 참인 영역을 고른다. 그 영역이 정확히 XOR이 1인 두 점이다.
두 입력이 모두 1인 점은 앞 조건은 통과하지만 뒤에서 걸리고, 모두 0인 점은 반대다. 은닉 뉴런 둘이 각각 직선을 긋고 출력 뉴런이 그 둘을 곱으로 묶는 구조다.
해설
직선 하나로 못 가르는 문제도 직선 두 개를 조합하면 갈린다. 앞 조건은 OR에 해당하고 뒤 조건 은 NAND에 해당하는데, 두 입력이 모두 1인 점은 앞은 통과하지만 뒤에서 걸리고 모두 0인 점은 반대다. 남는 것은 정확히 XOR이 1인 두 점뿐이다. 중간 층의 뉴런 두 개가 각각 직선을 긋고 출력 뉴런이 그 둘을 동시에 참인 조건으로 묶는 구조이고, 이 중간 층을 은닉층이라 부른다. 사람이 교차항을 설계해 넣어주던 일을 은닉층이 대신한 셈이다. 교차항을 직접 만드는 우회로도 있기는 하지만 그것은 어떤 조합이 필요한지 사람이 미리 알아야 한다는 뜻이고, 특성이 수백 개로 늘어나면 그 판단이 불가능해진다.
이 내용 다시 읽기 →●●○상황 적용계산
입력 3개, 은닉 4개, 출력 1개인 신경망이다. 층마다의 계산은 다음과 같다.
z = W·a + b
학습해야 할 파라미터는 모두 몇 개인가?
정답21개다. 첫 층에 4×3 가중치와 4 편향, 둘째 층에 1×4 가중치와 1 편향이다.
가중치 행렬의 크기는 언제나 현재 층 뉴런 수 곱하기 이전 층 뉴런 수다. 행렬의 각 행이 뉴런 하나의 가중치 벡터인 셈이다.
16개다. 가중치만 세면 12개와 4개이고 편향은 학습 대상에서 빠진다.
편향도 경사하강법으로 함께 갱신되는 학습 대상이다. 문턱의 위치를 정하는 값이라 빠뜨릴 수 없다.
8개다. 층마다 뉴런 수만큼의 가중치와 편향 하나씩이면 된다.
뉴런 하나가 이전 층의 모든 뉴런과 연결되므로 뉴런당 가중치가 이전 층 뉴런 수만큼 필요하다.
24개다. 입력층에도 가중치와 편향이 붙는다.
입력층은 원본 특성을 그대로 받는 자리라 학습할 파라미터가 없다. 파라미터는 층 사이의 연결에 붙는다.
해설
층이 몇 개든 각 층이 하는 계산은 같다. 이전 층의 출력에 가중치 행렬을 곱하고 편향을 더한 뒤 활성화 함수를 통과시킨다. 층 하나가 곧 뉴런 여러 개이므로 가중치는 벡터가 아니라 행렬이 되고, 크기는 언제나 현재 층 뉴런 수 곱하기 이전 층 뉴런 수다. 현재 층의 뉴런 하나가 이전 층의 모든 뉴런과 연결되므로 뉴런당 가중치가 이전 층 뉴런 수만큼 필요하고 그런 뉴런이 현재 층 개수만큼 있기 때문이다. 행렬의 각 행이 뉴런 하나의 가중치 벡터인 셈이다. 편향은 현재 층 뉴런 수만큼이다. 형상 오류의 상당수가 이 순서를 뒤집어 만들면서 생긴다. 라이브러리에 따라 저장 순서가 반대인 경우도 있으므로 값을 꺼내 볼 때 확인해야 한다.
이 내용 다시 읽기 →●●●분석과 판단판단
범용 근사 정리는 은닉층 하나에 뉴런이 충분하면 임의의 연속 함수를 원하는 정밀도로 근사할 수 있다고 말한다.
그런데 XOR을 은닉 뉴런 2개로 풀어보면 시드를 30번 바꿔도 4번만 정확도 1.0에 닿고, 8개로 늘리면 28번 닿는다.
이 결과가 정리에 대해 말해주는 것은 무엇인가?
은닉 뉴런 2개로는 XOR을 표현할 수 없으므로 정리의 조건인 충분함을 만족하지 못한 것이다.
은닉 뉴런 둘이면 두 직선을 그을 수 있어 XOR을 표현할 수 있다. 실제로 30번 중 4번은 찾아냈다.
정답정리가 그런 가중치의 존재만 말할 뿐 경사하강법이 그 값에 도달한다는 보장은 하지 않는다는 것이다.
표현할 수 있다는 것과 최적화가 실제로 그 해를 찾아낸다는 것은 다른 문제다. 여유 있게 뉴런을 두면 도달 확률이 올라간다는 점도 이 구분에서 나온다.
정리가 시그모이드에 대한 것이라 다른 활성화 함수에서는 성립하지 않는다는 것이다.
활성화 함수를 바꿔도 비슷한 결과들이 알려져 있다. 여기서 갈리는 것은 함수 종류가 아니라 최적화의 성공 여부다.
은닉 뉴런이 많을수록 근사 오차가 작아지므로 정리가 정밀도의 하한을 준다는 것이다.
정리는 원하는 정밀도에 도달할 수 있다고 말할 뿐 뉴런 수와 오차의 관계를 주지 않는다. 여기서 달라진 것도 오차가 아니라 도달 확률이다.
해설
범용 근사 정리는 은닉층 하나에 뉴런이 충분하면 임의의 연속 함수를 원하는 정밀도로 근사할 수 있다고 말한다. 주의할 점은 이 정리가 그런 가중치의 존재만 말한다는 것이다. 어떻게 찾는지는 말하지 않고 경사하강법이 실제로 그 값에 도달한다는 보장도 없다. 은닉 뉴런 2개로도 XOR을 표현할 수 있지만 대부분의 초기값에서 실패하고, 8개로 늘리면 대부분 성공하는 실험이 그 구분을 보여준다. 여기에 더해 충분함의 크기가 현실적으로 감당 못 할 수준일 수도 있다. 특정 함수족에서는 얕은 한 층으로 표현하려면 뉴런이 지수적으로 필요한 반면 층을 나누면 훨씬 적게 든다는 결과들이 알려져 있고, 딥러닝이 넓은 쪽 대신 깊은 쪽을 택한 근거가 여기에 있다.
이 내용 다시 읽기 →●●○상황 적용진단
반달 데이터에 ReLU 신경망을 구성만 바꿔가며 학습했다.
은닉 (2,) 0.850
은닉 (8,) 0.845
은닉 (16, 8) 0.970
뉴런을 네 배로 늘렸는데 제자리이던 정확도가 층을 하나 더 얹자 오른 이유는 무엇인가?
층을 쌓으면 파라미터 수가 늘어 데이터를 더 많이 기억할 수 있기 때문이다.
파라미터 수만 보면 뉴런을 옆으로 늘려도 늘어난다. 갈리는 것은 개수가 아니라 경계가 꺾일 수 있는 자리의 수다.
정답ReLU 경계는 직선 조각을 이어 붙인 모양인데 층을 쌓는 쪽이 조각 수를 훨씬 빠르게 늘리기 때문이다.
은닉 뉴런 2개면 꺾이는 곳이 한 군데뿐이고 8개로 늘려도 세 군데에 그쳐 큰 줄기가 그대로다. 층을 얹으면 꺾이는 곳이 열 몇 군데로 늘어 경계가 반달 사이를 파고든다.
층이 둘이면 두 번째 층이 첫 번째 층의 오차를 보정하는 잔차 학습이 일어나기 때문이다.
잔차를 이어받는 구조는 부스팅의 방식이다. 신경망의 층은 오차가 아니라 앞 층의 출력을 입력으로 받는다.
은닉 뉴런이 8개일 때 과적합이 시작되어 정확도가 떨어졌다가 층을 늘리며 회복된 것이다.
0.850과 0.845는 사실상 같은 수준이라 하락으로 읽을 값이 아니다. 두 구성 모두 경계의 표현력이 부족한 상태다.
해설
ReLU를 쓰는 신경망의 결정 경계는 언제나 직선 조각을 이어 붙인 모양이다. 은닉 뉴런이 2개면 꺾이는 곳이 한 군데뿐이고 8개로 늘려도 세 군데로 느는 데 그쳐, 두 반달을 비스듬히 가로지르는 큰 줄기가 그대로 남는다. 정확도가 제자리인 이유다. 층을 하나 더 얹으면 꺾이는 곳이 열 몇 군데로 늘면서 경계가 반달 사이를 파고들고 정확도가 크게 오른다. 뉴런을 옆으로 늘리는 것보다 층을 쌓는 쪽이 조각 수를 훨씬 빠르게 불린다는 뜻이고, 얕은 한 층으로 표현하려면 뉴런이 지수적으로 필요하다는 이론적 결과가 세는 것도 이 조각 수다. 물론 조각이 많을수록 좋은 것은 아니다. 표현력이 커지면 훈련 데이터의 잡음까지 따라가는 위험도 함께 커진다.
이 내용 다시 읽기 →●●●분석과 판단구조
뉴런 하나의 계산에서 편향 항을 빼고 가중합만 남겼다.
z = w₁x₁ + w₂x₂ + ... + wₙxₙ
이 상태에서 표현할 수 없게 되는 것은 무엇인가?
출력의 부호를 뒤집는 경계다. 편향이 없으면 가중치가 양수 방향으로만 학습된다.
가중치는 음수도 자유롭게 가질 수 있다. 부호를 뒤집는 것은 편향 없이도 가능하다.
정답원점을 지나지 않는 경계다. 편향이 없으면 z = 0인 경계면이 항상 원점을 지나야 한다.
편향은 문턱의 위치를 옮기는 값이다. 없으면 모든 입력이 0일 때 출력도 반드시 0이 되어 경계가 원점에 묶인다.
입력 사이의 상호작용을 반영하는 경계다. 편향이 두 입력을 잇는 역할을 하기 때문이다.
상호작용은 은닉층이나 교차항이 담당한다. 편향은 입력과 곱해지지 않으므로 상호작용과 무관하다.
축에 기울어진 경계다. 편향이 없으면 경계가 좌표축에 평행해진다.
기울기는 가중치들의 비가 정한다. 편향과 무관하게 어떤 방향으로도 기울 수 있다.
해설
편향은 문턱의 위치를 옮기는 값이다. 이것이 없으면 경계면의 식이 가중합만 0이 되는 자리로 정해져 항상 원점을 지나야 하고, 원점을 지나지 않는 경계는 아예 표현할 수 없다. 편향을 키우면 입력이 작아도 쉽게 켜지고 줄이면 웬만해서는 꺼진다. 선형 회귀의 절편이 하는 역할과 같다. 가중치 쪽은 다른 일을 한다. 각 입력이 결과에 얼마나 세게 작용하는지를 부호까지 포함해 정하는데, 양수면 그 입력이 커질 때 출력이 켜지는 쪽으로 밀리고 음수면 반대로 밀리며 절댓값이 크면 그 입력 하나가 판단을 좌우한다. 그래서 층 하나의 파라미터를 셀 때도 가중치 행렬과 편향 벡터를 함께 세어야 한다.