Function#
- scalar: 양만으로 표시할 수 있는 물리량
- vector: 양과 방향으로 표현할 수 있는 물리량
일변수-스칼라함수#
- 다항함수, 분수함수, 지수함수, 로그함수, 삼각함수 등
- 입력: 스칼라, 출력: 스칼라
- 독립변수: 함수의 출력 결정, 매개변수: 함수의 모양 결정
- 시그모이드 함수: 모든 실수를 0~1 사이로 찌그러트림, 출력을 확률로 해석
다변수-스칼라함수#
- 곡면과 등고선 그래프
- 입력: 벡터, 출력: 스칼라
- 평면: 이변수 스칼라 함수, 직선: 우변이 0으로 고정
- 퍼셉트론: $\ f(x,y)=ax+by+c$
일변수-벡터함수#
- 평면 또는 공간에 존재하는 곡선
- 입력: 스칼라, 출력: 벡터
다변수-벡터함수#
- 입력: 벡터, 출력: 벡터
- 인공신경망과 유사
- Composite Function: 함수의 합성, $\ g∘f=g(f(x))$
- 신경망은 매우 많은 함수가 겹겹이 합성된 것 (목적함수, 비용함수, 손실함수)
- 머신러닝 분류 문제 평가 함수로 지수,로그함수 활용
Matrix#
- 행렬의 차원(크기): 행 개수 x 열 개수 (${m}\times{n}$)
- 행렬의 전치: $\ A^T$
- 행렬의 덧셈: 두 행렬의 크기가 같을 때 같은 위치 요소 덧셈
- 행렬의 곱셈: 행과 열의 요소를 곱해서 더함
- 단위행렬: 대각 성분이 모두 1, 나머지는 0인 정사각 행렬
- 대각행렬: 대각 성분이 아닌 모든 성분이 0인 정사각 행렬
- 대칭행렬: 정사각 행렬에 대해서 $\ S^T=S$
- 직교행렬: 전치된 것이 자신인 역행렬 $\ A^T=A^{-1}$
- 이미지 표현: (C, H, W)=PyTorch 또는 (H, W, C)=TensorFlow
- 열 결합: 뒤에서 곱하는 벡터의 요소를 계수로 한 모든 열의 선형결합
- 행 결합: 앞에서 곱하는 행렬의 행 요소를 계수로 뒷 행렬의 행을 조합 (열 결합 전치)
- 외적: 행렬 반환, 내적: 스칼라 반환
인공신경망#
- $a^{(1)}=f(W^{(1)}x+b^{(1)})$ (W=weight, b=bias)
- 활성 함수: Sigmoid, ReLU, Tanh
- MNIST 데이터: (28,28)인 손글씨 이미지가 (1,781)인 어레이로 저장
- 로지스틱 함수: 각각의 y에 대한 확률 계산 (다중 분류에서 정확도가 낮음)
- softmax: 실수 k개가 0에서 1사이의 숫자 k개로 맵핑
- 회귀: 입력 x에 대응하는 실수 y값을 출력
Differentiation#
- 에러를 줄이 위한 목적 (미분 정보를 이용해 탐색 방향 결정)
- 평균변화율: 함수의 변화를 보는 구간이 중요, 자세한 정보를 위해 간격을 좁힐 필요
- 순간변화율: 평균변화율의 분모를 순간에 이를 정도로 작게 만듦, 극한값이 미분계수
- 순간변화율은 그 위치에서 접선의 기울기
- sympy 패키지를 사용해 파이썬에서 기호 연산
미분법#
- 상수의 미분, 덧셈/뺄셈의 미분, 곱셈의 미분법, 나눗셈의 미분법
- 함성함수 미분: 라이프니츠 미분법, $\ \sqrt{ax^2+bx+c}=\sqrt{y}$
- $z=\sqrt{x^2+3x},\quad y=x^2+3x,\quad z=\sqrt{y}$
- 연쇄법칙(Chain Rule): $\ \frac{dz}{dx}=\frac{dz}{dy}ㆍ\frac{dy}{dx}$
- 연쇄법칙은 인공신경망(합성함수) 역전파 알고리즘의 기본 아이디어
편미분#
- 다변수 함수에 구할 수 있는 변화율은 무수히 많음
- 다변수 함수에서 변수 고정, 한번에 변수 하나만 변화 (윤곽선, 1차원 함수)
- 편도함수: 다변수 함수일 때 하나의 변수에 대해서만 미분한 도함수, 기호: $\partial$
- Saliency Map: 이미지 분류에서 y에 대한 다변수-스칼라함수의 편미분 계수를 이미지화
- Guided Back Propagation: saliency map보다 더 확실한 특징을 보임
- 다변수 함수의 연쇄법칙은 모든 노드의 미분계수를 더함
Jacobian#
- 야코비안: $\ w=f_1(x,y),\ z=f_2(x,y)$일 때 편도함수 4개를 블록 형태로 표시
- 로지스틱 함수의 미분: 나눗셈의 미분과 함성함수의 미분을 사용, $\ \frac{d}{dz}\sigma(z)=\sigma(z)(1-\sigma(z))$
- 소프트맥스 함수의 미분: 벡터함수의 편미분 (인데스 별로 나눠서), ${K}\times{K}$개의 미분계수
- 인덱스가 같은 경우 $\ \frac{\partial}{\partial{z_j}}s_i(z)=s_j(z)(1-s_j(z))$
- 인덱스가 다른 경우 $\ \frac{\partial}{\partial{z_j}}s_i(z)=-s_i(z)s_j(z)$
직접 미분#
- 직접 미분하여 결과를 코딩
- 정확한 결과, 빠른 속도 장점, 미분을 직접 해야하나는 단점
수치 미분#
- 수치적 계산으로 미분 계수를 근사
- 구현 간단, 변수가 많으면 매우 느리고 수치적으로 불안정
- 자동 미분 계산이 정확한지 확인할 목적으로 사용
- 전방 차분법 diff = (f(x+h) - f(x)) / h
- 중앙 차분법 diff = (f(x+(h/2)) - f(x-(h/2))) / h
- 식을 모를 경우 brute force > 2변수 이상일 때 이동할 수 있는 방향이 무한대가 되는 단점
- gradient descent 방식을 사용해 반복 횟수를 줄임