개드립

즐겨찾기
최근 방문 게시판

정보)이루다 내부는 어떻게 생겼을까?.araboza

136147535_220100973021089_5081424219187494098_o.jpg

(솔직히 이루다 흥행은 디자인부 캐리다. 개귀엽게 그렸음.)

 

 

출처: 이루다 개발진 블로그

https://blog.pingpong.us/ranker-model/

 

..와 더불어 이제부터 본 개붕이가 얼마나 전공지식을 쉽고 짧게 풀어쓸수 있는지도 함께 알아보도록 하자.

 

선 3줄요약:

1. 유저가 문자를 보내면

2. 지금까지의 유저와 이루다간의 대화내용을 전부 스캔하고

3. a)데이터베이스에서 b)제일 그럴듯한 답변c)딥러닝으로 찾은뒤 답장한다.

 

사실 이 글은 여기서 끝내도 됨. 왜냐고? 진짜 저 세줄요약이 다임ㅋㅋㅋㅋㅋ 나머지는 정확도를 올리기 위한 개발자들의 처절한 몸부림에 불과함

 

그러나 강건너 불구경이 제일 재밌는 법. 이 개발자들이 이루다를 만들어내기 위해 어떤 수학적 몸부림을 쳤는지 디테일하게 알아볼까?

 

a) 데이터베이스에서

 

모델을 학습하기 위해 총 2억 개의 세션(문맥 + 응답)을 선별하였습니다.

 

일단 이루다가 뭘 보고 학습했는지부터 알아보자. 블로그에서는 자세한 디테일은 알려주지 않고 2억개의 문맥+응답 데이터셋만 선별해서 학습했다고 함. 그러면 우리가 할수 있는건 추론 뿐인데, 다른 블로그 포스트에 따르면

 

저희가 처음에 루다를 기획했을 때, 루다 페르소나에 대한 여러 고민이 있었어요. 일단 주 사용자층이 넓게는 10~30대, 좁게는 10대 중반~20대 중반으로 생각했기 때문에 가운데인 20살 정도가 사용자들이 친근감을 느낄 수 있는 나이라고 생각했어요.

 

..이라고 하네. 즉, 예상을 해 본다면 개발자들은 거대한 데이터베이스 중에서 20대 여성이 주체인 대화만 뽑으니 2억개 학습 데이터가 확보됐다고 볼수 있음. 2억개 정도면 구글같은 인터넷 전체를 대상으로 학습시키고 있는 애들보다야 당연히 적은 숫자지만 그래도 학습 시키기에는 차고 넘침. 부럽다 ㅅㅂ 데이터 어디서 구했누??? 페이스북한테 돈주고 샀나?

 

 

b) 제일 그럴듯한 답변을

 

 

810836_533242_1724.jpgDesktop_Screenshot_2020.08.27_-_21.50.30.96.png

 

원빈과 로버트 패틴슨은 우리 개붕이들과 비교하면 압도적으로 잘생겼다는건 누구나 다 아는 사실이다. 그리고 둘이 각각 "다른 방향으로" 잘생겼다는것도 모두 동의할 것이다. 만약에 "다른 방향"으로 잘생겼다면, 그 방향의 각도는 얼마나 될까? 애초에 수학과 거리가 멀어보이는 사람 얼굴인데 둘 사이에 각도라는게 존재는 할까?

 

이제부터 슬슬 재밌어지기 시작함. 이루다가 어떻게 제일 그럴듯한 답변을 뽑아내는지 생각해보기 전에, 다음 질문을 한번 고민해보자.

 

사람 얼굴은 몇차원일까?

"3차원 아님?" 당연히 물리적으로는 3차원이지만, 여기서 말하는 차원은 그 데이터를 표현하는데 필요한 숫자의 갯수임.

 

3차원 공간에 있는 점 하나를 표현하기 위해선 x, y, z 숫자 세개가 필요하므로 3차원.

 

하지만 같은 공간에 있는 삼각형은 점 하나마다 숫자가 3개 필요하니 총 9차원짜리 데이터임.

 

