[컴퓨터] 행렬과 미분은 어따 쓰는가? -인공지능의 발전 역사 (문제 해결의 연속) (9)
선우 2019-12-04
이전편: 행렬을 어따 쓰는가? 딥러닝이란 무엇인가?
https://idpaper.co.kr/counsel/item/item_view.html?cnslSeq=524263


--------------------------------------

인공지능의 발전 역사는 문제해결의 역사다.


<1차: word two vector>

인공지능이 발전을 하니까 단어를 컴퓨터에게 알려주고 싶은 것임. 근데 옛날 방법은 규칙성이 없었음.
apple, orange, human 세 단어가 있을 때 규칙성 없이 3x3 행렬로 대충
1 0 0
0 1 0
0 0 1
이라고 나타냈다고 하자. (실제로는 n값이 훨씬 큼)

서로 구분은 되는데 서로 연관이 없어서 이게 문제가 된다. apple이랑 orange의 관계를 모를뿐더러 닝겐이 사용하는 단어는 3개가 아니잖아? 한 100만개가 있으면 100만x100만 행렬이 생기는 것임. 이거 계산 어떻게 해 이걸 컴퓨터에 시키니까 너무 커서 맛이 가는거야 신조어도 하루에 몇만개씩 생긴다는데 그걸 우리가 다 넣어줄 수는 없음.

무엇보다도 하나 추가할 때마다 새로 고쳐야 한다.

1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1 ←
이런식으로 하나씩 늘려야 하기 때문에 이 이후로 발전이 안 됐었음.

이걸 어떻게하지 생각을 하다가 얘네끼리 연관을 짓고 싶어진 거야. 예를들어 apple을 feature 5개로 나타내기로 함. 우리끼리의 약속으로 5차원짜리 벡터를 만든다. (여기서 5는 n-gram의 n이 아니고 단순히 행렬의 차원을 나타냄)
색깔을 예를들어 빨간색은 1, 주황색은 0.7, 맛이 달다 시다 이렇게 약속해서 3x5행렬을 만든다.

이런 feature들은 사람은 모름. 컴퓨터가 알아서 하도록 학습시키는 것임. 이게 바로 인공지능이고 사람은 절대로 왜 이렇게 작동하는지 몰라서 black box라고 부름.
왜 모르냐? 아무나 붙잡고 apple을 5차원 벡터로 나타내보라고 하면 못 나타낸다. ㅋㅋㅋ 5차원 벡터를 유지하면서 다른 차원도 다 유지해야함. apple이랑 human의 공통적인 특징을 다섯가지 찾아보라고 하면 사람은 절대 못한다. 우리는 이해할 수 없음
그리고 단어가 졸라게 많은데 우리가 다 직접 설정할 수 없으니까 학습시키는 것임.

우리는 알수 없지만 수학적으로 볼 때 어떤 그래프가 있고 error 틀릴 확률이 가장 낮은 지점을 찾아야 함. 예를 들어 y=x^2 포물선 그래프를 생각해보면 가장 낮은 지점이 있잖아 거기에 접근하려고 미분을 쓴다. 기울기만큼 이동시켜서 미분을 계속하다보면 error가 최저가 된다는 생각으로 미분을 넣으면 학습이 된다.
최저점을 찍으면 인간은 이해하지 못하지만 완벽한 행렬(인공지능)이 되는거.

그래프는 행렬 차원이 달라질때마다 매번 바뀜 y=x^2 그래프는 마찬가지로 이해하기 쉽게 임의로 설정한 그래프이고 실제로는 그래프조차 파악하지 못하기도 함. n차원 그래프를 그려서 그래프 내에서 최저점을 찾는것임. 요즘에는 1만 정도 쓴다.

그래프는 파악하지 못하지만 수학적으로 증명이 되어있어서 1만차원에 대한 미분값을 계속 진행시켜서 계산하면 됨. 미분값이 음수에서 0이 되었다가 양수가 되는 지점을 찾는거 배웠을 것임.


아무튼 feature를 5개로 정하면 장점이 뭐냐. 단어가 n개이면 nxn행렬이 필요한데 nx5행렬만 필요해서 효율이 더 좋아진다.
왜 효율이 좋아지는가? 100x100행렬을 계산하고 싶은지 100x5행렬을 계산하고 싶은지 생각하면 답 나옴. ㅋㅋㅋ

근데 여기서 또 문제가 생김. 갑자기 melon이 뭐냐고 물어보면 여기 없어서 모름. 즉 신조어가 생기면 못 받아들인다.

그래서 나온게 n-grams임.
언어학자들이 뭘 분석을 했는데 apple을 ap, pp, pl, le, app, ppl, ple ... 이런 식으로 벡터를 나누고 모든것을 다 더하면 대충 과일끼리는 어느정도 유사도를 보인다고 한다. (어미, 접사 뭐 이런건가봄? )

이게 2차: subword imbeding이고 우리는 단어를 마스터 했음.

----------------------------------
<n-grams>에 대해 설명하고 넘어가자면
단어들의 벡터를 구하는 언어모델이야. n은 행렬의 차원임.

