정의 된 사양으로 프로그램하는 방법을 기계에 가르치는 것이 상상력이 있습니까? [닫은]


12

프로그래밍 지식이없는 친구가이 질문을했는데 흥미로 웠습니다.

문제의 텍스트를 분석하고 솔루션을 생각하고 프로그래밍 할 수있는 진정한 인공 지능이 필요하기 때문에 불가능하다고 생각합니다. 간단한 계산기를 프로그래밍 할 수있는 기계에 대해 생각하는 것만으로도 상당히 발전된 것 같습니다.

그러나 내가 틀렸을 수도 있고 그것에 대해 어떻게 생각하고 있는지, 주제에 관한 기사 / 연구를 알고 있거나 이미 존재하는지 또는 사양을 선택하고 가능성을 갖는지 알고 싶습니다. 이 "사양"으로 자체 프로그래밍하는 기계?


4
프로그래밍을 정의하십시오. 다른 프로그램을 만드는 프로그램을 만들 수있었습니다. 하지만 정말 배울까요?
Pieter B

예, 문제는 코드 생성이 아니라 개발자로서 실제 프로그래밍에 관한 것입니다.
florian

프로그램이 무엇인지에 달려 있습니다. 절차 적 비즈니스 로직이 많은 프로그램은 기능적이고 순수한 수학 기반의 프로그램보다 훨씬 어렵습니다. (어쨌든 직관이지만 불행히도 백업 할 방법이 없습니다.)
lunchmeat317

@florian : 우리 자신은 프로그래밍을하는 방법을 배운 머신입니다 (외계인 / 신이 우리를 만들었다 고 가정 :-)). 물론 우리는 DNA 서열 등을 프로그래밍 할 수있는 능력을 아직 얻지 못 했으므로, 결국 프로그래밍하는 법을 배워야하는 기계를 만드는 경우,이를 "진화"하도록 프로그래밍하고 결국 그 자체가 어떻게 프로그래밍되었는지를 배워야합니다.
Nav

2
@maple_shaft : 기존 답변과 일치하게 질문을보다 객관적으로 만들었으며 현재 형식으로 다시 열 수 있는지 궁금합니다.
Tom Au

답변:


15

Joel은 실제로 몇 년 전에이 질문에 대답했습니다 . "머신 자체적으로 프로그래밍하는 법을 가르치십시오"의 실제 의미는 "머신에게 스펙을 취하는 방법을 가르치고 해당 스펙에 해당하는 프로그램을 작성하는 것"입니다. 그리고 그것을 염두에두고 :

여기서 문제는 매우 근본적입니다. 프로그램이 일부 사양에 해당함을 기계적으로 증명하려면 사양 자체가 매우 상세해야합니다. 실제로 스펙은 프로그램에 대한 모든 것을 정의해야하며, 그렇지 않으면 자동 및 기계적으로 입증 할 수있는 것이 없습니다. 이제 스펙이 프로그램의 작동 방식에 대한 모든 것을 정의하면, 프로그램을 생성하는 데 필요한 모든 정보가 포함됩니다. 그리고 이제 특정 괴짜들은 스펙을 프로그램으로 자동 컴파일하는 것에 대해 생각하기 시작하는 매우 어두운 곳으로 가고, 그들은 프로그래밍없이 컴퓨터를 프로그래밍하는 방법을 발명했다고 생각하기 시작합니다.

이제 이것은 영구 모션 머신과 동등한 소프트웨어 엔지니어링입니다. 크랙 포트가 아무리 노력해도 결코 작동하지 않는다고 말하더라도 크래 크팟이 계속 시도하는 것들 중 하나입니다. 스펙이 프로그램 자체를 생성하는 데 사용될 수있을 정도로 상세하게 프로그램이 수행 할 작업을 정확하게 정의하면, 스펙을 어떻게 작성합니까? 스펙 작성자가 프로그래머만큼 많은 세부 사항에 응답해야하기 때문에 이러한 완전한 스펙은 기본 컴퓨터 프로그램처럼 작성하기가 어렵습니다. 정보 이론에서 용어를 사용하려면 스펙에 컴퓨터 프로그램 자체만큼 많은 Shannon 엔트로피가 필요합니다. 엔트로피의 각 비트는 사양 작성자 또는 프로그래머가 내린 결정입니다.

