SW/인공지능

인공지능 : 응용과 이슈 (7) : AI 셀프 코딩 솔루션

얇은생각 2019. 5. 1. 12:30
반응형



진화 연산은 찰스 다윈의 자연 진화 원리에 바탕을 두고 있습니다. 일반적으로 적자생존이라고 알려져 있습니다. 즉, 한 종의 가장 약한 구성원들은 죽고 가장 강한 구성원들은 살아남습니다. 여러 세대에 걸쳐, 이 종들은 환경에 더 잘 적응하기 위해 진화할 것입니다.


진화 연산에서, 컴퓨터는 문제에 대한 잠재적인 해결책의 집단을 만듭니다. 이러한 솔루션은 종종 랜덤한 솔루션이므로, 문제를 해결하거나, 문제를 해결하지 못할 수 있습니다. 하지만 어떤 솔루션들은 다른 솔루션들보다 약간 더 나을 것입니다. 컴퓨터는 최악의 솔루션을 폐기하고, 더 나은 솔루션을 보존하고, 더 많은 잠재적 솔루션을 배양합니다. 다양한 솔루션의 일부가 결합되어  테스트할 수 있는 새로운 세대의 솔루션을 만들고 프로세스가 다시 시작됩니다.


자연 선택과 마찬가지로 진화 계산의 또 다른 중요한 요소는 돌연변이입니다. 테스트 중인 솔루션 중 하나에 대해 작고 무작위적인 변경이 이루어지는 경우가 종종 있습니다. 이는 크로스오버를 사용하는 것만으로 불가능할 수 있는 새로운 잠재적 솔루션을 만들 수 있음을 의미합니다.


크로스오버와 돌연변이의 조합이 그들의 "부모"보다 더 나은 새로운 잠재적 해결책을 만들어내기를 희망합니다. 이러한 현상은 매번 발생하지 않을 수 있지만, 더 많은 세대가 생산될수록 더 나은 솔루션이 등장할 가능성이 높습니다. 진화적 계산이 수백만 세대를 수반하는 것은 드문 일이 아닙니다. 자연 선택이 생물 종을 눈에 띄게 변화시키는 데 수백만 년이 걸릴 수 있기 때문입니다.


진화 계산의 가장 인기 있는 형태 중 하나는 유전 프로그래밍입니다. 여기에는 특정 문제를 해결하기 위해 한 컴퓨터 프로그램이 다른 작업 프로그램을 진화하는 작업이 포함됩니다. 사용자는 무엇이 좋은 프로그램으로 구성되어 있는지 몇 가지 측정값을 제공하고, 그 후에 진화 과정이 이어지며, 바라건대 문제를 해결하는 프로그램을 반환합니다.


1980년대 후반으로 거슬러 올라가 유전적 프로그래밍을 추적해 볼 수 있습니다. 그 이후로 중요한 연구가 진척되었음에도 불구하고, 유전자 프로그래밍은 상용 조직이나 가정용 컴퓨터 사용자들에 의해 사용되지 않았습니다. 그 이유는 효율적으로 작동하는 소프트웨어 시스템을 개발하는 것이 얼마나 까다로울 수 있는지를 고려할 때, 컴퓨터가 다른 많은 산업을 변화시키는 것과 같은 방식으로 도움을 주도록 하는 것이 현명해 보이기 때문입니다.


상업 부문은 연구자들에 의해 개발된 다른 기술들을 가지고 있기 때문에 진화 계산을 채택하지 않았습니다. 예를 들어, 3-D 인쇄는 1980년대에 발명되었고 오랜 기간의 개발 후에 현재 산업 제조에 사용되고 있으며 심지어 집에 있는 사람들에 의해서도 사용되고 있습니다. 마찬가지로 증강현실, 가상현실, 인공지능이 연구계에서 벗어나 대기업들의 주력 상품이 됐습니다.


진화 계산을 지연시키는 주요 문제 중 하나는 연구자들이 상업 부문이 인식할 수 있는 문제에 초점을 맞추지 못했다는 것입니다. 예를 들어, 컴퓨터 과학자들은 시험 시간표를 예약하거나 차량의 경로를 알아내기 위해 진화적 계산이 어떻게 사용될 수 있는지를 집중적으로 연구했습니다.


하지만 연구원들은 종종 현실 세계에서 거의 쓸모가 없는 단순화된 버전의 문제만 연구합니다. 예를 들어, 많은 차량 경로 시뮬레이션에서는 직선을 사용하여 두 지점 사이의 거리를 계산하는 것이 포함됩니다. 실제 환경에서 차량 경로는 거의 직선을 따르지 않으며, 단방향 시스템, 고장, 법적 문제(운전자가 쉬어야 하는 시간, 시간 제약 등)와 씨름해야 합니다. 하지만, 이러한 복잡성은 사실 진화적 계산이 도움이 될 수 있는 부분입니다. 만약 실제 세계에서 일어나는 문제를 적절하게 정의할 수 있다면, 진화 알고리즘은 복잡성을 다룰 수 있습니다.


또 다른 문제는 진화적 계산이 생성하는 해결책은 종종 설명하기 어렵다는 것입니다. 예를 들어, 유전 프로그래밍 시스템이 완벽한 결과를 가진 해결책을 만들 수 있을지라도, 그것이 어떻게 작동하는지는 그 시스템이 해석하고 이해하기 어려운 복잡한 코드를 만들었을 수도 있기 때문에 인간 프로그래머에게 미스터리가 될 수 있습니다.


진화적 계산 시스템은 구현과 지원에 복잡하며 이로 인해 일부 상업적 조직이 지연될 수 있습니다. 기본 복잡성의 대부분을 숨기는 사용하기 쉬운 프레임워크가 있다면 도움이 될 것입니다. 이러한 프레임워크는 과학계에 존재하지만, 상업 부문에서는 쉽게 접근할 수 없습니다.


IBM의 유명한 컴퓨터 설계자인 Frederick Brooks는 점점 더 큰 소프트웨어 개발 프로젝트를 단순히 더 많은 사람을 투입하는 것만으로 해결할 수 없다고 말했습니다. 개발자가 시스템의 모든 부분을 수동으로 개발하는 대신 주요 부품의 요구 사항을 지정하고 진화 프로세스가 솔루션을 제공할 수 있다면 소프트웨어 개발 산업에 큰 도움이 될 것입니다.

반응형