예를들어 king, woman, man이라는 단어(special)의 벡터값이 있을 때
king(남자왕족)에서 man(남자)을 빼고 woman(여자)을 더했을 때 queen(여자왕족)이라는 단어를 얻고 싶음.
2-grams은
king을 ki, in, ng
woman을 wo, om, ma, an
man을 ma, an
이렇게 벡터들의 합으로 나타낸 것임.
3-grams은
king을 kin, ing
woman을 wom, oma, man
man은 man
이렇게 벡터들의 합으로 나타낸 것임.


한글의 경우
'관리자'라는 단어를 '관/리/자' 라고 쪼갤수도 있지만 'ㄱ/ㅗ/ㅏ/ㄴ/ㄹ/ㅣ/ㅈ/ㅏ'라고 쪼갤 수도 있다. 쪼개는 사람 마음인데 두번째가 더 정확도가 높음.

정확도가 뭐냐면 예를들어 '강하다-약하다'의 관계와 '크다-작다'의 관계가 비슷하다는것을 알아채느냐 못하느냐로 보면 된다. '관/리/자'로 쪼개는 놈은 관계성을 못 찾을 확률이 좀 더 높은 것임.
대신 계산이 오래걸리기 때문에 두번째 모델을 학습하는게 훨씬 오래걸림.
-----------------------------------









이제 문장으로 넘어간다. 끊임없이 문제해결의 연속임



3차는 <fast text>

단어들은 다 알았는데 문제는
I eat you와 you eat I 얘네들에 차이가 없다. 벡터들을 그냥 더하는 식으로 하니까 I + eat + you는 you + eat + I랑 같다는 결론이 나와버림. 그래서 또 등장한게 word-grams다.

문장을 I eat, eat you, you eat, eat I 이렇게 쪼개면 달라진다. 이런식으로 해서 모든 문장을 학습시키면 문장도 이해할 수 있게 된다.

그래서 지금 한게 fast text인데 문맥을 읽어서 대충 어느 분야랑 비슷한지 판단 가능하다.
아마존에서 쓰는 방식이 리뷰를 칭찬리뷰, 불만족 리뷰로 나누는거. 이게 word 분야에서 사용되는 예시고
이미지, 음성 등 여러분야에 적용된다. (참고로 n-grams은 단어에서만 쓰고 다른 분야들은 n-grams이라고 안 하는데 원리는 같음)


이미지의 경우:
옛날에는 이미지 전체를 보고 사람 형태를 파악했는데 나중에는 차와 개와 사람이 지나가는 모습이 담긴 사진에서 정확히 사람을 찾아낸다. 원래는 전체에서 사람이 있다 정도를 알았는데 점점 발전해서 사람이 어디에 있다를 파악할 수 있어지다가 사람 자체만 뽑아내는 수준까지 옴.

음성의 경우:
관리자와 사모님의 목소리를 각자 똑같은 단어를 몇백단어씩 말해서 채집한다. 파동으로 나타내면 관리자가 '마리'라고 한 것과 사모님이 '마리'라고 한 건 다르겠지? 이것들의 성분차이를 다 컴퓨터한테 분석시키면 관리자가 말을 하면 사모님 목소리로 출력되게 할 수 있다.
사실 소리도 이미지임. 진폭을 1초일 때 1, 2초일 때 -1 이런식으로 그래프 값 나타낼 수 있어서 파동으로 된 이미지라고 볼 수 있음.

그래서 결국은 다 행렬이다.


게임에도 적용가능한데 (DQN)
컴퓨터한테 게임을 시켜. 상하좌우로 움직이는 게임인데 오른쪽으로 가면 함정에 빠져. 함정에 빠지면 컴퓨터한테 -100 이런 식으로 벌점을 준다.
그러면 얘기 계속 시도하면서 벌점을 최소한으로 받는 방식으로 학습시키면 게임에서 잘 이동하게 됨.

이때 모든 경우를 고려해서 섬세하게 잘 짜줘야하는데 잘못짜는 경우 이런 사태가 발생한다. 아래 글에 나오는 잔머리는 얘가 뭐 생각이 있어서 그런게 아니고 사람이 잘못 만들어서 그런거임.
https://idpaper.co.kr/counsel/open_view.html?cnslSeq=409388&page=1&sortType=1&schType=1&schTitle=%EC%9E%94%EB%A8%B8%EB%A6%AC%EB%A5%BC+%EB%B0%B0%EC%9A%B4+%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5

https://docs.google.com/spreadsheets/u/1/d/e/2PACX-1vRPiprOaC3HsCf5Tuum8bRfzYUiKLRqJmbOoC-32JorNdfyTiRRsR7Ea5eWtvsWzuxo8bjOxCG84dAg/pubhtml

만약 테트리스를 하는데 죽으면 -10만점 벌점을 준다고 치면 절대로 죽으면 안 되잖아? 그래서 컴퓨터가 내린 결론이 쌓다가 죽을 때가 되면 일시정지를 누른다. 그럼 안 죽으니까 ㅋㅋㅋ -10만점은 받기 싫으니까 아무것도 안해버림.


