Weight Initialization
가중치를 어떻게 초기화하냐도 중요한 문제인데, 0으로 초기화하는 경우, 모델이 동일한 특징(symmetry feature)에 집중할 수 있어, 0으로 일괄적으로 초기화하는 것은 좋지않다. 따라서, 특정 initialization 방법을 사용하는게 좋다. Xavier initialization은 가중치 초기화시 in_features와 out_features를 모두 고려한 방식이며, He initialization은 in_features만을 고려한 방식이다.
nn.Linear : pytorch에서는 in_features 수를 활용한 uniform distribution 활용 (bias도 똑같이 함)
Xavier initialization이 ReLU에서 좋은 성능을 보이지 못해 He initialization으로 변경되었는데 왜 Xavier initialization은 더 좋은 성능을 보이지 못했을까? 그에 대한 이론적 근거는? Xavier는 out_features까지 고려하기때문에 분산이 작아져 0에 더 집중된다.
Learning rate scheduler
Learning rate scheduler또한 학습시에 아주 중요한 파라미터라 할 수 있다. 실제로 ResNet에서 error가 확확 떨어질 때가 있었는데 이게 learning rate scheduler 때문이라고한다.

learning rate는 미니배치로부터 Loss를 줄이기위한 gradient를 얻은 후에 얼만큼 그 방향으로 나아갈것인지를 정하는 변수이다. 이 값은 너무 커서도 너무 작아서도 안된다. 너무 크면 제대로 수렴이 안되고, 너무 작으면 수렴이 느려지고 local minima에서 빠져나오지 못한다.
https://stydy-sturdy.tistory.com/56
Optimizer : weight 업데이트 방법을 결정
Adam
Adam과 AdamW를 많이 본 거 같다. Adam은 Momentum, RMSProp Optimizer를 합쳐놓은 것이다. 학습을 할 때 손실을 줄이는 방향으로 학습이 되어야하는데 그래디언트가 좌우로 커지는 방향으로 생성될 수도 있다. 이렇게되면 좌우로 왔다갔다해서 최저점에 도달하는데 오래 걸릴 수 있기때문에 좌우의 움직임을 줄여주는 Momentum을 사용하고, RMSProp을 활용해 웨이트들의 그래디언트값을 조절한다. RootMeanSquare. 즉, 각 그래디언트에 제곱(Square)을 취한 후, Mean(이동 평균)을 계산해서 제곱근(Root)를 취해서 나눠준다. 그래디언트가 크다면 더 많이 나눠져서 그래디언트가 줄어드는 효과가 있고, 그래디언트가 작다면 덜 나눠져 큰 그래디언트와 크기가 맞춰지는 경향이 있다.
AdamW
To be continued...
과적합 방지 대책
Data Augmentation
Data를 이리저리 조작해서 데이터 수를 증강해 학습하는 방식.
Data Augmentation시에는 주의할 점.
1. 중요한 정보가 손실될 정도로 과도하게 변형하면 학습에 문제가 있을 수 있다.
2. 변형의 정도를 결정할 때는 모델이 어떤 특징에 더 집중하고, 어떤 특징에 덜 민감해져야하는지 고려해야한다.
@ Data Augmentation in Robotics
로보틱스 관점에서 Human Demonstration data를 subtask단위로 나눠 이를 조합해 데이터를 증강하는 방식인 MimicGen, 이를 보완한 SkillGen, Motion Planning과 Human Demonstration을 적절히 조합한 CPGen
MimicGen -> 물체가 다양한 위치에 놓이더라도 이를 잘 잡을 수 있으면 좋겠어서 물체의 위치를 바꿔가며 데이터 생성
CPGen -> 물체의 크기가 달라져도 잘 잡았으면 좋겠어서 물체의 크기와 위치까지 바꿔가며 데이터 생성
Dropout
학습시에 특정 노드를 무작위로 비활성화하는 방식. 마치 여러 개의 서로 다른 네트워크로 학습하는 것과 유사한 방식이다.
Batch Normalization과 비슷하게 학습과 테스트시에 다르게 적용되며, 테스트시에는 모든 노드를 살리고 출력값에 p(살릴 확률)을 곱해서 학습과 테스트시에 출력값의 크기가 달라지는 문제를 방지한다. 보통 FC레이어에서 많이 사용된다.
Regularization
Regularization에는 L1과 L2가 있다. L1은 가중치의 크기에 따라, L2는 가중치 의 제곱에 크기에 따라 L1은 가중치 의 크기에 상관없이 똑같이 줄이고, L2는 가중치 의 크기를 고려하여 큰 놈은 많이 작은놈은 적게 줄인다.(편미분해보면 L1은 상수, L2는 일차함수) 손실함수에 Regularization과 다른 Loss항이 있다면 가중치 의 크기를 줄여서 줄인 손실보다 가중치를 줄임으로써 늘어난 Loss가 더 크다면 해당 가중치는 업데이트를 자제한다. 이런 식으로 중요하지 않은 가중치를 점점 줄여나간다.
@ Regularization in Robotics
Regularization을 통해 모델의 파라미터 크기를 낮춤으로써 단순한 모델을 만들 수 있다. Imitation Learning에서 state distribution shift문제가 주요한 실패원인인데, 모델의 복잡도를 낮춤으로써 이 문제를 완화할 수 있다. 파라미터 크기가 크면 작은 입력에도 큰 변화가 출력되고, 이는 expert distribution에서 벗어나게하는 주요 원인이 될 수 있다. R3M논문에서는 비교적 간단한 Task에서는 L1 Regularization을 없애면 5% 정도의 성능하락이 있었는데 Re-orient pen과 같이 어려운 작업에서는 L1 Regularization을 없애니 성능이 올라갔다. 정교하지 않아도 되는 작업에서는 Regularization이 효과가 있었고, 정교해야하는 작업에서는 Regularization이 모델을 단순화해 복잡한 작업의 성능하락을 이끌었다.
@ Regularization & MAP(Maximum A Posteriori)
Posterior probability : the probability of the parameters θ given the evidence X and is denoted p(θ|X)
likelihood function : the probability of the evidence given the parameters: p(X|θ)
MLE : 주어진 데이터의 likelihood가 최대가 되도록하는 확률분포를 찾는 방법.
MAP : 사후확률(posterior probability) p(θ|X)를 최대화하는 파라미터 θ를 찾는 방법
MLE는 p(X|θ)만 최대화하지만, MAP는 p(X|θ)p(θ)를 최대화합니다. 즉, MAP는 데이터와 사전 지식을 모두 고려합니다.
Regularization의 경우, 가중치가 L1은 Lapacian distribution, L2는 Normal distribution을 따른다는 사전정보를 제공합니다. 사전정보를 준다고해서 MAP가 더 나은 것이 아닙니다. 사전정보가 잘못되었다면 잘못된 추론으로 이어질 수 있습니다.