게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
AI 프로그래머
게시물ID : programmer_20789짧은주소 복사하기
작성자 : 오토메틱시티
추천 : 2
조회수 : 760회
댓글수 : 0개
등록시간 : 2017/06/10 21:05:37
안녕하세요. 컴게에서 노닐다가 지금은 IT게시판에서 배회하는데, 가끔씩 놀러 올게요. Stanford에서 CS231n 강의하다가 지금은 OpenAI로 옮긴 Andrej Karpathy라는 친구가 작성한 재밌는 프로그램을 소개합니다. 

The Unreasonable Effectiveness of Recurrent Neural Networks


리눅스 소스 코드를 ANN에 넣고 3분간 돌립니다. 면발이 야들야들해질 때 쯤 꺼내서, 과제를 던지는 거에요. 

'너 이거 보이지? 어쩌고 저쩌고 말야, 이거  코딩해봐!'

그럼, 얘가 코딩해서 소스코드를 내 놓습니다. 심지어 Comment까지 달아서...(Stanford CS231n 2016년도 강의  참고)

원리는 단순합니다. 

Java로 작성된 소스 코드들이 산더미처럼 있습니다. 이걸 몽땅 ANN에 밀어 넣어요. 그럼 ANN은 주석(Comment)과 소스코드 간의 상관 관계를 학습하고,  명령자(Orderer)가 제시하는 문장과 유사한 주석들을 검색한 뒤, 그에 대응하는 소스코드를 작성하는 거죠. 근데, 데이터베이스와는 다릅니다. 많이 달라요. 

DB는 저장된 정보를 손상없이 인출하는 게 목적이지만, ANN는 전혀 듣도 보도 못한 코드를 생성해 내거든요(마치, 구글 Deep Dream 같죠).

라이버러리에서 모듈을 인출하는 것도 동일한 원리인데, 소스 코드에 포함된 Function들과 Import  문장들 간의 상관 관계를 학습함으로써, 자신이 생성한 코드의 Function들에 대응하는 모듈들을 불러들입니다. 그 다음, 생성된 소스 코드의 논리적 정합성을 체크하는데 이건 AI와는 다른 알고리즘이 적용되는 듯...

Java나 C, Python등 언어들 간의 호환성 문제도 가상의 언어라는 매우 특이한 방법으로 해결할 수 있습니다. 모든 Comment들을 가상의 프로그래밍 언어로 코딩한 다음(이건 사람이 볼 수도, 읽을 수도, 이해할 수도 없습니다), 그걸 주문자가 원하는 코딩 언어로 변환(또는 번역)해서 보여주는 거죠. 파이썬이든, C든...

지금 진행 속도로 봐서 1~2년 후에는 전형적인 프로그래머에 준하는 AI 프로그래머가 등장하리라 예상합니다. IBM Watson의 프로그래머 버전인셈이죠.  


꼬릿말 보기
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호