본문 바로가기

CS231n17

CS231n(7) Training Neural Networks II 지난 강의 복습) NN을 학습시키는 방법: -대부분의 경우 기본적인 ReLU를 선택한다 -Weight initialization에서 초기 가중치가 너무 작으면 활성화가 사라지고 너무 크면 폭발한다 -Xavier를 사용하면 적당하다 -normalization을 하는 이유: 손실이 매개변수 벡터에 매우 민감하여 학습이 어려울 수 있다. -batch normalization: 네트워크 내부에 추가 레이어를 추가해서 모든 중간 활성화가 평균 0과 단위 분산이 되도록 한다 용어 정리) -epoch: 데이터를 학습시키는 횟수 -iteration: 한번의 epoch에서 모든 데이터를 한꺼번에 집어넣을 수 없어서 데이터를 나누어서 주는데 이때 나누는 횟수 -batch size: 각 iteration마다 주는 데이터 .. 2024. 3. 8.
CS231n(6) Training Neural Networks I Process the data (데이터 전처리) 일반적인 머신러닝에서 데이터를 zero-centering 후에, normalize 하여 각각의 들쑥날쑥한 피쳐들을 어떤 범위 내로 전처리시킨다. 하지만, 이미지 데이터에서는 zero-centering만 해준다. 왜냐하면 이미지 데이터는 픽셀 값이 0에서 255로 전부 같은 범위이기 때문이다. Weight Initialization 1. W에 아주 작은 랜덤의 값을 부여한다. 정규 분포로부터 가져온 작은 편차의 값들을 랜덤으로 w initialization 해준다 W=0.01*np.random.randn(D,H)하지만 여전히 neural net이 깊어지면 문제가 발생한다. 위의 코드를 보면 각 hidden layer에 input으로 X=(1000, 500) .. 2024. 3. 7.
CS231n(5) Convolutional Neural Networks Activation Functions activation 함수는 비선형성을 가해주는 매우 중요한 역할을 한다. 활성화 함수를 사용하지 않으면, 모든 층이 선형 변환만 수행하게 되어, 신경망이 여러 층을 쌓더라도 하나의 선형 변환으로 표현될 수 있다. 이러한 비선형성을 도입함으로써 신경망이 복잡한 함수를 모델링할 수 있게 된다. layer에 활성화 함수가 없으면, w2(w1x+b)+b로 넘어가고 그냥 wx+b와 다름 없어지므로 single layer와 다름이 없다. 예를 들어 ReLu함를 쓰면 h1=ReLU(W1*x + b1), h2=ReLU(W2*h1 + b2) 하면서 점점 더 복잡한 비선형 함수를 학습할 수 있게 된다. 1) Sigmoid function 넓은 범위의 숫자를 [0,1] 사이로 squas.. 2024. 3. 5.
CS231n(4) Introduction to Neural Networks Backpropation and NN 예제 1 f(x,y,z)=(x+y)z 에서 x=-2, y=5, z=-4이다 왼->오 진행을 FP(Forward Pass)이고 이 과정으로 local gradient를 얻을 수 있다 오->왼 진행을 BP(Backward Pass)이고 이 과정으로 global gradient를 얻을 수 있다 df/df는 identity function이라고 한다 gradient = global gradient x local gradient 이다 q=x+y 이고 f=qz라고 하자 dq/dx=1 , dq/dy = 1이고 df/dq=z df/dz=q이다 이때 우리가 원하는 건 input 값에 대한 마지막 단의 영향력이므로 df/dx, df/dy, df/dz를 알고자 한다 df/dx = df/.. 2024. 3. 4.