결론은 프로그램의 정확성에 대해 실제로 증명할 수있는 기계적인 방법이 있다면 그 프로그램이 같은 양의 엔트로피를 포함해야하는 다른 프로그램과 동일한 지 여부 만 증명할 수 있다는 것입니다 첫 번째 프로그램으로, 그렇지 않으면 일부 동작이 정의되지 않았으므로 입증되지 않습니다. 이제 스펙 작성은 프로그램을 작성하는 것만 큼 어렵습니다. 여러분이 한 모든 일은 여기에서 저기로 한 가지 문제를 옮기고 아무것도 달성하지 못했습니다.

이 문제를 해결하는 유일한 방법은 소프트웨어를 제작할 때 항상 자동으로 수행하는 빈 칸 채우기를 수행 할 수있는 충분한 직관을 갖춘 실제 컴퓨터를 만드는 것입니다. '인간 개발자뿐만 아니라 자신을 프로그래밍하는 컴퓨터로 끝납니다. ;)


7
삽입 정렬, 빠른 정렬 또는 버킷 정렬보다 훨씬 쉽게 정렬 알고리즘에 대한 완전한 사양을 작성할 수 있습니다. 그러나 첫 번째를 두 번째로 쉽게 변환 할 수 있다고 주장합니다.
raptortech97

조엘 ... 충분히 말했다! ;-) 그렇게하려면 주어진 언어로 된 스펙이 필요하다는 것을 이해합니다. 그러나 나는 스펙이 매우 상세해야한다는 주장에 대해 완전히 확신하지 못했다. 우리는 개발자로서 매우 상세한 사양없이 프로그램을 개발할 수 있습니다. 프로그램 설계에 대한 "무작위"결정을 내릴 수있는 인공 지능을 개발할 수 없습니까?
florian

6
@florian 그렇다면 프로그램이 인간 프로그래머가 수행하는 스펙 해석 작업을 수행하길 원하십니까? 그리고 그것은 "강력한 AI"의 오래된 문제가되는데, 수많은 지능적인 사람들이 그것을 보여줄 진보없이 수십 년 동안 연구해 왔습니다. AI가 형이상학 적으로 가능한지, 먼 미래에 훨씬 덜 실질적으로 가능한지에 대한 철학적 인 논쟁이 있습니다. 제 경험에 따르면 뱀 코일 세일즈맨은 가까운 미래에 강력한 AI를 예측합니다.

나는 그것이 가능하다면 (내 친구가 나에게 요청 한대로) 나 자신에게 물어보고 싶지 않았다. AI가 실제로 존재하지 않으며 단지 "무작위"프로그래밍 된 선택에 달려 있다는 것을 완벽하게 이해합니다.
florian

2
@ raptortech97 : 아니요, 할 수 없습니다. 이 질문의 의미에서 '완전'하지 않습니다. 스펙이 완벽하게 실행 가능 프로그램으로 기계적으로 변환 될 수 있으려면 본질적으로 프로그래밍 언어로 작성되어야합니다. 그렇지 않으면 사양에 정의되지 않은 동작이 있거나 MSWord 문서에서 코드를 작성하는 것입니다.
whatsisname

4

물론, 우리는 어떻게 모든 시간 (문제의 극히 제한된 부분 집합에 대한). 상당히 간단하다 상상 한 단계 또는 두 가지를 복용하고 다시 코드를 작성하고 문제를 해결 이들 코드 생성기의 입력 (또는 볼프람 알파 같은)에 시리 같은 것을 묶는. 그 뭔가가 이미 존재 기대 어딘가에 사물의 가장 기본적인 작업을 수행 할 수 있습니다.

