목록2021/01 (29)
우노
Backpropagation은 구현이 매우 어렵기 때문에 버그가 발생해도 어디서부터 고쳐야 할지가 마땅치 않다. 이 때, gradient checking을 사용한다. gradient checking은 역전파 알고리즘이 얼마나 정확하게 구현되었는지 수동으로 검증하는 방법이다. 즉, 기울기에 대한 근사치를 구해서 비교하여 검증하는 방법이다. e(엡실론) 이 매우 작다 가정하고, θ-e 와 θ+e 두 점 사이의 기울기를 구한다. 우리는 θ가 하나가 아니기 때문에, 각각의 θ(theta)에 대한 gradient 를 모두 구해야한다. 이후, gradient checking 을 이용해 구한 gradApprox 와 실제 역전파를 이용해 구한 Dvec가 비슷한지 검사한다. 2개의 벡터가 비슷한지는 어떻게 계산할까? 2..
L1 Regularization 과 L2 Regularization 을 설명하기 위한 글입니다. 결론부터 얘기하자면 L1 Regularization 과 L2 Regularization 모두 Overfitting(과적합) 을 막기 위해 사용됩니다. 위 두 개념을 이해하기 위해 필요한 개념들부터 먼저 설명하겠습니다. 글의 순서는 아래와 같습니다. Norm L1 Norm L2 Norm L1 Norm 과 L2 Norm 의 차이 L1 Loss L2 Loss L1 Loss, L2 Loss 의 차이 Regularization L1 Regularization L2 Regularization L1 Regularization, L2 Regularization 의 차이와 선택 기준 Norm Norm 은 벡터의 크기를 측정하..
Bias-Variance trade-off 란, 모델링을 할 때 error 처리를 위해 중요하게 알아야하는 개념이며, 자주 헷갈릴 수 있다. Bias Bias(편향)는 예측값과 실제값의 차이이다. 즉, Bias(편향)가 크다는 것은, 예측값과 실제값의 차이가 크다는 것이며, 이는 과소적합을 의미한다. Variance Variance(분산)는 입력에 따른 예측값의 변동성을 의미한다. 즉, Variance(분산)가 크다는 것은, 입력에 따른 예측값의 변동성이 크다는 것이며, 이는 과대적합을 의미한다. Trade-off Trade-off는 시소처럼 한쪽이 올라가면 한쪽이 내려가는 관계를 의미한다. 예제 1 파란 점이 예측값, 빨간 원이 실제값을 의미한다. Bias가 높다는 것은, 예측값과 실제값의 오차가 크다..
import numpy as np # dataframe 생성 data = np.array([[1,4],[2,5],[3,6]]) df = pd.DataFrame(data, columns=['col1','col2']) # col1 col2 #0 1 4 #1 2 5 #2 3 6 # dataframe에 numpy 배열 추가 col3 = np.array([7,8,9]) df['col3'] = col3 # col1 col2 col3 #0 1 4 7 #1 2 5 8 #2 3 6 9
파라미터 초기화 / 하이퍼파라미터 정의 num_iterations 만큼 Loop : a. 순방향 전파 b. 비용 함수 계산 c. 역전파 d. 파라미터 업데이트 훈련 된 파라미터를 사용하여 예측
2차원 dictionary 생성 및 요소 추가 name = {} info = {} info['live'] = 'seoul' name['unho'] = info #{'unho': {'live': 'seoul'}}
순전파(Feedforawrd)와 역전파(Backpropagation)의 개념 다층 퍼셉트론으로 학습을 한다는 것은, 최종 출력값과 실제값의 오차가 최소화 되도록 가중치(Weight)와 바이어스(Bias)를 계산하여 결정하는 것입니다. 이는, 순전파(Feedforward)를 통해 최종 출력값과 실제값의 오차를 확인하고 역전파(Backpropagation)를 통해 최종 출력값과 실제값의 오차가 최소화 되도록 가중치(Weight)와 바이어스(Bias)를 업데이트하며 진행됩니다. 예를 들어, 농구에서 자유투를 던지는 과정은 순전파(Feedforward)라고 할 수 있고, 던진 공이 어느 지점에 도착했는지를 확인하고 던질 위치를 수정하는 과정을 역전파(Backpropagation)이라고 할 수 있습니다. 예제 :..
np.where() np.where(조건, True일 때 값, False일 때 값) np.where을 사용하면 편리하게 배열 요소를 변환할 수 있습니다. 또한, 벡터 연산을 하므로 for loop을 돌지 않아서 속도가 매우 빠릅니다. import numpy as np a = np.arange(-5, 5) # array([-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]) b = np.where(a < 0, 0, a) # 0보다 작은 수는 0으로 나머지는 그대로 변환되며 # 원래의 배열 a는 변경되지 않고 그대로 있습니다. # array([0, 0, 0, 0, 0, 0, 1, 2, 3, 4])
밑이 자연상수 e인 지수함수(e^x)의 그래프 numpy.exp() Numpy의 numpy.exp() 함수는 밑이 자연상수 e인 지수함수(e^x)로 변환해줍니다. 결과값이 inf라면, 해당 값이 무한대(infinite)라는 것입니다. import numpy as np print(np.exp(0)) # e^0 와 동일 # 1.0 print(np.exp(1)) # e^1 와 동일 # 2.718281828459045 print(np.exp(10)) # e^10 와 동일 # 22026.465794806718 x = np.array([0.00001, 1, 2, 4, 10, 100]) print(np.exp(x)) #array([ 1.00001000e+00, 2.71828183e+00, 7.38905610e+00,..
파라미터와 하이퍼 파라미터는 명확히 다른 개념입니다. 하지만 많은 사람들이 두 단어를 혼용해서 쓰고 있습니다. 파라미터와 하이퍼 파라미터의 차이에 대해 알아보겠습니다. 파라미터 (Parameter) 파라미터는 모델 내부에서 결정되는 변수입니다. 예 weight coefficient (가중치 계수) bias (편향) weight coefficient, bias와 같은 파라미터들은 모델 내부에서 데이터를 통해 구해집니다. 하이퍼 파라미터 (Hyper parameter) 하이퍼 파라미터는 모델링할 때 사용자가 직접 세팅해주는 값을 뜻합니다. 예 learning rate epoch iteration 모델링을 할 때, 사용자가 직접 세팅해야 하는 값은 상당히 많습니다. 그 모든 게 다 하이퍼 파라미터입니다. 하이..