나뭇잎 교과서

인공지능의 문제 해결 사례

추천 서비스, 신경망처럼 실제로 쓰이는 인공지능도 이 과목에서 배운 벡터, 행렬, 유사도, 함수로 이루어져 있습니다. 이 절에서는 평점 행렬로 영화를 추천하는 방법과, 신경망을 이루는 인공 뉴런 하나의 계산을 직접 살펴봅니다.

본문

인공지능의 문제 해결 사례

본문

동영상 앱은 내가 볼 만한 영화를 골라 주고, 메일 서비스는 스팸을 걸러 내며, 은행은 대출 신청이 위험한지 판단한다. 이 인공지능들은 마지막에 '볼 확률 85%', '스팸일 확률 92%'처럼 0과 1 사이의 수를 내놓는다. 여러 입력을 받아 이런 확률을 만드는 가장 작은 부품이 인공 뉴런이다. 뉴런 하나는 어떤 계산을 할까?

그림 1. 인공 뉴런은 \(z = wx + b\)를 계산한 뒤 시그모이드 함수 \(\sigma(z) = \dfrac{1}{1 + e^{-z}}\)로 0과 1 사이의 값을 낸다(\(b = -4\)). 가중치가 크면 입력이 조금만 바뀌어도 출력이 크게 바뀐다.
먼저 알아야 할 것행렬의 곱셈(공통수학1), 함수의 뜻과 함숫값, 지수함수(대수), 퍼셉트론(인공지능과 수학의 역사).

5.1.1시그모이드 뉴런

퍼셉트론은 0 아니면 1만 냈다. 하지만 '얼마나 그럴듯한지'를 나타내려면 0과 1 사이의 연속적인 값이 필요하다. 그래서 가중합 \(z = w_1x_1 + \cdots + w_nx_n + b\)를 매끄러운 S자 곡선에 넣는다.

정의 5.1.1 시그모이드 함수

\[\sigma(z) = \frac{1}{1 + e^{-z}}\] 는 \(z\)가 매우 크면 1에, 매우 작으면 0에 가까워지고, \(z = 0\)일 때 0.5이다. 출력을 확률처럼 해석할 수 있다.

그림 1에서 입력 \(x\)를 바꾸어 보자. \(w = 1\), \(b = -4\)이면 \(x = 4\)에서 \(z = 0\)이라 출력이 0.5이다. \(x\)가 커지면 출력이 1에, 작아지면 0에 다가간다. 가중치를 3으로 키우면 곡선이 가팔라져, 기준 근처에서 출력이 급하게 바뀐다. 학습은 이런 가중치와 편향을 자료에 맞게 고르는 일이다.1

5.1.2추천 시스템과 행렬

추천 시스템은 사용자들의 평점을 행렬로 정리하는 데서 출발한다. 행은 사용자, 열은 영화, 성분은 평점이다. 이 행렬은 대부분 비어 있는데, 평점이 비슷한 사용자끼리, 또는 함께 높은 평점을 받은 영화끼리 묶어 빈칸을 채운다. 예를 들어 사용자의 취향 벡터와 영화의 특징 벡터를 곱해 더한 값으로 평점을 예측한다. 이는 행렬의 곱셈과 같은 계산이다.

x₁ x₂ w₁w₂ z σ(z) 확률
그림 2. 인공 뉴런은 입력에 가중치를 곱해 더한 \(z\)를 시그모이드 함수로 확률로 바꾼다.

5.1.3예제 풀이

예제 5.1.2

스팸 판별 뉴런이 메일 속 '무료'의 개수 \(x_1\), '당첨'의 개수 \(x_2\)를 받아 \(z = 1.5x_1 + 2x_2 - 4\)를 계산하고 \(\sigma(z)\)를 스팸일 확률로 낸다. '무료' 2번, '당첨' 1번이 나온 메일의 스팸 확률을 구하여라. (\(e^{-1} \approx 0.368\))

\(z = 1.5 \times 2 + 2 \times 1 - 4 = 1\)이다. 따라서 \(\sigma(1) = \dfrac{1}{1 + e^{-1}} = \dfrac{1}{1.368} \approx 0.73\)이다.

이 메일이 스팸일 확률은 약 73%이다. '당첨'이 한 번 더 나오면 \(z = 3\), \(\sigma(3) = \dfrac{1}{1 + e^{-3}} \approx 0.95\)로 크게 오른다. 기준을 0.5로 두면 \(z > 0\)인 메일을 스팸으로 분류하는 것이므로, 경계는 퍼셉트론처럼 \(1.5x_1 + 2x_2 = 4\)인 직선이다. 시그모이드 뉴런은 경계에서 멀수록 더 확신하는 퍼셉트론인 셈이다.

아래 탐구 카드에서 추천 시스템의 계산과 인공 뉴런이 확률을 만드는 과정을 직접 해 보자.

  1. 시그모이드 뉴런 하나로 확률을 내는 모형을 로지스틱 회귀라 한다. 의료, 금융 등에서 판단의 근거를 설명하기 쉬워 지금도 널리 쓰인다.
마무리

