토론실
프로필 이미지
[레벨:15]이금재.
read 2212 vote 0 2021.07.22 (05:31:48)


0. 시작하며

알파고 이후로 머신러닝은 한국인에게 특별한 의미를 가지게 되었다. 구조론의 모든 사람이 인공지능 연구자는 아니므로 머신러닝을 알 필요는 없지만, 적어도 현대 과학, 수학, 기술의 총체 중 하나인 머신러닝을 모르고 현대 산업의 흐름을 논하기는 어렵다고 할 수 있을 것이다. 필자는 머신러닝에 대한 이해가 없는 사람을 고려하여 기술적인 용어를 최대한 배제하고 비유적으로 쉽게 설명문을 쓰려고 노력하였다. 이 과정에서 전문적으로 딥러닝을 연구하는 사람이 보기엔 오해할 만한 소지가 있는 부분도 있겠으나 그건 니가 머신러닝을 제대로 이해 못해서 일어나는 착각일 뿐이다. 



1. 지도학습


1) 머신러닝: 컴퓨터로 하는, 다양한 방법을 사용하는 기계학습을 통칭

2) 딥러닝머신러닝 중 인공신경망을 사용하는 방법주로 지도학습의 방법으로 학습을 함.


3) 지도학습: 머신러닝 중 입력 – 출력(라벨)”으로 이루어진 빅데이터를 사용하는 방법라벨이 지도학습의 지도(supervise)’에 해당한다. 라벨이 붙은 사진만 학습한다는 말이다. 입력에 음성이미지텍스트 등 다양하게 사용하며 일반에게 많이 알려진 이미지 인식(차량 번호판 인식 등)법이 이 방법으로 훈련된다.

4) 강화학습: 알파고가 사용하는 방법으로 일방향 게임인 지도학습과 달리 쌍방향 게임의 영역에서 학습하는 방법바둑이나 스타크래프처럼 2인 게임에 주로 적용되며일방향 게임에 비해 학습해야 할 내부변수의 크기가 월등히 많다는 특징이 있음.


머신러닝의 방아는 무엇인가사실 머신러닝에 방아가 있다는 이 표현은 틀린 것이다머신이 방아이기 때문이다. 방아가 기계지 뭐. 그런데 왜 방아인가방아는 곡물과 닿아 도정을 한다닿는 그 순간을 우리는 의사결정 한다고 한다대개는 방아가 곡물을 이긴다방아가 곡식에 닿는 정도 혹은 방아의 힘에 따라 현미가 될 것인지 백미가 될 것인지 정해진다반대로 확에 돌이 들어가면 방아가 손상된다돌이 방아를 이기기 때문이다정미소 직원이라면 방아의 힘을 적절히 조절하여 현미나 백미 중 어떤 것을 만들 것인지를 반복된 훈련에 의해 학습할 것이다.

 

이 과정을 머신러닝의 큰 패러다임인 지도학습에 적용해보자이해를 돕고자 이미지 인식 딥러닝으로만 설명하겠다지도학습은 입력된 사진을 까서 미리 규정한 적당한 이름을 내놓는다대개는 사진의 이름이다고양이 사진을 넣어서 고양이라는 텍스트를 내놓는 것이다하지만 학습 없이 첨부터 지도학습이 이름을 제대로 뱉을 수 없다흔히 빅데이터라고 하는 데이터를 사용하게 된다여기서 말하는 훈련은 다수의 시행착오를 겪는 것으로 이해할 수 있다.

 

벼를 확에 올린다 어떤 힘으로 방아를 찧는다 정미된 쌀이 나온다 결과가 백미가 아니다 방아의 힘을 늘린다 빅데이터(경험)로 반복 최종적으로 백미가 나온다.

 


2. 문제를 풀기

지도학습의 데이터 중 라벨(출력)은 어떤 데이터를 어떻게 해석할 것인지 미리 태그를 달아놓은 것을 말한다.

 

