달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

#6. 지능의 가진 기계와의 시작 : 체스와 체커 게임

체스와 체커는 인공지능 선구자들에게는 인간의 지능을 구현하기 위한 아주 좋은 도전이자 테스트 베드이었습니다.

1951년 페란티 마크 1(Ferranti Mark 1) 컴퓨터에서 실행된 체스와 체커 게임 프로그램에 이어서, 1952년에 또 다른 체커 프로그램이 개발되고 있었습니다. 바로 알파베타 가지치기(Alpha–beta pruning)의 초기버전을 수행한 아서 사무엘(혹은 아서 새뮤얼, Arthur Lee Samuel : 1901년~1990년)입니다.


지금으로 그 시절의 인공지능 수준을 생각하면, 누군가는 호랑이 담배 피던 시절부터 이야기라고 할 수 있습니다.

호랑이 담배 피던 시절 풍자 이미지

 

그러나 그 시절의 어떤 논리를 구축해왔는지를 깊게는 몰라도, 어느 정도는 알고 있어야 더 좋은 인공지능 알고리즘을 구현할 수 있습니다. 실제로 알파고도 심층 신경망과 더불어 트리 탐색 기법(몬테카를로 트리 탐색)을 써서 구현했습니다. 이렇게 사용된 탐색 기법은 딥 러닝이 발달하기 훨씬 이전에 초기 인공지능 구현기법에서 많이 사용되던 구현기법이었습니다. 때론 옛것과의 결합을 통해 좀 더 좋은 솔루션을 구축할 수 있습니다. (이날치는 전통적인 판소리에 현대적인 팝 스타일을 조화시킨 음악으로 유튜브에서 많은 인기를 끌었습니다. 우리 것은 좋은 거여~ (:-))

 

오늘 소개해드릴 아서 사무엘도 트리 탐색기법을 사용했습니다. 

아서 사무엘은 미국의 IBMer이자 컴퓨터 게임 및 인공 지능 분야의 선구자이자, 머신 러닝의 대가입니다.  그는 1959년에 "머신 러닝"이라는 용어를 대중화(처음으로 논문에 사용) 시켰고, IBM 메인프레임 개발 및 최초의 자기학습 체커 프로그램 개발하였습니다. 1987년에는 컴퓨터 개척상(Computer Pioneer Award : IEEE Computer Society의 이사회에서 1981년 제정. 『Women of the ENIAC Computer Pioneer Award』로 이름이 변경)을 수상하기도 했습니다.

