본문 바로가기

Minding's Reading/머신러닝 딥러닝에 필요한 기초 수학 with 파이썬

[머신러닝 딥러닝에 필요한 기초수학 with 파이썬] CH03. 다변수 함수와 벡터함수 : 입력이 여러 개, 출력이 여러 개인 함수

728x90
반응형

책에 나오는 그림 및 그래프 그리기 코드 : 

https://github.com/metamath1/noviceml

 

metamath1/noviceml

도서 머신러닝·딥러닝에 필요한 기초 수학 with 파이썬의 예제 코드와 그래프 그리는 코드 및 웹앱 저장소 - metamath1/noviceml

github.com

 


다변수 함수와 벡터함수 : 입력이 여러 개, 출력이 여러 개인 함수

입력과 출력에 따른 함수의 분류

  • 다음과 같은 순서로 알아보기
    1. 입력이 여러 개인 함수의 정의와 그래프의 의미
    2. 출력이 여러 개인 함수의 정의와 그래프의 의미
    3. 여러 함수가 합성된 합성함수
    4. 여러 가지 함수를 합성하여 만든 초간단 분류기 실습

 

스칼라와 벡터

  • 스칼라 : 크기만을 나타내는 수학도구
    • 온도, 재산 등의 크기를 표시할 때 쓰는 도구
    • 숫자 하나로 표현되는 양 (scale과 비슷한 의미)
  • 벡터 : 크기와 방향을 모두 가지는 수학 도구
    • ex) 속도는 방향과 크기를 모두 가지므로 벡터
  • 스칼라와 벡터는 x와 x 로 표시
    • x에 들어있는 각 숫자를 벡터의 요소, 요소의 개수를 벡터의 차원이라고 표시
    • ex) v = (x, y, z)는 3차원벡터, x,y,z는 벡터가 가지는 요소
    • 벡터를 표시할때는 숫자를 세로로 나열(열 벡터)할 수도 있고, 가로로 나열(행 벡터)할 수도 있음 (기본은 열벡터)

 

일변수 스칼라함수

  • 일변수 스칼라함수 : 2장에서처럼 숫자 하나가 입력되고 숫자 하나가 출력되는 함수들
  • y = f(x)
  • 입력 x와 출력y가 모두 스칼라
  • 다항식 형태라고 해도 입력과 출력이 여러 개가 될 수 있음

 

일변수 벡터함수

  • r(t) = (f1(t), f2(t), ... , fn(t))^T
  • n차원 벡터를 결과로 돌려주는 벡터함수, 입력은 숫자 t 하나밖에 없음
  • f: R -> R^n (R은 실수 전체 집합)
  • 함수의 형태는 다항함수, 지수함수, 로그함수 등 어떤 형태도 가능

  • 숫자 t를 3차원의 어떤 점으로 바꿔 줌
  • 일변수 벡터함수는 시간(t)에 따라 공간(3차원 출력)을 이동하는 대상을 모델링할 수 있음

 

다변수 스칼라함수

  • 목적함수 (손실함수, 비용함수) : 함숫값을 줄이면 어떤 목적이 달성되는 함수
    • 대부분 머신러닝 알고리즘은 목적함수의 가장 작은 위치를 찾아내는 과정 거침
    • 목적함수들이 다변수 스칼라함수
    • 입력이 여러개이고 출력이 하나인 함수
  • y = f(x)
    • 구체적인 예) f(x,y) = x + y
    • 복잡한 모양의 예) f(x1, x2) = 50(x2 - x1^2)^2 + (2 - x1)^2
    • 우변 정의대로 식을 계산하면 숫자 하나가 결정됨
    • f: R^2 -> R (각 입력변수 차원의 제곱 차원이 정의역)
  • 벡터형식으로 쓸수 있음 = 벡터변수 스칼라 함수라고 이야기하기도 함

 

그래프 그리기

그리드 생성

  • np.meshgird()는 2차원 평면에 그물 같은 그리드 좌표 생성
  • x1, x2의 1차원 어레이를 통해 각 좌표가 교차되는 점의 좌표를 X1, X2에 저장

점을 빼곡히 찍어 연속된 곡면 만들기

