가중치 초기화 문제는 활성화 함수의 입력값이 너무 커지거나 작아지지 않게 만들어주려는 것이 핵심이다. 초기화 설정 문제 해결을 위한 Naive한 방법으론 평균이 0, 표준 편차가 1인 표준 정규 분포를 이용해 초기화하는 방법과 평균이 0, 표준 편차가 0.01인 정규분포로 초기화하는 방법이 있다. 이번 실습에서는 각 방법으로 가중치를 초기화 해보고, 각 경우에 활성화 결괏값들의 분포가 어떻게 변화하는지 확인해자. 실습을 마치고 나면 왜 Naive한 방식으로 가중치를 초기화 해서는 안되는지 알 수 있다. 표준 정규 분포(평균이 0, 표준 편차가 1인 정규 분포)를 따르는 무작위 데이터를 만들기 위한 함수/라이브러리 x = np.random.randn(50,20) : 표준 정규 분포를 따르는 무작위 데이터는..
역전파(back propagation) 알고리즘이란 우리의 목푯값과 실제 모델이 예측한 예측값이 얼마나 차이 나는지 구한 후, 오차값을 다시 뒤로 전파해가며 가중치(weight)들을 업데이트하는 과정이다. 그러나 깊은 층의 모델에선 역전파시에 전달되는 손실 함수(loss function)의 gradient 값에 활성화 함수인 sigmoid 함수의 0에 가까운 기울기 값이 계속해서 곱해지면서 결국 가중치 업데이트가 잘 안되는 문제가 생기는데, 이것이 바로 기울기 소실 문제(Vanishing Gradient)이다. 이번 실습에서는 모델의 층이 깊은 경우 히든층의 활성화 함수가 ‘relu’일 때와 ‘sigmoid’일 때의 모델 정확도를 확인해보고, 왜 최근에는 활성화 함수로 sigmoid를 잘 쓰지 않는지 직..
Adagrad Adagrad(Adaptive Gradient) 최적화 알고리즘은 손실 함수(loss function)의 값을 최소로 만드는 최적의 가중치를 찾아내기 위해 learning rate를 조절해 하강하는 방법 중 하나이다. 기존 방식이 가중치들의 업데이트를 같은 속도로 한꺼번에 하는 방법이었다면, Adagrad는 가중치 각각의 업데이트 속도를 데이터에 맞추어(adaptively) 계산해 적절한 learning rate로 하강하도록 한다. Adagrad tf.keras.optimizers.Adagrad(lr, epsilon, decay) : lr : 학습률 (learning rate) (lr >= 0), 기본값 0.1 epsilon : 연산 시 분모가 0이 되는 것을 막는, 0에 가까운 상수 (e..
앞선 실습에서는 가중치(Weight), Bias, Step Function을 이용하여 단층 퍼셉트론인 AND gate와 OR gate를 구현해보았다. 이번 실습에서는 가중치와 Bias 값을 조정해보며 동일한 단층 퍼셉트론 NAND gate와 NOR gate를 구현해보도록 하자. import numpy as np ''' 1. NAND_gate 함수를 완성하세요. Step01. 이전 실습을 참고하여 입력값 x1과 x2를 Numpy array 형식으로 정의한 후, x1과 x2에 각각 곱해줄 가중치도 Numpy array 형식으로 적절히 설정해주세요. Step02. NAND_gate를 만족하는 Bias 값을 적절히 설정해주세요. Step03. 가중치, 입력값, Bias를 이용하여 가중 신호의 총합을 구합니다. ..