본문 바로가기

전체 글

(41)
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..
9. CNN - Transposed, Dilated, Causal 0. 소개 오늘은 Tensorflow 등의 프레임워크에서 CNN의 특이한 파라메터를 몇가지 알아보도록 하겠습니다. Transposed Convolution은 이름 그대로 반대로 작동하는 Convolution 입니다. 보통 Convolution은 padding이 없을시 feature를 뽑아내면서 이미지의 크기는 작아지게 됩니다. 하지만 Transposed Conv는 거꾸로 이미지의 크기를 더 커지게 만듭니다. Dilated Convolution은 Convoltion filter를 적용할 때, n칸 간격 만큼 건너 뛰며 filter를 적용하는 것 입니다. Causal Convolution은 time step t의 output을 내기 위해서 time step t까지의 input만 고려하는 방식입니다. 시간, ..
8. CNN - 1x1, 3x3, 5x5, 예제 코드 앞으로의 포스팅에서는 CNN에 관련 되어 있는 몇가지 구조에 대해서 설명을 하고, 실험도 해본 결과를 포스팅 해보겠습니다. 1. Factorizing Convolutions. VGGNet, GoogleNet 등을 보시면 알게되는 개념 입니다. 위의 사진은 stride가 1, 5x5 filter size를 가진 conv layer 하나를, stride 1이고 3x3 filter size를 가진 두개의 conv layer로 인수분해가 가능하다는 얘기 입니다. 이와 비슷하게 7x7 layer를 3x3 layer 3개로 만들수도 있겠죠. 위의 두 사진은 5x5 layer를 3x3 layer 두개로 구성했을 때의 차이를 보여줍니다. 파라메터 수가 줄어들었습니다. 또한 딥러닝의 장점 중인 하나인 비선형성에 대한 모..