3. 인공지능 바탕과 문제해결
3강. 인공지능 실현을 위한 프로그래밍 언어
학습내용
- 인공지능 실현을 위한 프로그래밍 언어 - 인공지능 시대의 코딩
학습목표
- 인공지능 실현을 위한 주요 프로그래밍 언어들을 설명할 수 있다.
- 인공지능 시대의 코딩과 그 종류에 대해 설명할 수 있다.
1. 인공지능 실현을 위한 프로그래밍 언어 1) 인공지능용 프로그래밍 언어
- 프로그래밍 언어 : 인간과 컴퓨터 사이의 의사소통용 인공적인 언어 - 프로그램을 작성하기 위한 일종의 표기법
- Lisp / Prolog / Python
2) Lisp(List Processing) 가. Lisp의 등장과 기능
- 1960년 존 매카시에 의해 개발
- 기호 형태의 자료형을 주로 쉽게 처리
- 리스트(List)와 트리(Tree)형태로 자료구조 처리
- 두 번째로 오래된 고급 언어로 지금도 활용되고 있는 언어 - 대표적 함수형 언어
- 인공지능 관련 언어라는 인식이 강했으나 인공지능과 관련 없는 분야에서도 Lisp가 사용되면서 인식이 옅어짐
- 재귀함수, 쓰레기수집, 동적메모리 할당 등 함수형 대부분의 프로그래밍 언어에 영향
나. Lisp의 주요 특징
- 대화식으로 구성 된 인터프리터 방식의 언어 - 프로그램과 자료가 같은 형태로 취급
- Lisp기반 소프트웨어가 많이 개발되어 있어 활용도가 높음 - Lisp의 간단한 예
3) Prolog
가. Prolog의 등장과 기능
- 1972년 영국의 코왈스키와 프랑스 연구진이 개발 - 논리에 기반을 둔 인공지능용 프로그래밍 언어 - 자연어 처리나 전문가 시스템 개발에 유용 - 지식을 서술 논리로 표현하고 규칙에 따른 추론 나. Prolog의 주요 특징
- 사실(Fact), 규칙(Rule), 질문(Question)들로 구성 - 인터프리터 언어(대화식의 명령 방식으로 작동) - 사실과 규칙들의 데이터베이스로 구성
- 질문에 응답하는 형식 - 추론 엔진 사용
4) Python
- 인기 있는 프로그래밍 언어로 주목 - 코딩의 중요성이 강조되면서 사용자 증가 - 문법이 비교적 간단
- 인터프리터 언어
- 플랫폼 독립적 동적 타이핑 대화형 언어
2. 인공지능 시대의 코딩 1) 코딩을 통한 인공지능 접근
- 최근 직접 프로그래밍을 하는 코딩 열풍이 불고 있음
- 인공지능과 관련된 이론적 지식뿐만 아니라 간단한 프로그램을 통해 경험하는 것이 중요
- 인공지능에 대한 폭넓은 지식과 직관을 넓힘
- 코딩의 정의 : ‘실행 가능한 프로그램을 작성하는 일’
2) 코딩의 궁극적인 목표
- 주어진 문제를 제대로 해결하는 일 - 코딩하기 전 문제 해결을 위한 방법 구상 - 코딩을 마치고 컴퓨터로 실행시켜 문제 해결
3) 코딩의 중요성(유명 인사들의 코딩의 중요성 역설)
- 오바마 : “코딩 기술을 배우는 것이 여러분의 미래는 물론 조국의 미래에도 매 우 중요하다.”
- 빌 게이츠 : “13살 때 처음으로 코딩하는 방법을 배웠고, 이를 바탕으로 마이 크로소프트를 세웠다.”
- 스티브 잡스 : “이 나라 모든 사람들은 컴퓨터 프로그래밍 즉, 코딩을 배워야 한다. 코딩은 생각하는 방법을 가르쳐 주기 때문이다.”
4) 코딩의 주요 목적
- 인공지능 시대에는 코딩이 기초적이 필수적인 요소 - 코딩 과정을 통해 논리적 사고력 향상
- 문제 해결 과정에서 생각하는 힘을 기를 수 있음 - 창의적 발상과 지구력 향상
5) 코딩의 종류
가. 스크래치(Scratch)
- 2007년 미국 MIT에서 개발된 무료 소프트웨어
- 시각적 교육용 프로그래밍 언어(프로그래밍 초보자 대상) - 다양한 모양과 색깔 블록을 끌어서 조합
- 누구나 컴퓨터 프로그래밍의 개념을 쉽게 배울 수 있음 - 초보자들을 대상으로 코딩의 흥미 유발
- 직관적이며 간단한 사용법
[출처]스크래치(SCRATCH) / MIT
- 눈에 보이는 결과와 블록들 구성으로 되어있어 단순 드래그로 블록을 합치는 것으로 임의의 행동을 명령할 수 있음
나. 아두이노(Arduino)
- 2005년 이탈리아에서 개발
- 마이크로 보드와 같은 하드웨어를 조절하는 코딩 도구 - 다양한 제작물을 만드는 개방형 프로그램
- 아두이노 활용 분야로 움직이는 자동차 구현, 하드웨적 제어가 들어가는 부분 에 주로 활용
- 블루투스를 이용한 시리얼 통신 제어 다. 파이썬(Python)
- 1991년 로섬(Rossume)이 발표한 프로그래밍 언어 - 최근 인공지능 코딩에 많이 쓰이는 언어
- 인공지능의 확산으로 사용자 증가
6) 머신러닝을 위한 파이썬 패키지 가. Numpy
- 파이썬의 과학계산을 위한 기본적인 패키지 - 다차원 배열과 행렬 객체를 포함
- N-차원 배열, 선형 대수, 난수 생성 등의 함수 보유 나. matplotlib
- 자료를 차트(Chart)나 플롯(Plot)으로 시각화(Visualization)하는 패키지
- 라인 플롯, 바 차트, 파이 차트, 히스토그램, Box Plot 등 다양한 차트와 플롯 스타일 지원
다. scikit-learn
- 기계 학습 오픈 소스 패키지 - 예제 데이터 세트 제공
- 지도학습, 비지도학습, 모델 선택 및 평가, 데이터 변환에 활용
- 데이터 변환(학습 데이터와 테스터 데이터 분리) - Model 초기화 및 모델 학습
- 테스트 데이터를 통해 데이터 예측
평가하기
1. 다음 중 Prolog 프로그래밍 언어의 주요 특징이 아닌 것은?
① 사실, 규칙, 질문 들로 구성
② 추론 엔진 사용
③ 사실과 규칙들의 데이터베이스로 구성
④ 존 매카시에 의해 개발 - 정답 : ④번
해설 : 존 매카시는 Lisp언어를 개발하였으며 Prolog언어는 코왈스키가 개발하였음 2. 다음 중 코딩의 주요 목적과 거리가 먼 것은?
① 논리적 사고력의 향상
② 코딩을 통한 계산력의 향상
③ 문제 해결 과정에서 생각하는 힘 향상
④ 창의적 발상과 지구력 향상 - 정답 : ②번
해설 : 계산력은 수를 셈하는 능력이며 코딩의 주요 목적으로 보기 어려움
학습정리
1. 인공지능 실현을 위한 프로그래밍 언어
- 프로그래밍 언어란 인간과 컴퓨터 사이의 의사소통용 인공적인 언어 - 인공지능 개발 관련 대표적 언어 : Lisp, Prolog, Python, C, R 등
2. 인공지능 시대의 코딩
- 코딩을 통한 인공지능 접근으로 인공지능에 대한 지식과 직관을 넓힘 - 코딩의 궁극적인 목표는 주어진 문제를 제대로 해결하는 일
다음 주 예고
“4. 인공지능의 미래와 윤리” 에 대해 학습하겠습니다.