머신러닝 및 딥러닝
-
Batch Normalization은 왜 사용하는 것일까?머신러닝 및 딥러닝 2021. 1. 17. 16:03
1. training을 빠르게 해준다. 처음 그대로 입력을 넣으면 height의 경우는 분포의 범위가 상당히 조그마하기 때문에 age에 비해 상당히 가파른 것을 알 수 있다. 이 경우 가장 optimal한 point로 가기위해서는 상당히 미세하게 조정해야 하는 것을 알 수 있다. 하지만 height와 age의 평균이 0 이고 분산이 1인 분포로 만들게 되면 age와 hegiht의 분포가 비슷해지기 때문에 더 큰 lr을 가지고도 학습을 진행해도 optimal값에 들어가는데 지장이 없어서 이 경우 더 빠르게 수렴한 다라는것을 직관적으로 알 수 있다. 2. 초기 가중치의 중요도를 낮춘다. 앞서 설명했던 예시 처럼 데이터의 분포가 비슷하니 optimal 한 값에 더욱 잘 찾아가고 이 말은 학습이 더 원활하게 되..
-
Hyperparameter 튜닝은 어떻게 하는걸까?머신러닝 및 딥러닝 2021. 1. 17. 10:56
딥러닝에는 여러가지 하이퍼 파라미터가 존재한다. 예를들어 대표적으로 몇개만 써보면 1. 층 별로 hidden unit의 갯수 2. 학습률 3. Adam optimizer로 예시를 들면 베타값 2(0.9 와 0.999)개와 입실론값(10^-8) 4. layer의 수 5. 학습률을 쓰지 않는다면 learning rate decay 6. mini-batch 의 크기 7.모멘텀 값(0.9 가 가장 좋은 초기값으로 알려져 있다.) 빨간색이 가장 중요한 하이퍼파라미터이고 그다음 차례대로 중요한 것이 주황색 초록색이라고 생각하면 될 것 이다.(당연히 이렇게가 항상 중요한 순서다 라는 것은 아니다! 일반적으로 그렇다고 생각하면 될 것이다.) 과거의 머신러닝에서는 위의 그림과 같이 하이퍼파라미터가 2개만 있다고 가정했을..
-
Dropout 이란 무엇인가머신러닝 및 딥러닝 2021. 1. 16. 15:40
Dropout은 신경망의 뉴런을 부분적으로 생략하여 모델의 과적합(overfitting)을 해결해주기 위한 방법중 하나이다. 과적합이란 training dataset으로 학습한 모델의 정확도가 x 축을 layer 수라고 할때 layer를 쌓으면 쌓을 수록 training에 대하여 loss 값은 줄어 들지만 오히려 test set에 대해서는 loss 값이 올라가는것을 예시로 들 수 있을 것이다. 다시 Dropout 으로 돌아가자면 전체 weight를 계산에 참여시키는 것이 아닐 layer에 포함된 weight 중에서 일부만 참여시키는 것이다. 여기서 일부만 참여시키는 것이라는 나머지를 제외 시키라는 말이 아니라 나머지 뉴런을 0으로 만드는 것을 의미한다. 딱봐도 잘 안될거 같은데 직관적인 설명이 이를 경감..
-
CycleGAN 이란?머신러닝 및 딥러닝 2021. 1. 16. 13:28
CycleGAN을 이해하기 앞서 pix2pix 에 대해서 이해가 필요하다 pix2pix pixel to pixel은 말 그대로 하나의 픽셀을 다른 픽셀로 바꿔준다는 의미이다. 아래 이미지와 같이 흑백사진을 컬러사진으로 바꾸거나, label만 부여한 input에 대해 실제 이미지를 생성하거나, edge만 있는 input 에 대하여 완전한 output을 만들어 내는데 사용한다. 아래의 사진을 참고하면 이해하기 더 용이하다. loss function pix2pix의 loss function은 다음과 같다. G(x) 와 y의 차이(여기서 G(x)는 생성한 이미지를 y는 ground truth를 의미한다.), 즉 pixel level의 차이를 최소화 한것을 loss로 두고 학습을 시키면 아래와 같은 결과가 나온다..
-
nn.Module에서 super머신러닝 및 딥러닝 2021. 1. 10. 22:26
위에 코드들의 공통점은 클래스들이 모두 pytorch의 nn.Module을 상속했다는 것이다. 하지만 이것의 super에서 __init__ 을 호출 할때 어떠한 것은 매개변수에 자신의 클래스 이름과 self를 넣는 반면 어떠한 것은 아무것도 넣지 않고 그냥 호출한다. 개인적으로 뭔가 이해가 안되는 코드가 있으면 계속 눈에 밟여서 신경이 쓰여 찾아본 결과 단순 버전 차이로 발생된 차이이다. 즉, pytorch의 전 버전에서는 어떠한 파라미터를 넣지 않는 것이 맞는것이다. 위의 코드는 pytorch에서 class Module(object): 의 __init__을 가져온것이다. 보다시피 self 외에 어떠한 파라미터도 갖지 않는 것을 볼 수 있다. 그렇다면 어떤 클래스를 만들고 만약 그 클래스가 pytorch..
-
np.zeros 와 np.zeros_like 의 차이머신러닝 및 딥러닝 2021. 1. 6. 12:57
np.random.randn vs np.random.rand 와 더불어 가장 헷갈리는 것이 np.zero 와 np.zeros_like 의 차이일것이다. 언어 자체에 의미를 두는것이 좀 더 빠른 이해에 도움이 된다. 시간이 없는 사람들을 위해 간단히 만 설명하자면 np.zeros : 0으로 가득찬 Array를 배출한다. 즉, 여기에는 튜플, int, 혹은 list의 값이 들어와야 한다 그렇게 되면 해당하는 shape으로 형태를 만들어준다음 Array를 return 한다. 만약 여기에 np.zeros_like 처럼 변수를 넣어주면 오류가 나온다. np.zeros_like : 어떤 변수만큼의 사이즈인 0 으로 가득 찬 Array를 배출한다. 즉, 여기에는 변수가 들어와야한다. 여기는 변수 말고도 그냥 [2,3..
-
NLP 에서의 embedding size머신러닝 및 딥러닝 2021. 1. 1. 15:20
NLP에 대해서 "임베딩"이란 말을 많이 들었는데 "임베딩"이란 무엇일까? 임베딩 : NLP에서 일반적으로 사람들이 쓰는 언어를 기계가 알아들을 수 있게 수치화(벡터화) 하는 것으로 단어나 문장을 벡터 공간에 끼워넣는다(embed)는 의미를 가지고 있다. 이렇게 했을 때 장점이 어떤 것이 있을까? 1. 1.1 코사인 유사도와 같은 방법으로 가장 유사한 문장 또는 단어를 계산 하여 구할 수 있다. 1.2 t-SNE 차원 축소 기법으로 시각화가 가능하다. 2. 단어들 사이의 의미/문법적 정보를 도출 할 수 있다. 단어나 문장 사이의 유사도를 계산 할 수 있다. 코사인 유사도와 가은 방법으로 가장 유사한 문장 또는 단어를 계산 하여 구할 수 있다. t-SNE 차원 축소 기법으로 시각화가 가능하다. 단어들 사이..
-
Beam Search머신러닝 및 딥러닝 2020. 12. 22. 23:31
NLP(자연어처리)에서 많이 사용되는 Beam Search에 대해서 알아보고자 한다. 나는 이번 논문 주제인 챗봇에 대한 모델을 만들때 해당 알고리즘을 사용했다. 마침 이번학기 때 (3-2학기) 알고리즘 수업을 들었는데 Greedy search 그리고 DFS 와 비슷한 느낌을 받았다. Beam Search 어떻게 생겼고 어떠한 이유때문에 NLP에서 사용되는지 알아보자 main.py 로 인하여 prediction은 2차원 리스트가 만들어 진다. 즉, 형태가 [[10개의 랜덤숫자], [10개의 랜덤숫자], [10개의 랜덤숫자], [10개의 랜덤숫자]] 으로 만들어진다. 여기서 beam_search를 호출한다. beam_size(여기서는 k에 해당한다)는 5로 놓았다. 차근차근히 봐보자. 원래 남의 코드 보는..