ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AI] Quick Draw : SKETCH RNN 발표[2]
    Programming/인공지능 2020. 11. 21. 23:48

    드디어 팀플이 끝났다. 팀원은 나랑 다른분 두분이었는데 서로 인공지능 개론을 대충 설명만 요약하고 대충 어떤 것인지 의사소통이 될 정도의 수준으로 정말 소극적으로 배운게 다이다.

     

    그런데 인공지능에 대해 발표를 하라는거 까지는 문제가 되지 않는데...

    난이도도 평가점수에 포함이 된다고 하셔서 깜짝 놀랬다...

     

    나의 수준은 정말 바닥인 것 같은데...

     

    아무튼 팀플 하면서 서로 인공지능에 대한 이해관계가 너무 안맞아서 서로 티격태격도 많이 했고 하다가 사실 화나서 피피티 혼자서 내가 만든거 안비밀... 근데 그분은 붙임성이 있어서 정말 세세한것 하나까지 조사하려고 하셔서 10분을 넘기지 못할 뻔 했다.

     

    아무튼 우여곡절 끝에 피피티를 완성하고 발표 까지 했다.

     

    추억으로 남겨두려고 한다... 진짜 인공지능에 대한 무지한 입문자 귀엽게 봐주세요!

    발표 내용 요약해서 올리겠습니다.

     

     

    #1
    안녕하십니까 저희는 인공지능 기술로 만들어진 구글에서 만든 간단한 게임인 구글 퀵드로우에 대해서 설명하도록 하겠습니다.
    저희가 발표에 앞서 이 주제를 설명한 이유는 무엇이냐면 다른 복잡한 것들 보다 여러분들게 보자마자 빨리 와닿게 하고 싶었습니다. 그래서 주제로 구글의 퀵드로우를 선택했습니다. 그러면 발표 시작하겠습니다.

    #2
    구글 퀵드로우는 구글에서 개발한 간단한 온라인 게임 중 하나입니다. 유저들이 구글 퀵드로우 게임 페이지에 들어가 시작 버튼을 누르게 되면 시작과 동시에 유저에게 카테고리 즉, 단어를 하나 제시합니다. 그러면 유저는 그에 맞는 그림을 백지에 그리고 그린 그림을 인공지능이 맞추게 되는 아주 간단한 게임입니다.


    #3
    저희가 말로 표현한 부분이 부족하다고 느껴서 이해하기 힘드신 분도 있으실 겁니다. 그래서 저희가 영상과 함께 한번 더 설명 드리려고 1분 남짓 영상을 찍어왔습니다. 짧게 보시고 넘어가겠습니다.
    @동영상 플레이를 시키면서
    그림을 그리게 되면 인공지능이 밑쪽에 말풍선으로 정답을 맞추게 됩니다. (동그라미죠? 물어볼 때) 이런식으로 그냥 스케치를 멈출 경우 인공지능은 동그라미라고 확정 짓고 틀리게 됩니다.
    반면에 , 제시어와 인공지능이 말한 답변이 일치하면 맞추게 되는 게임입니다.



    #4
    여기서 마지막 부분에 저희가 그린 그림을 보실 수 있는데요. 그 그림들은 이제 sketch-rnn이라는 딥러닝 모델을 학습시키기 위한 데이터 집합으로 가게 됩니다. 그린 것들 중에 드릴의 일부를 뽑아봤는데요. 약 십만개정도 되는 데이터들을 이용해 학습을 하게 됩니다. 여기 데이터들 중에 저희 데이터도 있습니다.


    #5
    그리고 학습된 데이터를 이용해 각각의 특징을 찾아내 최대한 비슷한 패턴과 맞는 그림을 찾아냅니다.

     

    #6 - 6.5
    우선 sketch-rnn의 구성도입니다.   
    입력부분에 인코더, 출력부분에 디코더가 존재할때 시퀀스 투 시퀀스라고 부르고, 
    가운데에 보시면 라텐트 벡터 z 를 생성하는데, 한국말로 잠재벡터라고 합니다. 이러한 잠재벡터를 생성하는 신경망을 
    바리에이셔널 오토인코더라고 합니다. 잠재벡터는 샘플의 일종으로서, 개발자가 인코더의결과 값을 원하는 방향으로 
    조정하기 위해서, 잠재벡터라는 인코더의 결과샘플을 보고 방향을 판단하는것입니다.  
    이 모델은 양방향 순환신경망으로 이루어져있는데 기존에는 과거의 데이터들을 참고해서 정답을 예측합니다. 하지만 과거 시점의 데이터만 고려하는 것이 아니라 향후 시점의 데이터에 힌트가 있는 경우도 많습니다. 그래서 이전 시점의 데이터뿐만 아니라, 이후 시점의 데이터도 힌트로 사용하기도 합니다. 
    그래서 간단한 구성도를 보시면 초록색은 앞쪽 데이터를 받은 히든레이어이고 뒷쪽 데이터를 받은 히든레이어는 주황색으로 구성되어져 있는 것을 볼 수 있습니다. 



    #7
    앞서 말씀드린 오토인코더는 주로 자연어,음성신호, 주식과 같은 
    연속적인데이터처리에사용되는 비지도학습 신경망입니다. 
    오늘 말씀드리고있는 퀵드로우와 같은 경우에도 저희가 입력하는 데이터 그림은 선들로 구성되어있고 그 선들은 점으로 구성되어서 x,y의 좌표, 그리고 3개의 펜 압력의 상태를 입력값으로 합니다.

    그리고 기존의 학습을 위한 데이터셋의 구성은
    첫번째 Sketch-RNN 에 그림을 입력시키기 위해 먼저 그림을 점 하나 하나 구분지어 저장합니다.
    왼쪽사진은 그림의 자료형식을 일반화 시킨것이고, 오른쪽은 실제 데이터의 자료형식입니다.
    이 자료를 통해 획이 그려진 위치및 순서 까지 모든 정보가 포함되어있습니다.

     


    #8
    여기서 인코더에서 나온 값들을 히든레이어를 통해 음이아닌 표준편차로 바꿔내고 

    여기서 독립항등분포에대해서 설명드리자면 첫번째 동전을 던졌을때 앞면이 나올확률은 이분의일이고,
    두번째 동전을 던졌을때 앞면이 나올확률이 이분의일로 같으니까 이와 같은 독립된 사건의 발생확률이 동일한 확률분포를 독립항등분포라고합니다. Sketch-RNN에 적용시켜 설명드리자면  무작위의 잠재벡터가 생성될때 특정 잠재벡터가 생성될확률이 동일하다는 뜻입니다.

    말 그대로 그냥 인코더에서 나온 값으로 랜덤값을 생성한다고 보시면 됩니다. 

    그리고 마지막으로 하이퍼볼릭탄젠트라는 곳을 통과해서 잠재벡터가 생성되는데, 여기서 하이퍼볼릭 탄젠트 함수는 신경망 활성화함수인 시그모이드 함수대신 사용되는 활성화함수입니다.
    시그모이드 함수는 중심값이 0이 아니라서 학습이 느려지는 문제가있었는데, 하이퍼볼릭 탄젠트 함수는 중심값이 0이라서 시그모이드의 문제를 해결할 방안이 되주었습니다.


    #9
    이제는 뒷부분 디코더에 대해 설명드리겠습니다.
    인코더에서 히든레이어를 거치면서 나온 잠재벡터는 보시는 것과 같이 저희가 그린 그림들을 벡터형식으로 나타냅니다. 또 그 벡터들은 비교가 가능하다는 특징을 가지고 있습니다.

    디코더에는 잠재 벡터가 활성화함수인 하이퍼볼릭 탄젠트 함수를 거친 결과값과, 
    거치지 않은 그대로의 잠재 벡터값이 입력됩니다. 그후 디코딩된 결과 값은 가우시안 혼합모델을 통해
    카테고리를 부여 받게되고, 사람들이 그린 그림과 비슷하지만 새로운 그림하나가 탄생하게됩니다.

    다음엔 방금전에 말한 가우시안 혼합모델에대해 간략히 설명해드리자면, 정규분포 여러개를 혼합시킨 분포표를 활용한
    알고리즘입니다. 특정한 식을 활용해, 혼합된 정규분포들중 설계자가 생각하기에 가장 적절한 정규분포를 하나 선택하게하는
    알고리즘입니다. 

    그리고 디코더를 통과하면서 저희가 그린 잠재벡터들과 비슷한 도면을 출력하게 됩니다.

    #10 
    또, 응용하면 얻어낸 잠재벡터 값을 수정할 수 있습니다. 원래 값에 새로운 특징을 추가하거나 빼버림으로써 입력 스케치에 없었던 새로운 특징을 가진 스케치를 얻을 수 있는 것입니다. 
    고양이 얼굴 + (돼지 전체 - 돼지 얼굴) = 고양이 전체 
    와 같은 식으로 동작하게 됩니다.  

    또 스케치를 단순한 그림이 아닌 시퀀스로 처리하고 있기 때문에 사람이 스케치를 다 완성하지 못한 시점에서도 결과를 예측하는 것이 가능합니다. 퀵드로우 게임을 하는 도중에도 아직 그림을 다 그리지 못했는데 답을 맞춰 버리는 경우가 종종 발생합니다. 



     

    #11
    이번엔 앞에서 말씀을 다 못드린 데이터셋에 대해서 좀더 설명하려고 합니다. 데이터셋을 tsne로 시각화하면 저런식으로 비슷한데이터끼리의 분포를 볼 수 있습니다.  
    저는 요가 카테고리의 데이터셋을 불러왔는데요. 저런식으로 요가를 하는 그림만 있는 것이 아니라 포기해서 글자로 적어 학습시킨 사람도 있습니다. 실제로 요가 카테고리가 나오면 yoga라고 스케치할 시에 요가라고 맞춰버립니다. 



    #12 
    또 구글에서 발표한 흥미있는 주제인데요 이 데이터셋을 이용해 나라마다 문화의 특성 차이도 볼 수 있습니다. 의자 같은 물체의 경우는 관계없이 비슷하게 인식되고 있지만 차이가 있는 음식문화는 여기에는 없지만 예를 들어 샌드위치 그림에서는 사용된 빵의 종류에서부터 머그컵의 손잡이의 위치나 모양까지 문화적 차이에 따라 시각적 관점과 선호요소가 어떻게 다른지 알 수 있었습니다.  의자는 국가나 지역에 따라 그림의 각도가 정면의 시선을 따르기도 하고, 측면을 따르기도 하는 모습을 보여주었습니다. 


    #13
    마지막으로 이런 창의적인 분야에서딥 러닝이 사용자를 보조하는 역할을 수행하기 위한 좋은 연구인 것 같습니다. 다만 양질의 학습 데이터를 구분해내고 적극적으로 학습하는 능동학습 기법이 적용된다면 보다 향상된 결과를 얻을 수 있을 것으로 기대됩니다.


    감사합니다.

     

    피피티 템플릿은 조땡님거 썼습니다.

     

    나머지 내용적인 부분은 교수님께 피드백을 받고 수정하려고 합니다!

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

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