검수요청.png검수요청.png

생성대립신경망

위키원
sosodam (토론 | 기여)님의 2020년 8월 13일 (목) 15:33 판
이동: 둘러보기, 검색

생성대립신경망(generative adversarial network)은 이안 굿펠로우(Ian Goodfellow)와 그의 동료들이 2014년에 고안한 머신러닝 프레임워크의 한 종류이다. 게임 이론의 관점에서 두 개의 신경망은 게임에서 서로 경쟁한다. 훈련 세트가 주어지면, 이 기술은 훈련 세트와 동일한 통계로 새로운 데이터를 생성하는 법을 배운다. 생성대립신경망은 원래 비지도학습의 생성모델로 제안되었지만, 준 지도 학습과 지도학습강화학습에도 유용한 것으로 입증되었다.

개요

생성 네트워크는 후보들을 생성하는 반면 차별적 네트워크는 후보들을 평가한다. 콘테스트는 데이터 배포 측면에서 운영된다. 전형적으로 생성 네트워크는 잠재된 공간으로부터 관심의 데이터 분포로 매핑하는 방법을 배우는 반면, 차별적 네트워크는 생성자에 의해 생산된 후보들을 실제 데이터 분포와 구별한다. 생성 네트워크의 교육 목표는 차별적 네트워크의 오류율을 높이는 것이다. 즉, 판별자가 종합하지 않는다고 생각하는 새로운 후보를 생산하여 판별자 네트워크의 오류율을 높이는 것이다. 알려진 데이터 집합은 판별자의 초기 훈련 데이터 역할을 한다. 훈련에는 허용 가능한 정확도에 도달할 때까지 훈련 데이터 세트의 샘플을 제공하는 것이 포함된다. 생성자는 그것이 판별자를 속이는 데 성공하는지 여부에 따라 훈련한다. 일반적으로 생성자는 사전 정의된 잠재 공간(예: 다변량 정규 분포)에서 샘플링되는 랜덤화된 입력으로 시드된다. 그 후 생성자에 의해 합성된 후보들을 판별자에 의해 평가한다. 역전파(Backpropagation)를 두 네트워크 모두에 적용하여 생성자가 더 나은 이미지를 생성하는 반면, 판별자는 합성 이미지에 플래그를 지정하는 데 더 능숙해진다. 생성자는 전형적으로 디콘볼루션(deconvolutional) 신경망이며, 판별자는 경동신경망이다. 생성대립신경망은 입력 데이터에서 전체 모드를 누락하여 제대로 일반화하지 못하는 모드 붕괴를 겪는 경우가 많다. 예를 들어, 각 자릿수의 많은 표본을 포함하는 MNIST 데이터 집합에 대해 훈련된 생성대립신경망은 그럼에도 불구하고 소심하게 출력에서 자릿수의 부분집합을 생략할 수 있다. 어떤 연구자들은 근본적인 문제를 누락의 패턴을 알아차리지 못하는 약한 차별적 네트워크로 인식하는 반면, 다른 연구자들은 객관적 기능의 잘못된 선택에 책임을 전가한다.[1]

역사

생성대립신경망에 가장 직접적인 영감을 준 것은 소음 대비 추정치로, 굿펠로우(Goodfellow)가 박사 과정 2010년부터 2014년 동안 생성대립신경망과 동일한 손실 기능을 사용하며 연구한 것이다. 다른 사람들도 비슷한 생각을 가지고 있었지만 비슷하게 발전시키지는 않았다. 적대적 네트워크와 관련된 아이디어는 올리 니이미탈로(Olli Niemitalo)가 2010년 블로그 포스트에 게재했다. 하지만 이러한 생각은 결코 구현되지 않았고 발전기에 확률성을 포함하지 않았기 때문에 생성 모델이 아니었다. 이는 현재 조건부 생성대립신경망으로 알려져 있다. 2013년에 리(Li), 고치(Gauci), 그로스(Gross)에 의해 동물 행동을 모형화하는 데에 생성대립신경망과 유사한 아이디어가 사용되었다. 적대적 기계학습은 생성 모델링 외에 다른 용도가 있으며 신경 네트워크 이외의 모델에 적용할 수 있다. 신경망에 기초한 대립적 학습은 2006년에 미니마이저 정책, 제어기 정책 및 최대화 정책인 교란(suppression) 사이의 반복을 교대로 게임 이론적 의미에서 강력한 제어기를 훈련시키기 위해 사용되었다.

