본문 바로가기

머신러닝

[머신러닝]RNN과 LSTM 0. What is recurrent?recurrnet.되풀이되는, 반복되는 기존까지 우리가 배워왔던 피드포워드 신경망들에서 입력 데이터는 모든 노드를 각 한번씩만 지나가게 된다. 한번만 지나가기 때문에 데이터에서 시간의 개념을 제외하고 독립적으로 학습하기 때문에 기억이란것이 존재하지 않고, 현재 들어온 데이터만을 고려한다. 그러나 이 글에서 살펴볼 순환 신경망들은 다르다. 순환 신경망들은 지금 들어온 입력 데이터와 이전에 들어온 데이터를 같이 고려한다. 그 뜻은 과거가 현재에 영향을 준다는 것이며 기억이 존재한다는 것이다. 1. RNNsRNN 모델은 앞의 순환 신경망 개념이 실제로 적용된 아키텍처이다. RNN은 위와 같은 그림으로 설명 가능하다. 여기서 t는 시간이다. X_t를 입력으로 받아 h_t를 .. 더보기
[머신러닝]오토인코더(Autoencoder)를 알아보자. 1. 오토인코더란 오토인코더는 출력값을 입력값의 근사로 하는 함수를 학습하는 비지도 학습이다. 인코딩이란 단어는 다음과 같은 뜻을 가지고 있다. 암호화하다, 부호화하다, (다른 언어로)표현하다 오토인코더는 인코더와 같이 입력을 압축하고, 그것을 재구성한다. 오토인코더의 구조는 다음과 같다. 이 구조를 보면 입력을 히든 레이어로 인코딩하고 인코딩된 히든 유닛을 디코딩해서 입력과 사이즈가 같은 출력을 한다. 이때 인코딩 과정에서 입력이 압축되는데 입력값이 압축됨으로써 입력에서 출력으로의 손실없는 완벽한 복사는 일어날 수 없으며 이러한 압축 과정의 일환으로 입력이 무작위적이 아니라는 가정 하에 히든 유닛이 입력의 피처를 학습하게 된다. 인풋레이어에서 히든 레이어로 인코딩 되는 과정에서 정보가 압축되는 이와 같.. 더보기
[머신러닝]DCGAN 알아보기 1. GAN의 한계GAN은 분명히 혁신적인 알고리즘 이었지만 한계 또한 존재했다. 고해상도 이미지 생성 불가학습 불안정이와 같은 문제는 Minimax problem을 해결하는 네트워크 구조와 Fully connected network를 사용하는 GAN 자체의 구조에서 기인한 것이었다. 오늘 알아볼 DCGAN은 FCN을 사용하는 네트워크 구조를 바꾸어 이와 같은 문제점을 해결했다.2. GAN과의 차이점사실 GAN과의 차이는 별로 없다. GAN의 Fully-connected network를 Deep convolution network로 대체했을 뿐이다. 하지만 이와 같은 차이점이 다음과 같은 결과를 이끌어 낼 수 있었다 Scene을 이해하고 기존 GAN보다 고해상도의 이미지 생성기존 GAN에 비해 안정된 학.. 더보기
[머신러닝] 스타일을 바꿔주는 Style Transfer 1. Style Transfer란?요즘 사진 편집 앱들을 보면 프리즈마라는 앱이 있다. 이 애플리케이션은 자신이 찍은 사진들을 그림같은 스타일로 바꿔주는 앱이다. 이런식으로 이미지를 바꿔준다. 이 기술을 스타일 트랜스퍼(Style Transfer) 라고 한다. 스타일 트랜스퍼의 핵심은 콘텐츠 이미지와 스타일 이미지가 있을때 콘텐츠 이미지의 콘텐츠를 유지하면서 스타일 이미지의 스타일로 스타일을 변환하는 것이다. 2. 스타일과 콘텐츠스타일 트랜스퍼의 논문은 이 스타일 트랜스퍼를 신경 알고리즘이라고 하고 있다. 즉, 신경망을 이용하여 원 이미지의 콘텐츠를 유지하며 스타일을 바꾸는 것을 구현할 수 있다는 것이다. CNN(합성곱 신경망)은 비전 분야에서 강세를 보이는 신경망이다. CNN은 이미지에서 최적의 fea.. 더보기
[머신러닝]GAN - Generative Adversarial Network 훑어보기 1. GAN이란?머신러닝은 크게 세가지 분류로 나누어진다. 첫번째는 지도학습(Supervised Learning), 두번째는 강화학습(Reinforcement learning)그리고 마지막은 비지도 학습(Unsupervised Learning)이다. GAN은 이 중에서 비지도 학습에 속하며 2014년 NIPS에서 Ian Goodfellow가 발표한 생성 모델으로써 Yann Lecun 교수님이 근10년 안에 나온 딥러닝 아이디어 중 가장 최고라는 말을 했을 정도로 유명한 생성 모델이다. 2. GAN의 구조와 원리 GAN의 원리를 설명하려면 GAN의 구조를 알아야 한다. GAN은 분류를 담당하는 판별자 D(Discriminator), 그리고 랜덤한 노이즈에서 데이터를 만들어 내는 생성자 G(Generator.. 더보기
[머신러닝] Jensen–Shannon 발산과 Kullback–Leibler 발산 GAN에서 조금 고전하던 도중 GAN에서 D와 G 사이의 확률분포 차이를 줄이기 위해 사용하는 발산들을 알아보았다. 1. KLD(쿨백-라이블러 발산) 쿨백-라이블러 발산, 줄여서 KLD는 간단히 말해 한 확률분포와 그 확률분포의 근사 간의 정보 손실율을 계산하는것이다. 양 확률분포가 같으면 KLD는 0이 된다. 확률분포 p와 근사 분포 q의 KLD는 다음과 같이 나타낸다 또한 KLD는 로그값을 이용해 그 차이를 계산하기 때문에 KLD는 다음과 같이 설명할 수 있다 또한 이 수식은 log a - log b = log a/b이므로 다음과 같이 정리된다 즉, log p(xi)와 log q(xi)의 차를 이용하여 KLD를 구하는 것을 알수 있으며 p와 q가 완전히 같으면 0이 된다는 것을 알 수 있다 2. JS.. 더보기
[머신러닝] Sigmoid를 넘어 ReLU 로 1. Sigmoid와 신경망sigmoid 함수를 활성화 함수로 사용한 심층신경망을 사용하다보면 이상하게 학습이 잘 되지 않는 문제가 발생한다. 왜일까? 우리는 신경망의 파라미터를 조정할 때 backpropagation(오류역전파)을 사용한다. 여기서 문제가 발생하는 것인데 왜 sigmoid가 오류역전파에 문제를 만들어 내는 것일까? sigmoid는 많은 장점을 가지고 있는데 말이다. 2. Vanishing Gradientsigmoid는 일단 지수함수를 계산해야 하기 때문에 계산이 느리고, 결정적으로 Vanishing Gradient 라고 하는 근본적인 문제를 시그모이드 함수가 가지고 있었다. Vanishing Gradient 라는 문제는 미분값이 작기 때문에 (0~1) 0.xxx 를 계속 곱하다 보면 0.. 더보기
[파이썬 딥러닝]퍼셉트론 .퍼셉트론(perceptron)은 인공신경망의 한 종류로서, 1957년에 코넬 항공 연구소(Cornell Aeronautical Lab)의 프랑크 로젠블라트 (Frank Rosenblatt)에 의해 고안되었다. 이것은 가장 간단한 형태의 피드포워드(Feedforward) 네트워크 - 선형분류기- 으로도 볼 수 있다.퍼셉트론이 동작하는 방식은 다음과 같다. 각 노드의 가중치와 입력치를 곱한 것을 모두 합한 값이 활성함수에 의해 판단되는데, 그 값이 임계치(보통 0)보다 크면 뉴런이 활성화되고 결과값으로 1을 출력한다. 뉴런이 활성화되지 않으면 결과값으로 -1을 출력한다.마빈 민스키와 시모어 페퍼트는 저서 "퍼셉트론"에서 단층 퍼셉트론은 XOR 연산이 불가능하지만, 다층 퍼셉트론으로는 XOR 연산이 가능함을.. 더보기