02.3 함수의 정의와 대응

이 장에서는 입력값과 출력값을 짝지어주는 함수(Function)집합/대응의 수학적 정의를 다루고, 강화학습의 중심 개념인 가치 함수(v(s))의 본질적 의미와 파이썬 프로그래밍 함수와의 유사성 및 차이점을 배웁니다.


02.3.1 상태를 값으로 연결하는 마법의 상자

강화학습 책을 읽다 보면 v(s), q(s, a)처럼 괄호로 둘러싸인 기호들이 쉴 새 없이 나타납니다. 이들은 모두 입력(상태나 행동)을 넣으면 특정 출력(기댓값)을 뱉어내는 함수입니다.

함수의 정의와 대응 인트로 그림 02-3-1 격자 세상의 상태 집합 X가 숫자 가치 집합 Y로 하나씩 짝지어져 대응하는 과정을 칠판에 그려주는 지니와 도로시

지니의 마법 대응 칠판을 보며, 수학의 함수와 컴퓨터 프로그래밍 함수가 어떻게 닮았고 또 무엇이 다른지 그 비밀을 명쾌하게 파헤쳐봅시다!


1. 학습 목표

  • 집합(Set)과 원소의 개념을 이해하고, 두 집합 사이의 대응(Mapping) 관계를 안다.
  • 수학적 함수의 정의인 “정의역의 각 원소가 공역의 단 하나의 원소에 대응한다”를 설명할 수 있다.
  • 강화학습의 가치 함수 v(s)가 상태 공간과 실수 집합 사이의 함수 관계임을 이해한다.
  • 수학에서의 함수와 프로그래밍(파이썬) 함수 간의 공통점과 결정적인 차이점을 비교 설명할 수 있다.

2. 핵심 개념

(1) 집합과 대응으로 이해하는 함수

  • 집합 (Set): 어떤 조건에 따라 대상을 분명하게 모은 것이며, 그 대상 하나하나를 원소 (Element)라고 합니다.
    • 예시: 격자 세상의 모든 타일들의 모임은 상태 집합 S = {s1, s2, s3} 가 됩니다.
  • 대응 (Mapping): 집합 X의 원소와 집합 Y의 원소를 서로 짝을 지어주는 관계입니다.
  • 함수 (Function): 집합 X모든 원소가 집합 Y의 원소에 오직 하나씩만 대응할 때, 이 대응 관계를 집합 X에서 집합 Y로의 함수(즉, f : XY)라고 부릅니다.
    • 이따금 함수를 어떤 값을 넣으면 변형된 값을 뱉어내는 ‘상자(Box)’에 비유하기도 합니다.

집합과 대응 그림 02-3-2 여러 입력을 상자에 넣었을 때 정의된 대응에 의해 각각 하나의 값만 뱉어내는 함수의 매직 박스 구조

(2) 강화학습 속의 함수

  • 상태 가치 함수 v(s):
    • 정의역(입력 집합): 에이전트가 위치할 수 있는 모든 상태들의 집합 S
    • 공역(출력 집합): 실수 전체의 집합 ℝ
    • v(s)는 특정 상태 s를 집합 S에서 하나 뽑아서 상자에 넣으면, 그 상태의 예상 보상 합산(실수 값)을 뱉어내는 수학적 함수입니다. (예: v(s1) = 15.4)

상태 가치 함수 그림 02-3-3 하나의 상태 s가 주어졌을 때 그 상태의 종합적인 가치(숫자)를 일대일로 짝짓는 상태 가치 함수

  • 행동 가치 함수 q(s, a):
    • 정의역이 상태 s와 행동 a의 순서쌍 집합인 함수입니다. 상태와 행동을 동시에 입력으로 받아 가치 값을 뱉어냅니다.

행동 가치 함수 그림 02-3-4 현재 위치한 상태 s에서 취할 수 있는 다양한 행동 a(위, 오른쪽 등) 각각에 대해 가치 값을 대수적으로 평가하는 행동 가치 함수

(3) 수학적 함수 vs 프로그래밍(파이썬) 함수의 비교

컴퓨터 언어에서도 def value_function(state):와 같은 형태로 함수를 선언해 사용합니다. 둘은 매우 유사하지만 아주 중요한 차이점들이 존재합니다.

비교 항목 수학적 함수 (f(x)) 프로그래밍 함수 (def func(x))
공통점 입력을 받아 정의된 규칙에 따라 처리하여 출력(반환값)을 제공함. 입력을 매개변수(Parameter)로 받아 실행 후 결과를 return함.
결정성 (Determinism) 항상 결정적: 동일한 입력 x에 대해서는 언제나 예외 없이 동일한 출력 f(x)를 얻음. 비결정적일 수 있음: 내부에서 무작위성(random), 전역 변수, 파일 읽기 등을 사용하면 매번 출력이 다를 수 있음.
부작용 (Side Effects) 부작용 없음: 식의 연산일 뿐, 우주의 상태나 다른 변수의 값을 수정하지 않음. 부작용 발생 가능: 화면 출력(print), 데이터베이스 저장, 전역 변수 값 변경 등 시스템 상태를 변화시킬 수 있음.
상태 보존 (Stateful) 과거에 함수를 몇 번 호출했는지 등의 상태 정보를 보존하지 않음. 클래스 멤버 변수나 정적 변수를 이용해 과거 호출 이력을 누적 기억할 수 있음.

💡 요약하자면 수학의 함수는 완벽히 고정된 매핑 관계(대응표)를 나타내지만, 파이썬의 함수는 기계가 수행해야 할 동작 명령의 묶음입니다. 강화학습을 구현할 때는 이 둘의 차이를 이해하고, 비결정적인 환경의 데이터를 수집하여 완벽한 수학적 함수 v(s)를 근사하도록 코드를 설계해야 합니다.


3. 시각 자료: 가치 함수의 파이썬 구현 매칭도

함수 파이썬 매칭 그림 02-3-5 수학적인 상태 가치 대응 관계 v(s)를 파이썬의 사전(Dict)이나 테이블 조회 함수로 모사하여 연산하는 구조 매칭


4. 실전 예제

예제 1 (함수의 대응 판별)

문제: 다음 상태 공간 S = {s1, s2} 와 가치 공역 Y = {10, 20, 30} 사이의 대응 관계 중 수학적 함수로 올바른 관계를 고르고 그 이유를 서술하시오.

  • 관계 A: s1은 10에 대응하고, s2는 20과 30에 동시에 대응한다.
  • 관계 B: s1은 10에 대응하고, s2는 20에 대응한다.

풀이:

  • 관계 A는 정의역의 원소 s2가 공역의 두 원소(20, 30)에 동시에 대응하므로 함수의 정의인 “오직 하나씩만 대응한다”에 모순되어 함수가 아닙니다.
  • 관계 B는 정의역의 모든 원소(s1, s2)가 공역의 원소에 각각 정확히 하나씩 대응하므로 올바른 함수입니다. 정답: 관계 B

5. 핵심 요약

  1. 함수는 한 집합(정의역)의 모든 원소가 다른 집합(공역)의 원소에 오직 하나씩 매칭되는 대응 규칙을 뜻한다.
  2. 강화학습의 가치 함수 v(s)는 격자판 상태 집합의 각 타일들을 실수 수치(예측 보상)로 짝지어주는 수학적 대응 상자이다.
  3. 수학 함수는 부작용이 없고 언제나 결정적이지만, 프로그래밍 함수는 상태를 보존하고 출력의 무작위성이나 시스템 값 변경(부작용)을 동반할 수 있는 실제 실행 명령 단위라는 결정적 차이가 있다.
서브목차