지도학습을 하는 머신에 사진을 넣는다 적당한 힘(변수)으로 사진을 찧는다 정미된 이름이 나온다 원하는 이름, 즉 정답이면 1점을 아니면 0점을 준다 내부의 변수를 조절한다. > 이 과정을 충분히 반복하면 나중에는 사진을 넣을 때마다 자동으로 원하는 이름이 나온다.

 

어떤 분이 학습을 어떻게 수와 연결시키는 지 질문을 주셨는데, 위와 같이 연결한다. 보통은 0 아니면 1을 준다. 0과 1을 사용하는 것은 확률을 사용하기 때문이다. 이게 싫으면 0과 100을 사용해도 되고, 0과 50을 써도 된다. 다만 일관성만 지키면 된다. 한번은 50을 줬다가 다음번에는 100을 줬다가 하지 말라는 말이다. 거의 대부분 0과 1을 사용한다. 물론 강화학습을 하는 알파고도 마찬가지다. 이기면 1, 지면 0을 준다. 그리고 backpropagation, 즉 피드백 반영을 한다.


축구공을 차서 골대에 넣는 것으로 비유를 해보자발과 다리에 적당한 힘을 주어 정확한 방향으로 공을 차면 골이 될 것이다이를 실행하는 데는 발목의 힘근육의 힘무릅골반팔 등 다양한 조절이 필요하다이때 각 파트의 조절에 해당하는 것을 우리는 변수라고 하며 다양한 변수를 조절해보고 최종 결과가 나오도록 조절하는 것은 트레이닝이라고 한다이는 지도학습도 마찬가지다.

 

지도학습에 딥러닝을 사용할 수 있으며딥러닝은 인공신경망을 사용하며인공신경망은 변수의 다발이 연쇄적으로 연결되어 있는 것이다그런데 왜 인공신경망일까다층 구조의 트리 다발을 두고 우리는 신경망이라고 한다수학에서 다양한 값이 하나의 자리에 들어갈 수 있을 때 우리는 그것을 변수하는데이를 이미지로 표현하면 트리라고 부를 수 있다말 그대로 변하는 수다여러 값이 하나의 자리에 연결된 것이다.


tree.jpg