비즈니스를위한 복잡한 소프트웨어 작성의 문제점은 코드를 작성하기위한 프로그램을 만드는 것이 아니라 요구 사항을 충족시키기위한 프로그램을 작성하는 것입니다.


링크 주셔서 감사합니다. Yacc & Xamarin은 순전히 결정적인 코드 생성기입니다. 처음부터 물건을 만들지 않습니다.
florian

@florian-아무것도 처음부터 물건을 만들지 않습니다. 항상 약간의 입력이 있으며, 대부분의 입력보다 더 까다 롭습니다.
Telastyn

1
@Telastyn : 파서 ​​생성기의 입력 / 출력을 인간의 마음에 대한 입력 / 출력과 비교하는 것이 "더 까다 롭다"는 것이 가장 어리석은 일입니다.
whatsisname

2

@Mason Wheeler의 대답에는 핵심 아이디어가 있다고 생각합니다. 다음과 같이 진행됩니다.

틱택 토의 Shannon 엔트로피는 정말 작습니다. 따라서 우리는 틱택 토를 "해결 된"또는 "결정적인"게임이라고합니다. 초등학교를 마치면 흥미롭지 않습니다. 당신이 할 수있는 모든 가능한 게임의 엔트로피를 고려한다면 체커는 더 높은 엔트로피를가집니다. 그러나 체커도 "해결 된"또는 "결정적인"게임입니다. 먼저 움직일 경우에만이기거나 뽑아야합니다. 체스는 훨씬 더 높은 엔트로피를 가지고 있지만 2006 년 이후로 최고의 컴퓨터 플레이어를이긴 사람은 없습니다. 따라서 컴퓨터는 인간이 할 수없는 방식으로 체스를 마스터했습니다. Big Blue는 위키 백과를 분석 한 다음 인간 플레이어에 대해 Jeopardy를 플레이하여 소리를 뛰어 넘었습니다.

무엇 향후 계획? 소설이나 셰익스피어의 소네트의 엔트로피는 무엇입니까?

마찬가지로, 프로그래밍 영역에서, 아마도 등장 할 것은 점점 더 많은 역량이 될 것입니다. 프롤로그는 문제를 설정하고 컴퓨터가 답을 해결하는 일련의 컴퓨터 문제를 해결했습니다. 누군가는 아마도 컴퓨터가 충족시킬 수있는 간단한 프로그래밍 문제의 클래스를 발견 할 것입니다. 그런 다음 누군가는 그 문제를 바탕으로 어떤 문제 공간 내에서 "주문형 사용자 정의"를 생성 할 것입니다. 그렇습니다.

나는에 질문 회전 생각 하는 시간 이 걸릴 않는 AI가 엔트로피의 주어진 양을 마스터 ... 그리고 얼마나 많은 컴퓨팅 자원이 필요합니까? 나는 생각 상상할 수없는 컴퓨터가 최고의 인간의 두뇌에 의해 마스터 엔트로피를 마스터 수 없음 - 아무것도 마법의 두뇌에 대해이 -하지만 문제는 당신이 필요합니까 얼마나 많은 코어이며, 얼마나 많은 세기, 그것은 거기까지 걸릴까요?

하지만 ... 컴퓨터가 일 을 할 수 있을까요? 상상할 수없는!


나는 Jeopardy가 약간 특별한 경우라고 말하는 것이 공평하다고 생각합니다. 사실을 기억하고 연관시키는 것으로 요약됩니다. 최고의 전문가들도 데려 가야하며, 그들이 모르고 있거나 압력을 받고 기억할 수 없다는 공개 지식조차도 없을 것입니다. 반면에 백과 사전 (예 : Wikipedia, Encyclopedia Britannica 또는 기타)을 분석 할 수있는 컴퓨터에서는 백과 사전이 다른 것보다 더 이국적이거나 덜 이국적이라고 언급 된 사실은 없습니다.
CVn

1

