문제

나는 여기에 명확한 대답을 할 수있는 잘 읽은 CS 유형이 많이 있다는 것을 알고 있기 때문에이 질문을하고 있습니다.

그러한 AI가 존재하는지 (또는 연구/개발 중인지) 자체적으로 코드를 생성하고 컴파일하여 프로그램을 작성한 다음 이전 반복으로부터 학습하여 진행되는지 궁금합니다. 나는 우리를 프로그래머, 쓸모없는 우리를 만들기 위해 일하는 것에 대해 이야기하고 있습니다. 나는 시행 착오로 프로그래밍 언어로 작동하는 것이 무엇인지 배우는 것을 상상하고 있습니다.

나는 이것이 스카이의 파이처럼 들린다는 것을 알고 있으므로, 무엇이든지 무엇을했는지 알아 내라고 요구합니다.

물론 인간 프로그래머조차도 입력과 사양이 필요하므로 이러한 실험에는 신중하게 정의 된 매개 변수가 있어야합니다. AI가 다른 타이밍 기능을 탐색하는 것처럼, 그 측면은 명확하게 정의되어야합니다.

그러나 정교한 학습 AI를 사용하면 그것이 무엇을 생성 할 수 있는지 궁금합니다.

나는 컴퓨터가 우리의 판단, 취향 및 편견처럼 복제 할 수없는 많은 인간의 자질이 있다는 것을 알고 있습니다. 그러나 나의 상상력은 하루 종일 생각 한 후 웹 사이트를 뱉어내는 프로그램의 아이디어를 좋아하고 그것이 무엇을 생각해 냈는지, 심지어 나는 종종 그것이 쓰레기가 될 것으로 기대할 것입니다. 그러나 아마도 하루에 한 번은 피드백을주고 배우도록 도와 줄 것입니다.

이 생각의 또 다른 길은 "Menued Website"또는 "Image Tools"와 같은 높은 수준의 설명을 제공하는 것이 좋을 것이며, 깊이가 충분한 코드를 생성하여 코드 완료 모듈로 유용한 코드를 생성합니다. 세부. 그러나 나는 그것이 비 지능적 인 정적 계층 적 코드 완료 체계로 계획 될 수 있다고 생각합니다.

어때?

도움이 되었습니까?

해결책

이러한 도구가 존재합니다. 그것들은 징계의 주제입니다 유전자 프로그래밍. 그들의 성공을 평가하는 방법은 응용 프로그램의 범위에 따라 다릅니다.

그들은 산업 공정, 자동화 된 의료 진단 또는 통합 회로 설계 관리를위한 최적의 프로그램을 설계하기 위해 매우 성공적이었습니다 (인간보다 더 효율적). 이러한 프로세스는 명시적이고 불변의 성공 조치와 많은 양의 "우주 지식"으로 잘 제한되어 있으며, 이는 유효, 작업, 프로그램 및 그렇지 않은 것에 대한 많은 규칙 세트입니다.

그들은 주류 프로그램을 구축하려고 시도하는 데 전혀 쓸모가 없었습니다. 사용자 상호 작용이 필요합니다. 왜냐하면 필요를 배우는 주요 항목은 명백하기 때문입니다. "피트니스 기능"또는 현재 솔루션의 품질 평가.

"프로그램 학습"을 다룰 때 볼 수있는 또 다른 영역은 다음과 같습니다. 유도 논리 프로그래밍, 자동 데모 또는 언어 / 분류 학습을 제공하는 데 더 많이 사용됩니다.

다른 팁

부인 성명: 나는 영어 원어민이거나 현장의 전문가가 아닙니다. 아마추어 - 다음에 부정확성 및/또는 오류가 예상됩니다. 따라서 Stackoverflow의 정신으로 내 산문 및/또는 내용을 수정하고 개선하는 것을 두려워하지 마십시오. 또한 이것이 마찬가지입니다 ~ 아니다 완전한 설문 조사 자동 프로그래밍 기술 (코드 생성 (CG)에서 모델 중심의 아키텍처 (MDAS)는 적어도 통과 된 언급이 가능하다).

나는 무엇을 더 추가하고 싶다 Varkhan 답변 (본질적으로 정확).

그만큼 유전자 프로그래밍 (GP) 접근 자동 프로그래밍 그것과 혼동됩니다 피트니스 기능, 두 가지 다른 문제 ( "자기 호환"은 개념적으로 쉬운 일이 아닙니다) :

  • 합성 된 프로그램의 자기 개선/적응 - 신시사이저 자체의 자체 개선/적응; 그리고
  • 프로그램 합성.