아서 사무엘이 IBM 701에서 체스 경기를 하는 모습 [출처 : https://www.ibm.com/ibm/history]

 

1949년에 아서 사무엘은 IBM의 Poughkeepsie Laboratory에 입사하여 획기적인 IBM 701 컴퓨터를 설계한 팀의 일원이었습니다. 아서 사무엘은 컴퓨터가 얼마나 강력한 도구가 될 수 있는지 보여주기 위해 게임의 챔피언 플레이어를 물리 칠 수 있는 체커 프로그램을 구현하는 것을 1946년 일리노이 대학팀 합류할 때부터 생각해오다, 1952년말쯤  IBM 701에서 초기 버전을 완성하였습니다. 1952년은 크리스토퍼 스트레이치의 체커 게임 프로그램 발표로 이런 지능형 프로그램에 대중들의 관심이 있던 시기였습니다. 아서 사무엘은 향후 몇 년 동안 이 체커 프로그램을 계속 개선했으며, 1955년 아서 사무엘의 프로그램은 자신의 플레이를 분석하고 실수로부터 학습 할 수 있게 되면서 중요한 이정표를 달성했습니다. 이 프로그램이 계속해서 악명을 얻음에 따라 실제로 1956년 2월 24일 국영 TV에서 시연되었습니다. IBM 주가는 이 데모를 통해 15포인트 상승했습니다.

인공지능 기업 주가 만화

 

이 프로그램은 자기 학습능력을 가지고 대량의 게임을 분석해 놓은 수가 "좋은 수"인지 "나쁜 수"인지를 식별하는 방법으로 점차 성능을 개선했으며, 결국에는 그의 프로그램이 상급 아마추어 레벨에서 플레이할 수 있을 정도로 숙달되었습니다. 그 과정에서 아서 사무엘은 컴퓨터가 오직 시킨 일만 할 수 있다는 생각이 틀렸음을 입증했습니다.

 

결국 1959년에 그는 머신 러닝(=기계 학습)이라는 용어가 공식적으로 처음 등장한 것으로 보는 논문 ‘체커 게임을 활용한 머신 러닝에 관한 연구(Some Studies in Machine Learning Using the Game of Checkers)’를 발표합니다. 

아서 사무엘의 "체커 게임을 활용한 머신 러닝에 관한 연구"에 대한 논문 첫장(1959년) [출처 : 해당 논문 발췌]

 

머신 러닝에 대한 명확한 정의는 해당 논문에서 명확하게 기록되어있지는 않지만, "명시적으로 프로그래밍 되지 않은"과 연관된 정의로 아서 사무엘이 최초 만든 것으로 봅니다. 현재 위키백과에서는 "경험을 통해 자동으로 개선하는 컴퓨터 알고리즘의 연구"로 정의하면서, 아서 사무엘이 "기계가 일일이 코드로 명시하지 않은 동작을 데이터로부터 학습하여 실행할 수 있도록 하는 알고리즘을 개발하는 연구 분야"라고 1959년에 정의한 것으로 표기되어있습니다. (참고로 영문 위키백과의 주석을 보면 상기 체커 게임 논문에서의 직접적인 기술은 관련이 없는 것으로 나와있습니다.) 딥 러닝과 같은 인공신경망은 머신 러닝에 속해있는 한 분야이므로 지난번 설명 드렸듯이 머신 러닝이 좀 더 포괄적인 개념입니다.

 

그가 구현한 체커 프로그램은 발표한 논문에 잘 설명이 되어있습니다. 

아서 사무엘의 "체커 게임을 활용한 머신 러닝에 관한 연구"논문에서의 트리 설명 예시 [출처 : 해당 논문 발췌]

 

트리 검색기법을 이용해서 구현했고, 사용 가능한 컴퓨터 메모리의 양이 매우 제한적이기 때문에 아서 사무엘 서로간 적대적인 알파베타라는 개념을 도입했습니다. 일반적으로 게임 구현시에는 상대방이 어떤 식으로 나왔을 때 어떻게 반응해야 할지에 대해 최대한 많은 경우를 고려하는 코드를 구현해야 합니다. 이 때문에 알파베타 개념으로 적대 탐색 알고리즘들이 적용됩니다. 알고리즘의 탐색 시간을 줄이기 위해 사용되기도 하는데, 더 이상 계산할 필요가 없는 경로를 제거하여 계산량을 대폭 절감시키는 효과가 있습니다. 아서 사무엘이 도입한 이 개념은 알파베타 가지치기(Alpha–beta pruning)의 초기 버전으로 보고 있습니다.

해당 논문에서의 알파베타 개념의 도입 예시 [출처 : 해당 논문 발췌]

 

 

 

알파베타 가지치기는 탐색 트리에서 최소극대화(최소최대 또는 미니맥스, Minimax, MinMax, Saddle point or 한국어 위키는 "Maxmin") 알고리즘을 적용할 때 평가하는 노드의 수를 줄이기 위해 사용되는데, 여기서 최소극대화는 추정되는 최대의 손실을 최소화하는 알고리즘을 말합니다. 최소극대화 알고리즘은 최악의 경우에 발생할 수 있는 최대 손실을 최대한 감소하기 위한 의사결정 원칙으로, 게임이론에서 서로 적대 관계인 경기자의 이익은 최대로, 상대로부터 받는 피해는 최소로 만들기 위해 행동한다는 원리입니다.  최소극대화는 지난번 " AI와 인간의 대결 (3)"에서 클로드 새넌이 사용했던 구현 로직입니다. 

 

이 체커 프로그램은 최소 극대화 전략(논문에서는 "minimax" procedure로 기술)에 따라 이동을 선택했고, 상대방이 자신의 관점에서 동일한 기능의 값을 최적화하려한다고 가정하고 이 기능의 값을 최적화한 이동을 수행했습니다. 아서 사무엘은 다양한 메커니즘을 설계했는데, 보상 함수의 최종 가치와 함께 각 위치에서 검색 깊이를 효과적으로 확장했습니다. 아서 사무엘의 이후 프로그램은 프로 게임의 입력을 기반으로 보상 함수를 재평가하고, 또 다른 학습 방법으로 수천 개의 게임을 자체적으로 플레이하도록 했습니다. 

 

아서 사무엘 이 논문 마지막부분에는 이렇게 결론을 썼습니다.
"이 실험의 결과로 우리는 확신을 가지고 이제 학습 제도를 고안하는 것이 가능하고, 그것은 평범한 사람을 훨씬 능가할 것이고 이러한 학습 계획은 결국 실생활 문제에 적용 할 때도 경제적으로 실현 가능합니다."

참고로 그는 1956년에 열렸던 다트머스 회의(Dartmouth workshop, Dartmouth Conference  : 인공지능이라는 분야를 확립한 학술회의)에  제안서 작성자가 아닌 회의 참석자 명단에도 포함되어있습니다.

 

기계가 학습을 할 수 있다는 생각을 공식화하여 구현한 사람, 그 사람이 바로 아서 사무엘입니다. 그에 대한 경의를 표합니다.

아서 사무엘 이후,  "Machine Learning" 책을 지은 카네기 멜런 대학교의 교수 톰 미첼(Tom Mitchell)은 1986년 "컴퓨터 프로그램이 어떤 작업 T와 평가 척도 P에 대해서 경험 E로부터 학습한다는 것은, P에 의해 평가되는 작업 T에 있어서의 성능이 경험 E에 의해 개선되는 경우를 말한다."라고 이전보다 형식적인 머신 러닝의 정의를 내렸습니다. 즉, 어떠한 작업 T에 대해 꾸준한 경험 E를 통하여 그 T에 대한 성능 P를 높이는 것, 이것이 기계학습이라고 할 수 있습니다. 한마디 장표로 이번 글을 마칩니다.

머신 러닝 정의 만평

Copyright 2021. 『오드리공주될뻔 블로거』  All rights reserved.

Posted by 오드리공주될뻔
|

인간의 지능적인 특성 중에는 학습이 있습니다. 학습은 배워서 익히는 것입니다. 그럼 어떻게 배울까요? 우리는 경험을 통해 배웁니다. 그래서 우리는 여러 경험을 통해 학습을 얻어내고 그 학습은 다음 행동에 영향을 주도록 변화해왔습니다. 이렇게 우리가 학습하는 특성을 컴퓨터인 기계에 접목한 것이 머신 러닝이고, 딥 러닝입니다.
전통적인 프로그램 방식에서는 프로그래머인 사람이 일일 명시적으로 알고리즘을 설계하고, 코딩해서 컴퓨터가 주어진 입력에 대한 출력을 갖도록 해왔습니다. 그러나 인공지능 기법이 도입되면, 컴퓨터인 기계는 주어진 입력 데이터와 출력 데이터로(혹은 입력 데이터로만) 기계가 자동적으로 명시적인 프로그래밍 없이 학습하여 그 결과 규칙을 적용하게 됩니다. 아래 그림을 보면 쉽게 이해될 것 입니다.

전통적인 프로그램 방식과 인공 지능 방식의 차이

약간 머신 러닝 개념이 너무 복잡한 것 같아서 간단한 요리로 설명하겠습니다. 요즘 뜨고 있는 백선생 조리법(recipe)처럼 『라면을 맛있게 끓이는 요리 기계』를 만든다고 생각해봅시다. 전통적인 방식으로는 요리 기계에 조리법에 대한 프로그램을 입력합니다. 그 프로그램에는 가장 맛있다고 결론 지어진 조리법의 최종 규칙을 입력되어있습니다.  

  • IF (물의 양 = “550 ml” and 끓이는 총 시간 = “4분 30초” and 면 크기 =“부수지 말고 그대로 최대 크기” and 플레이크(후레이크 표기는 잘못. flake)와 분말 스프 투입시기 = “면보다 먼저” and 취향 = “대파 투입” and/or “달걀 투입(풀어서)”)
  • Then (조리법 = “백선생의 맛있는 라면요리“). 

이제 이 규칙을 기계에 넣어주고, 우리는  백선생의 맛있는 라면요리“를 끓여주라고 하면 기계는 상기 규칙대로 끓여서 나올 것 입니다. 이것은 구체적인 정답에 해당하는 규칙이 있어야만 결과적인 맛있는 라면요리가 완성되는 방식입니다.

그러나 상기 IF절에 있는 (물의 양, 끓이는 시간, 면 크기, 스프 투입시기, 취향)을 어떻게 해야 할지 모른다고 가정할 때, 우리는 가르쳐 주는 사람이 없다면, 내 스스로의 경험을 통해서 맛있는 조리법을 터득할 수밖에 없습니다. 끓이는 시간은 얼마로 해야 면이 꼬들꼬들 해질까, 물이 많으면 싱겁고, 물이 적으면 짜고, 면을 잘라서 넣을까 말까, 플레이크와 분말 스프는 언제 넣을까, 달걀은 반숙할 것인가, 풀어서 먹을 것인가, 대파를 넣을 것인가 말 것인가 등을 시행착오하면서 경험이 쌓게 됩니다. 그리고 다음번에는 그 경험을 바탕으로 개선을 해나갑니다. 계속해서 매일매일 끊이다 보면, 결국은 어떻게 하는 것이 가장 좋은 맛을 내는지에 대한 결론이 나오고, 이를 기계에 저장하여 나만의 조리법이 나오게 만들 수가 있습니다. , 경험이 학습되어 그 결과를 맛있는 라면요리 조리법라는 규칙으로 저장해놓는 것입니다. 이렇게 학습을 통해 규칙을 생성해서 기계가 스스로 조리법을 갖게 하는 방식이 바로 머신러닝 / 딥 러닝에 의한 인공지능 방식인 것입니다. 이 방식으로 하면 개인별 취향이 다르다고 해도, 개인별 조리 데이터를 학습시켜 맞춤형으로도 제공할 수 있습니다. 좀더 확장이 유연해진겁니다.

이렇게 인공 지능 방식은 경험, 성능, 작업 목표를 기계 스스로가 데이터를 통해 발전해나가는 방식입니다.

Copyright 2021. 『오드리공주될뻔 블로거  All rights reserved.

Posted by 오드리공주될뻔
|

인공지능에 관한 용어들은 일반인들에게 생소한 경우가 많고 혼동하기 쉽기 때문에 기본적인 차이점을 이해하면 관련내용을 이해하는데 도움이 됩니다. 인공지능분야에서 가장 많이 쓰는 용어는 인공지능, 머신러닝, 인공신경망, 딥 러닝입니다. 이들의 관계는 한마디로 부분 집합과 합집합의 개념으로 쉽게 이해할 수 있습니다.

인공지능 ⊃ 머신 러닝(기계 학습) ⊃ 인공 신경망 ⊃ 딥 러닝(심층 학습)

최근에 많이 활용되는 딥 러닝 안에는 CNN, RNN 등의 여러 가지 형태의 알고리즘이 있습니다. 머신러닝은 기계 학습(機械學習)으로 표기하기도 하고, 영어로는 machine learning약어로는 ML)이라고 표기합니다. 딥 러닝은 심층 학습(深層學習)으로 표기하기도 하고, 영어로는 「deep structured learning」, 「deep learning」 또는 「hierarchical learning」이라고도 합니다. 인공신경망(人工神經網)은 영어로는 artificial neural network(약어로는 ANN)」 이라고 합니다.이를 도식화하여 나타내면 아래 그림으로도 표현할 수 있습니다.

