인공지능
고친 사람 github-actions[bot]
인공지능은 사람이 머리를 써서 하던 일을 컴퓨터가 해내게 만드는 분야입니다. 글을 읽고 뜻을 가리거나 사진 속 물체를 알아보는 일이 여기에 듭니다. 그런 일을 해내는 프로그램 하나를 인공지능이라고 부르기도 합니다. 요즘 흔히 말하는 대화형 인공지능은 이 넓은 분야 안의 한 갈래입니다.
쉽고 빠른 이해
인공지능은 규칙을 적기 어려운 일을 컴퓨터에 맡기는 기술을 모은 분야입니다. 고객 문의를 읽고 환불 요청인지 배송 문의인지 가르는 일이 그 예입니다.
이게 없으면 그런 일은 사람이 한 건씩 맡아야 합니다. 「환불이라는 낱말이 있으면 환불」 같은 규칙은 말을 조금만 바꿔도 빗나갑니다.
어떻게 도나:
- 처음에는 사람이 판단 규칙을 하나씩 적어 넣었습니다
- 지금은 정답을 단 예시를 많이 보여 주고 기준을 컴퓨터가 익히게 하는 방식이 주류입니다
- 이렇게 익힌 결과물을 서비스에 올려 새 입력마다 답을 받습니다
대가도 있습니다. 답이 늘 맞지는 않아서 틀린 답을 걸러 낼 장치가 따로 필요합니다. 예시를 많이 모아야 하고 계산도 무겁습니다. 그래서 규칙을 빠짐없이 적을 수 있는 일이면 쓰지 않습니다.
상세
이 절은 인공지능이라는 분야 안에 무엇이 있는지 봅니다. 먼저 이 분야가 맡는 일이 어떤 종류인지 봅니다. 다음으로 그 일을 푸는 두 방식을 견줍니다. 끝으로 요즘 말하는 대화형 인공지능이 어디에 서는지, 백엔드 개발자가 이 분야를 언제 만나는지 봅니다.
예로는 쇼핑몰 고객센터에 들어온 문의 한 건을 계속 씁니다. 문의 글은 「주문한 신발이 작아서 돈 돌려받고 싶어요」입니다. 서비스는 이 글을 읽고 환불 담당에게 넘기려 합니다.
이름과 세 가지 쓰임
인공지능은 영어 이름을 옮긴 말입니다. 영어로는 AI(Artificial Intelligence)라고 줄여 부릅니다.
이 낱말은 세 가지 뜻으로 쓰입니다. 셋을 가르지 않으면 같은 문장이 다르게 읽힙니다. 아래 표는 뜻마다 무엇을 가리키는지와 그 뜻으로 쓴 문장을 하나씩 놓은 것입니다.
| 쓰임 | 가리키는 것 | 문장 예 |
|---|---|---|
| 분야 | 이런 일을 컴퓨터에 맡기는 연구와 기술 전체 | 「대학원에서 인공지능을 공부했다」 |
| 시스템 하나 | 그런 일을 해내는 프로그램 한 벌 | 「문의 분류에 인공지능을 붙였다」 |
| 대화형 인공지능 | 질문에 글로 답하는 큰 모델 | 「인공지능에게 물어봤다」 |
이 항목은 첫째 뜻인 분야를 중심으로 씁니다. 셋째 뜻은 뒤에서 한 소절을 따로 둡니다.
사람에게는 쉽고 규칙으로는 어려운 일
이 분야가 맡는 일에는 공통점이 있습니다. 사람은 쉽게 해내지만 그 방법을 규칙으로 빠짐없이 적기는 어렵습니다.
문의 예로 보면 사람은 「돈 돌려받고 싶어요」가 환불 요청이라는 것을 바로 압니다. 그런데 이 판단을 코드로 옮기려 하면 경우가 끝없이 나옵니다. 「반품할게요」도 「취소해 주세요」도 「다시 보내 드릴게요」도 같은 뜻일 수 있습니다.
이런 일을 컴퓨터가 못 하면 사람이 한 건씩 읽고 담당을 골라야 합니다. 문의가 늘면 사람도 그만큼 늘려야 합니다. 인공지능은 이 일을 컴퓨터에 넘기려는 시도입니다.
이 분야는 맡는 일에 따라 여러 갈래로 나뉩니다. 갈래마다 따로 항목이 있습니다. 이 표에는 무엇을 맡는지만 적습니다.
| 갈래 | 맡는 일 |
|---|---|
| 탐색 | 갈 수 있는 경우를 차례로 따져 목표에 닿는 길을 찾습니다 |
| 지식 표현과 추론 | 아는 사실을 컴퓨터가 다룰 꼴로 적고 거기서 결론을 끌어냅니다 |
| 자동 계획 | 목표에 닿기까지 할 일의 순서를 짭니다 |
| 머신러닝 | 예시 데이터에서 판단 기준을 익히는 방법을 연구합니다 |
| 자연어 처리 | 사람이 쓴 글과 말을 읽고 씁니다 |
| 컴퓨터 비전 | 사진과 영상에서 무엇이 찍혔는지 알아냅니다 |
| 로봇 공학 | 센서로 주변을 읽고 몸을 움직입니다 |
갈래끼리는 겹칩니다. 자연어 처리와 컴퓨터 비전은 요즘 대부분 머신러닝으로 풉니다. 머신러닝은 맡는 일이라기보다 일을 푸는 방식에 가깝습니다. 그래서 다음 두 소절은 일을 푸는 방식으로 가릅니다.
사람이 규칙을 적어 넣는 방식
먼저 나온 방식은 사람이 아는 것을 규칙으로 적어 넣는 것입니다. 「이런 조건이면 이렇게 판단한다」를 하나씩 코드나 규칙 목록으로 옮깁니다. 이렇게 만든 프로그램이 규칙 기반 시스템입니다.
문의 분류를 이 방식으로 짜면 아래처럼 됩니다. 문의 글에 정해 둔 낱말이 들어 있는지 보고 담당을 고릅니다. 마지막 두 줄 오른쪽 주석이 그 호출이 돌려주는 값입니다.
def classify(text):
if "환불" in text:
return "환불"
if "배송" in text:
return "배송"
return "기타"
classify("환불 언제 돼요?") # "환불"
classify("돈 돌려받고 싶어요") # "기타"
첫 문의는 「환불」이 들어 있어서 환불 담당으로 갑니다. 둘째 문의도 환불 요청입니다. 그런데 「기타」로 빠집니다. 규칙을 적은 사람이 「돌려받고」라는 표현을 떠올리지 못했기 때문입니다.
이 방식에서는 판단 이유가 다 보입니다. 어느 규칙이 걸렸는지 따라가면 왜 그 답이 나왔는지 압니다. 대가는 규칙이 계속 늘어난다는 것입니다. 표현 하나를 막으면 다른 표현이 샙니다. 늘어난 규칙끼리 부딪히기도 시작합니다.
한 분야 전문가의 지식을 많은 규칙으로 옮긴 프로그램이 전문가 시스템입니다. 혈액의 세균 감염을 진단하고 항생제를 고르는 의사의 판단을 규칙 수백 개로 옮긴 시스템이 대표적입니다. 규칙 기반 시스템을 한 분야에 깊이 적용한 것입니다.
규칙 말고도 사람이 짜 넣는 도구가 하나 더 있습니다. 갈 수 있는 경우를 차례로 따져 보며 목표에 닿는 길을 찾는 탐색입니다. 지도 앱이 출발지에서 도착지까지 길을 고르는 일이 그 예입니다. 어떤 경우를 어떤 순서로 따질지는 사람이 정해 코드에 적어 넣습니다.
경우가 너무 많으면 다 따질 수 없습니다. 그래서 「목적지 쪽으로 가는 길부터 본다」처럼 그럴듯한 쪽을 먼저 보는 어림 규칙을 씁니다. 이런 어림 규칙이 휴리스틱입니다. 이 어림 규칙도 사람이 떠올려 적어 넣습니다. 그래서 탐색도 규칙 기반 시스템과 같은 쪽에 섭니다.
예시에서 기준을 익히는 방식
지금 주류는 규칙을 사람이 적지 않는 방식입니다. 정답을 단 예시를 많이 모아 컴퓨터에 보여 줍니다. 컴퓨터는 그 예시들에서 판단 기준을 스스로 만들어 냅니다. 이 방식이 앞 표에 나온 머신러닝입니다.
문의 분류라면 지난 문의 수만 건에 사람이 「환불」「배송」「기타」를 달아 둡니다. 이렇게 모은 예시 묶음이 훈련 데이터입니다. 컴퓨터는 이 데이터에서 「돌려받고」「반품」 같은 표현이 환불 쪽에 몰린다는 것을 찾아냅니다. 사람이 떠올리지 못한 표현도 데이터에 있으면 기준에 들어갑니다.
이렇게 익힌 결과물이 모델입니다. 모델은 익힌 기준을 숫자 묶음으로 담고 있습니다. 새 문의를 받으면 그 기준으로 셈해서 담당을 고릅니다.
학습을 마친 모델에 새 입력을 넣어 답을 받는 일을 추론이라고 부릅니다. 앞 표의 「지식 표현과 추론」과 이름이 같습니다. 이쪽은 결론을 끌어내는 논리가 아니라 모델을 돌리는 일을 가리킵니다.
컴퓨터에게 무엇을 주고 배우게 하느냐로 머신러닝이 다시 셋으로 갈립니다. 아래 표는 셋을 문의 예로 견줍니다.
| 방식 | 컴퓨터에게 주는 것 | 문의 예에서 |
|---|---|---|
| 지도학습 | 예시와 그 정답 | 문의마다 담당을 달아 주고 배우게 합니다 |
| 비지도학습 | 정답 없는 예시 | 문의를 비슷한 것끼리 묶어 사람이 몰랐던 유형을 찾습니다 |
| 강화학습 | 해 본 행동에 매긴 점수 | 문의 분류에는 잘 안 씁니다. 바둑을 두게 하고 이기면 점수를 주는 식으로 씁니다 |
앞에서 든 문의 분류는 첫째 줄인 지도학습입니다. 정답을 사람이 달아야 해서 손이 많이 들지만 무엇을 배울지가 분명합니다.
머신러닝 안에는 기준을 익히는 방법이 여럿 있습니다. 그 하나가 결정 트리입니다. 예나 아니오로 답하는 질문을 차례로 던져 답을 가릅니다. 문의 예라면 「돌려받고가 들어 있나」를 먼저 묻고 답에 따라 다음 질문으로 넘어갑니다.
또 하나의 방법이 신경망입니다. 신경망을 이루는 것은 작은 계산 단위입니다. 이 단위 하나는 들어온 값마다 비중을 곱해 모두 더합니다. 신경망은 이런 단위를 그물처럼 엮은 모델입니다.
이 비중이 앞에서 말한 모델 속 숫자 묶음입니다. 사람이 미리 정해 두지 않습니다. 훈련 데이터의 정답에 맞도록 학습이 조금씩 맞춥니다.
요즘 가장 많이 쓰는 갈래는 신경망을 여러 겹 깊게 쌓는 딥러닝입니다. 앞 겹이 찾은 단서를 뒤 겹이 엮어서 더 큰 뜻을 알아봅니다.
지금까지 나온 이름들의 관계는 겹쳐 놓은 상자로 볼 수 있습니다. 인공지능 안에 머신러닝이 있습니다. 머신러닝 안에는 딥러닝이 있습니다. 규칙 기반 시스템과 탐색은 인공지능에는 들지만 머신러닝에는 들지 않습니다.
flowchart TD
subgraph AI["인공지능"]
R["규칙 기반 시스템"]
S["탐색"]
subgraph ML["머신러닝"]
T["결정 트리"]
subgraph DL["딥러닝"]
N["여러 겹의 신경망"]
end
end
end
배우는 방식에도 약점이 있습니다. 정답을 단 예시가 많이 필요합니다. 모델이 왜 그 답을 냈는지 사람이 들여다보기 어렵습니다.
모델은 답과 함께 그 답을 얼마나 확신하는지를 점수로 내는 일이 많습니다. 이 점수가 신뢰도 점수입니다. 앞 표의 강화학습에서 행동에 매기는 점수와는 다른 것입니다. 그런데 예시에 없던 입력이 오면 엉뚱한 답에 높은 신뢰도 점수를 붙이기도 합니다.
좁은 인공지능과 범용 인공지능
해내는 일의 폭으로 인공지능을 가르기도 합니다. 문의 분류나 번호판 읽기처럼 한 가지 일만 해내는 것을 좁은 인공지능이라고 부릅니다. 서비스에 붙이는 인공지능은 대개 이쪽입니다.
사람처럼 처음 보는 일까지 두루 해내는 것을 범용 인공지능이라고 부릅니다. 이 분야가 오래 바라 온 목표입니다. 어디까지 와야 범용이라고 할지는 사람마다 기준이 갈립니다.
범용 인공지능에 닿았는지를 가리는 기준의 하나로 튜링 테스트가 자주 거론됩니다. 사람이 글로만 대화해 보고 상대가 기계인지 사람인지 못 가리면 통과로 봅니다.
대화형 인공지능이 서는 곳
요즘 「인공지능」이라고 하면 대개 질문에 글로 답하는 대화형 인공지능을 떠올립니다. 그 뒤에는 대규모 언어 모델이 있습니다. 아주 많은 글로 훈련한 딥러닝 모델입니다.
이 모델은 글을 작은 조각으로 잘라 다룹니다. 이 조각이 토큰입니다. 모델은 지금까지의 글을 보고 다음에 올 토큰을 하나씩 골라 이어 붙입니다.
이렇게 글이나 그림을 새로 지어내는 인공지능이 생성형 인공지능입니다. 대규모 언어 모델은 생성형 인공지능 가운데 글을 다루는 것입니다. 앞의 문의 분류 모델은 정해진 담당 셋 중 하나를 고를 뿐입니다. 생성형 인공지능은 답장 글을 통째로 써 냅니다.
앞의 상자 그림에 놓으면 대규모 언어 모델은 딥러닝 상자 안에 듭니다. 인공지능 전체가 아니라 그 안쪽의 한 갈래입니다.
백엔드 개발자가 이 분야를 만나는 때
백엔드 개발자가 모델을 처음부터 만드는 일은 드뭅니다. 대개는 학습된 모델을 서버에서 돌립니다. 모델을 대신 돌려 주는 외부 API(Application Programming Interface, 응용 프로그램 인터페이스)를 부르기도 합니다.
먼저 정할 것은 그 일에 인공지능이 필요한가입니다. 가르는 질문은 하나입니다. 판단 규칙을 사람이 빠짐없이 적을 수 있는가입니다. 아래 표는 흔한 일 넷에 이 질문을 던져 본 결과입니다.
| 일 | 규칙을 빠짐없이 적을 수 있나 | 고르는 방식 |
|---|---|---|
| 주문 금액에 세금 붙이기 | 적을 수 있다. 세율과 계산식이 정해져 있다 | 평범한 코드 |
| 관리자에게만 이 화면 보이기 | 적을 수 있다. 권한 표가 있다 | 평범한 코드 |
| 문의를 담당별로 가르기 | 못 적는다. 같은 뜻의 표현이 너무 많다 | 모델 |
| 올라온 사진에 부적절한 내용이 있나 가리기 | 못 적는다. 찍히는 모습이 너무 다양하다 | 모델 |
규칙을 다 적을 수 있는 일에 모델을 쓰면 얻는 것 없이 잃기만 합니다. 평범한 코드는 같은 입력에 늘 같은 답을 냅니다. 모델은 같은 일에서 가끔 틀립니다.
모델을 쓰기로 했으면 개발자가 정할 것이 넷 있습니다.
- 답을 믿을 기준. 앞에서 본 신뢰도 점수를 씁니다. 몇 점을 넘는 답만 받아들일지는 서비스가 정합니다
- 기준에 못 미친 답. 흔한 처리는 그 건을 사람이 확인하는 대기열로 보내는 것입니다
- 추론을 돌릴 장비. 추론은 보통의 요청 처리보다 오래 걸립니다. 그래서 많은 계산을 한꺼번에 해내는 GPU(Graphics Processing Unit, 그래픽 처리 장치)를 쓰기도 합니다
- 추론을 기다리는 방식. 요청과 추론 사이에 큐를 두면 요청은 작업을 큐에 넣고 바로 끝납니다. 추론 결과는 일이 끝난 뒤 따로 돌려줍니다
기준을 높이면 잘못 가른 문의는 줄지만 사람이 볼 문의가 늘어납니다. 기준을 낮추면 반대가 됩니다. 이 맞바꿈을 재는 두 숫자가 정밀도와 재현율입니다.
정밀도는 모델이 환불이라고 한 문의 가운데 실제 환불 요청의 비율입니다. 기준을 높이면 잘못 가른 문의가 줄어 이 값이 오릅니다.
재현율은 실제 환불 요청 가운데 모델이 환불로 잡아낸 비율입니다. 기준을 높이면 사람에게 넘어가는 건이 늘어 이 값이 내려갑니다.
모델에 넘기는 입력에는 고객 이름과 주소 같은 개인정보가 섞이기 쉽습니다. 외부 API 로 보낸다면 무엇을 내보내는지도 함께 정합니다.
관련 항목
인공지능을 이루는 하위 분야
탐색 · 지식 표현과 추론 · 자동 계획 · 머신러닝 · 자연어 처리 · 컴퓨터 비전 · 음성 인식 · 로봇 공학 · 추천 시스템
인공지능이 판단 기준을 얻는 방법
규칙 기반 시스템 · 전문가 시스템 · 휴리스틱 · 지도학습 · 비지도학습 · 준지도학습 · 강화학습 · 딥러닝 · 신경망 · 결정 트리
인공지능 모델을 훈련하고 평가하는 개념
모델 · 훈련 데이터 · 레이블링 · 과적합 · 정밀도와 재현율 · 혼동 행렬 · 신뢰도 점수
인공지능을 해내는 일의 폭으로 나눈 종류
좁은 인공지능 · 범용 인공지능 · 초지능 · 튜링 테스트
대화형 인공지능을 이루는 기술
대규모 언어 모델 · 생성형 인공지능 · 트랜스포머 · 토큰 · 프롬프트 · 환각 · 임베딩
인공지능 모델을 서비스로 굴리는 수단
추론 · 모델 서빙 · API · GPU · 큐 · 배치 처리 · 지연
인공지능 서비스에 걸리는 신뢰와 책임 문제
설명 가능한 인공지능 · 편향 · 개인정보 · 인공지능 윤리
인공지능 모델을 구현하는 라이브러리
PyTorch · TensorFlow · scikit-learn · JAX
인공지능이 기대는 상위 학문과 이웃 학문
컴퓨터 과학 · 통계 · 인지 과학 · 최적화 문제 · 데이터 과학 · 데이터 마이닝
다른 이름: AI · artificial intelligence · 인공 지능