본 개붕이는 대학을 미국에서 다니고 있어서 한국 수능에 과목이 몇개 있는지는 정확히 모르지만 구글 검색을 해보니 한국사, 국어, 수학, 영어 + 탐구영역 2개 + 제2외국어가 있다고 하니 개붕이들의 수능 점수는 최대 7차원짜리 데이터가 됨.

 

(이쯤 와서 눈치챈 게이들도 있겠지만 현실에 있는 대부분의 데이터는 초고차원 데이터임. 사람 뇌가 직관적으로 볼수 없는 데이터다 보니 수학의 힘을 빌리는 거. 응용수학에서는 몇십년동안 하고있던걸 요즘 AI라고 포장해서 완전 신기술인거마냥 팔고있는거임.)

 

그래서 아무튼 사람 얼굴은 몇차원일까(=사람 얼굴은 숫자 몇개로 표현이 가능할까)?

 

 

해법 1. 단순하게 생각해서 얼굴 사진 안에 얼굴 있잖아? 그럼 표현 된거지? 그러므로 사진을 이루는 픽셀 갯수 = 사람 얼굴 차원 이다!

 

imagematrix.png

 

어거지같지만 이론적으로 틀린건 아니다. 아무튼간에 표현 했으니까 됐지 뭘 더 바람?

 

하지만 실용적으로는 장점보다 단점이 더 많음. 한번 장단점을 비교해볼까?

 

장점: 단순함. 이미지로 곧바로 변환 가능함. 모든 얼굴을 표현할수 있음(사진이니까)

 

단점: 한국 증명사진 최소 픽셀 크기가 94x113 인데 그러면 94x113=10622차원임. 아무리 생각해도 사람 얼굴 표현하는데 숫자가 만개나 필요할것 같진 않음. 존나게 비효율적인것도 있고 무엇보다도 차원이 커질수록 수학 연산들이 우리가 생각한대로 작동하지 않게 되고 데이터 구조가 비선형적일 가능성이 커짐(차원의 저주).

 

장점보다 단점이 너무 커서 다른 방법이 필요함. 다른 방법이 필요한데... 그 해답은 심즈같은 게임들의 커스터마이징에서 찾아볼수 있음.

 

 

해법 2. 요즘 게임 커마 보면 대부분의 얼굴 표현할수 있더만? 그러므로 커마 슬라이더 갯수 = 표현하는데 필요한 숫자 갯수 = 얼굴 차원이다!

 

Change-Your-Appearance-in-Skyrim.jpg

 

확실히 이런식으로 표현하니 10622차원에서 많이 줄었음. 근데 단점이 없는건 아님.

 

장점: 검은사막같은 게임들 커마 슬라이더 갯수 많아봐야 50개~60개 하지 않음? 그러면 ~60차원까지 많이 줄었으니 177배 줄었음. 쌉이득이네?

 

단점: 대부분의 얼굴이지 모든 얼굴이 아님. 1번 해법으로 하면 모든 얼굴을 표현할수 있지만 이 해법으로는 길가다가 보이는 진짜 창의적으로 못생긴 애들 외모는 표현해내기 힘듬. 

 

 

즉, 이 문제는 숫자의 갯수를 최소화시키면서 최대한 많은 얼굴 범위를 커버할수 있는 방법을 찾는 문제임. 근데 공돌이들이 성형외과 의사도 아니고 그걸 어떻게 알어?

 

어? 근데? 최소화 시키면서 최대화 시킨다? 최적화 문제네? 문제에서 솔솔 나는 미적분의 냄새를 맡은 컴공들은 이걸 수학적으로 발견할 방법을 찾아냈고 그게 뭐냐면

 

 

해법 3. ???: 네? 이걸 100배 이상으로 압축시키고 멀쩡하게 복원시키라고요? 제가요?

 

 

0_uq2_ZipB9TqI9G_k.png

 

 

뭐긴뭐야 인공신경망 딥러닝이지.

 