인공 뉴런은 입력에 가중치를 곱해 더하고 편향을 더한 \(z\)를 시그모이드 함수 \(\sigma(z) = \frac{1}{1 + e^{-z}}\)에 넣어 0과 1 사이의 값을 낸다. 추천 시스템은 평점 행렬과 벡터의 곱으로 빈칸을 예측한다. 그래서 처음 질문의 '확률 85%' 같은 출력은 입력들의 가중합을 S자 곡선으로 바꾼 값이다.

탐구 1

동영상 앱은 내가 볼 만한 영화를 어떻게 골라 줄까?

추천 시스템 · 활용

다섯 친구의 영화 평점(1~5, 빈칸은 안 봄)과 내 평점이다(가상). 내 평점을 바꾸면 추천이 바뀐다.

  1. 질문수만 편의 영화 중에서 앱은 어떻게 내가 좋아할 만한 영화를 고를까? 내가 본 적 없는 영화에 몇 점을 줄지 예측할 수 있을까?
  2. 복원코사인 유사도는 두 벡터에서 같은 위치의 값끼리 곱해 더한 것을 두 벡터의 크기의 곱으로 나눈 값이다(텍스트 데이터에서 배움). 그리고 가중평균은 값마다 중요도(가중치)를 곱해 더한 뒤 가중치의 합으로 나눈 평균이다.
  3. 설명사람마다 평점을 벡터로 보고, 두 사람이 함께 본 영화의 평점으로 코사인 유사도를 구한다(평균을 뺀 평점을 써서 후하게 주는 사람의 영향을 줄였다). 그다음 내가 안 본 영화의 예상 평점을, 그 영화를 본 사람들의 평점을 나와의 유사도로 가중평균해 구하고, 예상 평점이 가장 높은 영화를 추천한다. 이 방법을 협업 필터링이라 한다.
  4. 연결평점 행렬은 대부분이 빈칸이어서, 실제 서비스는 행렬을 두 작은 행렬의 곱으로 나타내는 방법(행렬 분해)으로 빈칸을 채운다. 여기에는 행렬과 벡터, 유사도, 손실함수가 함께 쓰인다.
  5. 적용내 평점을 바꿔 가장 비슷한 친구가 바뀌게 만들고, 추천 영화가 어떻게 달라지는지 보자.
  6. 판단비슷한 사람의 취향만 따라가면 늘 비슷한 영화만 추천되어 새로운 것을 만나기 어려워질 수 있다(필터 버블). 또 함께 본 영화가 한두 편뿐이면 유사도도 믿기 어렵다.

확인조건이 달라지면

나와 유사도 0.9인 친구 A가 영화 X에 5점, 유사도 0.3인 친구 B가 2점을 주었다. X의 예상 평점(유사도 가중평균)은?

탐구 2

인공 뉴런 하나는 입력을 어떻게 확률로 바꿀까?

인공 뉴런과 활성화 함수 · 조작

식물 화분의 흙 습도(\(x_1\))와 하루 햇빛 시간(\(x_2\))으로 ‘잎이 잘 자랄 확률’을 내는 가상의 뉴런이다.

  1. 질문신경망은 인공 뉴런을 수없이 이어 만든 것이다. 뉴런 하나는 어떤 계산을 할까?
  2. 복원함수는 입력 하나에 출력 하나를 정하는 규칙이고, 그래프를 그리면 입력에 따라 출력이 어떻게 변하는지 볼 수 있다.
  3. 설명뉴런은 입력에 가중치를 곱해 더하고 편향을 더한 가중합 \(z = w_1x_1 + w_2x_2 + b\)를 구하고, 이 값을 활성화 함수에 넣어 출력을 낸다. 시그모이드 \(\sigma(z) = \dfrac{1}{1 + e^{-z}}\)(\(e \approx 2.718\)인 수이며, 지수함수는 대수에서 자세히 배우므로 여기서는 그래프 모양만 본다)는 어떤 \(z\)든 0과 1 사이 값으로 바꿔 주므로 확률처럼 해석할 수 있다. \(z = 0\)이면 0.5이고, 가중치가 클수록 그 입력이 결과에 크게 작용한다.
  4. 연결1단원의 퍼셉트론은 시그모이드 대신 0보다 크면 1인 계단 함수를 썼다. 그런데 시그모이드는 매끄러워서 미분할 수 있고, 그래서 경사하강법으로 가중치를 학습할 수 있다(4단원).
  5. 적용입력과 가중치를 바꿔 출력 확률이 0.9를 넘게 만들어 보자. 그리고 가중치를 음수로 하면 그 입력이 결과에 어떻게 작용하는지 보자.
  6. 판단출력 0.8을 ‘확률 80%’로 읽으려면 가중치가 실제 자료로 잘 학습되어 있어야 한다. 아무렇게나 정한 가중치의 출력은 0과 1 사이의 수일 뿐 믿을 만한 확률이 아니다.

확인조건이 달라지면

\(w_1 = 2\), \(w_2 = -1\), \(b = 1\), 입력 \((1, 3)\)일 때 시그모이드 출력은?

AI 출제 문항연습문제 풀어보기16문항
Esc

↑↓ 고르기Enter 열기