인공지능, 머신 러닝(기계 학습), 인공 신경망, 딥 러닝(심층 학습) 용어의 구분

각각의 개념을 한마디로 요약해서 설명하면, 머신 러닝은 경험을 통해 자동으로 개선하는(혹은 학습하는) 컴퓨터 알고리즘의 연구 분야입니다. 기본적인 규칙만 주어진 상태에서 입력받은 정보를 활용해 스스로 학습하는 것입니다. 머신 러닝의 한 분야인 인공 신경망은 생물학의 신경망(특히 뇌)에서 영감을 얻어 입력과 출력 사이에 있는 인공 뉴런들을 여러 개 층층이 쌓고 연결한 학습 알고리즘입니다.

인공 신경망은 노드들의 그룹으로 연결되어 있으며 이들은 뇌의 방대한 뉴런의 네트워크와 유사하다. 위 그림에서 각 원모양의 노드는 인공 뉴런을 나타내고 화살표는 하나의 뉴런의 출력에서 다른 하나의 뉴런으로의 입력을 나타낸다. [출처 : 한국어 위키백과]

딥 러닝은 인공 신경망을 여러 계층으로 사용하여(그래서 Deep) 원시 입력에서 더 높은 수준의 특징을 점진적으로 추출하는 일종의 인공 신경망 학습 알고리즘입니다딥 러닝을 설명하다보면, 어디까지가 Deep이고, 어디까지가 Shallow이냐는 질문을 많이 받습니다. 여기에 대한 가장 근거 있는 정답은 아래의 deep learning에 관한 영어 위키백과를 참조해야합니다. (애석하게도, 2021년 1월 기준 ‘딥 러닝의 한국어 위키백과에서는 해당내용이 아직 기술되어있지 않습니다.)
The word "deep" in "deep learning" refers to the number of layers through which the data is transformed. More precisely, deep learning systems have a substantial credit assignment path (CAP) depth. The CAP is the chain of transformations from input to output. CAPs describe potentially causal connections between input and output. For a feedforward neural network, the depth of the CAPs is that of the network and is the number of hidden layers plus one (as the output layer is also parameterized). For recurrent neural networks, in which a signal may propagate through a layer more than once, the CAP depth is potentially unlimited. No universally agreed-upon threshold of depth divides shallow learning from deep learning, but most researchers agree that deep learning involves CAP depth higher than 2. CAP of depth 2 has been shown to be a universal approximator in the sense that it can emulate any function. Beyond that, more layers do not add to the function approximator ability of the network. Deep models (CAP > 2) are able to extract better features than shallow models and hence, extra layers help in learning the features effectively.” [출처 : deep learning 영어 위키백과]

