-
cs231n 6강 batch normalizatioin + babysitting카테고리 없음 2022. 1. 24. 17:12
이 글은 이 lecture 를 바탕으로 기술되었습니다.
하나의패턴을 보고 파라미터를 조정해 나가는것
베이비 시터--> 얘기 다르게 눕혀보고 잘자나?
Batch 단위로 학습을 하게 되면 Batch 단위간에 데이터 분포의 차이가 발생할 수 있습니다. 즉, Batch 간의 데이터가 상이하다고 말할 수 있는데 위에서 말한 Internal Covariant Shift 문제입니다.
공간적 구조를 유지하는게 Conv 의 핵심 batch norm--> 공간적 구조 유지 못함
0으로나누는것을 방지하기 위해 엡실론 추가
높은 학습률 = 카페인 . 이리저리 분산되어 있으면 커피를 아무리 마셔도 시험성적에서 좋은 점수를 받기 힘들다.
집중 정신, 컨텍스트에 집중하는 정도 = batch normalization 학습된 데이터는 우리 시냅스에서 relu 과정을 거친다. 이 거는 자연스러운 과정이다. 우리가 할 수 있는것은 활성화함수 말고도 많다. 우리가 시냅스를 조작안해도 공부할수 있는 이유는 집중이라는 과정을 거치기 때문이다. 마치 구글검색을 할때 기존 배치 정규화에서 벗어나는 주제들을 읽다가 다시 주제에 가까운 정보들만을 추려내는 과정과 비슷하다.
감마, 베타 업데이트 해서 성능이 향상되는 방향으로 갑니다.(자동)
로스 함수의 테일러근사식을 보면 2차 제곱항이 줄어듦에 따라
1차 항(gradient) 이 더 커져서 더 predictive 하게 된다(더 좋아짐)
델타 y (그라디언트 에 대한 한 스텝 )
에 대한 Hessian
삼각형 뒤집어놓은게 gradient.
삼각형 위에 2 있는게 Hessian
zig zag 나타나는 이유 orthogonal 즉 직교적으로 방향이 되기 때문. 최적의 방향과 직교가 되서 그렇다
x* 은 로컬 미니마다.(국소 최소값)
이러한 것은 이러한 종류의 동작은 f의 수준 집합이 로컬 최소값 주변 영역에서 다소 "타원체"이기 때문에 발생한다는 점에 유의할 수 있습니다.
그래서우리는 테일러근사법에서 2차미분까지 하려고 하는데 2차미분연산은 비싸기 때문에 그러한 것들을 Hessian implicity 를 이용해서 연산해보려고 합니다.
람다는 eigenvalue 입니다.
a가 symmetric 행렬로 a tranpose 는 a 입니다 그렇다면 고유값들을 다 real 값을 가집니다.
자 이러한 a 행렬을 smoothness 성질을 이용해서 쉬운 결론으로 내겠습니다.
R^d 차원에서 R 차원으로 가는 f 함수는 미분가능한 함수여야 합니다. 그렇다면
모든 유클리드 ^d 의 차원에 있는, 그래디언트가 0인 x지점들은 stationary point 라고 부릅니다
헤시안 행렬없이는 안장점 및 지역국소점을 최저점이라고 부를 수 없습니다.
Lipschitz Assumption
생각해 보면 GD(경사하강법) 가 이상하게 느껴질 수도 있습니다. 변수들의 상태 A를 기준으로 해서 성능을 측정하고 그 성능이 좋아지도록 변수들을 바꾸면 그 순간 상태 B가 될 텐데(새로운 형태의 변수공간), 거기서도 성능이 이전보다 좋아질 것이라고 말할 수 있는 걸까요? 네. 됩니다. 우리가 만든 인공신경망은 거의 언제나 Lipschitz 가정을 만족하는 함수라고 할 수 있기 때문입니다. Lipschitz 가정이란, 입력의 아주 작은 변화가 출력의 아주 작은 변화로 나타난다는 것, 즉 출력이 나비효과로 엄청나게 변하지 않는다는 가정입니다. 그래도 계속 훈련을 하다 보면 언제나 성능이 좋아지지는 않고, 가끔 성능이 거꾸로 나빠지는 것을 보게 됩니다. 너무 당황하지 마세요! 곧 다시 제자리를 찾을 겁니다.