확률의 기본 개념

프로그래머를 위한 확률 개념

강화학습을 이해하려면 먼저 확률(Probability) 개념을 알아야 한다. 확률이란 어떤 사건이 발생할 가능성을 수치화한 값으로, 0에서 1 사이의 값으로 표현된다. 0은 절대 발생하지 않는 사건, 1은 항상 발생하는 사건을 의미한다.


확률의 기초: 주사위 예제

가장 직관적인 예시는 주사위 게임이다. 일반적인 주사위는 1부터 6까지 총 6개의 면을 가지고 있으며, 각 면이 나올 확률은 모두 동일하다. 따라서, 특정 숫자(예: 3)가 나올 확률은:

P(3)= 1/6

즉, 주사위를 한 번 던졌을 때 3이 나올 확률은 1/6(약 16.67%)이다.

그러나 프로그래머의 입장에서 주의할 점은, 주사위를 6번 던진다고 해서 반드시 모든 숫자가 한 번씩 나오는 것은 아니라는 것이다. 예를 들어, Python에서 다음과 같은 코드를 실행해 보면:

import random

def roll_dice(n):
    """ n번 주사위를 던지고 결과를 반환 """
    return [random.randint(1, 6) for _ in range(n)]

def count_occurrences(results):
    """ 주사위 결과에서 각 숫자의 출현 횟수를 계산 """
    from collections import Counter
    return Counter(results)

def calculate_probabilities(counts, n):
    """ 각 숫자가 나올 확률을 계산하여 반환 """
    probabilities = {}
    for num in range(1, 7):
        probabilities[num] = counts[num] / n
    return probabilities

# 주사위를 6번 던지기
dice_results = roll_dice(6)
print("주사위 결과:", dice_results)

이 코드의 출력이 [1, 3, 3, 6, 5, 2] 와 같이 나올 수도 있다. 즉, 4가 한 번도 나오지 않을 수도 있고, 특정 숫자가 여러 번 나올 수도 있다.

확률의 의미: 긴 시간 동안의 패턴

확률이 1/6이라는 의미는, 무수히 많은 시행을 했을 때 특정 숫자가 나올 비율이 1/6에 수렴한다는 것이다. 즉, 주사위를 6번 던지는 것이 아니라 1000번, 10,000번, 1,000,000번 던지면, 각 숫자가 나오는 횟수는 점점 더 1/6 비율에 가까워진다.

이를 확인하는 간단한 Python 코드를 작성해보자:

# 100,000번 주사위를 던지고 확률 계산
num_trials = 100000
dice_results = roll_dice(num_trials)
counts = count_occurrences(dice_results)
probabilities = calculate_probabilities(counts, num_trials)

print("각 숫자가 나온 확률:")
for number, prob in probabilities.items():
    print(f"{number}: {prob:.3f}")

출력 결과는 다음과 같이 1/6(약 0.166)에 점점 가까워진다:

1: 0.166
2: 0.167
3: 0.166
4: 0.165
5: 0.167
6: 0.169

확률과 무작위성(Randomness)

확률 개념은 무작위성(Randomness) 과 깊이 연결되어 있다. 확률적(Stochastic)이라고 하면 결과가 일정한 규칙 없이 변할 수 있음을 의미한다. 하지만 일정한 패턴이 존재하는 경우도 있다.

예를 들어, 날씨를 예측하는 경우 "내일 비가 올 확률이 70%"라고 하면, 이것이 반드시 비가 온다는 의미가 아니라, 비슷한 조건에서 100번 예측하면 70번 정도 비가 올 것이라는 의미이다.

강화학습에서 확률의 중요성

강화학습에서는 환경(Environment) 이 확률적으로 변화하며, 에이전트(Agent) 의 행동(Action)이 확률적으로 결과를 만든다. 예를 들어, 게임 속 캐릭터가 앞으로 한 칸 이동했을 때, 바닥이 미끄럽다면 90% 확률로 앞으로 가고, 10% 확률로 미끄러져 옆으로 갈 수도 있다.

즉, 강화학습에서는 모든 행동의 결과가 확률적으로 결정되며, 이를 정확히 이해하고 모델링하는 것이 핵심이다.

댓글 쓰기

Please Select Embedded Mode To Show The Comment System.*

다음 이전