상기 영문내용에 있듯이, deep을 정확히 이해하려면 CAP(credit assignment path, 입력에서 출력으로의 변환 체인. 머신 러닝의 일종인 강화학습에서의 credit assignment problem은 과거에 있었던 일들 중에서 현재 내가 받은 reward에 기여한 것을 할당하는 문제임)의 개념을 이해해야하고, 간단히 말하면, 인공신경망(Artificial Neural Network, ANN)을 구성할 때 입력 층(input layer)과 출력 층(output layer) 사이에 여러 개의 은닉 층(hidden layer)들로 이뤄진 형태로 구성하는 데, 여기서 출력 층을 포함한 은닉 층의 수가 CAP 값입니다. 즉, 노드간의 연결이 순환하지 않는 순방향 신경망(順方向神經網, feedforward neural network)과 같은 구조에서 통상의 CAP 값은 은닉 층+1의 값입니다. 따라서 딥(Deep)이란 통상 CAP > 2이상의 값, 즉 은닉 층이 2개 이상인 경우를 말하는 것입니다. 많은 분들이 Deep을 구분하는 은닉 층(Hidden Layer) 수가 1개 이하면 Shallow, 2개 이상이면 Deep라고 하는 것이 여기서 기인한 것이라 볼 수 있습니다.

