2020 - Self Supervised Learning : SimCLR - a simple framework for contrastive learning of visual representations
[DL Basic] Chapter2. 뉴럴 네트워크 - MLP
뉴럴 네트워크와 뉴럴 네트워크의 가장 간단한 형태인 MLP에 대해서
Nuural Networks : (정의 1) Neural networks are computing systems vaguely inspired by the biological neural networks that constitute animal brains(위키피디아에서 신경망 정의)
신경망의 시작은 인간의 뇌를 모방하는 거였지만, 현재는 각자의 모델에 대한 특징과 수학적 분석이 필요
(정의 1) Nueural networks are function approximators that stack affine transformations followed by nonlinear transformations. - 행렬곱과 비선형연산을 반복적으로 수행하는 함수를 모방하는 모델
Linear Neural Networks
input x에 대한 output y를 예측하는 함수를 찾는 것
적절한 w와 b 값 찾기
어떻게 w와 b를 찾을 수 있을까?
Loss를 최소화하는 것이 목표이므로, Loss가 줄어들도록 파라미터(w, b)를 변경해야 한다
Gradient Descent : Loss를 각 파라미터로 편미분하여 0이 되는 방향으로 이동(=편미분값에 적절한 값을 곱해서 기존 값에서 뺼셈)
gradient w
gradient b
계산값 업데이트
multi dimensional input과 output을 다룰 수 있다
Beyond Linear Neural Networks - 네트워크를 여러개 쌓으려면(딥러닝)?
활성함수가 없는 경우 : W_2*W_1 = W_3로 나타낼 수 있기 때문에 한 layer와 같다.
nonlinear transform 적용 : 네트워크의 표현력 극대화하기 위해서는 선형결합 뒤에 활성화함수를 이용해서 nonlinear transform을 거친 후 다시 선형변환과 비선형변환을 반복해야한다.
Activation functions 활성화함수
문제와 상황마다 좋은 activation function이 다르다
Neural Network가 왜 잘될까?
There is a single hidden layer feedforward network that approximates any measurable function to any desired degree of accuracy on some compact set K.
hidden layer가 있는 neural network는 다양한 함수들을 표현할 수 있다.
shuffle = True : iteration이 끝나고 다음 epoch로 넘어갈 때 데이터 섞기
Define the model
nn.Module를 super class로 가져오기 : forward 등의 함수를 상속 받기 위함
Evaluation function
model.eval() : dropout, batch_normalize 와 같이 train과 달라지는 부분이 있기 때문에 모드 change
Train
to(device) : 학습시키고자 하는 디바이스에 데이터 넣어준다.
view : = reshape
optm.zero_grad() : 학습하고자 하는 옵티마이저의 그래디언트(파라미터)를 모두 0으로 초기화
loss_out.backward() : 각각의 weight에 대해 backward
optm.step() : 계산한 weight를 적용
train acc : 0,994, test_acc : 0.979MNIST 학습 결과
🔴중요 포인트 정리
1. nonlinear transformation의 필요성 nonlinear transformation은 활성화함수에 의해 일어나는데, 이를 거치지 않으면 Deep Learning이 아닌 Linear Neural Network 에서 벗어날 수 없다. Neural Network를 사용 해야 하는 이유를 예상해보면, 한 레이어(W, b)가 한 기능을 담당할 수 있는데 여러개의 레이어가 있으면 여러개의 함수 기능을 수행할 수 있어서 있어서 그런 것 같다.
2. loss function의 목적 생각하기 loss function의 어떤 한 종류가 항상 우리의 목적을 만족하는 것은 아니다. 예를 들어, MSE를 사용하는데 outlier가 많은 데이터가 주어진다면, outlier에 대한 제곱값이 네트워크에 큰 영향을 미치게 되어 네트워크를 망가뜨릴 수 있다. loss function은 각각의 성질을 가지고 있고, 해당 loss function이 왜 내가 원하는 결과를 얻어낼 수 있는지 생각하고 선택하는 과정이 필요하다.
다른 예로, Cross entropy가 분류 문제를 푸는데 적합한가 생각해봤을 때, cross entropy는 y가 원핫벡터로 되어 있고 예측도 원핫벡터로 이루어지기 때문에 제대로 예측된 값만 살아남는다. 분류를 할 때에는 그것이 얼마나 큰 값으로 분류되는지보다는 분류가 잘 되고 있는지가 중요하기 때문에 cross entropy가 분류문제에 적합하다고 볼 수 있다.
✅ 더 공부해 볼 것 1. loss function의 수식 이해하기 - ex. CE 함수 뜯어보기 log는 왜 있을까? 2. 2강에서 mnist 실습한 것 다른 데이터셋으로도 해보기 https://github.com/sjchoi86/upstage-basic-deeplearning/blob/main/notebook/mlp.ipynb 3. 실습코드 한 줄씩 뜯어보기
🙋♀️피어세션
피어세션을 점점 진행해가며 새로운 규칙들이 생기고 있습니다
오늘은 다들 말이 없어서 오늘의 모더레이터님께서 TMI 시간을 제시하셨는데, 효과가 좋았습니다. 그래서 내일부터는 피어세션 시간 시작에 앞서 TMI 시간을 가지기로 새로운 피어규칙을 만들었습니다.
오늘 강의에 대한 질문을 마치고, 강의의 한 부분에 대한 전반적인 리뷰를 하였습니다. 그냥 넘어갈 수도 있는 딥러닝의 역사에 대해 팀원들과 다시 한 번 되새기고 넘어가서 기억에 오래 남을 것 같습니다.
다들 오늘 강의 중 데이터 시각화 강사님이 좋으시다고 했는데, 아직 듣지 못해서 피어세션이 끝나고 들어야 할 것 같습니다. 기대가 됩니다!!
댓글