목록딥러닝 (23)
JUstory

[ Sigmoid ] $$\sigma (x) = \frac{1}{1+e^{-x}}$$ 문제점 ① Vanishing Gradient: input이 크거나 작을때 기울기가 0에 가까워짐 = Local gradient 가 대부분 0이 됨$$ \acute{\sigma (x)}= \frac{\partial }{\partial x}\frac{1}{1+e^{-x}}\\ = \frac{e^{-x}}{{(1+e^{-x})}^2}\\ = \frac{1}{1+e^{-x}} \cdot \frac{e^{-x}}{1+e^{-x}}\\ = \sigma (x)(1-\sigma (x))$$ ② zero-centered 하지 않은 출력 값: 입력 x가 모두 양수라고 가정한다면, 출력 값의 범위가 [0,1]이므로 항상 양수모든 w에 ..

Chain Rule Upstream Gradient = Loss를 output variable에 대해서 미분한 값 $$\frac{\partial L}{\partial z}$$ Local Gradient = Output에 대해서 input으로 미분한 값$$ \frac{\partial z}{\partial x}$$ Downstream Gradient = Upstream Gradient x Local Gradient $$ \frac{\partial L}{\partial x} = \frac{\partial L}{\partial z} \times \frac{\partial z}{\partial x}$$ Gradient Flow 패턴add gate ..
Nearest Neighbor Classifier: 테스트 데이터에 대해 가장 가까운 학습 데이터 포인트를 k개 찾고, 해당 레이블을 사용하여 예측 $$L{_1}(A,B) = \sum_{i,j}\left| A{_i,_j} - B{_i,_j}\right|$$$$L{_2}(A,B) = \sqrt{\sum_{i,j} (A{_i,_j} - B{_i,_j})^{2}}$$ import numpy as np# k = 1class NearestNeighbor: def __init__(self): pass def train(self, images, labels): self.images = images self.labels = labels def predict(s..

평균 제곱 오차 (Mean Squared Error)$$MSE(Mean Squared Error) = \frac{1}{n} \sum_{i=1}^{n} [t_{i}-(wx_{i}+b)]^{2}$$import torch.nn as nncriterion = nn.MSELoss() 장점큰 오차에 더 큰 패널티를 부여해, 큰 오차를 줄이는 데에 집중계산식이 간단 단점이상치가 있는 경우 loss값이 급증 따라서 이상치가 적은 데이터셋에 적합하고, 값을 줄이고자 제곱근한 RMSE(Root Mean Squared Error)도 있다. 평균 절대 오차 (Mean Absolute Error)$$MAE(Mean Absolute Error) = \frac{1}{n} \sum_{i=1}^{n} |t_{i}-(wx_{i}+b)..
torch.nn으로 구현import torch.nn as nnclass LinearRegressionModel(nn.Module): def __init__(self): # def(매서드)를 정의하는 순간 '인스턴스.매서드' 로 사용 가능 super(LinearRegressionModel, self).__init__() # 부모 init 찾아서 호출 self.linear = nn.Linear(1,1) # 함수 내의 인스턴스 변수는 '인스턴스.속성' 으로 할당하지 않으면 그 함수 내에서만 사용할 수 있다. def forward(self, x): y = self.linear(x) return y model = LinearRegressionModel()..