Open jwkwak45 opened 5 years ago
7/9 Restricted Boltzmann Machine
딥러닝이 다시 살아날 수 있게한 방법 중 하나.
Energy based model
Restricted Boltzmann Machine
Restricted Boltzmann Machine 의 학습
Deep Belief Network
질문 1. hidden 과 visible 등등.. --> visible :input?? 질문 2. Joint Distribution P(x,y) 를 안다?? 질문 3. RBM 의 수식을 설명한 글...
논외. 이번거는 확실히 다른곳에서도 찾아봐야겠네요.
7/10 [실습] Multilayer Perceptron(MLP) 로 숫자 분류기 구현하기
fully connected layer
784 ----> 10 으로 줄이기 위해 784x512, 512x128, 128x10 행렬을 곱하고 각 레이어에 activation으로 non-linearty 를 부여????
주의 할 점은 weight , bias 를 만들때 딕셔너리 구조를 만들면 좋다
텐서플로우는 액티베이션 함수 바꾸는 것도 쉽다.
7/11 [실습] Custom dataset 만들어보기
이번 강의는 파이썬으로 데이터 셋을 늘리는 것에 대한 강의.
코드는 참조로 생각하면 될듯
7/18 이미지의 각 픽셀을 분류하는 Semantic Segmentation
Semantic Segmentation
Fully Convolutional Networks(FCN) for Semantic Segmentation
Semantic Image Segmentation with deep convolutional Nets and Fully connected CRFs
Learning Deconvolution Network for Semantic Segmentation
DeepLab : Semantic Image Segmentation with Deep Convolution Nets, Atrous Convolution, and Fully Connected CRFs
Full-resolution residual nets
U-Net
Deep contextual networks
Fusion Net
Pyramid Scene parsing Net
<Optimization 방법론>
-학습시킬 때 사용
-Gradient discent optimizer를 항상 가정 : 가중치가 x축인 공간에 있는 함수의 최소값을 구하는 것 : 몇억 차원의 공간이기 때문에 함수 모양을 알 수가 없음 -> 기울기를 가지고 구하게 됨 : 기울기는 cost function의 기울기 ( cost function을 최소로 만드는 것이기 때문에) : 기울기 -> 1차 미분
-세 가지 variant gradient descend (1)Batch gradient descend : 전체 데이터를 한 번에 고려. 전체 데이터의 gradient를 각각 계산. 평균 냄. 한 번 업데이트 (2)mini-batch gradient descend : 중간. 제일 좋음. 일반적으로 얘를 사용. 2^n 단위의 일정 데이터의 기울기를 계산.(GPU 때문). batch 사이즈가 작을 수록 성능이 좋음. (3)stochastic gradient descend : 한번에 한 개. 그래서 떨림현상 있음. 랜덤한 한 개를 고르고 얘가 batch를 대표한다고 가정하기 때문에 이름에 stochastic이 있음.
-Challenges (1)방향밖에 모르기 때문에 크기인 learning rate를 정하기 어렵다. -> learning rate schedule (2)local minima의 문제
1.Momentum : 한쪽 방향으로는 값이 계속 커지는데 다른 방향으로는 줄어들면서 진동할 때. : 이전에 있던 것을 현재 있는 것에 더함으로써 해결
2.Nesterov accelerated gradient / Nesterov momentum update : gradient를 모멘텀만큼 옮기고 나서 그래디언트를 계산. : 1번의 로컬 미니멈에서 진동하는 문제를 해결함.
3.Adagrad : 모든 파라미터마다 학습율을 바꾸어 주는 것 : 많이 변했던 파라미터는 조금 변하게 하고 조금 변했던 파라미터는 많이 변하게 하는 것 : (수식 이해 필요) : 치명적인 단점 - G가 계속 커짐 -> 학습률이 줄어들어 학습이 안됨.
4.Adadelta : Adagrad와 같은 맥락. 보완한다. : 지금 들어온 기울기의 제곱을 더해준다. : (수식 이해 필요) : 학습율이 없다
5.RMSprop : Adadelta와 비슷하며 학습율이 있다. : (수식 이해 필요)
6.Adam : learning rate + momentum : 보통 얘를 쓰면 됨
*이 외 유용한 팁들 -shuffling : 학습데이터를 매 epoch마다 섞기 -curriculum learning : 난이도를 적절히 -batch normalization -early stopping -gradient noise -learning rate
저번에 말했던 책들 둘 다 빌려서 내용 확인해봤는데, 처음배우는 딥러닝 수학 책이 저희 목표에 훨씬 맞는 책인것 같아요! 예상대로 수학의 아름다움 책은 교양서에 가깝더라구요.
7/19 [실습] Convolutional Neural Network(CNN)으로 숫자 분류기 구현하기
Saver 를 통해 저장하고 불러오기
7/19 [실습] Custom dataset을 이용한 분류기 구현하기
data의 불균형 때문에 생기는 문제
저번에 말했던 책들 둘 다 빌려서 내용 확인해봤는데, 처음배우는 딥러닝 수학 책이 저희 목표에 훨씬 맞는 책인것 같아요! 예상대로 수학의 아름다움 책은 교양서에 가깝더라구요.
: 딥러닝 수학책 같이 읽어볼까요?
저번에 말했던 책들 둘 다 빌려서 내용 확인해봤는데, 처음배우는 딥러닝 수학 책이 저희 목표에 훨씬 맞는 책인것 같아요! 예상대로 수학의 아름다움 책은 교양서에 가깝더라구요.
: 딥러닝 수학책 같이 읽어볼까요?
네 좋아요!
저번에 말했던 책들 둘 다 빌려서 내용 확인해봤는데, 처음배우는 딥러닝 수학 책이 저희 목표에 훨씬 맞는 책인것 같아요! 예상대로 수학의 아름다움 책은 교양서에 가깝더라구요.
: 딥러닝 수학책 같이 읽어볼까요?
네 좋아요!
저도 오늘 학교 도서관에서 빌렸어요! 이것도 범위 정해서 같이 정리해서 읽고 발제하면 좋을 것 같아요!
Restricted Boltzmann Machine
-RBM : 딥러닝이 다시 살아나게 함 -Energy-based models -unsupervised learning이기 때문에 input만 주어진다. -x : input -p(x) : E(x)에 반비례 -E(x)를 찾고 학습하는 것이 목표
-Boltzmann machine :General Boltzmann machine : hidden layer끼리 visible layer끼리 그 안에서도 연결이 있다. :Restricted Boltzmann machine : 그 안에서는 연결이 없다. -> neural net과 같다 -> pre-training에 활용. 초깃값을 잡는다. :각 노드들은 0또는 1을 확률적으로 가지고 있다.
-E(v,h l 쎄타) : 에너지가 들어가는 꼴을 정해놓음. 머신이 돌아가면서 w,b,a를 구하는 것. -P(v,h l 쎄타 ) : 에너지가 정해지면 확률을 구할 수 있다. 확률을 구할 때 normalizing constant에서 서메이션을 하는 횟수가 너무 커지기 때문에 문제가 된다. -우리의 목적은 visible이 주어졌을 때 parameter(w,b,a)를 구하는 것. -positive phase : 어떠한 visible이 주어졌을 때 모든 가능한 hidden으로 서메이션을 하게 됨.
-CD(Contrastive Divergence) -positive phase : 주어진 visible과 그로 인해 만들어진 hidden으로 계산 -negative phase : hidden으로부터 visible을 다시 만들고 그 둘로 계산
-Deep Belief Network (DBN) : RBM을 쌓는 것
이미지의 각 픽셀을 분류하는 semantic segmentation
-이미지의 픽셀 별로 분류를 하는 것 -앞에서는 이미지 전체에 대한 분류를 했는데 이걸 모든 픽셀에 대해 하는 것 -어디에 사용? : 자율주행에 많이 사용
1.Fully Convolutional Networks for semantic segmentation -FCN (Fully convolutional network) :뒷단의 fully connected layer가 없고 모든 네트워크가 convolution으로만 이루어져 있음 -특징 : (1) input size에 dependent하지 않다
7/22 [실습] 99% 정확도를 넘기는 정교한 CNN 구현하기
7/8 Optimization 방법론
Optimization 방법론의 발전
Gradient Descent Algorithm
Batch Gradient Descent
Stochastic(확률론적) Gradient Descent
Mini-Batch Gradient Descent
Challenges
Momentum
Nesterov Accelerated Gradient
Adagrad
Adadelta
RMSprop
Adam
Adaptive Learing Method를 쓰는 것이 좋다.
Shuffling : 학습데이터는 매 Epoch 마다 섞어주는 것이 좋다.
Curriculum Learning : 쉬운 모델부터 학습
Batch Normalization : 매우 매우 중요
Early stopping
Gradient Noise
Learning rate : 좋은 Learning Rate의 모양이 중요하다. 너무 Linear 한 모양도 문제고 너무 급격해도 문제다. 바꿔가면서 학습을 시도하는게 좋다.