인공 지능과 마찬가지로 이것을 달성 한 후에는 그것을 수행하는 프로그램을 작성했기 때문에 대답하기가 어렵습니다. 그리고 비평가들은 "이 기계는 실제로 프로그래밍 자체가 아닙니다! 단지 당신이 제공 한 프로그램을 그대로 따릅니다!"라고 말할 것입니다.

그래 우리가 컴퓨터로 무엇을 달성하든, 우리는 프로그램을 제공하여 실행할 것입니다. 그것이 반대 주장이라면, 우리는 아무것도 달성 할 수 없습니다. 그러나 어느 시점에서 사람들은 체스 게임용 컴퓨터가 분명히 지능적이라고 생각했습니다. 이제 그들은 할 수 있고, 우리는 정확히 어떻게 알고 있으며, 그것이 지능적이라고 생각하지 않습니다. 잠수함은 여전히 ​​수영을 할 수 없습니다.

따라서 몇 가지 예를 고려하십시오.

수십 년 이래 파서 생성기 가있었습니다 . 그들에게 언어에 대한 설명을 제공하고, 처리되고 결과는 해당 언어의 파서 코드입니다. 우리는 그것이 어떻게되었는지 정확히 알고 있지만 컴퓨터 프로그래밍 자체가 아닙니까?

둘째-실수를했다고 알려주는 편집기 (구문 오류, 기존 변수가 아닌 변수 등). 그것은 아무것도 프로그래밍하지 않지만, 당신이 뭔가 잘못했다고 말할 수 있습니다. 표면에만 있습니다.

UI 컨트롤을 클릭하고 드래그 할 수있는 언어와 실제로 작동하게하는 코드가 자동으로 생성됩니다.

JIT 컴파일러 현재 실행중인 소프트웨어에서 핫스팟을 인식하고 고도로 최적화 된 컴파일 된 코드로 일부를 대체하여 실행 중에 효과적으로 자체 최적화하는 소프트웨어. 나는 이것이 어떻게 일어나는지 정확히 알 때까지 머신 프로그래밍 자체가 될 수있는 것의 예라고 생각합니다. 그런 다음 프로그래머가 항상 말한대로 수행하는 것으로 밝혀졌습니다.

일반적인 게임 플레이. 이것은 흥미로운 연구 분야로, 연구원들은 게임 규칙에 대한 설명을 읽을 수있는 프로그램을 작성하고 프로그램은 서로 경쟁합니다. 따라서 틱택 토 프로그램이나 체스 프로그램 대신에 틱택 토 또는 체스의 규칙을 읽거나 그 자리에서 만들어진 새로운 게임을하는 프로그램입니다. 이 프로그램은 자체 프로그래밍이 아니지만 체스 규칙이 하드 코딩되지 않은 상태에서 체스를 재생합니다. 이 것이 시간이 있었다 명확하게 컴퓨터 교육 자체에 뭔가 고려가.

우리는 일반적인 방향으로 많은 작은 단계를 밟았습니다.

그러나 이전 실행 결과를 기반으로 자신 을 다시 작성 하거나 자체 코드에서 오래되거나 비효율적 인 루틴을 인식 할 수 있는 프로그램은 생각할 수 없습니다 . 언젠가 우리는 그것을 가질 것이라고 생각합니다. 최신 컴파일러의 일부 기능 일뿐이므로 전혀 특별한 것으로 간주하지 않을 것입니다 ...


0

프로그램을 만들려면 인간 두뇌의 모든 복잡성이 필요하기 때문에 현재와 미래는 아닙니다. 그리고 그때조차도 뇌는 제대로 훈련하기 위해 고도의 훈련을 받아야하며, 심지어 충분한 시간을 가지고 누군가에게 프로그램을 훈련시킬 수 있다고 주장 할 수는 있지만 모든 뇌가 과제를 수행 할 수있는 것은 아닙니다.

나는 당신이 간단한 에뮬레이션 된 작업에 대해 이야기하고 있지 않다는 당신의 질문을 표현한 방식에서 가져 왔습니다.

Developing Intelligence 에 관한 기사와이 과학 블로그 기사 는 여러 가지 방법으로 해당 질문에 답변합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.