목차
1. 강의정리
1-1. DL Basic - chap1. 딥러닝 기본 용어 설명 - Historical Review
1-2. DL Basic - chap2. 뉴럴 네트워크 - MLP(Multi-Layer Perceptron)
1-3. (과제) MLP Assignment - MNIST
2. 피어세션 정리
3. 데일리 회고
📜 강의 정리
* 부스트캠프 DL_Basic 강의를 맡아주신 최성준 교수님의 강의를 정리한 것 입니다.
[DL Basic] Chapter1. 딥러닝 기본 용어 설명 - Historical Review
- What make you a good deep learner?
- Implementation Skills - TF, PyTorch
- Math Skills - Linear Algebra, Probability
- Knowing a lot of recent Papers
- 10개의 강의를 앞으로 진행할 예정이고, 강의의 주제에 해당하는 논문을 추천해주실 예정이다. 강사님의 포인터에 따라 논문을 읽어 봐야겠다.
- Key Components of Deep Learning
- The data that the model can learn from
- The model how to transform the data
- The loss function that quantifies the badness of the model
- The algorithm to adjust the parameters to minimize the loss
새로운 논문이 나왔을 때 위의 기준으로 보면 기존 연구에 비해 어떤 장점이 있고 어떤 기여가 있는지 확인할 수 있다
상황별 손실함수(loss function)
- Historical Review
- "Deep Learning's Most Important Ideas - A Brief Historical Review" - Denny Britz (2020-07-29) 기반
- 2012 - AlexNet : ImageNet Large Scale Visual Recognition Challenge(ILSVRC)에서 처음으로 딥러닝을 이용해서 1등을 함. 그 이후로는 계속 딥러닝을 이용한 방법이 1등을 하게 됨.
- 2013 - DQN : 오늘날의 딥마인드이 시초. 알파고. Q-learning
- 2014 - Encoder/Decoder : 단어의 연속이 주어졌을 때, 다른 언어의 시퀀스로 만들어 주는 것.
- 2014 - Adam Optimizer : 결과가 잘나와서 일반적으로 Adam Optimizer를 사용
- 2015 - Generative Adversarial Network(GAN) : 이미지 생성기.
- 2015 - Residual Networks(ResNet) : ResNet 이전에는 layer를 깊게 쌓으면 오히려 학습 성능이 떨어지는 문제가 있었는데, ResNet이 layer를 깊게 쌓아도 학습 성능을 좋게 만드는 방법을 제시함
- 2017 - Transformer(논문 제목: Attentions Is All You Need)
- 2018 - BERT(Bidirectional Encoder Representations from Transformers) : fine_tuned NLP models
- 2019 - BIG Language Models(GPT-X)
- 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를 찾을 수 있을까?
- Loss를 최소화하는 것이 목표이므로, Loss가 줄어들도록 파라미터(w, b)를 변경해야 한다
- Gradient Descent : Loss를 각 파라미터로 편미분하여 0이 되는 방향으로 이동(=편미분값에 적절한 값을 곱해서 기존 값에서 뺼셈)
- multi dimensional input과 output을 다룰 수 있다
- input x에 대한 output y를 예측하는 함수를 찾는 것
- Beyond Linear Neural Networks - 네트워크를 여러개 쌓으려면(딥러닝)?
- 활성함수가 없는 경우 : W_2*W_1 = W_3로 나타낼 수 있기 때문에 한 layer와 같다.
- nonlinear transform 적용 : 네트워크의 표현력 극대화하기 위해서는 선형결합 뒤에 활성화함수를 이용해서 nonlinear transform을 거친 후 다시 선형변환과 비선형변환을 반복해야한다.
- Activation functions 활성화함수
- 문제와 상황마다 좋은 activation function이 다르다
- 활성함수가 없는 경우 : W_2*W_1 = W_3로 나타낼 수 있기 때문에 한 layer와 같다.
- 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는 다양한 함수들을 표현할 수 있다.
- Multi-Layer Perceptron
[과제][DL Basic] MLP 실습 in PyTorch
"Trainig MNIST dataset with MLP"
- Data Iterator
- 사용법
- torch.utils.data.DataLoader(dataset, batch_size=1, shuffle=False, sampler=None, batch_sampler=None, num_workers=0, collate_fn=None, pin_memory=False, drop_last=False, timeout=0, worker_init_fn=None, *, prefetch_factor=2, persistent_workers=False)
- 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를 적용
🔴중요 포인트 정리
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 시간을 가지기로 새로운 피어규칙을 만들었습니다.
오늘 강의에 대한 질문을 마치고, 강의의 한 부분에 대한 전반적인 리뷰를 하였습니다. 그냥 넘어갈 수도 있는 딥러닝의 역사에 대해 팀원들과 다시 한 번 되새기고 넘어가서 기억에 오래 남을 것 같습니다.
다들 오늘 강의 중 데이터 시각화 강사님이 좋으시다고 했는데, 아직 듣지 못해서 피어세션이 끝나고 들어야 할 것 같습니다. 기대가 됩니다!!
https://programmers.co.kr/competitions/1587?slug=mobis21
이 알고리즘 경진대회 예선 통과를 목표로 다들 코딩테스트와 알고리즘 공부를 하기로 했습니다
그 첫 단추로 오늘 프로그래머스의 위클리 챌린지를 함께 풀어보았습니다. 각자 10분간 문제를 이해하고 수도코드를 작성한 다음에 화면공유를 하여 코드를 작성하는 시간을 가졌습니다. 머리를 합쳐서 문제를 푸니 빠르게 풀 수 있었습니다.
💌 데일리 회고
강의정리하는 것도 점점 익숙해지는지, 저번주에는 강의 정리하는 것도 오래 걸리고 어떻게 정리해야 할지도 모르겠었는데, 이번주에는 정리도 금방하고 저만의 틀도 점점 생겼습니다. 하루를 정리하는 습관이 점점 잡히는 것 같아서 좋습니다.
지난주에 5일 동안 하루종일 앉아있었더니 허리가 너무 아파서 주말동안 폼롤러로 허리 운동도 하고, 저주파 마사지기로 허리 마사지를 해줬습니다. 그 덕분인지 아니면 아직 월요일이어서 그런지 오늘은 허리가 하나도 안 아팠습니다.
'TIL > Boostcamp AI tech' 카테고리의 다른 글
[Boostcamp] Week2-Day7. 최적화 Optimization :: seoftware (0) | 2021.08.10 |
---|---|
[Boostcamp] Data Visualization 기본적인 차트 요소 :: seoftware (0) | 2021.08.09 |
[Boostcamp] Week1 - Day5. 하루 정리 :: seoftware (0) | 2021.08.06 |
[Boostcamp] Week1 - Day4. 하루 정리 :: seoftware (0) | 2021.08.05 |
[Boostcamp] Week1 - Day3. 하루정리 :: seoftware (0) | 2021.08.05 |
댓글