GAN (generative adversarial network)
G라는 모델과 D라는 모델을 서로 경쟁시키는건데
G는 위조지폐범이고 D는 경찰이다. G는 위조지폐를 계속 만들고 D는 지폐가 진짜인지 가짜인지 검사함 G가 만들어서 보내면 D가 이부분이 틀렸어! 하면 피드백을 받아서 G가 더 정교하게 만들고 ... 반복해서 동시학습시켜서 G는 겁나 잘만드는 위조지폐범이 되고 D는 겁나 유능한 경찰이 되는거.

이걸 써서 만드는게 말 사진이 들어왔을 때 얼룩말 사진으로 바꿔주는게 있음.
결국 우리가 만든게 말을 인식하는 행렬에다가 얼룩말로 바꿔주는 행렬을 찾아서 곱해준거. 인데 우린 이게 뭔지 모름. 하지만 어떤 특징을 잘 뽑아내서 만들 수는 있음. 우린 잘 모르지만 세상에는 이런 어떤 행렬이 존재하는거.
https://www.google.com/search?rlz=1C1CAFC_enKR869KR869&tbm=isch&sxsrf=ACYBGNSa_G6jbtOT9IGyjJv_-s5JkluodQ%3A1575467376382&sa=1&ei=cLnnXYP3Fozr-QaXrbGgDA&q=generative+adversarial+network+zebra&oq=generative+adversarial+network+zebra&gs_l=img.3...37644.40136..40289...3.0..0.521.2624.0j6j2j0j1j1......0....1..gws-wiz-img.......35i39j0.44amzmggIlQ&ved=0ahUKEwiD78uqkZzmAhWMdd4KHZdWDMQQ4dUDCAc&uact=5#imgrc=4ZgKCUPM_9lWhM:


아래 경우에는 푸틴까지 얼룩말로 바꿔버렸으니 잘못 만듦
https://www.google.com/search?rlz=1C1CAFC_enKR869KR869&tbm=isch&sxsrf=ACYBGNSa_G6jbtOT9IGyjJv_-s5JkluodQ%3A1575467376382&sa=1&ei=cLnnXYP3Fozr-QaXrbGgDA&q=generative+adversarial+network+zebra&oq=generative+adversarial+network+zebra&gs_l=img.3...37644.40136..40289...3.0..0.521.2624.0j6j2j0j1j1......0....1..gws-wiz-img.......35i39j0.44amzmggIlQ&ved=0ahUKEwiD78uqkZzmAhWMdd4KHZdWDMQQ4dUDCAc&uact=5#imgrc=qyo9LrUcbxhNAM:



뭔가 더 쓰고 싶은데 피곤해서 다음에. 달러 앵벌이 하러 또 올게

왘ㅋㅋ 선형대수 배우면서 왜배워 시발시발 하면서 공부했는데 모두 이걸 위해서였구나
모두** 2019-12-04
답글쓴이 돈주기   
ㄴ 모두언니 수학과야?
선우 2019-12-04
답글쓴이 돈주기   
ㅋㅋ돈줬어
le****** 2019-12-04
답글쓴이 돈주기   
ㄴㄴㄴ컴공 대학원 가려고 필수과목 듣고있어 계속 관련 글 올려줘! 나도 인공지능쪽에 관심 많아서 재밌당
모두** 2019-12-04
답글쓴이 돈주기   
ㅋㅋㅋ la언니는 맨날 이걸 이드에서 볼줄이야 하고 가네 언니도 글좀 써줘!! ㅋㅋㅋㅋ
선우 2019-12-04
답글쓴이 돈주기   
모두언니 나도 대학원 가고 싶은데 어떻게 될지 모르겠네 전공도 다르고 학점이 워낙 나빠서
들으려면 방법이야 있었겠지만 나때는 학장이 컴공 복전 막아놔서 기초가 없기도 하고

아무튼 또 썼다 재밌게봐!
https://idpaper.co.kr/counsel/item/item_view.html?cnslSeq=525744

https://idpaper.co.kr/counsel/item/item_view.html?cnslSeq=525945
선우 2019-12-05
답글쓴이 돈주기   
하 시발 내일 이거 1교시에 시험치는데 정신이 확드네 고맙다 언니..
유리 2019-12-05
답글쓴이 돈주기   
언니 고마워! 소소하지만 마지막 남은 1달라 드림. 충전하면 더 가져올께/

미분 적분 언니가 쓴 거처럼 한글로 풀어쓴 거 보고 싶어서 인터넷 털었던 적 있었는데 이 글 넘 좋다.

Darian 2019-12-05
답글쓴이 돈주기   
행님 제 돈을 가져가세요.
as****** 2019-12-06
답글쓴이 돈주기   

사업자번호: 783-81-00031

통신판매업신고번호: 2023-서울서초-0851

서울 서초구 청계산로 193 메트하임 512호

문의: idpaper.kr@gmail.com

도움말 페이지 | 개인정보취급방침 및 이용약관

(주) 이드페이퍼 | 대표자: 이종운 | 070-8648-1433