포스트

[ AI Math ] 1. 확률

딥러닝을 위한 통계학 입문

안녕하세요, 인공지능에 관심이 있는 여러분! 오늘은 인공지능, 특히 딥러닝을 이해하는데 필수적인 통계학에 대해 알아보도록 하겠습니다. 통계학은 데이터를 수집, 분석, 해석하는 학문으로, 인공지능 분야에서 매우 중요한 역할을 합니다. 이 글을 통해 여러분은 확률, 경우의 수, 그리고 이를 Python 코드로 구현하는 방법까지 배울 수 있을 거예요. 특히, Python의 itertools 모듈을 사용하여 간단하게 구현하는 방법을 알아보겠습니다. 자, 그럼 시작해볼까요?

1. 확률이란?

확률은 어떤 사건이 일어날 가능성을 수치로 나타낸 것입니다. 예를 들어, 동전을 던졌을 때 앞면이 나올 확률은 0.5 (50%)입니다. 수학적으로는 다음과 같이 표현할 수 있습니다.

$P(A) = \frac{A가 일어날 경우의 수}{전체 경우의 수}$

여기서 $P(A)$는 사건 A의 확률을 의미합니다.

Python에서는 이를 다음과 같이 구현할 수 있습니다.

1
2
3
4
5
def probability(favorable_cases, total_cases):
    return favorable_cases / total_cases

# 동전을 던졌을 때 앞면이 나올 확률
print(probability(1, 2))  # 0.5

1-1. 인공지능에서 확률이 사용되는 예시

인공지능, 특히 머신러닝과 딥러닝에서는 확률을 사용하여 모델을 학습시킵니다. 예를 들어, 스팸 메일 필터는 특정 단어나 문구가 스팸 메일에 나타날 확률을 계산하여 메일이 스팸인지 판단합니다.

또 다른 예로, 날씨 예측 모델을 들 수 있습니다. 이 모델은 과거의 기상 데이터를 바탕으로 내일 비가 올 확률을 계산합니다. 만약 모델이 내일 비가 올 확률을 80%로 예측했다면, 우산을 준비하는 것이 좋겠죠?

1-2. 기계학습 모델을 확률적으로 이해하기

기계학습 모델은 입력 데이터와 출력 데이터 사이의 관계를 확률적으로 모델링합니다. 즉, 입력 데이터 X가 주어졌을 때 출력 Y가 나올 확률 $P(Y \mid X)$를 계산하는 것이죠. 이를 통해 모델은 새로운 입력 데이터에 대한 출력을 예측할 수 있습니다.

예를 들어, 고양이와 강아지 사진을 분류하는 이미지 분류 모델을 생각해봅시다. 이 모델은 입력 이미지 X가 주어졌을 때, 이 이미지가 고양이일 확률 $P(Y=고양이 \mid X)$와 강아지일 확률 $P(Y=강아지 \mid X)$를 계산합니다. 만약 $P(Y=고양이 \mid X)$가 더 높다면, 모델은 이 이미지를 고양이로 분류할 것입니다.

2. 경우의 수

경우의 수는 어떤 사건이 일어날 수 있는 모든 경우를 계산하는 것입니다.

2-1. 순열

순열은 서로 다른 n개의 요소 중에서 r개를 선택하여 순서를 고려해 나열하는 것입니다. Python에서는 itertools 모듈의 permutations 함수를 사용하여 간단하게 구현할 수 있습니다.

1
2
3
4
from itertools import permutations

# 5명의 학생 중 3명을 선택하여 발표 순서를 정하는 경우의 수
print(list(permutations(range(5), 3)))

2-2. 조합

조합은 서로 다른 n개의 요소 중에서 r개를 선택하는 것입니다. 순서는 고려하지 않습니다. Python에서는 itertools 모듈의 combinations 함수를 사용하여 간단하게 구현할 수 있습니다.

1
2
3
4
from itertools import combinations

# 5명의 학생 중 3명을 선택하여 팀을 구성하는 경우의 수
print(list(combinations(range(5), 3)))

2-3. 중복 순열과 중복 조합

중복 순열은 n개의 요소 중에서 r개를 선택하여 순서를 고려해 나열하는 것이며, 같은 요소를 중복해서 선택할 수 있습니다. Python에서는 itertools 모듈의 product 함수를 사용하여 간단하게 구현할 수 있습니다.

1
2
3
4
from itertools import product

# 3가지 색의 공을 4번 선택하는 경우의 수 (같은 색 공을 중복해서 선택 가능)
print(list(product(range(3), repeat=4)))

중복 조합은 n개의 요소 중에서 r개를 선택하는 것이며, 순서는 고려하지 않고, 같은 요소를 중복해서 선택할 수 있습니다. Python에서는 itertools 모듈의 combinations_with_replacement 함수를 사용하여 간단하게 구현할 수 있습니다.

1
2
3
4
from itertools import combinations_with_replacement

# 3가지 맛의 아이스크림 중 2가지 맛을 선택하는 경우의 수 (같은 맛을 중복해서 선택 가능)
print(list(combinations_with_replacement(range(3), 2)))

3. 확률

확률은 통계학의 핵심 개념 중 하나입니다.

3-1. 통계적 확률

통계적 확률은 실험이나 관찰을 통해 얻은 데이터를 기반으로 사건의 발생 가능성을 계산합니다. 예를 들어, 주사위를 1000번 던졌을 때 1이 나온 횟수가 150번이라면, 1이 나올 확률은 약 0.15 (15%)로 추정할 수 있습니다.

Python에서는 이를 다음과 같이 구현할 수 있습니다.

1
2
3
4
5
def probability(favorable_cases, total_cases):
    return favorable_cases / total_cases

# 주사위를 1000번 던졌을 때 1이 나온 횟수가 150번인 경우
print(probability(150, 1000))  # 0.15

3-2. 실제 사례 예시 (생성 모델)

생성 모델(Generative Model)은 데이터의 확률 분포를 학습하여 새로운 데이터를 생성하는 모델입니다. 예를 들어, 음성 합성 모델은 사람의 목소리 데이터를 학습하여 새로운 음성을 생성합니다. 이 모델은 음성 데이터의 확률 분포를 학습하여, 자연스러운 음성을 만들어낼 수 있습니다.

이상으로 딥러닝을 위한 통계학 기초에 대해 알아보았습니다. 확률, 경우의 수, 그리고 Python의 itertools 모듈을 사용한 구현 방법을 배웠는데요, 이러한 개념들은 인공지능을 이해하고 활용하는 데 있어 매우 중요합니다. 다음 글에서는 더 심화된 내용을 다루도록 하겠습니다. 감사합니다!

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.