PGR21.com
- 자유 주제로 사용할 수 있는 게시판입니다.
- 토론 게시판의 용도를 겸합니다.
Date 2015/04/12 02:10:07
Name 마술사얀
Subject [일반] 인공지능 이야기 4 - 유전자 알고리즘(2)
인공지능 이야기 4 - 유전자 알고리즘(1)
https://ppt21.com../pb/pb.php?id=freedom&no=57463&page=2

인공지능 이야기 3 - 딥러닝
https://ppt21.com../pb/pb.php?id=freedom&no=57431&page=2

인공지능 이야기 2 - 기호주의와 연결주의  
https://ppt21.com../pb/pb.php?id=freedom&no=57391&page=2

인공지능 이야기 1 - 소개
https://ppt21.com../pb/pb.php?id=freedom&no=57373&page=3


유전자 알고리즘은 실험자가 설계한 환경내에서 가장 진화를 성공적으로 수행하여 적응을 잘한  객체를 찾는 알고리즘이라고 요약할 수 있습니다. 이 유전자 알고리즘을 효과적으로 사용하기 위해서는 역시 여러가지 조건이 필요합니다. 일단 객체들을 공정하고 효과적으로 평가할 수 있는 잣대를 만다는게 중요하겠죠. 강하고 정의로운 객체가 제대로 된 평가를 받지 못한다면 그 세상에는 사악하고 탐욕스런 객체들로 가득찰 것입니다. 중력이 매우 센 세상이라면 그 중력에 효과적으로 대응할 수 있는 생명체가 나타나겠죠. 이 처럼 객체의 평가 기준은 그 세상의 진화 방향을 가르키는 것이고, 결국 원하는 방향으로 진화를 시켜 최적의 객체를 찾아내기 위해서는 평가함수가 핵심적인 역할을 합니다. 그리고 약자에게 어느정도 기회를 줄 것인지에 대한 고민도 필요합니다. 앞서 설명드린대로 강자들이 사다리 걷어차기에 여념이 없고 약자는 패자부활전의 기회도 없이 도태된다면, 그 사회는 발전하기 힘들 것입니다. 이는 윤리적 문제가 아니라 효율의 문제이기도 하다는 것을 앞서 local minium 의 개념으로 설명을 드린바 있습니다. 그러나 약자를 지나치게 배려하게 되면, 강자의 문화 그 역량을 후대로 넘기는데 어려움을 겪을 것이고 그 사회의 발전의 속도는 매우 더딜 것입니다. 따라서 어느정도 약자에게 기회를 줄것인가에 대한 황금률을 찾는 것이 중요한 문제입니다. 그 외에 객체의 수, 돌연변이율 등 세심하게 설계해야 할 부분도 있겠지만. 가장 중요한 것은 역시 객체의 유전자 설계입니다.

인간의 유전자는 ATGC 네가지 암기서열의 조합으로 이루어져있습니다. 결국 한 인간을 설명하는데는  어마어마하게 큰 도화지에 씌여진 4진수의 숫자배열로 가능하다는 이야기가 되겠죠.





이 거대한 4진수의 조합이 인간의 머리카락 색깔부터 발톱의 모양까지 모두 표현을 한다니 매우 경이로운 일이지요. 유전자 알고리즘을 사용하려는 실험자의 입장에서도 이와 같은 유전자를 설계해야 합니다. 어떻게 생기고 어떻게 행동하는지가 그 유전자에 모두 들어가 있어야 한다는 의미입니다.

여기서 우리 간단한 프로젝트를 같이 진행하시는게 어떨까요. 목표는 어떠한 학습과 가이드 없이 스스로 걷는 강아지를 만드는 것입니다. 걷기 위해서는 공간이 있어야겠죠. 그 공간에는 중력과 마찰력 등 우리가 살아가고 있는 세상과 흡사한 물리법칙이 통용되어야 할 것입니다. 그렇지 않으면 그 걷는 모습은 우리가 보기에 기이하게 보일겠죠. 중력을 무시한 강아지라면 우주를 유영하는 행동이 나올 것 같은데. 그보다는 진짜 강아지가 걷는 모습을 보았으면 좋겠습니다. 물리법칙이 적용되는 공간을 만드는 것은 의외로 쉽습니다. 많은 3D 게임 엔진이 무료로 배포되고 있으므로 그중 하나를 선택해서 사용합니다. 이제 그 공간에서 뛰어다닐 강아지를 모델링해야겠죠. 그것도 실제 강아지와 비슷한 모습으로 모델링 해봅시다.



도서관에서 동물보감을 찾아 복사해서 그대로 3D 렌더링을 해봤습니다. 관절 모양도 실제와 동일해야겠죠. 아무리 가상환경이라도 강아지 관절이 360도로 돌면 섬뜩할 것입니다. 움직일 수 있는 한계각도도 설정했습니다. 이렇게 19개의 강체와 36개의 관절을 가지고 있는 강아지가 나왔습니다.