오토인코더(Autoencoder)라고 불리는 형태인데 학습 알고리즘은 다음과 같아(비전공자 ver.).

 

  1. 인공 신경망을 위와 같이 중간에 병목이 생기도록(압축을 시키도록) 디자인을 한다
  2. 해법 1의 이미지를 통째로 신경망에 집어넣는다(위 사진에서는 28x28=784차원 이미지)
  3. 그리고 신경망보고 최대한 원래 이미지를 복구시키라고 한다
  4. 그러면 이 신경망은 복구를 최대한 잘해내기 위해서 제일 효율적인 압축법을 터득한다
  5. 병목 부분에서 주어진 차원에 맞는 제일 효율적인 데이터 표현법이 등장하게 된다

 

이런식으로 만들어진 표현법은 설계를 제대로 했으면 이런것도 가능함

 

 

무엇보다도 이렇게 학습되어서 나온 데이터들은 벡터처럼 다룰 수 있음. 이게 굉장히 중요한데, 곧 있으면 알게 될거임. 그 전에 질문의 답먼저 내놓고 가자.

 

그래서 사람 얼굴은 몇차원짜리 데이터냐?

 

인공지능 말에 따르면 대략 100차원임. 숫자 100개 이내로 거의 모든 사람 얼굴을 정확하게 표현해낼수 있었음.

 

 

근데 지금 포인트는 그게 아니야. 얼굴을 벡터처럼 다룰수 있다니까??? 벡터에서 가능한 연산은 전부다 된다는 소리라니까??? 수학 좀 치는 애들은 이게 얼마나 개쩌는건지 알수 있는데

 

 

123.PNG

 

얼굴끼리 더하거나

 

 

124.PNG

 

서로 뺄수도 있고

 

 

Faces-of-the-fourth-column-are-acquired-by-subtracting-the-second-column-from-first_Q320.jpg

 

당연히 여러개를 동시에 더하고 뺄수도 있고

 

 

 

220px-Dot_Product.svg.png

 

내적도 쌉가능하고.. 어? 내적? 내적을 구할수 있으면 각도도 구할수 있지 않나?

 

맞아. 얼굴끼리의 각도는 이렇게 구할수 있어.

 

0_1CRCixWSa2RTWpl4.png

얼굴 두개 사이의 거리를 계산해서 유사도를 측정할수도 있고

(대부분 딥러닝을 이용한 연예인 닮은꼴 찾기 웹사이트가 이렇게 작동함)

 

어..유사도? 유사도면

 

3. a)데이터베이스에서 b)제일 그럴듯한 답변을 c)딥러닝으로 찾은뒤 답장한다.

 

제일 '그럴듯한'(=거리가 가깝거나 각도가 비슷한) 답변을 찾는데 쓸수 있지 않나?

 

맞아. 

 

 

c) 딥러닝으로 찾은뒤 답장한다

 

bi-encoder.png

 

*실제 이루다 내부 모델은 이거보다 더 복잡하나 기본적인 형태는 이거랑 거의 똑같다. 궁금하면 블로그에 가보도록

 

여기까지 따라왔으면 위에 있는 다이어그램이 어느정도 이해가 될거야.

 

    1)A(유저가 친 채팅)와 B(이루다가 친 채팅)을 합쳐서 대화 문맥 인코더에 집어넣어서 벡터 표현으로 바꾼뒤에

 

    2)데이터베이스에 있는 (최대 2억개의) 답변 후보들의 벡터 표현을 전부 비교를 한 뒤


    3)두 벡터의 각도가 제일 좁은(=현재 문맥과 제일 비슷한 방향을 가지고 있는) 답변을 내놓는거임.

 

0_6tiGwCmZclFesyDe.png

 

이런식으로. 

 

그럼 이 방법론의 품질을 좌지우지하는거는 인코더인데... 얘네들이 뭘 썼냐면

 

GoogleBert_1920.jpg

 

 

구글이 내놓은 버트(BERT)라는 언어버전 오토인코더 비슷한놈을 썼음. 사실 지금 구글 검색도 버트 기반 벡터 유사도 검색으로 바뀐지 1년쯤 됐음. 몰랐지? 어느날 갑자기 구글 검색 성능이 엄청 좋아진걸 느낀 사람이 있을텐데, 그때가 이때임

 

