cs231n 4강~ 5강 [추가]
맨 오른쪽이 1인 이유 : df/df = 1 (identity function)
왜 da, dL의 위치가 왼쪽과 오른쪽으로 결정된 것인가요? : 임의로 했다고함. 그리고 dL/da을 구하는 것이라고함.
우리는 dL/da을 다음과 왼쪽 사진과 같이 체인룰로 나타낼 수 있음.
dL을 구하려면, local gradient를 구하면 된다고 함.
따라서 dL은 -1/x^2 을 통해서 구할 수 있고 왼쪽과 같이
1.37의 제곱 분의 -1값
0.20 이라는 값을 sigmoid function을 통해 굉장히 손쉽게 얻을 수 도 있었다.
KNN - none parameter approach는 1class 1classifier
Neural Network - parametic approach는 1class miult-classfier
5강
이전에 썻던 모델의 가중치를 가져와서, 추가로 학습시키는 방식이 finetuning이며 이는 가능하다.
무한하게 많은 데이터를 돌리는건 무리다. -언급-
앞으로할것 요약(전에 배웠던것과 유사..)
optimization
산에서 눈을 가리고 최적의 경사를 찾아내려오는 과정과 같다.
여러 방법이 존재
AI의 역사
미분이 불가 -> backpropergation 이 불가하다는 뜻 (나중엔 가능해짐. 단 데이터가 커지고, 딥해지면 작동을 안했음.. 제2의 암흑기)
20년 만에 backpropergation이 동작 가능했음 -> 극복 가능 이유: RBM(?)을 이용해서 소규모 데이터를 선행학습을 시키는 것을 반복해서 성공하여, 큰 그룹으로 묶어주는 방법으로 진행함. (제프리힌턴 교수)
나중에 밝혀지지만, 이 방법을 이해하게되면서 꼭 필요한 과정이 아닌 것들을 제거하므로써 효휼적으로 변함.
2010년부터 제대로된 녀석이 나오고부터 폭발적 변화가 시작. (GPU, 데이터 폭발적으로 늘어남 등등)
Activation Function
(1) sigmoid
\
3가지 단점으로 인해서 더 이상 사용되지 않음.
1. x값이 왼쪽, 오른쪽 끝으로 갈수록, 기울기는 0에 가까워 지므로 뉴런을 죽일 수 있음.
2. 시그모이드 결과가 모두 0 이상 이기때문에, 속도가 느려질 수 있음.
지그제그로 가면서, 속도가 느려짐. (확실하지 않음)
3. exp() 함수를 사용한다는 뜻은 큰 비용이 드는 행위임.
(2) tanh
마찬가지로 x값이 매우크거나 작을떄 gradient가 0이된다.
(3) Relu
activation fuctions 이라고 하면 많이 쓰이는 것.
문제 :
1) 0보다 작으면 g가 0이됨
2) 운이 나쁘게 데이터가 dead zone에서 시작하게되면 업데이트가 멈춤.
운이 나쁘게 데이터가 dead zone에서 시작하게되면 업데이트가 멈춤.
약간 더 진화한 버전으로 나온 녀석
핵심은 0.01x 때문에 값이 0이하일 때 기울기가 0이 아니므로, 뉴런이 죽지 않음.
여기서 한번더 더 진화된 녀석
최소값일때, x의 기울기를 몇으로 갖게할지 ai가 정해줌.
(4) ELU
단점 : exp()함수를 사용해서 비용이 큼.
(6) maxout "neuron"
문제 : w1, w2 두개의 연산을 해야한다.
결론
특별한 경우:
1) relu
2) 좀더 중요한경우 leaky maxout elu
3) tanh 는 가급적 사용 x
4) sigmoid 는 더이상 사용하지않으나 가끔씩 확인가능
데이터 전처리
zero-centered data는 일반적으로 해주고, nomarlized data는 일반적으로 해주지 않음.
이미지의 경우 0~255의 데이터는 해당 범위안에들어있기 떄문에 해줄 필요없다고 보면됨.
주성분 분석
pca (주성분 분석) : 데이터를 비상관화 하여 차원을 줄이는 것
whitening : 인접한 pixel간의 중복성을 줄여줌.
이 것들도 이미지 분석에 대해서는 큰 의미가 없음. 사용도 잘 안함.
zero centered만 신경쓰면됨.
32 x 32 x 3의 이미지의 경우, 이미지의 경우 rgb 3가지 채널을 가지는데, mean값을 뺴주는 방식 진행.
alex net 같은경우 오렌지 블랍(?)을 뺴주는 것
Weight initialization 가중치 초기화 (중요)
모든 가중치가 0일 경우 모든
학습 속도를 가속화 시키면서도, 안정화 시키는 목적
각 레이어들을 거치면서 입력값 분포가 불안정화되는 것이 문제라고 생각했기 때문 -> 각 batch을 지날때마다 입력값을 nomalize해주자.
수식의 내용은 정규분포를 적용해주기 위함.
N by D 로 되어있는 Input x가 있을때, 오른쪽 아래 식을 통해 정규화를 해준다.
Batch normalization 의 판단도 학습에 의해 가능하다.
첫번째 단게에서는 nomalize 하고, 두번째 단계에서 정규화 할 기회를 줌.
한가지 주의해야 하는 것은 traning 할때와 test 할때 다르게 동작함 -> mean과 varience(?)를 미리 학습함
Babysitting the Learning process
순서
1. zero centered
2. choose the architecture - 몇개의 노드를 둘것인지.
train 중 overfitting이 일어나는 것은 좋은 것(?)
learning rate를 아주 작은 값으로 설정했을때 -> loss가 거의 변하지 않을 수 있음 -> 그럼에도 불구하고 training 정확도가 증가할 경우가 있음.
이유 : learning rate가 작기 떄문에 loss는 거의 줄지 않지만, score는 이미 학습이 되었기 떄문에 정확한 클래스를 선택하게 됨. 실제로 loss 가 감소하지 않지만 training 정확도가 올라가는 현상이 발생함.
반대로 learning rate를 아주 큰 값으로 설정했을때 ->
loss 는 infinite가 나오게 됨. (inf)
이런 learning rate를 통해서 알수 있는것 -> 적절한 learning rate 의 적정수치를 알 수 있게됨.
croess - validation 전략
1. 반복을 너무 여러번 하지 않는다.
돌려 봤더니, validation accuracy가 48%가 나오는 것을 볼 수 있다 -> 정확도가 상위이므로 그 언저리로 두번째 단계로 넘어가면 된다. 2번으로 넘어감.
2.
이 값이 우리가 설정한 값의 범위에 아주 가까운 값에 가까움.
의 -3을 조정할 필요가 있음 -4, -5 로 넉넉하게.
hyper parameter의 최적값을 구하는 경우 grid search는 사용하면 안된다.
등간격으로 진행하게 되면 최적화된 hyperparameter을 놓칠 ㅅ ㅜ있다.
하이퍼파라미터를 찾기위해서 dj가 mixing 작업을 하기듯 찾아나가야해야함.
첫번째 monitoring이 되어야하는 것은 loss function이다.
이런 경우는 왜 생길까? -> 초기화가 잘 못된것이다.
위 그래프 설명: gradient가 흘러가지 않고, loss가 정체된다. 그러다 어느 순간 threshhold값을 지나가면서 학습이 진행되는 모습.
모 교수가 개선을 한 것이다.
강화 학습의 경우 위와 같은 그래프를 그린다. why? -> 계속해서 환경과 상호작용하면서, 강화되기 떄문에, 환경이 바뀜 -> 적응하기위한 노력 -> loss 낮아짐 -> 환경이 바뀜 -> 적응하기위한노력 -> loss 낮아짐 의 결과물
accruacy : loss 외의 두번쨰로 모니터링 해야하는 대상
ex) 빨간색 방식이 고양이를 80퍼센트로 인지함. 아래 초록색보다 좋음.
겝이 아주 크다면? overfitting 이되고 있다고 의심. -> 방지를 위해 regularization strength를 높혀줘야한다.
만약 gap이 전혀 없다면 바뀐 모델의 능력이 없다는 뜻.
track ratio of weight updates / weight magnitudes : 세번쨰로 모니터링 해야하는 대상
전반적으로 1/1000 수준이 이상적이라고 함.
결론