이제 제일 중요한 유전자 설계 부분이 남았습니다. 어떻게 유전자를 설계하면 이 강아지가 움직이는 모습을 담을 수 있을까요? 더 효과적인 방법도 많겠지만 저는 시간에 따라 관절이 어떻게 움직이는지를 그대로 유전자화 했습니다 . 관절 각도수를 그대로 넣기 보다는 관절 움직임의 가속도가 자연스러워 보입니다. 관절의 가속도 변화는 1초에 5번 정도 줄까요?



객체 평가는 무조건 앞으로 많이 나가는 녀석에게 후한 점수를 주겠습니다. 어떻게 하든지 주어진 시간에 많이 나가는 녀석이 결국 최종 승리하겠죠. 객체를 평가하려면 일일히 3D 공간에서 움직여봐야 하니 시간이 많이 걸릴것 같습니다. 객체는 35 정도로 좀 작게 가봅시다. 교차율은 0.8, 변이율은 0.1 정도로 일반적인 값을 선택하겠습니다. 결과를 볼까요?

https://www.youtube.com/watch?v=5sqqAqnQ3EA&feature=youtu.be

처음에는 시작하자마자 넘어져서 관절을 이리저리 움직여보다가, 진화가 어느정도 진행되니 제법 걷는 모습을 보여주고, 마지막이 되니 불필요한 움직임이 전혀 없이 제법 마찰력까지 이용하여 최대한 전진하려고 노력합니다.

이 프로젝트는 2003년. 제가 학부생일때 졸업작품으로 진행했던 프로젝트입니다. 지금 생각해보면 학부생치고는 꽤 발칙한 발상을 했던것 같습니다. 이와 비슷한 프로젝트는 10년후 일본에서 아래와 같이 발표가 되더군요. 이 동영상을 보면서 너무 비슷해서 조금 놀라긴 했습니다. 아래 동영상이 이 프로젝트를 훨씬 더 이해하기 쉽게 할 것입니다. 동영상의 세련미가 학부생의 그것과는 차원이 다르지요.



5초. 걷는 시간이 너무 짧은 실험이었던것 같지만 사실 그때 당시 제가 실험했던 환경은 지금의 환경보다 매우 열악했습니다. 당시 제가 기록했던 내용을 확인해보니 그 당시로는 상당히 고사양의 컴퓨터였던 인텔 펜티엄4 2.53Ghz , 램 512 메가 컴퓨터 10대를 묶어서 작업을 했습니다.  물론 물리적으로 연결한 건 아니고 일종의 grid 컴퓨팅을 해서 진화연산을 했는데 최적의 결과까지 약 2시간 정도 시간이 필요했습니다. 컴퓨팅 파워가 가장 큰 문제였던 셈이죠. 컴퓨터를 더 많이 구할 수 있었다면 35개 객체를 각 컴퓨터가 하나씩 맡아서 적합도 평가를 할 수 있었을 겁니다. 이런 속도의 문제를 이미 유전자 알고리즘을 제안한 존 홀랜드는 이미 예측을 하여 병렬 컴퓨팅에 대한 관심을 가졌습니다. 다만 1960년대에는 그러한 병렬 컴퓨팅의 필요성이 거의 없던 시절이기도 하죠. 병렬 컴퓨팅은 개념으로서만 존재하다가 드디어 유전자 알고리즘이 알려지면서 그 추종자중 하나인 대니 힐리스가 Long Now Foundation 을 설립하여 1980년대 최초의 대용량 병렬 컴퓨터 'Connection Machine' 을 개발하기도 합니다.


<대니 힐리스의 Connection Machine>

대리 힐리스는 이 6만 4천개의 프로세서를 가진 이 괴물 컴퓨터를 홀랜드 머신이라는 또 다른 이름으로 불러 유전자 알고리즘의 아버지에게 헌사를 바쳤습니다. 지금은 Nvidia 같은 회사에서 core 갯수가 3000개가 넘은 GPU 를 내놓고 있으니, 과거 지인들에게 Grid 컴퓨팅 자원을 구걸하러 다니던 저로서는 지난 10년여가 참 긴 시간으로 느껴집니다.