(근데 버트가 무슨 비법소스마냥 감춰져있는건 아니고 오히려 무료배포중임. 개붕이들도 지금 당장 파이썬 깔고 버트 라이브러리 다운로드해서 쓰는거 쌉가능함.)

 

그리고 개발자 블로그 들어가서 읽어보면 알겠지만 지금까지 내가 설명한게 커다란 빅픽쳐쯤 되고 여기에 더불어서 hard negative니 하는 학습법을 써서 훨씬 더 성능을 끌어올렸음. 하여간 대단해... AI 트렌드에 늦게 탑승했는데도 이런 회사가 나오긴 하는구나.

 

 

결론+내생각

 

요즘 뭐 이루다 성희롱이다 뭐다 하는 이슈가 많이 올라오는데 글을 읽어봤으면 알겠지만 이루다는 결국엔 행렬 연산 집합체일 뿐인데다가 그 근본은 구글 검색과 다를게 없음ㅋㅋㅋ 현재 기술력으로는 감정 이입해도 안쪽팔릴만한 기계학습 모델은 없고 무엇보다도 성희롱 관련 논란은 "야동을 보면 변태가 된다"나 "게임을 많이하면 폭력적이게 된다"라는 논지와 전혀 다를게 없다고 생각함. 

 

그리고 개인적으로 수학이 정말로 중요한 학문이고 앞으로 훨씬 더 중요해질 거라는걸 개붕이들이 느꼈으면 좋겠음. "뭐 씨 미적분 기벡 배워서 뭐에다 쓰냐?" 이런데 쓴다...  특히 급식개붕이들은 수학공부를 학부시절에 피똥싸기 싫으면 일찍 준비하는게 좋을거라 생각해.

 

그럼 이만!

 

 

 

 

121개의 댓글

2021.01.11

그 내부가 아니였네...

0
2021.01.11

아 보석상이 100만원 손해구나

5
2021.01.11
@dsagdbfs

기둥 뒤에 비둘기 있다니깐

0
2021.01.11
2

아 ㅋㅋ 이런건 빨리 말하라고 (바지를 다시 올리며)

5
2021.01.11
@헠헠밟아주세요

이게... 이루다의 안...

0
2021.01.11

공대생특: 이렇게 쉽게 설명했는데 이해하기 힘들다고요?? 그럼 더 쉽게 설명하기!

0
2021.01.11
@URA!!

진짜 공대생 : 자기 생각으로만 설명하는데 어떻게 알라고 진짜 소스를 보여줘

0

???: 뭐라고? 그래서 이걸로 돈벌수 있어? 없어???

0
@눈물이주룩주룩

경제뉴스 크롤링후 호재/악재 파악후 단타매매하는 봇 만들수 있고 실제로도 있음

1
2021.01.11
[삭제 되었습니다]
@아리

글이 중구난방이 되서 어느 정도의 디테일은 희생했음

Transformer 씀

0
2021.01.11
@아리

비전공잔데 나도 이거 좀 궁금했음

얼굴같은 이미지는 그래도 공통된 형태가 있는데 말은 어떻게 벡터 표현으로 바꾸나

 

들어가서 읽어보니 걍 짜져있어야겠구만 자연어도 뭐 알아서 처리하는 방법이 있겠지

0
@합격하고만다

영어에 대략 5만개의 단어가 있다 쳐보자. 그러면 [0, 0, 0, 0, ..., 1, 0, 0] 이렇게 omr 카드에 마킹하듯 단어에 해당하는 인덱스를 1로 하고 나머지가 0인 5만개 길이의 배열을 만듬. 이게 “이미지 픽셀”이랑 동치라고 보면 됨. 그 다음에 문맥까지 포함해 오토엔코더마냥 중간 쪼이는거라고 이해하면 평함

1
2021.01.11
@대머리머대리머머리대대리

오... 이러니까 이해 되네

단어 위주로 데이터화해서 내보내는구나

단어의 구성 자체가 문맥을 어느정도 담고 있으니 순서만 학습시켜도 문맥이 학습이 되겠네

직접 해봤을 때 가끔 통일되지 않는 듯한 말맺음, 말투가 나오는 것도 내용(단어)위주라 그렇겠고. 맞나??

