본문 바로가기

딥러닝

(18)
17. GAN - 예제코드 이전 GAN 소개글에 이어서 GAN의 구현에 대한 글을 작성해보겠습니다. 전체 코드는 늘 그렇듯이 코랩에 작성해두었습니다. (https://colab.research.google.com/drive/1v7OYMjLF1zkYUzcuCSUdpzUmIm_dCPPz#scrollTo=9R6X81WJsyqmhttps://colab.research.google.com/drive/1v7OYMjLF1zkYUzcuCSUdpzUmIm_dCPPz) 참고한 코드는 Tensorflow2의 공식 튜토리얼 입니다. (https://www.tensorflow.org/tutorials/generative/dcgan) 1. 데이터 GAN은 훈련시키기가 무척이나 어려운 구조 입니다. 그래서 간단한 MNIST 데이터를 이용했습니다. 사실 이 ..
16. GAN - 생성모델 1. GAN GAN은 Generative Adversarial Nets의 줄임말 입니다. 딥러닝에 대해서 관심이 있으시거나 공부를 하신분이라면 GAN이란 이름을 많이 들어보셨을 겁니다. GAN 2014년에 발표된 이후로 엄청난 인기를 끌어서 지금까지도 끊임없이 연구되고 관련 논문이 나오고 있습니다. 그 이유는 생성모델로써 엄청난 가능성을 보여주었기 때문이라고 생각합니다. 물론 생성 모델로써만 사용되는 것은 아닙니다. 기존 머신러닝은 보통 예측, 분류 등의 task를 주로 수행합니다. 예측과 분류에서는 대단한 성능을 보여주고 있지만 생성 모델에서는 그렇지 못했습니다. 하지만 GAN이 등장하고 나서 부터는, 이제 생성모델에서도 인간을 뛰어넘는 성능을 보여주지 않을까라는 기대심을 갖게 된 것이죠. 2. GAN..
15. AutoEncoder 예제코드 https://colab.research.google.com/drive/1AREWJExVHXtENB_XBlkFmTyKUT9REY-Z Google Colaboratory colab.research.google.com 이번 예제코드에서는 두종류의 AutoEncoder 코드를 작성했습니다. Mnist 데이터를 이용하였고, 기본적인 Autoencoder로는 FC layer만을 이용해서 모델을 구성하였습니다. 이 AE를 훈련시켜서 나온 압축 -> 복원 시킨 결과는 이렇습니다. 뭔가 형태가 비슷한 것 같긴한데, 숫자 외의 배경 색깔이 좀 다르고, 얼룩이 묻어있는 듯하게 나오죠. 그 다음에는 Convolutional AutoEncoder 입니다. Encoder를 Conv layer -> Pooling -> Conv ..
14. AutoEncoder 1. AutoEncoder 오늘은 AutoEncoder라는 아주 유용한 모델 구조를 소개해드리고자 합니다. Autoencoder를 사용하는 가장 주된 이유는 새로운 feature를 만들어내는 것 입니다. 인공신경망 때부터 유용하게 사용되다가, 딥러닝이 발전하면서 autoencoder도 같이 발전했습니다. NLP의 기계번역에서 주로 사용하는 seq2seq 라던가, 생성모델로 유명한 VAE, GAN등을 알기전에 autoencoder는 필수적으로 알아야하는 구조 입니다. 2. AutoEncoder의 모델구조 AutoEncoder의 가장 큰 특징은 Input과 output이 같다는 것 입니다. Input과 output이 같다면 도대체 모델이 무슨 용도가 있느냐 라고 생각할 수 있습니다. 그래서 autoencod..
13. RNN (순환 신경망) 1. RNN(Recurrent Neural Network) RNN은 언어, 음성 등 signal 데이터, 순서가 있는 데이터를 모델링 하고 싶으시다면 한번씩 들어보셨을 겁니다. RNN은 순서, 시간 등을 모델링 할때 강점을 보이고, input과 output 길이를 다양하게 적용할 수 있다는 장점이 있습니다. 순서와 시간을 잘 모델링 하고, input과 output 길이를 다양하게 적용시킬 수 있는 이유는 RNN의 작동방식을 보면 알 수 있습니다. 2. RNN의 작동 방식 Dense(FC), CNN 등의 작동 방식을 보면, layer의 값들이 다음 layer를 지나면서 연산을 합니다. 5번째 layer에 input이 된 정보가 있다면, 5번째 layer의 output 계산에만 관여하지, input들 사이의..
12. Learning Curve (학습 곡선) 1. 학습 곡선 본인이 직접 모델을 만든다던가, 논문을 구현하던가, 이미 있는 모델을 조금 바꿔서 훈련시킨다던가 할때 학습 곡선을 보는것은 굉장히 유용합니다. 학습 곡선은 보통 Train set과 Validation(test) set에 대해서 각각 loss와 metric을 훈련 중간중간 마다 체크한 곡선을 말합니다. 위와 같은 사진이 일반적인 학습곡선 입니다. 위 사진은 Loss로 Cross Entropy, Metric으로는 Accuracy를 사용했고 Epoch 마다 계산한 값을 plotting 한 것 입니다. 2. 학습 곡선의 유용성 위 사진 같은 경우는 단순하게 생각하면 loss가 얼마고, metric 수치는 얼마구나를 알 수 있습니다. 숫자로도 볼 수 있지만, 아무래도 사진이 한눈에 들어오니까 편하..
11. Activation Function (활성화 함수) 딥러닝의 모델을 구성하거나, 이미 학습된 모델을 사용할 때 많은 활성화 함수를 보게 됩니다. ReLU, Sigmoid, 등이 있는데, 왜 그런 활성화 함수를 그곳에 사용하느냐? 를 모르고 사용하는 경우가 있습니다. 단순히 ReLU를 쓰면 성능이 좋다는데? 보다는 조금 더 깊은 내용을 알아보고자 합니다. 1. Non-linear or not 사용하는 활성화 함수를 보면 전부 다 비선형 함수 입니다. 지금은 당연하지만, 활성화 함수로 다른 함수를 사용할 때도 있었습니다. 그 중 대표적인 함수가 Step Function 입니다. Step Function은 정의 하기 나름 입니다만, 위 그림처럼 '계단같이' 생긴 함수들을 말합니다. 위 함수는 간단하게 0보다 크면 1, 작으면 -1로 나눈 것입니다. 아주 예전에..
10. Transfer Learning 1. 개념 Transfer Learning을 번역하면 전이 학습 입니다. 기존에 학습 시킨 모델을 이용해서, 현재의 task에 이용하는 것 입니다. CNN을 배우시는 분들은 특히 익숙한 개념일텐데요. Imagenet이라는 거어어대한 학습 데이터셋에 수십, 수백개의 layer를 가진 모델을 학습 시키려면 상당히 많은 자원이 소요됩니다. 하드웨어 적으로는 GPU가 많이 필요할 수도 있고, 하드웨어가 빵빵하다고 하더라도 시간이 상당히 많이 소요 됩니다. Transfer learning의 작동원리를 대략적으로 설명해드리면, 딥러닝은 layer 하나하나가 feature를 출력해낸다고 할 수 있습니다. 잘 훈련된 이미지 분류 모델이 있다고 생각해보면, 그 모델은 각 layer 하나하나가 이미지의 특정한 featur..