어떤 딥러닝이 어떤 사진을 보고 이름을 내놓는 과정에서 도입되는 변수의 수가 적다면 이 문제는 전혀 어렵지 않을 것이다그냥 사람이 손으로 풀어봐도 된다이런 과정은 함수에 다양한 값을 대입하며 푸는 것과 같다어려움은 사진을 보고 이름을 뱉을 때 사용되는 변수의 수가 무진장 많다는 것이다.(문제의 난도 혹은 라벨의 개수에 따라 다름특히나 답안지의 수즉 맞춰야 할 이름의 개수가 늘어날 수록 도입 변수는 기하급수로 늘어난다그래서 딥러닝이다. "도입 변수가 아~주 많다 = deep하다"라고 말하는 것이다.

 

사람이 학습을 할 때는 내부변수를 하나씩 직접 조절할 수 있지만, 내부변수의 수가 많다면 이 방법은 사용하기 어렵게 된다. 그래서 머신은 역으로 일단 대충 변수의 값을 정해놓고 결과에 맞추어 값을 조금씩 결과로 이동하는 방식을 사용한다. 일단 포탄을 쏴보고 결과를 확인한 뒤 정답 방향으로 포신의 방향을 조금씩 이동하는 것이다. 


수행하는 방식은 단순하다그냥 변수에 초기값을 랜덤으로 넣고 신경망에 통과시킨 뒤 우리가 원하는 결과가 나오도록 그것을 강화한다이런 과정을 백만번 쯤 노가다를 하다보면 내부변수는 점점 정답을 낳도록 최적화된다이때 미리 모든 경우의 수를 연결해놓고 내부변수의 값(강도)을 조절한다. 아래 그림의 수많은 선은 이러한 연결을 표현한 것이다. 공차기로 말하자면 팔에는 어느 정도종아리에는 어느 정도장딴지에는 어느 정도 하는 식으로 점차 힘이 조절된다. 


내부변수를 랜덤으로 둔다 > 공을 찬다 > 공이 날아간 방향을 본다 > 정답으로 날아갔으면 1 아니면 0을 주며 이 점수를 기준으로 내부변수를 조금씩 조절한다 > 무한반복


딥러닝.png

이 그림은 변수의 조합을 미리 연결하는 것을 표현하고 있다. 가령 서울에서 부산으로 가는 모든 경로를 죄다 연결했다고 생각해도 좋다. 좌에서 우로 계층적으로 조합된다. 좌우로 변수의 연결이 많은 것을 두고 deep하다고 부른다. 우측 마지막에 output layer 에서 정답을 맞춘다. 굳이 말하자면 이 그림은 4지선다형이라고 말할 수 있다.(이해를 돕고자 소프트맥스를 생략)

 

딥러닝이 훈련하는 고양이 사진이라도 같은 것은 하나도 없다. 100만장의 고양이 사진이 모두 다른 것이다그럼에도 불구하고 훈련된 딥러닝은 한결같이 같은 이름을 내놓는다보통 이런 것을 정확도라고 한다현재 최고의 머신러닝이 보통 90% 이상의 정확도를 내놓는다하지만 인간은 100% 아니냐고같은 실험에서 인간은 보통 80% 정도의 정확도를 내놓는다. 맥락의 이해가 필요없는 단순한 작업에서는 머신이 인간보다 낫다는 말이다. 다만 인간이 어려운 문제를 풀 수 있는 것은 맥락을 사용하기 때문이다. 이는 자연어text처리에서 주로 다루는 영역이다.


[크기변환]숫자인식.jpg

이미지 학습 중 가장 단순한 작업 중 하나인 '숫자인식'에 들어가는 인공뉴런의 개수도 무시할 만한 숫자는 아니다. ('집합'의 개념을 쓰므로 복잡한 것이고 '집합->대칭'의 개념을 쓰면 더 단순해질 수 있다. 대개 집합으로 표현되는 트리, 즉 트리의 leaf가 다수인 것은 한 단계가 아닌 경우가 많다. 다단을 한단으로 표현하다보니 2로만 나타나는 대칭이 아니라 다수가 나타나는 집합이 되는 것이다. 물론 반복인 경우나 사건 파악이 제대로 안 되어 그런 경우도 있다. 어떤 식으로건 중복과 혼잡이 있는 것이다.)



3. 문제를 규정하기


여기까지는 이미 규정된 문제를 푸는 과정이다이제는 한 단계 윗 과정을 말해보겠다소위 설계라고 하는 파트다. 인간 엔지니어가 하는 파트다문제를 푸는 것보다 중요한 것은 문제를 정의하는 것이다. 어떤 사람은 이를 두고 질문을 잘해야 한다고도 한다. 문제 규정은 곧 입력과 출력을 정하는 것이다. 문제 풀이는 규정된 입력과 출력에 대해 중간의 변수를 정하는 것으로 구분된다. 가령 “당뇨환자용 쌀밥에는 어떤 쌀이 필요하지?“를 정하는 것이 문제 규정이다


고양이 사진을 보여준다고 하여 꼭 고양이 이름을 말할 필요는 없다밥을 먹는지잠자는지를 말할 수도 있는 것이다그래서 입출력을 규정하는 것이 내부의 변수를 정하는 것보다 한 단계 윗 개념이 된다이러한 지도학습을 하려면 사전에 수백만장의 사진에 태그를 미리 붙여야 한다여기에 드는 비용이 만만찮다사람이 수작업해야 하기 때문이다. 그래서 보통은 인도 사람들이 이걸 한다. 싸니깐.

 

사실 문제를 정의하는 것은 현대 머신러닝의 학자들이 제대로 정의하지 않은 영역이다. 무엇에 이름을 어떻게 붙이느냐에 따라서 훈련의 큰 방향이 정해지지만, 사람들은 감으로만 접근할 뿐 이러한 과정을 제대로 정의한 놈이 없으므로 대다수의 연구자들은 고양이 사진에는 무조건 고양이 이름만 붙여야 하는 줄로만 안다. 고양이 사진에 고양이 이름을 붙이는 이유는 이게 "동물 이름 붙이기 게임"이기 때문이다. 유아가 이름을 맞추면 사탕을 주는 것이다. 그들은 책에 나와 있는데로만 접근한다. 문제를 푸는 게 아니라 문제를 정의하는 것이 훨씬 더 중요하지만 나는 이런 것을 말하는 사람을 본 적이 없다. 물론 초고급 전문가들은 가끔 경험적으로 이를 안다.


문제를 정의한다는 것은 트리 위에 트리가 하나 더 있는 것을 말한다. 딥러닝이 이미 다단계의 트리로 이루어져 있지만 추상화로 압축해서 보면 그것은 하나의 트리일 뿐이다. 필자가 여기에 추상화라는 표현을 쓴 것은 객체지향언어의 추상화가 이런 의미를 가지기 때문이다. 어떤 복잡한 구조라도 밖에서 보면 입력과 출력만 보이며(보인다고 여기며) 그러므로 입력과 출력의 쌍은 트리 하나로 추상적으로 표현되는 것이다. 이를 컴퓨터 공학에서는 캡슐라이징이라고 한다. 나는 이를 탑다운 정의라고 하겠다. 외부에서 내부로의, 혹은 위에서 아래로의 정의가 되겠다. 그리고 필자가 트리에 트리를 하나 더 얹는다고 말하는 것은 문제를 푸는 행위가 사건이라는 단위로 볼 때 그 외부에 인간이 개입하는 것을 두고 하나의 트리라고 보기 때문이다. 


입출력을 어떻게 해석할 것인를 먼저 규정하는 것이 트리 하나가 된다. 사진을 주더라도 이름 맞추기? 행위 맞추기? 색깔 맞추기? 를 할 수 있고, 당초에 사진을 줄 것인지, 텍스트를 줄 것인지, 소리를 줄 것인지도 정할 수 있는 것이다. 모든 지도학습은 반드시 트리 두 단계를 설계하며, 하나는 연구자가 수행하고 다른 하나는 머신이 수행한다. 연구자가 수행하는 트리는 게임의 규정이며, 즉 입력과 출력을 규정하기, 가령 "동물 사진에 이름 붙이기"로 설명되는 것을 말하며, 머신이 수행하는 트리는 입출력 사이의 변수 맞추기가 되겠다. 


여기서 재밌는 것은 다수의 논문이 자신의 성과를 부풀리고자 사람이 수행하는 부분에서 장난을 친다는 것이다. 보통 학술 논문에서는 사람의 파트가 잘 조명되지 않으므로 할 수 있는 장난이다. 물론 전문가에게 걸리면 얄짤 없다. 이를 두고 어떤 사람은 데이터를 조작한다고 한다. 이렇게 보면 최근 뉴스 편향에 대한 네이버의 변명이 웃기는 것이다. 네이버는 뉴스 추천을 기계가 하므로 공정하다고(연구자가 관여하지 않는다고) 말하지만, 실은 연구자가 이미 문제 규정의 단계에 개입하고 있으므로 이는 개소리가 된다. 


연구자는 알고리즘을 직접 만져 뉴스 사용자에게 노출되는 기사를 조정하지는 않지만 간접적으로 데이터의 범위를 조작하여 최종적으로 알고리즘을  조절할 수 있다. 대구에서만 민주당 지지를 조사하면 결과는 답정너가 된다. 네이버는 주로 국힘당 지지자의 선택을 데이터로 만들어서 추천시스템을 만드는 것으로 추정된다. 그들은 때로 객관식의 항을 교묘하게 배치한다. 2자 대결로 혹은 3자 대결로 조사함에 따라서, 혹은 답의 순서를 바꿈에 따라서 결과는 달라진다. 데이터 범위를 조작하는 것은 입력을 객관식 항을 조작하는 것은 출력을 조절하는 것이다. 그리고 나는 입출력을 합쳐서 문제를 규정한다고 표현한다. 


이는 이준석이 공정을 말하는 것과 같은 맥락이다. 우리 아빠가 서울대 나왔어 봐라. 나는 하버드 교수 됐겠다. 새끼야. 아빠 친구가 유승민이라매? 나는 임마, 소싯적 친구들이 대부분 노가다를 하거나 잘돼봐야 중소기업에 가는 판인데 내가 어떻게 서울대를 가냐? 환경이 정해지는 것이 있고 그 안에서 노력하는 것이 있는데, 내가 환경이 개판이었잖냐. 그런데도 똑같이 노력한다고 똑같이 결과가 나오냐? 너만 노력해서 하버드 갔는 줄 아냐? 환경이 좋으니깐 하버드 갈 기회도 생긴 걸 모르냐? 결과가 아니라 과정의 공정도 모르냐 새꺄? 내가 빙다리 핫바지로 보이냐? 조중동이 자주 하는 장난질이다. 오함마로 이준석의 손을 찍어버려야 한다.



4. 일방향 학습


이러한 지도학습의 주요한 특징은 기계가 일방향 학습자라는 것이다기계는 인간이 시키는데로만 하도록 특별히 고안된 것이다. 앞서 예시로 든 방아가 이렇다인간에게 대드는 방아는 없다. 반면 말을 듣지 않는 인간 혹은 생물을 훈련시키려면 특별한 방법을 써야 한다그것이 강화학습이 다루는 영역이다


우리는 대상이 나에게 대들지 않으므로 기계라는 표현을 쓴다. 즉 인간에 대해 관계가 일방적이면 기계라고 하는 것이다. 대든다는 것은 대상 내부에 확률을 가진다는 것을 의미한다. 자신만의 경우의 수를 가지는 것이다. 내가 이렇게 의도해도 저쪽에서는 맘대로 움직인다. 저쪽이 나를 이기려고 하기 때문이다.


하지만 기계는 사용자의 의도대로만 움직인다. 이렇게 보면 상대가 있는 게임을 하는 알파고는 기계라기 보다는 쌍방학습자라고 부르는 것이 더 어울린다. 강화학습은 다음 편에 이어진다

Drop here!

프로필 이미지 [레벨:13]kilian

2021.07.22 (06:46:30)

정말 초압축 핵심 정리입니다. 감사합니다. 다음 편을 기다리면서...

List of Articles
No. 제목 글쓴이 날짜 조회
공지 구조론 매월 1만원 정기 후원 회원 모집 image 26 오리 2020-06-05 17812
1860 안드로이드용 구조론 앱을 플레이스토어에서 다운 받을 수 있습니다. image 5 오리 2021-09-18 1277
1859 아이폰용 구조론앱을 앱스토어에서 다운 받을 수 있습니다. image 7 오리 2021-09-18 1171
1858 나는 추종자가 아니다 3 이금재. 2021-09-14 1670
1857 출사표 image 12 바람21 2021-09-14 1965
1856 불평이 심한 아이는 어떻게 할까요? 9 이상우 2021-09-01 1522
1855 바른 정의란 무엇인가 1 다음 2021-08-30 993
1854 데이터 무용론과 3중구조 이금재. 2021-08-25 1220
1853 교사가 가져야할 태도 이상우 2021-08-23 1309
1852 이재명, 이낙연 레인3 2021-08-21 1617
1851 자율주행 시대가 온다 1 이금재. 2021-08-04 2438
1850 언어화의 강력함 2 이금재. 2021-07-28 2630
1849 자율주행은 매우 쉽다 1 이금재. 2021-07-28 2275
1848 머신러닝과 구조론 - 3. 강화학습과 자율주행 1 이금재. 2021-07-25 2083
1847 라고한다의 법칙 다음 2021-07-24 2329
1846 머신러닝과 구조론 - 2. 강화학습 image 2 이금재. 2021-07-23 2239
» 머신러닝과 구조론 - 1. 지도학습 image 1 이금재. 2021-07-22 2212
1844 구조론과 인공지능 image 39 오리 2021-07-19 2425
1843 빠삐용 이금재. 2021-07-15 2293
1842 무한에 대한 단상 2 다음 2021-07-10 2443
1841 김혜연의 트로트 '뱀이다' 이대로 괜찮은가? 3 수피아 2021-06-15 3907