0
@합격하고만다

이론상 단어 벡터를 전부 더하면 문장 벡터가 나와야함

근데 현실은 녹록치 않다 비선형 빔!

1
2021.01.11
@대머리머대리머머리대대리

단어 벡터를 더 하는 것과 문장 벡터가 그 결과인 것은 천지차이임. 그래서 문장 내 word간의 거리 계산하는 word distance mover같은 것도 있는거고...

보통 word나 sentence나 같은 vector space 공유할텐데?

0
@대머리머대리머머리대대리

word2vec도 쓰지 않았을까?

나아가 con2vec도 쓰고..

0
2021.01.11
@월급받으며개드립하기

안씀.

0
2021.01.11
@합격하고만다

N차원에 문장의 단어의 횟수로

0
2021.01.11
@합격하고만다

얘 말 전혀 다름;

이런식으로 단어를 하나하나 체크하면 문제가 크게 발생함. 예를 들어 딸기라는 단어가 [1, 0, 0]이고, 참외라는 단어가 [0, 1, 0], 컴퓨터가 [0, 0, 1]이라고 하면 이 셋의 유사도가 0이 되버림. (cosine 90도). 알다시피 딸기와 참외의 유사도는 비슷해야되니까 0이 나오면 절대 안됨. 저런식으로 표현하는건 10년도 더 된 방식임.

 

요즘은(요즘도 아님 7년 전부터 이 방법은 안 쓰기 시작했음) 각 인덱스/차원이 하나의 정보를 갖는 대신 여러 차원에 흩뿌리는 식으로 표현함. 즉 딸기[1, 0, 0] -> [0.3, 0.7, 0.1]이런식으로 표현함.

0
2021.01.11
@답답허다

딸기 참외 유사도가 0이라도 데이터만 충분하면 ABCA대화에서 마지막은 딸기나 참외가 들어가는 구나 정돈 학습 가능하겠다 생각했는데 네 말대로 속성으로 나눠서 흩뿌리는 게 훨씬 정확하고 효율도 좋겠네

근데 흩뿌릴 차원 구조 규칙 세우기가 어렵겠당

0
2021.01.11
@합격하고만다

놀랍게도 그런건 일절 신경쓰지 않음. 데이터로 알아서 학습하기 때문에 초기화만 적당하게 정규분포나 균일분포 갖도록 세팅하고 학습함. 그럼 짜잔 하고 놀라운 결과가 나옴.

1
2021.01.11
@아리

RNN은 안 쓴지 오래됐음. 말한대로 트랜스포머쓰지. 니가 말한 GPT3도 generation이 가능하고 auto regressive함에도 불구하고 여튼 트랜스포머 구조임.

 

BERT가 auto encoder라고 말하는건 denoise autoencoder 때문인것 같음. MLM할 때 단어 오염시키거든.

0
2021.01.11
@아리

