📗강의노트/CS231n

    [CS231n] 8. Deep Learning Software

    일반적인 딥러닝 프레임워크에 대한 기본적인 개념. Tensorflow는 Computational graph를 그리는 것이 특징 Computational graph는 상대적으로 low level이다. Keras : Tensorflow를 backend로 해서 computational graph를 알아서 만들어준다. 먼저 레이어의 시퀀스로 모델을 구성한다. Optimizer 구성하고 model.compile 하면 그래프가 알아서 만들어지는 것이다. model.fit을 하면 전체 학습 과정이 알아서 진행된다. Pytorch 는 tensorflow와 다르다. 세 가지 추상화 레벨을 정의해 놓았다. Dtype을 floattensor에서 cuda.floattensor 로 바꿔주면 GPU에서 실행할 수 있다. Nump..

    [CS231n] 7. Training Neural Networks II

    Batch Normalization을 다시 보자 최적화 문제가 NN에서 중요하다 미니 배치 안에서 데이터 loss를 계산, 그리고 Gradient의 반대 방향을 이용해서 파라미터 벡터를 업데이트 한다. 손실함수의 모양에 따라 영향을 많이 받는다. 위의 경우는 Loss는 수직 방향의 가중치 변화에 훨씬 더 민감하게 반응하는 것이다. SGD의 학습 과정을 보면 “지그재그”로 나타나게 된다. gradient의 방향이 고르지 못하기 때문이다. 가로 방향의 가중치는 느리게 변하는 반면에 수직 방향의 가중치가 빠르게 변화하면서 지그재그 모양으로 지저분하게 나타나는 것이다. ( 고차원 공간에서 더 빈번하게 발생한다 ) 불균형한 방향이 존재한다면 SGD는 잘 ..

    [CS231n] 6. Training Neural Networks I

    http://cs231n.stanford.edu/2017/handouts/derivatives.pdf : 미분 http://yann.lecun.com/exdb/publis/pdf/lecun-98b.pdf : Backprop 읽어보기 1. Activation Functions 데이터 입력이 들어오면 가중치와 곱한다. FC or CNN 그리고 활성함수, 비선형 연산을 거치게 된다 . 문제점 1. Saturation되는게 gradient를 없앤다. X=-10이면 Gradient가 0이 됨 X=0에서는 잘 동작함 X=10이면 sigmoid가 flat하기 때문에 gradient를 다 죽인다. 문제점 2. sigmoid의 출력이 zero centered하지 않다는 것이다. X가 모두 양수라고 하자. 가중치와 곱해지..

    [CS231n] 5. Convolutional Neural Networks

    Fully Connected Layer : 어떤 벡터를 가지고 연산을 하는 것 activation은 이 layer의 출력이다. 기존의 FC Layer가 입력 이미지를 길게 쭉 폈다면 이제는 기존의 이미지 구조를 그대로 유지하게 된다. 그리고 작은 필터가 우리가 가진 가중치가 되는 것이다. 필터를 가지고 이미지 슬라이딩을 하면서 공간적으로 내적을 수행하게 된다, 깊이(3)는 전체 깊이를 전부 취하지만, 32x32중 5x5만을 취한다. 필터의 각 W와 이에 해당하는 이미지의 픽셀을 곱해준다. (각 원소끼리 Convolution을 하는 거나, 그것을 쭉 펴서 내적을 하는거나 똑같은 일을 하는 것이다.) 필터의 모든 요소를 가지고 내적을 수행하게 되면 하나의 값을 얻게된다. conv연산을 수행하는 값들을 다시 ..

    [CS231n] 4. Introduction to Neural Networks

    Backpropagation and Neural Networks Computational graph를 사용해서 함수를 표현하게 됨으로써 backpropagation이라고 부르는 기술을 사용할 수 있게 된다. backpropagation은 gradient를 얻기위해 computational graph 내부의 모든 변수에 대해 chain rule을 재귀적으로 사용한다. 첫 번째는, 항상 Computational graph로 그리는 것. x+y 덧셈 노드를 q라고 부르자 q,f의 gradient를 구한다 ( 각각 편미분 ) 그리고 우리가 찾기 원하는 것은 x,y,z 각각에 대한 f의 gradient이다. Chain rule에 의거해 뒤에서 부터 gradient 계산을 시작한다. f에 대한 y의 gradient..

    [CS231n] 3. Loss Functions and Optimization

    최적의 W를 구하기 W가 좋은지 나쁜지를 정량화 할 방법이 필요하다. W를 입력으로 받고 각 스코어를 확인하여 평가하는 것이 “ Loss Function(손실 함수) ”이다. 가장 덜 나쁜 W를 구하는 과정이고, 이를 “ 최적화 “ 라고 부른다. “ Hinge Loss “ S_j는 예측된 스코어이다. x축은 S_Yi 로 실제 정답 클래스의 스코어이다. Y 축은 Loss이다. ( 여기서는 Safety margin = 1 이다 ) -> 우리는 스코어가 정확히 몇인지는 신경쓰지 않는다. 스코어간의 상대적인 차이를 알고싶어 한다. (온라인 코스노트) 정답 클래스를 제외한 다른 클래스들에 대해 손실함수를 계산 ( 정답이면 0이기에 ) 여기서 Loss 는 0 ~ ∞ 까지..