한쪽이 숫자로 고정되면?

  • 함수식의 한쪽이 숫자로 고정되어 있는 경우
    • 50(x2 - x1^2)^2 + (2 - x1)^2 = 200
  • 정의역과 공역의 관계가 특정 경우에 한정되게 됨
  • 특정 값을 대입해야 등호가 성립하기 때문에 함수라고 할 수 없음
  • 독립과 종속 관계가 명시적으로 드러나 있지 않고, 두 변수가 한 식에 함께 나타나 있어 관계가 명시적으로 드러나지 않음
  • 이런 경우 음함수(implicit function)라는 용어로 지칭
  • 위 관계를 만족시키는 (x1, x2) 순서쌍들은 방정식을 만족시키는 해집합이라고 할 수 있음

 

해집합으로 그래프 그리기

  • 사용할 등고선 생성

  • 이변수 함수에서 함숫값을 제한하면 곡면이 곡선으로 바뀜

함숫값 30, 200, 600을 만족하는 (x1, x2)들을 평면에 그리기

  • 위 그림은 함숫값 30, 200, 600을 만족하는 (x1, x2)들을 평면에 그린 그림
    • 2차원 평면에서 정의된 함수를 2차원 평면에 그린 것
    • 경사도벡터의 방향이 어느방향인지 등고선 그래프로 알 수 있음

변수가 세 개라면

  • 그림을 그릴 수 없음
    • 실수 세 개로 구성된 정의역은 3차원 공간 전체가 되기 때문
  • 한쪽을 숫자로 고정하게 되면
    • 함숫값을 가지는 입력 점들이 3차원 공간에 곡면으로 그려지게 됨
    • 등고선그래프와 같은 현상이 3차원 공간에 나타남
  • 변수가 네 개 이상이면 아예 그림을 그릴 수 없음

 

다변수 벡터함수

  • 입력도 여러개, 출력도 여러개인 함수
  • F(x) = (f1(x), f2(x), ... , fn(x))^T, x R^m
    • 입력 m개가 출력 n개로 변환되는 벡터함수
    • 입력 x는 숫자 m개가 모인 벡터
    • 각 성분 함수 fi(x)는 f:R^m -> R인 다변수 스칼라함수
  • 예시(p.63) 함수의 그림 그리기

  • 3차원 공간에 점 900개가 곡면 이루고 있음
    • 입력평면 uv는 이 그래프에 나타나지 않음

 

그래프 방식 표현

  • 그래프 : 동그라미를 선으로 연결한 그림
    • 노드 : 동그라미
    • 엣지 : 출력에 관여하는 입력을 연결한 점선과 실선
    • 연결선이 모이는 부분에서는 덧셈이 일어난다고 정의

 

합성함수

  • 함수의 합성 : 어떤 함수의 출력을 다른 벡터함수의 입력으로 사용하는 것으로 연결
  • 그래프로 알아보기 (입력 x, 출력 y)

  • 좌상단그래프는 f(x)그래프
  • 우상단그래프는 g(y)그래프
    • 좌상단 그래프의 세로축범위가 우상단 그래프의 가로축 범위와 일치
    • 좌상단 그래프의 공역이 우상단 그래프의 정의역이 된 것 (최종 출력은 z)
  • 좌하단그래프는 x와 z의 함수 (함성함수)
  • 우하단그래프는 f(x)와 g(f(x)를 함께 그린 것

 

자주 만나는 특별한 함수 : 소프트맥스 함수

  • 우변의 정의 : z를 입력 받아 i번째 요소 계산
    • 함수의 출력도 벡터
    • 즉, 소프트맥스 함수는 다변수 벡터함수
  • 소프트맥스 함수는 출력한 숫자가 동일한 분모에 대해서 각 요소가 차지하는 비율
    • 모두 더하면 1이됨
    • 어떤 숫자가 커지면 다른 숫자가 작아짐
    • 함수의 출력은 확률로 해석가능
    • 여러 항목에 대한 확률 출력가능
  • 가장 큰 확률을 가지는 항목을 정답으로 출력함

 

여러가지 함수를 활용한 초간단 분류기

 

https://metamath1.github.io/noviceml/toyclassifier.html

강아지 확률:, 고양이 확률:

metamath1.github.io

 

728x90