2017년에는 화소정확도보다는 사실적인 질감에 초점을 맞춘 영상향상에 생성대립신경망을 사용했고, 높은 확대율에서 화질을 더 높였다. 또한 2017년에 생성대립신경망의 기술을 이용해 처음으로 사람의 얼굴이 제작되었다. 그리고 이는 2018년 2월 그랜드팔레에서 전시되었다. 2019년 스타일지에이엔(StyleGAN)에서 제작한 얼굴은 딥 페이크와 비교를 이끌어내었다. 생성대립신경망 기술은 2017년부터 독특하고 호소력 있는 추상화를 제작할 수 있는 문턱을 넘어 '창의적 네트워크'로 불린 새로운 구현이 나타나면서 미술계에서 존재감을 드러내기 시작했다. 2018년 그림 에드몽 드 벨라미(Edmond de Belamy)를 제작하기 위해 생성대립신경망 시스템을 사용했는데, 이 그림은 미화 43만 2,500달러에 팔리게 되었다. 오리지널 창의적 네트워크 팀원들의 2019년 초 기사에서는 이 시스템과 함께 추가적인 진전에 대해 논의했으며, 인공지능이 가능한 예술에 대한 전반적인 전망을 고려했다.

2019년 5월 삼성 연구진은 사람의 사진 한 장만으로 그 사람이 말하는 영상을 제작하는 생성대립신경망 기반 시스템을 시연했다. 2019년 8월에는 가사와 신경 멜로디 생성을 위해 조건부 생성대립신경망 장단기 메모리를 이용한 각각 1만 2,197곡의 악기 디지털 인터페이스(MIDI) 곡으로 구성된 대규모 데이터세트가 만들어졌다. 2020년 5월 엔비디아(Nvidia) 연구진이 팩맨 게임을 단순히 보는 것만으로도 재현하는 인공지능 시스템을 개발했다.

작동 원리

생성 대립 신경망

생성대립신경망이라는 이름에서 알 수 있듯이 생성자는 실제처럼 보이는 이미지를 생성하는데 사용되고, 판별자는 어느 것이 가짜인지 식별한다. 생성자가 판별자를 속이기 위해 노력하는 반면, 다른 판별자는 속지 않기 위해 노력하며 끊임없는 싸움을 벌이고 있다. 최상의 이미지를 생성하려면 매우 우수한 생성자와 판별자가 필요하다. 생성자가 부족하면 판별자를 속일 수 없고 모델이 수렴하지 않기 때문이다. 만약 판별자가 나쁘다면 말이 되지 않는 이미지들도 분류되어, 모델은 결코 훈련되지 않을뿐더러 원하는 출력을 생산하지 못하게 된다. 입력과 무작위 노이즈는 가우스 분포일 수 있으며, 값은 이 분포로부터 샘플링되어 생성자 네트워크에 공급되고 영상이 생성된다. 생성된 이미지는 판별자에 의해 실제 이미지와 비교되며, 주어진 이미지가 가짜인지 진짜인지 식별하려고 한다.

목표 함수
 

생성대립신경망은 게임 이데올로기적 접근법을 취하기 때문에 객관적인 기능은 미니맥스(minimax) 함수로 표현된다. 판별자는 목표 함수를 최대화하려고 노력하므로 목표 함수에 대해 기울기 상승(gradient ascent)을 수행할 수 있다. 생성자는 목표 기능을 최소화하려고 하므로 목표 기능에 대해 기울기 강하를 수행할 수 있다. 그러므로 경사로 상승과 하강 사이를 교대하여 네트워크를 훈련할 수 있는 것이다.

 
 