wrt 자기 개선/적응 Jürgen Schmidhuber 's를 참조하십시오 Goedel 기계: 자체 참조 보편적 문제 해결사는 최적의 최적의 자기 개선을 만듭니다. (부수적 참고 : 흥미로운 그의 작품은 인공 호기심.)이 토론과 관련이 있습니다 자율 시스템.

wrt 프로그램 합성, 나는 3 개의 주요 지점을 분류 할 수 있다고 생각합니다. 확률 론적 (확률 - 위에서 언급 한 GP와 마찬가지로), 유도 성 그리고 연역적.

GP 본질적으로입니다 확률 론적 크로스 오버, 무작위 돌연변이, 유전자 복제, 유전자 결실 등과 같은 휴리스틱으로 가능한 프로그램의 공간을 생성하기 때문에 ( 피트니스 기능 그리고 적합성이 살아남고 번식하게하십시오).

유도 프로그램 합성 일반적으로 알려진다 귀납적 프로그래밍 (IP), 그 중 유도 논리 프로그래밍 (ILP)는 하위 필드입니다. 즉, 일반적으로 기술은 논리 프로그램 논리 프로그래밍 언어로 작성된 합성 또는 신디사이저에 (또는 둘 다에 국한됩니다... 자동 데모 또는 언어/분류 학습").

IP 자주있는 일이야 결정 론적 (그러나 예외가 있습니다) : 불완전한 사양 (예 : 예제 입력/출력 쌍)을 사용하여 해당 사양을 만족하는 가능성있는 프로그램의 검색 공간을 제한 한 다음 테스트합니다 (접근 방식을 생성합니다) 또는 주어진 예제에서 재발을 검출하는 프로그램을 직접 합성하고, 그 다음 일반화된다 (데이터 중심 또는 분석 접근하다). 전체적으로 프로세스는 본질적으로입니다 통계 유도/추론 - 즉, 불완전한 사양에 포함 할 내용을 고려하는 것은 임의의 샘플링과 유사합니다.

생성 및 테스트 그리고 데이터 중심/분석§ 접근 방식은 상당히 빠를 수 있으므로 두 가지 모두 유망합니다 (지금까지 합성 된 프로그램 만 거의 공개적으로 시연 되더라도). 생성 및 테스트 (GP와 마찬가지로)입니다 당황스럽게 평행합니다 그런 다음 주목할만한 개선 (현실적인 프로그램 크기로 확장)이 예상 될 수 있습니다. 그러나 그 점에 유의하십시오 증분 유도 프로그래밍 (iip) §는 본질적으로 순차적 인 §는 비 분쇄 된 접근법에서 더 효과적인 규모의 순서임을 보여 주었다.

§이 링크는 PDF 파일에 직접입니다. 죄송합니다. 초록을 찾을 수 없습니다.

데모에 의한 프로그래밍 (PBD) 및 예시 프로그래밍 (pbe)입니다 최종 사용자 개발 레버리지로 알려진 기술 유도 프로그램 합성 거의.

연역 프로그램 합성 (추정)로 시작 완벽한 (공식) 사양 (논리 조건) 대신. 기술 중 하나가 활용됩니다 자동화 된 정리 잠언: 프로그램을 종합하기 위해 사양을 충족하는 객체의 존재에 대한 증거를 구성합니다. 따라서 비아 Curry-Howard-de Bruijn 동형 (증명서-프로그램 서신 및 공식-유형 서신), 증명서에서 프로그램을 추출합니다. 다른 변형에는 사용이 포함됩니다 제약 해결 그리고 서브 루틴 라이브러리의 연역적 구성.

제 생각에는 유도 성 그리고 연역적 합성 실제로 두 가지 다른 각도로 동일한 문제를 공격하고 있습니다. 완벽한 사양은 논쟁의 여지가 있습니다 (게다가 오늘날의 전체 사양은 내일 불완전해질 수 있습니다. 세상은 정적이 아닙니다).

(if) 이러한 기술 (자기 개선/적응 및 프로그램 합성)이 성숙 할 때 선언적 프로그래밍 (그러한 설정은 고려되어야한다 "프로그램 작성" 이다 때때로 토론) : 우리는 더 집중할 것입니다 도메인 엔지니어링 그리고 요구 사항 분석 및 엔지니어링 소프트웨어 수동 설계 및 개발, 수동 디버깅, 수동 시스템 성능 튜닝 등보다 우발적 인 복잡성 자체 개선/적응 기술이 아닌 현재 매뉴얼과 함께 도입 된 것과 비교하여). 이것은 또한 수준을 홍보 할 것입니다 민첩 그러나 현재의 기술에 의해 입증되지 않았습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top