데이터를 모아둔 행렬:
가중치 행렬:
절편(각 행들의 값이 같음):
신경망
X가 주어졌을 때 O랑 연결하는 그림으로, 화살표가 가중치 역할하며 화살표의 갯수는개(의 크기)다.
모델의 출력을 확률로 해석할 수 있게 변환
지수함수를 사용!
분류문제를 풀때 선형모델과 소프트맥스를 결합하여 예측
def softmax(vec):
denumerator = np.exp(vec-np.max(vec,axis=-1,keepdims=True))
numerator = np.sum(denumerator,axis=-1,keepdims=True)
val = denumerator / numerator
return val
# np.max를 사용하는 이유: 지수가 너무 커지면 overflow가 발생
최대값을 가진 주소만 1로 출력
추론을 할 때는 softmax말고 원-핫 벡터를 사용함
활성함수를 이용! → 선형모델의 결과물을 우리가 원하는 의도대로 바꿔서 해석 가능!
비선형 함수로서 딥러닝에서 매우 중요한 개념!
sigmoid 함수나 tanh함수는 전통적으로 많이 쓰였는데 딥러닝에서는 ReLU함수를 많이 쓰고 있다
잠재벡터 (에 활성함수 씌운)
가중치 와 를 통해 다시 한 번 선형변환해서 출력
2층(2-layers) 신경망
신경망이 여러층 합성된 함수
는 으로 이루어진 행렬
L까지 순차적인 신경망 계산을 순전파(forward propagation)라고 한다
이론적으로 2층 신경망으로도 임의의 연속함수를 근사할 수 있다.
그러나 층이 깊을수록 목적함수를 근사하는데 필요한 뉴런의 숫자가 훨씬 빨리 줄어들어 좀 더 효율적!
역전파(backward propagation)를 이용하여 각 층에 사용된 패러미터(와 )를 학습
손실함수를 미분할때 사용하며, 각 층 패러미터의 그레디언트 벡터()를 구한 후 윗층부터 역순으로 계산한다.
합성함수 미분법인 연쇄법칙 기반 자동미분을 사용
※ 각 노드의 텐서 값을 기억해야 미분계산이 가능하다 (그래서 메모리를 좀 더 씀)
but 속도적으로 나누기보다 곱하기가 더 빨라서 역전파로 하는게 더 효율적
사실 딥러닝은 확률론 기반의 기계학습 이론에 바탕을 두고 있다.
교차엔트로피 경우, 모델 예측의 불확실성을 최소화하는 방향으로 학습하도록 유도한다.
-> 분산 및 불확실성을 최소화하기 위해 두 대상을 측정하는 방법을 알아야 한다.
데이터는 확률변수로, 라 표기하며, 데이터 공간에서 데이터의 분포를 라 표기한다.
파란점: 데이터 공간상에서 관측한 데이터
결합분포 는원래확률분포 를 모델링한다. 주변확률분포 는 y에 대한 정보를 주진 않으며 결합분포에서 유도가 가능하다.
연속확률분포의 모양처럼 보이지만 빨간색칸으로 나누면 이산확률분포처럼 볼수있음.
조건부확률 는 입력변수 에 대해 정답이 일 확률
이 뒤로는 진짜 모르겠다 나중에 공부해서 정리해야지