오토인코더는 이미지 처리용이라고 한정지을 수 없음. 당장 tabular data에서도 사용하고 (https://arxiv.org/pdf/2006.08204.pdf) 언어 모델에서도 잘만 씀. 다른 개붕이가 댓글 달았듯이 RNN 요즘 거의 안씀. 이미지도 Transformer 모듈로 처리할수 있게 되어서 머지않아 Transformer로 대통합 할 것같음.

0
2021.01.11

샌즈 나오길 기대한 내가 멍청이지

0
2021.01.11

(대충 이해한 척 하는 이모티콘)

0

수학하는놈들 저리 꺼져라! 꺼져!

0
2021.01.11

이루다는 gpt3아녀?

0
@잠적자

그건 ai던전

블로그 글에선 버트 파인튜닝했던데?

0
2021.01.11

진짜 데이터를 어떻게 뽑아낸걸까 궁금함ㅋㅋ

20대 여성과의 대화 2억개라니!

0
2021.01.11
@황해도특산

저 회사가 원래 카톡 대화 기반 연애 솔루션이랑 연애 정보 제공 앱 운영했었음

그리고 거기서 제공하는 서비스 중에 1년 연애 요약이라고 있었는데 그걸로 진짜 많이 확보한 듯

0
2021.01.11
@황해도특산

대화 분석 이런게 무료다 라는건 무조건 대화 내용이 저장되어 어딘가에서 사용된다는거임

0
2021.01.11
@tima

얘네는 무료도 아니었음ㅋㅋ

출석할 때마다 코인줘서 존버하면 무료로 할 수도 있긴 한데 기본적으론 유료

0
2021.01.11
@합격하고만다

아니 시바 ㄹ 돈내고였음? 미친놈들이네

0
2021.01.11

이야 재밌다

0

햐...나는 임베디드라 이런 ML DL이 너무 신기하고 재밌어보인다

0
2021.01.11

이런글 특 : ml이나 nlp 하던 사람이나 틀린거 없는지 찾아보려 읽고 나머진 대충 열심히쓴거보이니 개추때리고 안읽음

12
@해으응

ㅋㅋㅋㅋㅋㅌㅇㅈ ㅋㅋㅋㅋㅋ

0
@해으응

난 왜 개드립에서도 디펜딩을 하고있는가

2
2021.01.11

설명 진짜 쉽게 잘햇다 혹시 대학원생임?

0
2021.01.11
0
2021.01.11

엘사짝퉁같이생김

0
2021.01.11

정보) 버트는 너네 같은 일반 컴퓨터로 학습시킬수 없다.

0
2021.01.11

10년지나면 학습된정보가지고 안드로이드몸체가지고 세상나올듯

0
2021.01.11
@레즈샤워방구

그정도가 아니라, 막 쿼츠 시계 처럼 표준화된 작은 인공지능 모듈이 보급되지않을까? 아이들 인형이나 키오스크, 리얼돌에도 마구 박고 말이지

1
2021.01.11
@연탄바리

'리얼돌'중요

1
2021.01.11
@레즈샤워방구
0
2021.01.11
@레즈샤워방구

이거 보고 리얼돌 회사, 구글, 현대차 풀매수 했다

0
2021.01.11

아 ㅋㅋ 이해했음

0
무분별한 사용은 차단될 수 있습니다.
제목 글쓴이 추천 수 날짜
몰래 남사친을 만나고 온 임신한 와이프 25 mjonetool 21 4 분 전
현재 엄청난 욕을 먹는중인 나훈아 149 TWINS다현 153 23 분 전
난이도 상) 엄마 고르기 36 찬슬르아담 59 24 분 전
라이젠 9000번대 성능 루머 ㄷㄷ 77 하늘을뚫는드립 54 26 분 전
아빠 분리수거 따라나왔다가 택배차에 2살 남아 숨져... 109 닉네임변경01 62 30 분 전
주 4일제 체험판 시작 ㅅㅅ 63 파랑1 34 33 분 전
요즘 물가 근황.jpg 75 초도전체 43 34 분 전
몇천원이면 실리콘으로 만들 수 있다는 다이아몬드 68 오뚜기푸엥카레 57 35 분 전
미국 스타일 건물 철거 방식 27 힝잉잉 40 35 분 전
와 이게 CG가 아니네.... 27 하늘을뚫는드립 34 37 분 전
불륜 상간녀가 피해자를 도발하는 이유.jpg 28 동식 31 37 분 전
급발진 대비 페달블랙박스가 무의미한 이유 55 수육을쏘면탕수육 56 39 분 전
극각의 재능충 37 온푸 30 39 분 전
모니빵의 충격적인 사실 68 등급추천요정여름이 66 56 분 전
한순간에 대륙을 흔든 백종원 35 혜윰 115 58 분 전
디씨식 헤드헌팅 51 장트러블맨 59 1 시간 전
뭔가 잘못됐다는 걸 알았지만 내 일은 아닐 때 50 그릇된호우날두명그릇 32 1 시간 전
헬창 졸도....의외로 매일하면 효과 없는 것 97 파멸적상승 79 1 시간 전
사형수따위가 알 권리는 없다. feat. 갓본 98 사마리치킨 97 1 시간 전
일과 후 업무연락을 금지시킨 미 육군 부대 27 K1A1 56 1 시간 전