예전에 머신러닝 알고리즘을 학생들에게 설명할 때 쓰던 그림인데 구조론에도 풀어봅니다.
벡터 기반 단어 표현 알고리즘인 word2vec(추천시스템)과 Attention algorithm(구글번역기)입니다.
물론 당시의 학생들은 이해를 못했습니다. 심지어 화내던 친구도 있었죠.
우리는 "비슷하다, 유사하다, 닮았다"라는 말을 별 생각없이 쓰지만,
엄밀하게 보면 당신은 반드시 기준(전제, 계)을 가지고 진술을 합니다.
그리고 전제는 진술을 한정합니다. 진술은 절대로 전제를 벗어날 수 없는 거죠.
일상언어에서는 말을 대충 해도 되지만,
인류의 첨단에서 컴퓨터 알고리즘을 만드는 사람이라면 엄정해야 하지 않을까요?
"1, 2" 쌍일까요, "2, 3"쌍일까요? 아니면 "1, 3"쌍?
위의 그림에서 유사한 쌍은 하나가 아니라 둘입니다. 1, 2쌍과 2, 3쌍 각각이 색과 형태를 기준으로 유사합니다.
다음으로, 아래는 한국의 최고 IT 기업에서 일하는 머신러닝 연구자가 유사도 알고리즘을 써보고 자기 블로그에 쓴 말입니다. 구체적인 알고리즘이 뭔지는 굳이 설명하지 않겠습니다. 설명할 필요가 없거든요. 위 그림을 이해하신다면 아래도 이해할 수 있어야 합니다. 같은 원리거든요.
이 사람은 학교, 집, 회사가 왜 비슷한 단어인지를 이해하지 못합니다. 물론 이 사람이 특별하게 이상한 게 아니라, 열에 열이면 다 이해를 못합니다.
"OS, 운영체제, 발적화"가 "소프트웨어"와 유사하다는 것은 받아들이면서도 "하드웨어"와 "소프트웨어"가 가장 비슷하다는 건 받아들이지 못합니다. 이해가 안 되니 알고리즘의 한계라는 말까지 하네요. 이 사람은 "유사도"라는 말을 이해하지 못한 겁니다. 보통 수학을 잘하는 사람일수록 더 이해를 못합니다.
물론 이 알고리즘을 만든 구글 연구원도 이해하지 못했습니다. 논문에 이런 설명을 해야 하는데 안 하거든요. 공식만 늘어놓고 대충 감으로 만든 거죠. 머신러닝 바닥이 이런 실정입니다. 뭐 그런 사람들 몇 만명이 구르고 굴러서 알파고까지 온 것이긴 하지만.
#
눈치가 빠른 분이라면 "나는 _____에 간다"에서 빈칸에 들어갈 말들인 "학교, 집, 회사(target word)"가 "장소"라는 점에서 유사하다는 것을 알아챌 수 있을 겁니다. 어떤가요. 직관적인가요? 어떤 둘은 그냥 유사한 게 아니라, 기준에 대하여 유사한 겁니다. 즉 다양한 글에서 "나는"과 "간다"가 "학교, 집, 회사"라는 단어의 앞뒤에서 많이 출현한 거죠. 그럴 거 같잖아요.
참고로 이 알고리즘은 target word(학교, 집, 회사 등)의 앞 뒤에 분포하는 다른 단어(나는, 간다 등)의 출현을 기준하여 유사정도를 판정하는 알고리즘입니다. 장거리 문맥을 고려하지는 않지만, 바로 앞 뒤의 근거리 문맥은 고려합니다. 즉 이 알고리즘의 계는 target word의 앞뒤 단어 하나(혹은 둘 정도)입니다. 딱 여기까지.
좀 더 나가면 attention 알고리즘이라는 게 있는데, 이걸로 만든 게 구글(파파고 등)번역기고요. 근데 얘도 계를 "문장"까지만 설정하기 때문에 "글" 단위(계)의 번역을 못합니다. 구글 번역기에서 앞뒤 문맥과 상관없는 쌩뚱맞은 단어가 나온다면 이 때문입니다. 문장을 벗어난 의미를 고려할 수 없기 때문이죠. 계 설정이 딱 가로막고 있잖아요.
여기서도 통계가 사용되는데, 통계의 모집단(계)을 얼만큼 설정하느냐가 머신러닝의 정확도와 유연성을 좌우합니다. 사실 빅데이터나 머신러닝이나 같은 맥락의 물건입니다. 빅데이터 하던 애들이 머신러닝 하고 있어요. 물론 무조건 계만 키운다고 해결되는 문제는 아니고, 보편성과 특수성의 개념으로 계를 주물러야 합니다. 최근에 파인튜닝이라는 개념으로 접근하고는 있는데, 조만간 될지도?
현재 구글에서 완벽한 번역기를 만들지 못하는 이유는 기술이 부족해서라기 보다는 철학이 부족해서라고 할 수 있습니다. 현재는 일단 만들고 개선하는 방식이긴 한데, 이것도 한계가 있습니다. 튜링과 폰노이만 철학의 한계죠. 철학과 언어가 없으면 눈앞에 두고도 못 보는 게 인간입니다. 그들은 할 수 없는게 아니라 볼 수 없는 겁니다.
하여간 구조론에서 말하는 "계"가 이렇게 중요합니다. 인류의 최첨단 기술을 설명할 수 있고 발전시킬 수도 있는 거에요. 물론 구조론에서는 이러한 계의 연쇄를 질, 입, 힘, 운동, 량으로 더욱 구체적으로 설명하고 있습니다만, 전 아직 이해가 부족하므로 다음에 이해되면 한 번 썰을 풀어보도록 하죠.
![프로필 이미지](https://gujoron.com/xe/files/member_extra_info/profile_image/830/008/8830.jpg)
![포인트:70489point (98%), 레벨:27/30 [레벨:27]](https://gujoron.com/xe/modules/point/icons/default/27.gif)
![프로필 이미지](https://gujoron.com/xe/files/member_extra_info/profile_image/919/972/972919.jpg)
![포인트:41966point (58%), 레벨:21/30 [레벨:21]](https://gujoron.com/xe/modules/point/icons/default/21.gif)
근데 또 번역기 특성을 활용하면 원문을 조금 바꾸어 바르게 번역시킬 수도 있습니다. 하지만 본질적으로는 문장 두 개를 하나의 세트로 이해하지 못하는 한계입니다. 여러 문장을 넣고 번역해보시면 아실 겁니다. 여러 문장이 서로에게 영향을 못 줍니다.
![프로필 이미지](https://gujoron.com/xe/files/member_extra_info/profile_image/830/008/8830.jpg)
![포인트:70489point (98%), 레벨:27/30 [레벨:27]](https://gujoron.com/xe/modules/point/icons/default/27.gif)
여러 문장이 있는 경우 앞의 문장에 나온 내용을 이해해야지만 다음에 나오는 문장의 의미를 좀더 정확히 파악할 수 있는 것은 너무나 당연하죠.
번역 문제를 떠나서 .
앞문장의 내용과 뒤문장이 맥락상 맞지 않는다는 점을 기계를 통해 검출을 할 수 있는지 궁금하군요.
일상적으로 발생할 만한 다음 두문장을 가지고 이야기 해본다면.
1.나는 어제 집에 오는 길에 고등어 무우조림이 먹고 싶어 동네 마트로 향했다.
2.나는 마트의 정육점 코너로 직행하여 돼지고기 한근을 사서 집으로 와 돼지고기 김치찌개를 해먹었다.
각각의 문장은 이상할게 없지만 두개의 문장을 연달아 본다면
"고등어 먹고 싶다는 사람이 생선코너로 안가고 왜 정육점 코너로 갔나?"
이렇게 의문이 드는게 인간에게는 자연스럽지만.
기계에게 이 두개의 문장이 맥락상 맞지 않는다는 점을 검출할 수 있는 방법이 있나요?
저 간단한 문장에도 많은 전제가 깔려 있는데 그런 전제 조건들을 저장하는 방법이나
문맥 비교 메카니즘이 필요할 거 같은데 현재 인공지능 분야에서는 어떤 방법론을 사용하나요?
개인적으로 검출방법이 상당히 어려워 보입니다.
문맥에 맞게 번역을 하고 싶어도 기술이 없어서 못하는게 아닌가 하는게 제 의견 입니다.
![프로필 이미지](https://gujoron.com/xe/files/member_extra_info/profile_image/919/972/972919.jpg)
![포인트:41966point (58%), 레벨:21/30 [레벨:21]](https://gujoron.com/xe/modules/point/icons/default/21.gif)
당연하죠! 근데 구글 연구자들은 당연한 걸 몰라요.
물론 아래의 알고리즘이 번역에 사용되지는 않습니다만,
구글 연구자들의 생각은 엿볼 수 있습니다.
https://cpuu.postype.com/post/166917
Alice drove down the street in her car.
첫 번째는 'Alice가 그녀의 차를 운전하고 있는 거리'로 장소를 의미하는 반면, 두 번째는 '그녀의 차 안에 놓여있는 거리'로 해석됩니다. 두번째 해석은 사람이 보기에 상식적으로 맞지 않지만, 그렇다고해서 문법적으로 틀린 것은 아니기 때문에 컴퓨터 입장에서는 충분히 가능한 해석입니다. 바로 이 지점에서 전치사 'in'이 drove를 수식하느냐, 아니면 street를 수식하느냐에 따라 모호함(ambiguty)이 대두됩니다. 이것을 전치사 접속 모호성(Prepositional phrase attachment ambiguity)라고 부릅니다.
신기하게도 인간은 언어를 사용할 때 아주 놀라울정도로 모호성 문제에 잘 대처합니다. 하지만 컴퓨터가 처리하기에는 쉽지 않습니다. 아주 긴 문장에 대해, 가능한 다양한 중의적 해석을 모두 검토하려면 그 조합의 경우의 수가 급격히 커집니다. 보통 그중 상당수는 상식적으로 말이 안되는(implausible) 해석일 수도 있겠지만, 그럼에도 불구하고 그것이 문법적으로 가능한(possible)해석이라면 반드시 Paser의 검토를 거쳐서 후보군에서 기각시킬지 판단해야합니다.
전치사 접속 모호성이라니. 어이가 없죠. 이 문장이 모호한 이유는 말을 하다 말았기 때문입니다. 저 문장만 가지고는 "거리(street)"를 정확하게 규정할 수 없어요. 혹시 알아요? 이상한 나라의 앨리스라서 정말로 자동차 안에 street가 있을지. 즉 대다수의 독자는 이게 이상한 나라의 앨리스 이야기가 아니라는 숨은 전제를 가지고 저 문장을 읽기 때문에 해석하는데 아무런 문제가 없는 겁니다.
근데 구글 연구자들은 정보가 부족함을 탓하지 않고 기술이 부족함을 탓하고 있잖아요. 어이가 없죠. 물론 결국 저 알고리즘은 폐기됩니다. 번역기에 사용되는 Attention이라는 게 나온 이후로는 잘 안 보이더라고요. 어텐션이 뭔지는 담에 이야기 해보죠.
#
그런 좋은 알고리즘 없습니다.
대신 이런 걸 만드려면 사람은 이런 복잡한 가능성에 대해서 어떻게 해결하는지 봐야 합니다. 사람은 일단 임의의 계를 설정합니다. 사건의 범위를 먼저 판단하고 그 다음에 내용을 사건틀(계)에 짜맞추죠.
즉 먼저 문장과 문장을 연결하여 오류가 있는지 판단하기 보다는, 일단 두 문장이 동시에 일어날 수 있는 임의의 계를 먼저 규정하고 그다음에 문장과 문장을 연결하려고 합니다. 방향이 다른 겁니다. 물론 사람에 따라 생각하는 방향이 좀 다르긴 하죠. 어떤 사람은 자기가 아는 걸 중심으로 사건을 파악하려고 하고, 다른 사람은 현 상황을 중심으로 사건을 파악하려고 합니다.
1. 일단 사건의 영향이 미치는 범위를 파악한다. (계 설정이자 최대 단위의 규정)
2. 게임 안에 자기를 집어넣어 최소 단위를 규정한다.
3. 최대 단위와 최소 단위로 계를 구체화 하고 그 내부에서 작용반작용이 어떻게 일어나는 지를 본다.
이 개념으로 들어주신 예시를 해석하자면
1.나는 어제 집에 오는 길에 고등어 무우조림이 먹고 싶어 동네 마트로 향했다.
2.나는 마트의 정육점 코너로 직행하여 돼지고기 한근을 사서 집으로 와 돼지고기 김치찌개를 해먹었다.
이게 맥락상 맞지 않는다고 하셨는데, 마트에 가는 길에 부인에게 돼지고기 사오라는 전화를 받았다면 맥락에 맞습니다. 보통 이런 방법으로 사람을 골탕 먹이는게 스릴러 영화죠.
이게 가능하려면 계설정 개념으로 알고리즘을 만들어야 하는데..
![프로필 이미지](https://gujoron.com/xe/files/member_extra_info/profile_image/830/008/8830.jpg)
![포인트:70489point (98%), 레벨:27/30 [레벨:27]](https://gujoron.com/xe/modules/point/icons/default/27.gif)
고등어란 단어 하나에만 국한에서 생각을 해보면
고등어가 생물이고 ,생선이며 ,육지가 아닌 바다에 살며, 손바닥만하며 ,그다지 비싸지 않는 상품 이라는아러한 계층적 배경 정보를 기계가 알아야 문맥 비교를 할텐데 그런 기술이 현재 가능한가에 의문이 듭니다
![프로필 이미지](https://gujoron.com/xe/files/member_extra_info/profile_image/919/972/972919.jpg)
![포인트:41966point (58%), 레벨:21/30 [레벨:21]](https://gujoron.com/xe/modules/point/icons/default/21.gif)
우리는 고등어에 대한 "고등어가 생물이고 ,생선이며 ,육지가 아닌 바다에 살며, 손바닥만하며 ,그다지 비싸지 않는 상품"이라는 모든 정보를 매 사건 해석에 사용하지 않습니다. 우리는 case by case로 필요한 정보를 조달합니다. 즉 고등어가 생물이라는 건 생물학 시험이라는 사건이나 혹은 고등어가 생물이라는 정보가 필요한 사건에서만 사용되는 거죠.
단순히 "고등어가 생물이고 ,생선이며 ,육지가 아닌 바다에 살며, 손바닥만하며 ,그다지 비싸지 않는 상품" 이러한 모든 정보를 컴퓨터의 딕셔너리에 저장하듯 하지 않는다는 거죠.
결국 정보 저장의 단위가 사건이라는 게 인간 기억의 핵심입니다. 어릴 적 기억을 떠올려 보시면 알 수 있는게, 우산을 보면 떠오르는 기억은 사람마다 다를 겁니다. 우산 파는 사람, 우산 없어서 소나기를 맞았던 사람, 우산으로 칼싸움 했던 사람, 연인과 한 우산을 썼던 사람 등, 같은 우산이라도 기억이 생성된 상황에 따라 "우산의 의미"는 모두 다르며 인간의 기억은 우산 중심이 아니라 상황 중심이라는 거죠. 물론 우산전문가라면 우산 자체가 상황이 되긴 합니다.
![프로필 이미지](https://gujoron.com/xe/files/member_extra_info/profile_image/830/008/8830.jpg)
![포인트:70489point (98%), 레벨:27/30 [레벨:27]](https://gujoron.com/xe/modules/point/icons/default/27.gif)
이 문장을 이해하려면 고등어는 물건이 아니고 생물이며 ,산이 아닌 바다에 살고 있다는 정보를 알아야 문장에 오류가 있다는 것을 알 수 있잖아요.
모바일이라 작성이 어려워 나중에 정리해서 올려 벌께요
![프로필 이미지](https://gujoron.com/xe/files/member_extra_info/profile_image/919/972/972919.jpg)
![포인트:41966point (58%), 레벨:21/30 [레벨:21]](https://gujoron.com/xe/modules/point/icons/default/21.gif)
제가 말장난을 하려는 건 아닙니다. 이런식의 패턴이 계속 반복된다는 겁니다.
우리는 단순히 어떤 정보를 통해 사건을 판정하는게 아니라, 사건 고유의 결이 그럴듯한 지를 판정합니다. 소설의 정의가 그렇잖아요.
즉 오리님께서 구조적으로 완전한 사건을 말씀하지 않으면 저는 계속해서 전제를 붙여 반박할 수 있습니다.
정리하자면 단순한 정보가 아니라 구조적, 사건적으로 "완전한" 정보라야 반박을 피할 수 있으며 이 방식이 인간이 대상을 사건 단위로 기억하고 판단하는 방법입니다.
동렬님이 맨날 하는 말 있잖아요. 어김쟁이 어쩌구 하시는 말이 이래서 하는 말일 겁니다. 상대의 완전하지 않은 말은 전제 바꾸기로 영원히 반박할 수 있다는 말이겠죠.
그래서 또 하시는 말이 "아는 사람은 반박당하지 않는 말을 해야 한다"인데, 이는 완전한 말을 해라로 번역할 수 있습니다.
![프로필 이미지](https://gujoron.com/xe/files/member_extra_info/profile_image/830/008/8830.jpg)
![포인트:70489point (98%), 레벨:27/30 [레벨:27]](https://gujoron.com/xe/modules/point/icons/default/27.gif)
![프로필 이미지](https://gujoron.com/xe/files/member_extra_info/profile_image/919/972/972919.jpg)
![포인트:41966point (58%), 레벨:21/30 [레벨:21]](https://gujoron.com/xe/modules/point/icons/default/21.gif)
참고로 "Alice drove down the street in her car."에 대해 구글 번역기와 파파고 번역기(네이버)의 결과가 다른데,
구글 번역기는 "앨리스는 차에서 길을 운전했다."로
파파고 번역기는 "앨리스는 차를 타고 거리를 달렸다."로 번역합니다.
이 결과가 다른 이유는 구글의 알고리즘은 일반적인 것만 통계적으로 번역하고,
네이버는 특수한 사례에 대해 임의 조정을 했기 때문인데요,
여기서는 네이버의 결과가 더 나아 보이지만, 다수의 문장을 번역해보면 구글 번역기 결과가 더 좋습니다.
왜냐하면 임의조정을 하면 다른 문장들의 번역에도 영향을 미치거든요.
이는 구글과 네이버 모두 통계를 사용하기 때문입니다.
통계는 총합이 1이라는 개념이기 때문에 내부에 존재하는 어떤 하나를 임의 조정하면 다른 하나가 삑사리 나게 됩니다.
그렇다고 여기에 알고리즘을 덕지덕지 추가하기 시작하면 결국에는 망합니다.
즉 최초에 알고리즘을 좋은 걸 안 쓰면 무조건 망하는 구조입니다. 그러므로 총합 1을 다양하게 구성해야 하고, 이러한 개념은 다양한 사건을 파악하고 전제하도록 모듈화 해야 하는데,
몰라서 못 하는 겁니다.
머신런닝으로 번역이 잘 안되는 문장이 있다면 어떤 종류의 것이 있나요? 예를 하나 들어봐 주세요.