함수의 역할
1. 함수의 역할 첫 번째
x 와 y의 관계를 나타내는 도구로 y = 2x라는 함수식을 통하여 x가 정수배로 커지면 y는 정수배에 곱하기 2를 한 만큼 커지게 됩니다.
그래서 y는 x의 함수이다”라는 표현은 아주 중요한 함의를 가지고 있습니다.
y가 x의 함수라는 말은,
- y는 x의 변화에 종속적이다. 즉 x가 변하면 그 변화하는 정도에 따라 y가 변하게 된다.
- x가 변하는 정도에 따라 y가 얼마나 변하는지는 x와 *y의 간 함수의 형태(다항식인지, 삼각함수인지, 혹은 신경망인지 등)로 결정된다.
라는 뜻이죠. 함수는 x와 y 사이에 매우 강한 종속적 관계를 가지게 합니다.
2. 함수의 역할 두 번째
x를 변환시켜주는 Transformation 도구로 함수를 변환(Transformation)의 관점에서 볼 때, 우리가 필수적으로 이해해야 하는 개념은 바로 선형 변환(Linear Transformation)입니다.
- 행렬은 열벡터를 나란히 놓은 형태며, 행렬곱 연산또한 열벡터별로 연산이 된다.
- Transformation은 입력을 받아 출력을 반환하는 function(함수)의 fancy한 용어라고 설명한다. (즉, 같은 용어이다.)
- 특히, 선형대수학에서는 이러한 ‘변환’ 역할을 하는 함수가 변환하기 전의 vector를 입력받아 변환된 후의 vector를 출력한다.
- 2차원 평면에서의 Transformation은 축(grid)을 ‘옮기는(move)’ 역할을 한다. 어떤 변환을 하냐에 따라 수직과 수평이었던 2차원 축을 옮길수도, 휘게 할 수도, 꼬이게 할 수도 있다.
- 선형 변환(Linear Transformation)이 되려면 만족해야할 조건 2가지
- 첫 번째, 변환된 축은 여전히 ‘직선’ 형태를 띄어야 한다. 즉, 휘거나 구부러지면 안된다.
- 두 번째, 변환 후에도 원점(origin)은 이동하지 않아야 한다. 즉, 원점은 그대로여야 한다.
- 세 번째, 선현 변환이라면 격자 라인들이 변형 이후에도 여전히 “평행”하고 “동일”한 간격으로 있어야 한다.
3. 함수의 역할 세 번째
x의 공간에서 y의 공간으로 매핑해주는 도구로 사실 바로 전에 본 변환(Transformation)의 관점 또한, 하나의 벡터를 다른 벡터로 매핑하는 것이라고 볼 수 있습니다. 다만, 이번에는 조금 더 다양한 매핑을 살펴보려고 합니다.
바로 함수의 입력과 출력이 스칼라(Scalar)인지, 벡터(Vector)인지에 따라 구분해 보는 것이죠.
- 스칼라는 ‘크기’만 가지고 ‘방향’은 가지지 않는 양이다. 주로 단 하나의 숫자로 표현한다.
- 벡터는 ‘크기’와 ‘방향’을 두 가지 가지는 양이다. 주로 여러 개의 숫자로 표현되며, 좌표 상에서 길이와 방향을 가지는 화살표로 표현한다.
이러한 배경에서, 함수는 아래 세 가지 방법을 통해 입력을 출력으로 매핑할 수 있습니다.
One-to-One
One-to-one 매핑은 입력값 x와 출력값 y가 모두 스칼라인 경우입니다. 단 하나의 값을 입력했을 때, 단 하나의 값만 나오게 됩니다.
Many-to-One
Many-to-One은 여러 가지의 정보를 입력받아 하나의 값을 출력하는 경우입니다.
이 경우 함수는 다음과 같이 벡터인 x를 입력받아 스칼라인 y를 출력하는 형태로 나타낼 수 있습니다. 이때 일반적으로 벡터는 볼드체로 x와 같이 나타냅니다.
일반적으로 머신러닝/딥러닝에서는 이러한 문제를 회귀(Regression) 문제라고 합니다. 더 정확하게 회귀 문제란 입력 데이터가 몇 개인지는 상관없이, 단 하나의 연속된 실수 스칼라값을 맞추는 문제를 일컫습니다.
그러니까 위에서 이야기했던 One-to-One 문제도 회귀 문제라고 할 수 있죠. 정확히는 One-to-One의 경우 입출력되는 변수가 단 하나이기 때문에 단변량 단순 회귀(Univariate Simple Regression), 그리고 Many-to-One의 경우에는 입력 변수가 여러 개이고 출력은 한 개 이므로 단변량 다중 회귀(Multivariate Multiple Regression)라고 합니다.
입력되는 변수의 개수와 출력되는 변수의 개수에 따라서 사용되는 회귀모형은 달라지게 되며 이를 정리한 표입니다.
Many-to-Many
마지막으로 살펴볼 것은 Many-to-Many입니다. 입력값도 벡터, 출력값도 벡터인 경우이죠.
Many-to-Many가 주로 쓰이는 문제는 바로 ‘분류’ 문제입니다. 위에서 봤던 회귀 문제와 달리, 여러 개의 카테고리 중 어떤 카테고리에 속하는지를 맞추는 분류 문제는 카테고리 개수로 이루어진 벡터를 출력하죠.
참고사이트