ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AI] Quick Draw : SKETCH RNN 발표[1]
    Programming/인공지능 2020. 11. 9. 17:04

    github.com/googlecreativelab/quickdraw-dataset

     

    googlecreativelab/quickdraw-dataset

    Documentation on how to access and use the Quick, Draw! Dataset. - googlecreativelab/quickdraw-dataset

    github.com

     

    인공지능 개론수업을 듣고 인공지능 기술에 대해 발표하라는 과제를 교수님께서 내주셨다.

    논문을 적어본게 일학년 때 블록체인 기술에 대해 미래에 미칠 영향에 관한 논문을 정말 간단하게 적어봤는데 그때 논문 형식이 어떻게 되어있었는지 살펴본다는 의미로 논문을 찾아본 기억말곤 논문을 접할 기회가 많이 없었던 것 같다.

     

    아 육사에 있을 때 한번 정도 있었나?

     

    아무튼 이번에 내가 발표할 주제는 구글의 퀵드로우 게임이다. 구글의 퀵드로우 게임은 사용자가 웹페이지에 그림을 그리게 되면 그 그림을 인공지능이 맞추는 게임이다. 그리고 이 게임을 이용하는 전세계 사용자가 그린 그림들을 스스로 학습해 지도학습하는 머신러닝 기법을 사용한다고 할 수 있겠다.

     

    이번글에서는 기술에 대한 내용을 적을거라서 게임 설명은 최종적으로 PPT 가 만들어지면 대사와 함께 올릴 계획이다.

    2주 조금 안남은 기간동안 이 논문에 대해 간단히 리뷰하는 것을 목표로 합니다.

     

    이 수업의 핵심은 인공지능이 뭔지 간략하게 개념에 대해 흥미를 심어주는 수업이라서 정말 정말 가벼운 개념설명만 들어서 내가 잘할 수 있을지 의문이다! 그래도 잘해보자!

     

    게임의 링크 입니다.

    quickdraw.withgoogle.com/

     

    Quick, Draw!

    신경망이 학습을 통해 낙서를 인식할 수 있을까요? 내 그림은 얼마나 잘 맞추는지 확인하고, 더 잘 맞출 수 있도록 가르쳐 주세요. 게임을 플레이하기만 하면 됩니다.

    quickdraw.withgoogle.com

     

    우선 순환신경망에 대해 간단하게 설명을 하고 넘어가겠습니다.

     

    RNN(순환신경망)은 다른 뉴럴네트워크와는 다르게 기억을 하는 HIDDEN STATE를 가지고 있다는게 특징입니다. 빨간색 박스를 보시면 저게 입력값인데 입력 값을 받은 노란색 박스는 기억을 하는 영역으로 입력 값을 받고 다음 으로 넘어가 이전에 있던 기억노드를 S N-1이라고 하면 S N-1다음인 S N 은 S N-1의 기억정보를 참조해 그 다음 입력값과 같이 새로운 기억을 만들어내서 결국엔 파란색박스인 결과로 출력을 하게 됩니다.

    출처:dreamgonfly.github.io/blog/understanding-rnn/

     

    Recurrent Neural Network (RNN) 이해하기 | Dreamgonfly's blog

    Recurrent Neural Network (RNN) 이해하기# 음악, 동영상, 에세이, 시, 소스 코드, 주가 차트. 이것들의 공통점은 무엇일까요? 바로 시퀀스라는 점입니다. 음악은 음계들의 시퀀스, 동영상은 이미지의 시퀀

    dreamgonfly.github.io

    그래서 문장을 대표적인 예로 들어보면

    I am a boy. 라는 문장이 있으면 입력 값으로 i가 들어가고  다음 입력값인 am 다음 입력값인 a ... 이렇게 가다보면 마지막엔 결과를 나타냅니다. 하지만 문장이 길어질수록 이전 기억에 대한 중요도(가중치)가 작아져서 기억이 소실되는 문제가 발생할 수 있습니다. 그를 예방하기 위해서 만들어진 알고리즘이 LSTM 알고리즘이다. 여기서는 딱 여기까지만 기억하면 될 것 같다.

     

    이제 논문을 읽기 시작하겠습니다. 어디부터 읽을지 고민하는 도중 정말 핵심적인 내용만 뽑을 생각으로 개요를 넘어서 3. Methodology 방법론 단락 부터 읽었습니다.

     

     

    일단 펜 스트로크를 이 논문에서는 다상태의 이벤트로 확장한다고 되어있습니다.

    그 펜스트로크의 다상태가 무엇인지에 관한 구문인

     

    이 구문에서 확인을 할 수 있겠습니다. 스케치는 점들의 리스트로 구성이 되어있으며 각각의 점들은 5개의 벡터로 구성되어 있다고 합니다 (x, y, p1, p2, p3) 이 벡터가 어떤 것인지 한번 살펴보겠습니다.

     

    x, y => 이전 포인트로부터 펜의 x,y의 방향에 대한 상쇄 거리이다. 

    x와 y의 거리인 x,y의 그냥 좌표를 나타내는 것 같다.

     

    마지막 p1 p2 p3에 대해서 설명한다.

    마지막 첫번째 상태인 p1은 펜이 현재 좋이에 touching 되어져있는 상태를 나타내며 그 라인은 다음 포인트로 이어서 그려질 것을 나타낸다고 했습니다. 그러면 p1은 현재 paper에 닿아있는 첫번째 포인트라고 정의하면 될 것 같습니다.

     

    두번째는 펜의 상태인 p2 는 펜이 현재 지점에서 종이로부터 lifted되어져서 다음에는 선이 그려지지 않을 것임을 나타낸다고 하는 부분에서 p2 는 끝점의 상태를 나타내는 것 입니다.

     

    마지막 펜상태 p3는 drwaing이 끝났음을 나타내면서 후속점이 렌더링 되지 않는다는 것을 의미합니다.

     

    그래서 정리하자면 x y의 좌표 값을 나타내고 마지막 3개는 그려지는 시작점 그리고 그려지는 과정? 그리고 마지막 끝난 시점을 나타낸다. 라고 이해하고 넘어갔다.

     

    우리의 인코더는 양방향 순환신경망을 구성하는데 이것은 스케치를 인풋값으로 취하고 아웃풋은 잠재벡터인 N(Z)라고 취한다고 합니다. 그래서 양방향적으로 순차적으로 결과값을 받아들이는 ENCODER가 있는 반면에 뒷값부터 받아들이는 인코더가 있습니다. (1)의 식을 보시면 이해 되실 겁니다. 그래서 ENCODER에서 벡터값이 출력되면 h 라는 hiddenstate 가 생성이 됩니다.

     

    그래서 hidden state를 출력하면 그 영역에서는 두가지 벡터인 뮤와 시그마컴(뭐라고 읽을지 몰라서 이하 시그마컴이라고 칭하겠습니다.) 으로 나뉩니다. 우리는 그 값중에 시그마 컴을 non-negative(음이 아닌) 표준편차 인자로 지수연산을 이용하여 바꿔냅니다. 그리고 크기가 Nz의 가우시안 IID으 벡터인 변수 N(0,1)을 함께 뮤와 시그마를 사용하여 VAE에 대한 접근방식으로서 R의 N제곱은 Z를 포함하는 무작위 랜덤벡터를 구성합니다. 

     

    잠재벡터 Z는 결정적인 결과 값이 아니라 입력스케치에 대해 랜덤벡터상태입니다.

     

    그리고 디코더는 자동회귀(autoagressive) 순환신경망인데 그 순환신경망은 받아들여진 잠재벡터 z에 대해 스케치상태를 결과값으로 샘플하는 순환신경망이라고 합니다. 

    그러니까 잠재벡터 z는 랜덤벡터상태이니 그것을 [ h0 ; c0 ] = tanh(Wzz + bz) 하는 식으로 변환하여 최종 입력값을 추출하는 것 입니다.

     

    방정식 3에서는 [1, 6]과 같은 M 정규 분포를 갖는 가우스 혼합물 모델(GMM)과 (q1, q2, q3)을 지상 진실 데이터(p1, p2, p3)를 모델링하는 범주형 분포로 모델링한다. 여기서 (q1 + q2 + q3 = 1)은 [7]과 [26]에서와 같이 모델링한다. [6]과는 달리, 생성된 시퀀스는 디코더와 함께 엔드투엔드로 훈련된 우리의 인코더로부터 샘플링된 잠재 코드 z에서 조건화된다.

     

    p1 p2 p3 -> 1 (상관 계수)

    중요한 과제는 우리의 모델이 언제 그림을 그만둘지 알도록 훈련하는 것이다. 세 가지 펜 스트로크 사건의 확률은 매우 불균형적이기 때문에 모형은 훈련하기가 더 어려워진다. p1이벤트는 p2보다 더 높은 확률을 가지고 p3이벤트는 한드로잉당 한번만 발생한다. 손으로 직접 그린 가중치 (1,10, 100)과 같이 우리가 손실율을 계산할 때 ->각각의 다른 가중치 값이 우리의 다양한 이미지클래스의 (카테고리의) 데이터 셋에 대해 부적절하게 만드는 것을 찾아볼 수 있습니다.

     

    그래서 더 좋은 스케치의 클래스에대해 더 잘 다가가는 접근법에 대해 설명한다. 위를 보강한 접근법.

    접근법은 모든 순서는 max값으로 만들어지는데 max는 트레이닝 데이터셋에 대해 가장 긴 스케치의 길이이다.

    max는 하이퍼 파라미터로 고려됨. s의 길이는 보통 max보다 짧으며 우리는 si를 (0 0 0 0 1) for i>Ns 이렇게 만듬.

    여기서 말하는 (0,0,0,0,1)은 p3 종료됐음을 의미하며 p1 p2 p3의 합인 상관계수 1을 위배하지 않습니다.

     

    다음에 나오는 내용으로서는 값이 0값이 입력이 되어도 자동회귀로 무조건적으로 그림을 완성해내고 만든다는 내용입니다.

     

     

    진짜 터무늬없는 영어실력으로 두서없는 글을 적은 것 같다. 이해는 안되지만 ? 대충 스케치rnn이 뭔지 알 것 같기도 하다.

    'Programming > 인공지능' 카테고리의 다른 글

    [AI] Quick Draw : SKETCH RNN 발표[2]  (1) 2020.11.21
Designed by Tistory.