유전자 알고리즘은 아직까지도 매우 인기있는 AI 기법중 하나로서. 신경망과 어깨를 나란히 합니다. 다만 신경망 보다 넓은 해의 범위를 탐색할 수 있는 장점을 가지고 있지만, 환경이 시시각각 변하는 문제에 대해서는 상대적으로 경직될 수 밖에 없는 한계를 가지고 있습니다. 그러나 이 역시도 신경망과 Hybrid 하는 방법 등을 모색하여 그 자체로 진화를 거듭하고 있으니 앞으로도 관심있게 지켜볼 만한 알고리즘이라고 할 수 있습니다.

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
연필깎이
15/04/12 02:21
수정 아이콘
이야... 감탄하게 됩니다.
마술사얀
15/04/12 02:54
수정 아이콘
재밌게 읽어주셔서 감사합니다 .
Cliffhanger
15/04/12 02:36
수정 아이콘
인공지능 분야에 대해 관심이 많았는데 마구잡이로 찾아보다가 이렇게 시리즈로 정리된 글을 보니 정말 좋네요. 감사합니다. 혹시 연재하고 계신 글 말고 좋은 책이나 논문, 웹 상의 글 있으면 추천 부탁드립니다.
마술사얀
15/04/12 03:00
수정 아이콘
인공지능에 대한 관심이 어떤 수준인지 잘 모르겠는데. 일반인이 교양으로 읽을 만한 책은 제가 잘 모르겠고. 개론 정도면 서울대 문병로 교수님이 쓰신 책이 아주 좋습니다. 그보다 다소 인문학, 철학쪽에서 AI 를 살펴보시려면 이인식님의 사람과 컴퓨터를 추천하고 싶습니다. 이 책이 아직 출판되고 있는지는 모르겠습니다. 국내 site 로는 aistudy.com 이 거의 bible 입니다. 지금 연재하면서도 기억이 안나는 부분은 이 사이트에 의존하고 있습니다 .
레이미드
15/04/12 03:24
수정 아이콘
서울대 문병로 교수님이 쓰신 책이 아주 좋다고 말씀해주셨는데요.
말씀해주신 책이 <쉽게 배우는 유전 알고리즘 : 진화적 접근법> 이 책이 맞나요?
좋은 글 감사합니다.
Cliffhanger
15/04/12 08:30
수정 아이콘
그냥 관심 많은 일반인 수준입니다. 추천 감사합니다 크크
15/04/12 03:10
수정 아이콘
어헣 이렇게 흥미로운 시리즈를 이제서야 알게 되다니.. 1편부터 정주행 갔다 오겠습니다.
마술사얀
15/04/12 21:05
수정 아이콘
재밌게 읽으셨다니 다행이네요. ^^
15/04/12 12:44
수정 아이콘
매번 닥추하고 보고 있습니다. 좋은글 감사합니다.
마술사얀
15/04/12 21:06
수정 아이콘
비루한 글에 추천까지... 고맙습니다.
BestOfBest
15/04/12 17:11
수정 아이콘
매번 감사합니다. 다음글이 기대되네요.
혹시 블로그 같은거 하시면 쪽지로 가르쳐주실수 있나요?
마술사얀
15/04/12 21:07
수정 아이콘
블로그에는 남들이 읽을만한 글은 잘 안올려요. 관심 고맙습니다.
마술사얀
15/04/12 21:10
수정 아이콘
애초 이 글 연재 취지가, 인공지능이라는 그럴듯한 주제와 인지도에 비해. 과도한 기대와 무분별한 경계가 팽배한 것 같아서. 그냥 교양 수준으로, 있는 그대로의 인공지능을 알려드리고자 했던건데. 자꾸 욕심이 생기는지 기술적인 부분을 자꾸 언급을 하려고 하게 되네요.
다음글 부터는 다시 초심으로 돌아가겠습니다. 한 분이라도 재밌게 읽으신다면 계속 연재하겠습니다.
고맙습니다.
15/04/12 21:15
수정 아이콘
이걸 보니, GPGPU 분야가 인공지능과 연계되기가 참 좋다는 느낌이 물씬 드는군요.
CPU와 GPU의 가장 큰 차이점이라면, CPU가 '논리연산'쪽에 최적화 되어있다면, GPU는 '수리 연산'에 최적화 되어있고,
CPU가 '순차적/구조적 처리'에 강점을 가지고 있다면, GPU는 '병렬처리 & 병합'이 주 목적이니까요.
GPU + Grid 컴퓨팅... 이 가능해지면, 유전자 알고리즘 계산에 있어서는 최적의 성능이 나올지도...
아, NVidia에서 이미 Tesla라는 괴물을 내놨지;;;;
마술사얀
15/04/12 21:22
수정 아이콘
그래서 그 분야의 NVidia 의 행보는 흥미롭습니다. Nvidia library 를 사용하여 병렬 컴퓨팅을 하는 기법을 알려주는 유료 강좌까지 있더군요. 무료강좌 한번 이용해본 적이 있는데 참 신기했습니다. 강의 방식이라든지, 테스트 실험 등도. Titan 시리즈도 core 갯수가 2000개가 넘는데 100만원 정도면 사니. 이젠 부담(?) 없이 개인도 병렬 컴퓨팅 할 수 있는 시대가 왔네요.
15/04/12 21:32
수정 아이콘
아참 그리고, 얀님의 동영상과 저 일본인 교수의 동영상의 세련미의 차이는... BGM 때문입니다!!
마술사얀
15/04/12 21:39
수정 아이콘
별 말씀을^^. BGM 이 참 이쁘긴 하죠. 그것과 별개로... 연구하는 사람은 연구 성과 포장에 대한 스킬이 매우 중요하다는 사실을 새삼 느꼈습니다. 많은 분들이 그런 부분에 있어 소홀하시죠. 이번 주제의 유전자 알고리즘의 창시자 존 홀랜드 역시 그러했고. 그의 연구가 주목받는데는 20년이 넘는 시간이 필요했습니다.
azurespace
15/04/21 19:07
수정 아이콘
문병로 교수님께서도 자신의 책에서 지적하신 바가 있습니다만, Genetic Algorithm의 번역어로 유전자 알고리즘을 사용하는 것은 잘못입니다. 생물학을 비롯해 거기서 개념을 차용한 다른 분야 어디에서도 genetic이라는 단어를 유전자로 번역하는 경우를 보기 힘든데, 이상하게 유독 유전 알고리즘을 유전자 알고리즘이라고 하는 경우가 많더군요.