Love 1
 Love 2

이제는 사랑도 인공 신경망으로 자동판별될 수 있습니다.

Copyright 2021. 『오드리공주될뻔 블로거  All rights reserved.

Posted by 오드리공주될뻔
|

한마디 정의 : 사람과 같은 지능과 특정 문제를 해결할 수 있는 수준의 지능


인공 지능은 일반적으로 약한 인공 지능(Weak AI, 혹은 약 인공 지능)과 강한 인공 지능(Strong AI, 혹은 강 인공 지능)으로 구분이 가능합니다.
위키 백과에서 'Strong' AI는 일반적으로 AGI(Artificial General Intelligence, 인공 일반 지능)로 분류되고 '자연' 지능을 모방하려는 시도를 ABI(Artificial Biological Intelligence, 인공 생물 지능)라고 합니다. 선도적인 AI 교과서에서는 이 분야를 " intelligent agents(지능형 에이전트) "에 대한 연구로 정의(환경을 인식하고 목표를 성공적으로 달성 할 수 있는 기회를 극대화하는 조치를 취하는 모든 장치)합니다.
강한 인공 지능은 처음부터 인간의 지성 전체를 컴퓨터의 정보처리능력으로 구현했거나 구현하는 것으로 목적으로 한 것입니다. 결국 강한 인공 지능은 인간을 대체할 수 있는 수준의 지적 능력을 가지고 있다는 의미입니다. 또 인간보다 몇 백배 이상 뛰어난 지능을 가진 경우는 인공 일반 지능이 진화를 한 상태를 뜻하는 초 지능이라고도 합니다.

반면, 약한 인공 지능은 인간의 구현을 목적으로 하는 것이 아니며, 기존에 인간의 지능으로만 가능하던 작업의 일부를 컴퓨터로 수행하게 만드는 것입니다. 현재의 기술발전 수준에서 만들 수 있는 인공 지능은 대부분 약한 인공 지능의 개념에 포함됩니다.

강한 인공 지능과 약한 인공 지능

Copyright 2021. 『오드리공주될뻔 블로거』  All rights reserved.

Posted by 오드리공주될뻔
|