그러나 적용했을 때 생성자 목표 함수의 최적화가 잘 되지 않는다는 것이 관찰되는데, 이는 샘플이 생성되었을 때 모델이 구배에서 배우기를 원하지만 구배는 상대적으로 평평하기 때문이다. 이것은 모델이 배우는 것을 어렵게 만든다. 따라서 생성자 목표 함수는 아래와 같이 변경된다.

 

생성대립신경망은 판별자가 정확할 가능성을 최소화하는 대신 판별자가 틀릴 가능성을 최대화한다. 따라서 이 목표 기능에 따라 발전기에 경사도를 상승시킨다.[2]

구조

생성대립신경망은 생성자와 판별자로 구성되어 있다. 생성자는 타당한 데이터를 생성하는 방법을 학습한다. 생성된 예는 판별자에게 부정적인 훈련 예가 된다. 반면, 판별자는 생성자의 가짜 데이터와 실제 데이터를 구별하는 법을 배운다. 판별자는 신뢰할 수 없는 결과를 생산한 생성자에 불이익을 준다. 훈련이 시작되면 생성자는 명백히 가짜 데이터를 생산하고, 판별자는 그것이 가짜라는 것을 빨리 알 수 있다. 훈련이 진행됨에 따라 생성자는 판별자를 속일 수있는 출력을 생성하는 데 더 가까워진다. 마지막으로 발전기 훈련이 잘 되면 진짜와 가짜의 차이를 구분하는 것이 더 어려워진다. 가짜 데이터를 진짜 데이터로 분류하기 시작해 정확도가 떨어진다. 생성자와 판별자 모두 신경망이다. 생성자 출력은 판별자 입력에 직접 연결된다. 역전파를 통해 판별자의 분류는 생성자가 자신의 가중치를 업데이트하는 데 사용하는 신호를 제공한다.

판별자

생성대립신경망의 판별자는 단순히 분류자일 뿐이다. 실제 데이터와 발전기에 의해 생성된 데이터를 구별하려고 한다. 판별자는 분류하는 데이터 유형에 적합한 네트워크 아키텍처를 사용할 수 있다.

생성대립신경망 구조.png
판별자 훈련 데이터

판별자의 훈련 데이터는 다음 두 가지 출처에서 나온다.

  • 실제 데이터 인스턴스: 판별자는 훈련 중에 실제 사람 사진과 같은 실제 데이터 인스턴스를 사용한다. 그리고 이러한 사례를 긍정적인 예로 사용한다.
  • 생성자가 생성한 가짜 데이터 인스턴스: 판별자는 이를 훈련 중 부정적인 예로서 사용한다.

위의 그림에서 두 개의 샘플 상자는 판별자에게 공급되는 두 개의 데이터 소스를 나타낸다. 판별자 훈련 중에는 생성자가 훈련하지 않는다. 이는 무게는 일정하게 유지되는 반면 판별자가 훈련할 수 있는 예를 만들어낸다.

판별자 훈련

판별자는 두 개의 손실 기능에 연결된다. 판별자 훈련 중, 판별자는 생성자 손실을 무시하고 판별자 손실만 사용한다. 또한 다음 절에서 설명한 것과 같이 생성자 훈련 중에 제너레이터 손실을 사용한다.

  1. 판별자는 실제 데이터와 생성자의 가짜 데이터를 모두 분류한다.
  2. 판별자 손실은 판별자가 실례를 가짜로 오인하거나 실례를 가짜로 오인하여 불이익을 준다.
  3. 판별자는 판별자 네트워크를 통해 판별자 손실로부터 역제안하여 가중치를 갱신한다.

생성자

각주

  1. Generative adversarial network Wikipedia - https://en.wikipedia.org/wiki/Generative_adversarial_network
  2. Rohith Gandhi, 〈Generative Adversarial Networks — Explained〉, 《Towards Data Science》, 2018-05-11

참고자료

같이 보기


  검수요청.png검수요청.png 이 생성대립신경망 문서는 인공지능 기술에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.