유전 알고리즘에서 유전자(gene)와 흔히 혼동되어 사용하는 염색체(chromosome)라는 용어를 사용하고 있고 또 중요한 부분이긴 하지만, 이 알고리즘에서 주목하는 것은 염색체 그 자체보다는 교차와 변이 등의 유전 현상이죠. 유전자와 유전은 원어로도 한국어로도 서로 다른 개념이므로 구분해야 한다고 생각합니다.
깡디드
15/04/26 17:04
수정 아이콘
공감합니다. 크크
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회 추천
57505 [일반] 장동민 욕설 관련 파문을 보고 든 생각.... [190] 야율아보기12791 15/04/12 12791 1
57504 [일반] 마시고 죽어 보자고! [10] 토다기4784 15/04/12 4784 0
57503 [일반] 빈볼과 불문율, 김성근 감독과 롯데에 대하여(영상) [131] 호가든11927 15/04/12 11927 0
57502 [일반] 김성근씨가 또 황당한 짓을 하고있네요. [434] 삭제됨23403 15/04/12 23403 17
57501 [일반] 성완종 사건이 '앙꼬없는 진빵'이 될거 같습니다. [84] 마빠이7753 15/04/12 7753 1
57500 [일반] [야구] 힘들었던 잠실 더비 3연전 후기 [17] SKY923291 15/04/12 3291 0
57499 [일반] 로마사에서 등장하는 강력한 스포츠 서포터들 [4] swordfish-72만세5363 15/04/12 5363 1
57498 [일반] LG G4의 디자인이 공개되었습니다. [75] 종이사진11281 15/04/12 11281 0
57497 댓글잠금 [일반] '제발 좀 닥치고 있어라' [184] 아칼리16047 15/04/12 16047 36
57495 [일반] [UFC계층] 오늘 새벽 크로캅 vs. 곤자가의 경기가 있었습니다. [17] 삭제됨5669 15/04/12 5669 0
57494 [일반] 신경써야할 법이 만들어지고 있군요. [17] 이니그마7776 15/04/12 7776 0
57493 [일반] 결혼합니다. [16] 삭제됨4739 15/04/12 4739 2
57492 [일반] 1. [164] 삭제됨17099 15/04/12 17099 5
57491 [일반] 인공지능 이야기 4 - 유전자 알고리즘(2) [19] 마술사얀8888 15/04/12 8888 15
57490 [일반] 웃음을 위해서라면 무엇이든 괜찮은가. 장동민 논란. [319] dd.lbx20743 15/04/12 20743 10
57489 [일반] 현재 삼성라이온즈에서 제일 잘 치는 타자 [42] style6874 15/04/12 6874 0
57488 [일반] 만우절 장난: PGR21 온라인이 만들어지기까지 [41] 랜덤여신8496 15/04/11 8496 54
57487 [일반] [축구] 오늘 FA컵 64강이 열렸습니다. [13] ChoA3315 15/04/11 3315 2
57486 [일반] [야구] 김성근 감독님 복귀후의 모습을 예상은 했지만 ;-) [245] damianhwang22967 15/04/11 22967 1
57485 [일반] 갤럭시 S6 발매 및 애플워치 예판 이야기들 [27] Leeka8296 15/04/11 8296 0
57484 [일반] [야구] 내 멋대로 생각해본 4월 10일 경기 [21] 여섯넷백4880 15/04/11 4880 2
57483 [일반] 이런 프로야구 시나리오(?)를 써보고 싶습니다... [23] 호가든5136 15/04/11 5136 0
57482 [일반] 2016 미국대선과 힐러리 클린턴 [35] Dj KOZE7594 15/04/10 7594 2
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로