인지야공

인지야공/강의 요약/5번째 글

딥러닝 — 사람이 3을 3으로 읽는 이유와 그 밑의 수학

강의 첫 시간의 예시가 좋았다. 손으로 쓴 숫자 3을 여러 개 보여 준다. 해상도도 다르고 모양도 제각각인데 사람은 전부 3으로 읽는다.

눈 안의 시지각 세포가 빛을 받아들이는 패턴은 그림마다 완전히 다르다. 그런데 시각피질은 그 차이에도 불구하고 두 이미지가 같은 개념을 가리킨다고 판단한다. 딥러닝은 이 원리를 알고리즘으로 옮긴 것이다.

딥러닝과 퍼셉트론

딥러닝 — 뉴런으로 구성된 레이어를 여러 개 연결해 만든 네트워크다. 네트워크를 어떻게 구성하느냐에 따라 X-NN 으로 불린다. CNN, RNN 이 그 예다.

퍼셉트론 — 신경망의 기원이 되는 알고리즘이다. 하나의 뉴런으로 다수의 입력을 받아 최종 결과를 0 또는 1로 출력한다. 가중치(Weight)는 신호의 결과에 주는 영향력을 조절하는 역할을 한다.

퍼셉트론에는 결정적 한계가 있었다 — XOR 연산이 불가능하다. 이걸 극복하려고 나온 것이 다층 퍼셉트론(MLP)이고, 다수의 뉴런으로 구성된 여러 층 구조를 갖춘 딥러닝이 여기서 시작한다.

XOR 이 안 되는 이유는 직선 하나로 나눌 수 없기 때문이다. 층을 쌓아 비선형 경계를 만들면 풀린다. “층을 왜 쌓는가”에 대한 가장 오래된 답이 이것이다.

활성화 함수

위치함수
입력층 → 은닉층ReLU
은닉층 → 출력층시그모이드

이 배치가 기본이다. ReLU 는 양수 구간에서 기울기가 1로 유지돼 기울기 소실을 덜 겪고, 출력층의 시그모이드는 0과 1 사이의 확률을 낸다.

순전파와 역전파

하는 일
순전파입력에서 출력을 얻는 과정. 정답과 출력값의 차이를 구할 수 있다
역전파오차 CC 를 기반으로 가중치 (W,b)(W, b) 를 업데이트하기 위한 과정

순전파는 값을 앞으로 흘리고, 역전파는 오차를 뒤로 흘린다. 그리고 그 오차를 각 가중치가 얼마나 책임져야 하는지 계산해 갱신한다. 신경망 학습의 전부가 이 두 줄이다.

머신러닝에 필요한 수학

여기부터는 강의에서 항목만 나열돼 있던 부분이라, 정의를 다시 채워 정리했다.

벡터와 행렬

특징 벡터 Feature Vectorx=(x1,x2,…,xn)x = (x_1, x_2, \ldots, x_n) — 하나의 샘플을 수치로 표현한 것
설계 행렬 Design Matrix특징 벡터를 행으로 쌓은 것. 행이 샘플, 열이 특징
전치행렬ATA^T — 행과 열을 바꾼 것
역행렬AA−1=IAA^{-1} = I 를 만족하는 행렬

머신러닝에서 데이터는 항상 이 형태로 들어온다. df.shape 이 (n_samples, n_features) 인 것이 곧 설계 행렬이다.

고윳값과 고유벡터 — Av=λvAv = \lambda v 를 만족하는 λ\lambda 와 vv 다. 행렬을 곱해도 방향이 바뀌지 않고 크기만 변하는 벡터가 고유벡터고, 그 배율이 고윳값이다. PCA 가 공분산 행렬의 고유벡터를 주성분으로 삼는 이유가 여기 있다 — 데이터가 가장 많이 퍼진 방향이 곧 가장 큰 고윳값의 고유벡터다.

행렬 곱의 성질

법칙성립
교환법칙 AB=BAAB = BA성립하지 않는다
결합법칙 (AB)C=A(BC)(AB)C = A(BC)성립
분배법칙 A(B+C)=AB+ACA(B+C) = AB + AC성립

교환법칙이 안 된다는 게 실무에서 자주 사고를 낸다. 신경망의 층은 결국 행렬곱의 연쇄인데, 순서를 바꾸면 차원부터 안 맞는다. 반대로 결합법칙이 성립하기 때문에 여러 변환을 하나의 행렬로 미리 합쳐 둘 수 있다 — 영상처리의 동차 좌표 변환이 이 성질을 쓴다.

내적과 노름

내적은 두 벡터의 대응 성분을 곱해 더한 것이다.

x⋅y=∑i=1nxiyi=∥x∥ ∥y∥cos⁡θx \cdot y = \sum_{i=1}^{n} x_i y_i = \lVert x\rVert\,\lVert y\rVert\cos\theta

노름은 벡터의 크기다.

∥x∥1=∑i=1n∣xi∣,∥x∥2=∑i=1nxi2\lVert x \rVert_1 = \sum_{i=1}^{n}\lvert x_i\rvert, \qquad \lVert x \rVert_2 = \sqrt{\sum_{i=1}^{n} x_i^2}

L1 과 L2 의 구분이 규제(Regularization)에서 그대로 다시 나온다. L1 은 가중치를 정확히 0 으로 만들어 특징 선택 효과를 내고, L2 는 전반적으로 크기를 줄인다. 절댓값 함수의 꼭짓점이 원점에 있기 때문에 생기는 차이다.

코사인 유사도

cos_sim(x,y)=x⋅y∥x∥ ∥y∥\text{cos\_sim}(x, y) = \frac{x \cdot y}{\lVert x\rVert\,\lVert y\rVert}

내적을 두 벡터의 크기로 나눈 것, 즉 각도만 남긴 값이다. −1-1 에서 11 사이이고 1에 가까울수록 방향이 같다.

크기를 지운다는 점이 핵심이다. 문서 두 개를 단어 빈도 벡터로 만들었을 때, 긴 문서는 모든 값이 크게 나온다. 유클리드 거리로 재면 길이가 다르다는 이유만으로 멀어 보인다. 코사인 유사도는 “무엇에 대해 이야기하는가”만 비교한다. 추천 시스템과 텍스트 마이닝에서 기본으로 쓰이는 이유다.

다음으로

이 강의의 뒷부분은 OpenCV 로 넘어간다. 영상 데이터를 다루는 내용이라 영상처리 정리에 합쳐 두었다. 신경망 구조의 자세한 내용 — CNN, RNN, LSTM, 어텐션 — 은 패턴인식 정리 쪽에 있다.

표시는 이 브라우저에만 남는다. 서버로 가는 것은 없다.