이 프로젝트는 인공지능 커뮤니티 Gurugail(http://gurugail.com )에서의 개인프로젝트로 진행하는 것입니다.
========================================================================================================
개강을 하고 좀 정신없이 지내다보니 2주가 지나버렸군요;;
환절기랍시고 몸살도 조금 앓고 했더니.. 랩실에서 하는 프로젝트나 세미나 준비도 빡빡해져서.. 이쪽에 신경을 많이 못썼습니다 ;;
이럴 가능성까지 생각해서 일정을 좀 넉넉하게 잡았었는데..
예상보다도 스케줄이 조금 더 밀릴 가능성도 있겠네요;;
========
일단 최소 2주에 한번은 내용을 업데이트를 한다고 했으니..
오늘은 간단히 전체적인 개념정리를 다시 해보겠습니다.
예전에 삽질했을 때 발표했던 ppt자료를 찾아서요... ㅎ
그림으로 보는 게 아무래도 이해가 빠르겠죠 ^^

박테리아 군집의 행동모습입니다. 아주 간단하죠?

그걸 로봇에 적용시켜서, 이렇게 만들겠다는 겁니다.

학습의 필요성입니다.
왼쪽의 경우라면 로봇이 서로 주고받는 신호에 민감할 수록 좋겠지만,
오른쪽의 경우라면 오히려 방해가 됩니다.
따라서, 로봇은 환경에 따라 얼마나 사회적일 것이고, 얼마나 개인적일 것인지를 적응해나가야 합니다.

유전자의 적용방법입니다.
여러가지 신호를 벡터형태로 나타내었을 때, 거기에 가중치를 곱해서 다시 합하여 로봇의 이동방향을 결정합니다.
이때 각 신호에 곱해지는 가중치를 유전자로 결정합니다.

많은 자원을 채취한 로봇이 많은 자손을 남길 수 있게 한다는 의미입니다.

기아상태일수록(자원채취를 하지 못한 상태가 오래지속될수록) 많이 발생하게 합니다.
여러 개체의 유전자를 하나의 CPU에서 관리하면서 교배, 돌연변이를 통제할 수 있는 컴퓨터 시뮬레이션과는 달리,
로봇에 GA가 적용될 경우 돌연변이나 교배의 선택을 로봇에 있는 각각의 CPU에서 처리해야 합니다.
그런 시스템에서, 더욱 실제 생물의 돌연변이 발생과 유사하게 만들 수 있는 방법으로 이런 방법을 고안해봤습니다.

각각의 로봇은 주위에 있는 로봇들의 정보를 모아서, 그 중에서 많은 자원을 채취한 로봇의 매력도가 높다고 생각하면서 여러 로봇들 중 자신의 배우자를 결정합니다.
그리고 그 배우자의 유전자와 자신의 유전자를 교배하여 만들어진 자식에게 자신의 몸을 물려준 뒤, 자신은 사라져갑니다. ^^;
교배가 일어나는 조건을 이전에는 몇개이상의 자원을 채취해야 한다든지 할려고 했던 것 같은데..
지금 생각으로는 돌연변이와 마찬가지로 확률적으로 일어나거나 일정시간마다 일어나게 할까 싶습니다.
===================================================================
그리고 최근 고민하고 있는 것은,
박테리아 레벨에서 개미의 레벨까지 호환할 수 있는 시뮬레이션 환경을 만드는 건데요..
박테리아는 2가지 정도의 화학물질로 상호작용하고,
개미는 17가지의 페르몬으로 상호작용을 한다는 점,
그리고 개미는 물건이나 먹이를 집고/부수고/놓는 등의 동작이나, 개미간의 영양분을 나눠먹는 동작 등 좀 더 많은 동작을 가질 수 있지요.
그리고 개미가 자신의 상황을 판단하는 것은
주위의 개미들에게서 주어지는 페르몬과 여러 감각기관으로 부터의 입력을 기반으로
신경망을 통해 결정함으로서 자신이 어느 페르몬을 분비할 것인지를 결정하게 하고 싶은데요,
그 학습방법은 GA를 이용해서 진화신경망을 만들어볼까 싶습니다.
그리고 개미에도 여러 종류(병정/일/여왕 등등..)를 두어서 좀 더 체계적인 분업도 가능하게 해보고 싶고요.
...일단은 박테리아부터;;



덧글
동용 2007/09/10 23:20 # 삭제 답글
그리고..... 발암물질 측정실험에서 나오는 내용인데...젖산을 먹지 못하는 세균을 젖산만 가득 들어 있는 샬레트에 담고
발암물질을 투여하면 젖산을 먹을 수 있게 유전자가 변형되어서
젖산을 먹을 수 있게 되어 되어 살아남는다.
근데 먹을 수 있게 되었다가 먹을 수 없게 되었다면 이해가 쉽지만
먹을 수 없는 것이 먹을 수 있게 되는 것은 이상하지 않은가? 즉슨......
블록화된 최소단위유전자들이 이런 저런 조합을 이루더라도 어떤 모듈화된
역할을 다 가질 수 있도록 복잡한 모듈화가 필수일 듯.....
동용 2007/09/10 23:28 # 삭제 답글
유전자 스스로 변하는 건 아니고 유전자를 복구하거나 발현시키는 단백질이 있다.그 단백질에 유전자변화의 열쇠가 있지. 이를테면....
피부연고바르면 스테로이드가 이 단백질에 달라붙어서 유전자발현을 강요한다.
그 결과 해당유전자가 발현되어서 코드화된 피부 단백질을 생성...
즉슨....... 알고리즘이 데이터베이스처럼 저장되어 있다면
그 알고리즘을 발현시키는 단백질에 해당하는 프로세스가 언제, 왜, 뭣땜에
생겨나서 돌아댕기다가 발현을 시켜줘야 하는지를 결정해야 하는데.
문제는 그 단백질에 해당하는 프로세스도 결국 데이터베이스에서 나온거니까..
닭이 먼저냐 달걀이 먼저냐 하는 식으로 복잡한 양상을 띄게 된다.
그런데.....혹시 " 로봇의 행동을 예측할 필요는 없다 "라고 생각하고 있는지?
피부연고 바르듯이 외부신호가 직접적으로 단백질을 통제할 것인가?
아니면 자체내에 예측불가능한 뫼비우스의 고리를 집어넣을 것인가?
동용 2007/09/10 23:39 # 삭제 답글
또...세균들의 신호도....(1)물질을 분비해서 하는 것도 있고...(이경우에는 프로세스의 조건을 만족하는 신호에 반응...)
(2)발암물질이나 항생제등의 원인으로 새로 획득한 유전자를 하나 복제해서
방출하는 것도 있는데...( 이 경우에는 로봇이 자신의 모듈하나를 복사해서 통째로 넘겨주면
받는 쪽에서 그 모듈을 받아서 자기운영체제에 탑재하는 것...)
이 중에서 (2)번의 경우에...실제로 세균들이 이런저런 이유로 놀라울 정도로 빠른 속도로
" 쓸모있는 기능을 갖는 모듈을 제까닥 제까닥 " 만들어 내고 있고 그걸 바로 퍼뜨린다.
과연 로봇이 외부환경에서 받은 신호를 가지고 자체적으로 모듈을 만들어서 나누어 줄 수 있는
그런 기능을 갖도록 프로그래밍 할 수 있는가?
이 (2)번에서 처럼 로봇이 스스로 모듈을 만들어서 나눠준다면 거의 세균하고 맞먹는 수준으로
진화할 것임에 틀림없음......이렇게 하려면 어떻게 해야 하지? 로봇이 코딩할 수는 없을 것이고
....결국 유전자처럼 최소단위가 자체로서 모듈화되어서 발암물질에 DNA변형되듯이
"무작위 조합"에 의해서 이런 저런 기능이 생겨나도록 조직해야 할 듯 한데.....어렵다.
狂工크랜 2007/09/11 00:12 # 답글
유전자 하나로 여러 환경에 대응할 수 있는 능력을 갖추고, 상황에 따라 발현의 형태를 바꾸어서 환경에 맞는 대응을 할 수 있게 한다는 개념인가요..로봇이 점점 작업을 할수록 타겟들의 분포상태도 변화해나갈 거고.. 그에 따라서 대응할 수 있는 방법도 필요할 테니 여러 환경에 대응할 수 있도록 유전자를 설계해야 하는 거 아닌가하고 생각은 하고 있었습니다. 하지만 그럴려면 로봇이 환경에 대한 정보를 충분히 가질 수가 있어야 하는데.. 그럴만큼 감각기관을 많이 제공하지 않을 생각이었거든요.
그런데 생각해보니 각 로봇이 내뿜는 신호들의 조합으로 현재의 환경상태를 알 수도 있을 것 같군요.
나중에 개미 단계에 가서나 적용해볼 생각이었던 시스템을 좀 더 구체적으로 생각해봐야곘네요.
유전자를 복제/방출하는 것은, 로봇이 '교배'를 한다는 점에서 구현가능하지 않을까요.
단세포생물인 세균은 본래 교배가 아니라 분열로 번식을 한다고 알고 있었는데, 교배를 집어넣어서 좀 맞지 않게 되는 거 아닌가 싶었습니다만, 말씀하신 유전자의 교환에 대응된다고 하면 될 것 같네요.
딱히 '쓸모있는 기능'을 만들어낸다기 보다는, 각각의 로봇은 개별적으로 돌연변이나 유전자발현으로 동작하는데, 그 중 좋은 효율을 낸 로봇이 많은 자손을 남길 수 있으니, 결과만 보자면 '쓸모 있는 기능이 만들어져 퍼뜨려진다'라고 할 수도 있을 것 같습니다.
狂工크랜 2007/09/11 00:17 # 답글
참고로 할만한 미생물관련 책을 찾다가 결국 못찾고 포기했었는데..(비전공자가 기초이론을 모르면서 실례들을 찾을 수 있는 책을 찾는 건 쉽지 않더군요...; 그렇다고 논문을 보기도 힘들고;;;)
선배님이 좋은 예를 알려주시니 굉장히 도움이 되네요 ^^
고맙습니다 ㅎㅎㅎ
동용 2007/09/11 01:29 # 삭제 답글
단백질과 유전자발현 ---> 생명현상의 핵심이겠지.언젠가 들은 이야기인데....원숭이가 인간보다 지능이 떨어지는 이유는 사람에 비해서
원숭이가 결핍된 것이 있기 때문이 아니고 지능을 억제하는 유전자가 발현되었기 때문이라고
하더라고.....인간은 그 억제가 좀 풀린상태이고.
유전자 중에서 실제로 쓰는 부분은 얼마 안된다는 이야기지
방에 책장이 있고 책이 많지만 맨날 보는 책은 거의 없는 것처럼.
만약 인간이 그 기능들을 다 알아서 제대로 쓰면 베지타나 후리자같은 능력도 충분히 가능할 듯..
일단 세균단위에서는 유전자를 자르고 붙이고 하면서...
마치 리눅스에서 모듈을 떼었다 붙였다 하는 (그것도 제법 큰 부위를...10~20%까지도..)것처럼
조그맣게 도우넛형태로 (파일압축) 밖에 던지면 다른 세균이 와서 주워다가 자기유전자에 탑재
하곤 하지....근데 안쓰는 부분은 불필요하니까 ( 유지비용이 듦) 버리게 되고...
아, 이 이야기가 좀 도움이 될지도 모르겠다.
우리집이 약국이라서 어렸을 때 항생제쓰는 이야기를 난 자주 들었지.
최신예 항생제를 투입해도 세균들은 잘 적응하지만...갑자기 구식항생제를 투입하면 대응 못하고
몰살당하는 경우가 많다. 요새 애들한테 도스명령어 물으면 대답못하듯이....세균들도
구식모듈들은 다 버렸는데 구식항생제로 맞서면 대응을 못하고 당할 수 밖에....
로봇의 메모리가 한정되어 있다면.... 만약 사막에서 움직이다가 정글쪽으로 왔을 때....
사막형기동모듈은 버리고 정글기동모듈을 탑재했다가....환경이 갑자기 사막으로 바뀌면
꼼짝없이 고장이 난다거나...하는 뭐...그런 이야기가 되겠음.
그러니까 ..내 말은 마치 한글처럼 확장성이 끝내주게 좋은 모듈화가 필요하지 않나 하는 이야기지
핵심적인 부분은 보편적인 3~4개짜리 모듈에 담고 사막형모듈과 정글형모듈간에 차이점은
그냥 배열(configuration)정도로만 있는 정도로 할 수 있으면 좋을 텐데...
외부환경변화에 의해서 모듈의 배열을 이리저리 바꿔보고 되는 것을 골라서 보존....뭐 그런건가.
으.... 그러고 보니 "참조"문제가 또 생기네...ARM에서 나눗셈회로가 없어서 소프트웨어적으로
참조해야 한다거나 하는....그러면 애초에 하드웨어상에서 보완해줘야하나?
일단은 자야겠다. 쓰다보니 넘 늦었군.
狂工크랜 2007/09/11 04:15 # 답글
모듈화라.. 괜찮은 아이디어인 것 같습니다. 어차피 디지털 데이터로 표현되는 로봇의 유전자에는 각각 상황에 따라 대응할 행동규칙들의 구간과, 어떤 상황에서 어느 규칙을 사용할 것인지를 결정하는 벡터테이블의 구간으로 나누어서 만들면 되니까요.엄밀하게 실제 생물의 유전자에 대응시킬려면 의미있는 유전자구간의 시작점과 끝점을 특정 코드로 표현해서 단백질구조의 형태로 행동규칙을 표현해야겠지만.. 그렇게까지 하기에는 아직은 로봇의 행동의 경우의 수가 생물만 못하니까요.. ^^;
같은 이유로, 메모리의 용량은 어지간해서는 충분할 거라고 생각합니다. 어디까지나 '아직은' 이지만...
앞으로 박테리아 레벨, 개미 레벨을 구현해내고 나면 그 뒤로도 계속해서 업그레이드를 해갈 생각입니다.
언젠간 문법구조를 적용시켜서 보다 복잡한 로봇간 상호작용이 가능해져야 할 거고, (영장류 수준 정도?)
더 나아가서는 로봇들이 스스로 단어나 문법을 고안하고 추상적 개념까지 표현하며 향상시켜나가는 수준까지도 만들어내야겠죠.
그러다가 점점 더 복잡한 사회구조, 추상적 개념들을 익혀나가다보면 언젠간 인간과 동등한 수준에서의 상호작용까지도 가능할 거라고 기대하고 있습니다.('공각기동대'의 타치코마나 '카페알파'의 로봇들, 좀 더 직접적인 표현사례로는 '애플시드'에서의 바이오로이드 정도..)
뭐, 몇십년 정도는 걸리겠지만 말이죠. ㅋ
문제는 개미의 수준에서 영장류의 수준으로 가기 전까지의 중간단계가 될만한 모델을 잘 못찾겠단 말이죠..
일단은 막연하게 사자나 사슴류 정도의 포유류나, 기러기 정도의 조류라든지 무리지어 다니는 어류 정도에서 적당한 모델을 찾아볼까 생각중인데요.. 괜찮은 모델이 있을까요?
狂工크랜 2007/09/11 04:36 # 답글
박테리아 - 간단한 상호작용, 간단한 행동, 유전자만으로 학습개미 - 몇가지 상호작용, 여러 행동, 진화적으로 학습된 신경망
??? - 간단한 계급사회, 복잡한 상호작용, 유전자와 신경망의 복합적 학습
영장류 - 간단한 사회구조. 문법을 갖는 언어체계. 유전적 학습보다 신경망적 학습이 우세. 간단한 도구사용. 다른 개체의 행동을 모방하거나 간접체험으로 학습가능. 기초적인 meme 존재.
인간 - 복잡한 사회구조. 추상적 개념이해. 단어나 문법의 창조/변형가능. 동음이의어, 동의이음어 존재. 유전적 학습보다 신경망적 학습이 월등히 중요. 복잡한 도구사용, 다른 개체의 경험을 직접 보지 않고도 간접적으로 체험가능(언어, 문자 등을 이용). 복잡한 meme 존재.
하나씩 구현해나가면서 점점 구체화시킬 생각으로 아직은 뭉뚱그려 이정도로만 생각하고 있습니다.
동용 2007/09/11 11:49 # 삭제 답글
일단 내가 쓴 글을 정리해 보자...(1) 발암물질 실험에서 보았듯이 무작위로 DNA를 변형시키거나 파괴,누락,중복시키는 등의
생산적이지 못한 원인에 의하셔 젖산분해효소라는 새로운 생산적인 기능이 탄생한다.
이는 DNA염기서열들이 그냥 마구 얽혀서 기능을 이루는 게 아니라 모듈들의 조합에
의해서 성립한다는 명백한 증거라고 생각한다.
(2) 그리고 그 모듈레이션을 "시스템 밖에서 한 발짝 물러서서 바라보는 프로세스" 를
두고 외부환경변화에 따라서 신호->모듈조합패턴 몇가지를 선정해서 조합시키기로
이어지는 시스템외적인 감시체제필요...
좀 다른 이야기 이기는 한데..... 개미->영장류로 가기 위한 중간모델이라고 한다면...
지능을 기준으로 할 때.....파충류정도선에서 경계가 나뉜다고 본다.
(1) 파충류에서 부터 길들이기가 가능해 진다.(애완동물화 가능)
(2)뇌에 구피질과 신피질의 분화가 시작됨...
구피질은 쉽게 말해서 생존기능이지. 구피질의 중요성은 말할 필요도 없음.
인간들이 오늘날 현대적인 질병에 시달리는 이유가 구피질이 억눌린 때문이기도 하고
신피질은 전략을 짜는 지능이지. 흔히 하는 말로 이성이라고 보면 된다.
뇌의 앞부분에서 서서히 나타나기 시작했는데 알려지기로는 인간이 가장 큰 신피질 보유.
그래서 말인데 딱히 정확하게 대응되는 건 아니지만 (2)에서 말한 시스템 밖에 한 발짝 물러서서
바라보는 프로세스를 분화시켜서 신피질의 기능으로 발전시키면 어떨까 하는 생각을 해 본다.
일단 나는 "집단지능"에 대한 개념이 별로 없는 사람이니까 ....걸러서 해석하기 바라고..
듣자하니 미국쪽은 개체지능에 관심이 많고 한국일본은 집단네트워크지능에 관심있다더군
개인적인 생각이긴 한데 저 "신피질기능"은 하드웨어적으로 분리시켜 놓는 것이 바람직할 듯.
기판을 두개로 해서 신피질기능쪽은 모놀리틱커널로 탑재하고 구피질기능쪽은 마이크로커널로
탑재해서 CPU자체를 분리시켜면 골치아프게 락을 수백개씩 걸어야 할 필요가 없으니까.
신피질에서 처리하는 부분에 대해서 일일히 인터럽트 처리하려면 모듈화가 복잡해서 신뢰성저하..
구피질쪽 모듈을 좀 더 안정성이 좋고 확장성이 좋은 걸로 만들 수 있고...
구피질쪽 모듈은 마이크로조합으로 기분내킬때 배열변형이 자유롭게 할 수 있다.
두 기판사이의 통신은 그냥 필요할 때만 해 주면 되고 서로 독립성을 어느정도 유지...
뇌세포는 느리게 분화 순환변화하지만 발가락세포는 빨리 분화순환변화하는 것처럼 말이지.
동용 2007/09/11 17:29 # 삭제 답글
아 그리고 드디어 모션캡쳐를 구하게 되었다.2가지 각도에서 웹캠으로 찍은 화상으로 부터 3차원위치와 회전량을 역추적해서 수치화하는
소프트웨어기반 모션캡쳐이지. 사람이 직접 하드웨어를 착용하지 않기 때문에
사람 뿐 아니라 동물식물 유체도 캡쳐할 수 있다.
그렇군....유튜브 동영상 중에 보니까 로봇의 움직임을 이 모캡으로 분석해서
BVH 스크립트파일로 만드는 모습을 촬영한 게 있더라고 .
혹시 로봇제작하다가.....안드로이드형 로봇의 움직임. 로봇군집의 무질서해 보이는 복잡한
움직임 같은 것을 분석하려고 한다면 이 모션캡쳐가 도움이 될 거야.
정품라이센스는 엄청 비싸서 구하기 곤란할 거야 , 하지만 내가 특별히 빌려줄 수 있지.
기동경찰 패트레이버에서 주인공이 착용한 기계식 모션캡쳐를 움직인 뒤에 그걸 다시 재생하는
장면이 나오는데 .... 이것하고 똑 같다. 움직임을 BVH 파일로 저장했다가 그걸 재생하면
똑 같이 따라서 움직이게 되지. 여기에다가 패트레이버처럼 그 BVH스크립트를 메모리에 로딩한
뒤에 실시간으로 조금씩 편집하는 기능이 따라주면 만화에서 보는 그런 로봇액션이 가능할 듯.
狂工크랜 2007/09/12 12:19 # 답글
모듈화는 원래 개미단계 정도에서부터 비슷한 개념을 조금씩 구현해볼 생각이었는데, 선배님 조언 덕분에 박테리아 단계에서부터 간단하게 적용시켜볼 수 있을 것 같습니다.구피질과 신피질의 구분방법에 대해서도 고민하고 있습니다만.. 굳이 하드웨어적으로 구분하기보다는 소프트웨어적인 Task정도의 단위로 구분하는 게 좋지 않을까 싶습니다.
공유해야되는 정보가 너무 많기 때문에 하드웨어적으로 구분하게 되면 상호간의 통신량이 엄청나게 많아질 것 같아서 말이죠..
혹은 듀얼코어나 그 이상의 멀티코어 프로세서를 이용해서 각각의 코어가 서로 다른 기능을 담당하게 만드는 것도 괜찮겠죠.
웹캠을 사용해서 모션캡쳐를 구현하는 사람을 몇명 봤습니다만.. (학생수준이라서 그렇게 수준이 높진 않았고요) 환경의 영향을 꽤 많이 받을 겁니다. 초록색이나 파란색의 단일색 배경이랑, 각 관절마다 중요 포인트에 표시를 해주는 게 얼마나 잘 구분되는 색으로 하느냐가 성능에 영향을 많이 끼치죠.
그리고 사람의 동작을 캡쳐해서 로봇에 적용시키는 건.. 사람과 로봇의 무게분포가 다르기 때문에 최대한 캡쳐한 동작과 비슷하면서 로봇에게 가능한 동작으로 바꾸어주는 과정이 필요한데, 이게 쉽지 않습니다. 패트레이버에서도 그런 부분의 완충역할을 해주는 인공지능을 훈련을 통해 얼마나 사람이 원하는 대로 동작시킬 수 있느냐가 중요한 문제로 나오죠.
에빙카 2007/09/15 21:50 # 답글
아 뭔가 어렵다생물은 신호전달에 의해서 움직이고
또 유전자나 단백질 전사인자등 구성요소들도 전부 신호전달로 상호작용하는데
박테리아는 일단 번식을 많이 하니까 자신의 유전자를 엄청나게 남기지
그렇지만 딸세포나 모세포가 유전적으로 동일하다
그후 유전자의 다양성을 가지기 위해서 다른 박테리아와 유전자를 교환하거나
벡터에 의해서 유전자를 방출/삽입하기도 하고 UV등에 의해 돌연변이 될수도 있지
외부환경이 극심하게 변해서 생존이 힘들어졌을경우 원래와는 다른 돌연변이가 변한 환경에 더 적합할수있고 그 개체가 살아남아서 자손을 남기면 유전자 pool이 변하게 되겠지.
그러니까 그렇게 번식이 가능하니까 유전자를 섞기도 하면서 자신의 자손이 살아남을 확률을 높이는 방법을 택할 수 있는것 아닐까
그렇지 않다면 살아남아 봤자 새로이 많은 자손을 남기지 못한 상태 일 때 다시 환경에 적응이 어려워 지면 그대로 멸종하겠지.
그리고 기본적으로 유전자는 변한다. 유전자를 발현시켜주는 요소까지 포함해서 생각해보면
그것이 변화하는 단위(세대)는 다르지만 (잘 안일어나는건 10^-9정도, 잘 일어나는건 10^-3 정도)
결국 기본적으로 변하게 되어있다. 계속해서 자신의 복제를 만들 수 있기때문에 그 복제에 다양성을 주는 변수를 만들어 놓아서 그 중에 살아남는 것들이 자손을 남기고 또 그것들은 변하면서 새 자손을 남기는 거지.
이상 나오는 대로 적었다.
그리고 이글루에 이런글 올리면 재미없다.
狂工크랜 2007/09/18 17:00 # 답글
이글루에 이런 글 올리면 난 재밌다. ㅋㅋ
에빙카 2007/09/18 23:33 # 답글
오늘 direted mutagenesis에 대해 배우게 되었는데,기존에 다윈의 진화에서처럼 mutation은 랜덤하게 일어나는게 아니라,
외부 자극에 의해서 방향성이 있게 일어난다는 것을 말하는 실험에 대해 알았다
여러가지 예가 있지만 대장균에서 젖당분해효소 만드는 유전자를 변형시킨 후에 젖당만 있는 배지에 넣으면 젖당분해효소 유전자에서 mutation이 많이 일어나서 젖당분해효소를 만들 수 있는 대장균이 되는거지.
또 한가지, 생물은 외부환경이 극심하지 않고 적당히 안좋아졌을때 그 환경을 극복하기 위해서 mutation을 높여서 다양성을 높이는데
쥐의 경우 방사능에 노출시키면 몇 대 후에 돌연변이율이 현저히 높아진다.
박테리아의 경우 환경이 안좋아지면 mutation을 잘 일으키는 효소를 DNA 복제시 사용하게 바뀌는 것으로 mutation을 높여서 다양성을 확보한다. 이 경우 자손을 더 많이 남긴다. 그렇게 해서 환경에 더 잘 적응할 수 있는 확률을 높이는 것이지.
하지만 reproduction이 불가능한 로봇이라면 어떻게 해야할지?