100. 인공지능 기초 (1) 인공지능 필수 기초 수학
본 게시글은 패스트캠퍼스 [혁펜하임의 AI DEEP DIVE] 체험단 활동을 위해 작성되었습니다.
딥러닝에 필요한 모든 기초 수학이 이 글(혁펜하임의 AI DEEP DIVE 강의)에 다 담겨있다.
인공지능 기초 단계에서 무엇을 공부해야될지 모를때 추천한다.
혁펜하임의 AI DEEP DIVE 강의의 9개 chapter 중 1번째 chapter의 과목은 아래와 같다.
1. 함수, 2. 로그 함수, 3. 벡터와 행렬, 4. 전치와 내적, 5. 극한, 6. 미분과 도함수, 7. 연쇄 법칙, 8. 편미분과 그라디언트,
9. 테일러 급수, 10. 스칼라를 벡터로 미분하는 법, 11. 왜 그라디언트가 가장 가파른 방향을 향할까,
12. 벡터를 벡터로 미분하는 법, 13. 벡터를 벡터로 미분할 때의 연쇄 법칙, 14. 스칼라를 행렬로 미분하는 법,
15. 행렬을 행렬로, 벡터를 행렬로 비분하는 법
16. 랜덤 변수와 확률 분포, 17. 평균과 분산, 18. 균등 분포와 정규 분포, 19. 최대 우도 추정 (MLE),
20. 최대 사후 확률(MAP), 21. 정보 이론 기초(Entropy, Cross-Entropy, KL-divergence, Mutual information)
이 글은 고등학교 때부터 수학을 포기 했던 사람이
딥러닝에 필요한 필수 수학 지식 (level 0 ~ level 1) + 배운김에 더 알려주는 level 2~ level 3 으로 구성된
위 링크 강의의 수학 부분을 모두 공부하여 정리한글이다.
먼저 이 수학 강의는 진도를 나가면서 까먹거나 햇갈리는 개념은
언제든지 다시 돌아와 시청가능해서 이해하는데 엄청나게 많은 도움이 되었다.
특히 강사님이 수학 기호와 기초 수학 지식도 꼼꼼하게 하나씩 짚어주고 진도를 나가기 때문에
부족한 지식은 다른곳에서 공부할 필요없이 이 강의 목록 안에서 왔다갔다하면서 반복 학습 할 수 있었다.
참 감사하다(진심).
아직 미완성이지만 2월 7일 까지 마무리 지을 예정이다.
함수
변수 x, y 가 있을 때 y의 값이 x의 값에 따라서 오직 하나로 결정 될 때 y를 x의 함수라고 한다.
y = 2x 라는 식이 있을 때
x가 1이면 y 는 2
x가 2면 y는 4로 정해진다.
y = 2x라는 식은 y는 x의 함수라고 할 수 있다.
예를 들어 y는 보다 작은 실수라고 하면
y의 값이 x에 대해서 엄청나게 많아지는데 이는 함수가 아닌 경우가 된다.
y = 2x, y = 3x, y = 4x^2 등 등의 여러가지 함수의 오른쪽 항을 f(x)로 표현한다.
y = f(x)
벡터에 대한 설명은 아래에 있습니다.
패스트캠퍼스 혁펜하임의 AI DEEP DIVE (Online.) ch 01_01. 함수와 다변수 함수 中
로그 함수
로그의 밑이 작아지면 그래프가 아래 빨간색 곡선처럼 왼쪽으로 눕게 된다.
아래의 사진에서 흰색 그래프는 i) 로그 10의 100
아래의 사진에서 빨간색 그래프는 i) 로그 e의 e^3
여기서 e는 원주율 파이랑 비슷한 상수다.
2.71828.... 파이를 이용해 원의 넓이, 둘레 등을 간단하게 표현할 수 있는 것 처럼
e를 이용해 여러가지 연산을 간단하게 표현가능하다.
인공지능에서 로그의 밑이 없으면 e라고 생각하면 된다. (강사님이 알려주셨다.)
ln = 밑이 e 인 로그
벡터와 행렬
x + 2y = 4
2x + 4y = 9
연립 1차 방정식이 있을 때
행렬과 벡터의 곱으로 표현할 수 있다.
만약 계수가 같은 연립 1차 방정식이 하나 더 생긴다면?
역시 행렬을 이용하여 연립 1차 방정식을 두개 사용하는 것 보다.
더욱 쉽게 표현 가능하다.
여기서 계수가 같은 연립 1차 방정식이 또 하나 더 생긴다면?
역시 행렬을 이용하여 연립 1차 방정식을 세개 사용하는 것 보다.
더 더욱 쉽게 표현 가능하다.
벡터는 여러개의 상수들을 하나의 벡터로
행렬은 여러개의 벡터들을 하나의 행렬로
압축시켜서 표현가능하고, 그 상태에서 조건만 맞다면 계산도 가능하다.
벡터의 크기를 노름이라고 한다. norm
여러가지 방법들이 있는데 L1 norm, L2 norm, Ln norm 등이 있고
(벡터 성분들의 절대값의 n 승의 합) ^(1/n)의 규칙성이 있다.
L1과 L2 노름만 알아둬도 충분하다.
전치와 내적
전치는 행렬의 성분의 위치를 대각선 성분을 기준으로 바꾸는 것을 말한다.
내적은 벡터들의 성분 순서끼리 곱한후 모두 더한것을 말한다.
코사인 유사도라는 개념이 있는데 두 벡터의 닮은 정도를 나타낼 때 쓴다.
이 식의 값이 내적과 같으므로
내적은 두 벡터의 유사도를 나타내는 값이 된다.
인공지능에서 중요한 수학 개념을 뽑으라면 당연 미분일 것이다.
인공지능은 함수(가설)를 만들고, 그 함수값과 실제 데이터의 오차를 좁혀가며 함수를 업데이트 하는데
이때 미분을 사용한다.
이 미분을 알려면 극한을 알아야 된다.
극한
미분과 도함수
미분은 함수의 순간 기울기를 말한다.
직선의 방정식은 모든 구간의 기울기가 같지만
곡선의 방정식은 구간별 기울기가 다르므로, 순간순간 기울기가 다르고, 이때 극한을 이용하여 기울기를 구한다.
이것이 순간 기울기이다.
기울기는
y 증가량 / x 증가량
극한의 기울기는?
f(1 + △x) - f(1) = y의 증가량이 되고
x 증가량은 △x이므로
다음과 같이 구할 수 있다.
lim f(1 + △x) - f(1) / △x (x 증가량)
△x -> 0
순간의 기울기를 계속 구하는 것은 비효율적이므로, 이를 수식화 했는데
이를 도함수라고 한다.
이건 솔직히 외우자. 강사님은 외우지 말라고 하셨는데, 외우기도 쉽고, 경험상 너무 많이 쓰인다.
연쇄 법칙
복잡한 수식은 여러개의 함수로 나타낼 수 있다.
예를들어 y = (x^2 + 1)^2를 여러개의 함수로 나눠 보자
1. y = x^2
2. y = x +1
3. y = x^2
x 를 1을 통과시키면 x^2
x^2 를 2를 통과시키면 x^2 +1
x^2 +1을 함수 3을 통과시키면 (x^2 + 1)^2
미분의 정의에 의해 lim의 형태로 분수의 꼴로 나타내고, 이를 양 분수의 분모, 분자의 꼴로 나타내면
미분을 작은 함수들의 도함수들의 곱으로 나타낼 수 있다.
이것이 연쇄 법칙이다. (chain rule)
이런 미분, 도함수, 편미분, chain rule 등을 이해 못해서 대학교 기계학습 강의에서 C+맞았었는데
10분도 안되서 혁펜하임님이 이해시켜줬다.
감사하다.
편미분과 그라디언트
편미분이란?
다변수 함수를 미분할 때 각각에 대해서 미분하는 것!
다변수 함수란?
input이 여러개인 함수!
ex) f(x, y) = yx^2
x에 대한 변화율 -> x 에 대한 편미분
y에 대한 변화율 -> y 에 대한 편미분
방법은? 다른 변수를 상수를 취급하고, 미분해주면 됨.
x에 대한 편미분 yx^2 -> 2yx
y에 대한 편미분 yx^2 -> x^2
그라디언트란?
편미분한 값들을 벡터로 묶어준 것!
테일러 급수
위에서는 cos(x)를 c0 + c1x + c2x^2 + c3x^3... 로 표현하는 예시를 들었다.
어려운 문제 같지만, 양변의 x 에 0 을 대입하면
c0 = 1로 구할 수 있다.
c1은 어떻게 구할까?
cosx = 1 + (c1)x + (c2)x^2 .... 에서 양변을 미분한다.
-sinx = 0 + (c1) + 2(c2)x + 3(c3)x^2... , 이 상태에서 x에 0을 대입한다.
c1 = 0
c2는?
-sinx = 0 + 0 + 2(c2)x... 이 상태에서 양변을 미분한다.
-cosx = 2(c2) + 6(c3x) ...
x에 0 대입
2(c2) = -1
c2 = -1/2
이렇게 미분을 하고, x에 0을 대입하면서
이 급수에 필요한 상수들을 구할 수 있게 된다.
의문 1
다른 조합은 없을까?
결론. 없다. 각각의 상수들이 하는 일이 독립이기 때문
예를들어 x^2 이 표현할 수 있는 것은 x^4로 표현할 수 없음
의문 2
x = 0 근처에서 잘 근사하지만, 항상 잘 근사하는 것은 아님.
위의 함수를 급수로 표현 한 것은 테일러 급수는 아니고, Maclaurin 급수이다.
cn = f^n(0)/n!으로 구할 수 있다.
테일러 급수는 Maclaurin 급수의 오른쪽항 x들 에서 a만 빼주면 됨.
함수를 급수로 잘 근사하는 부분은 a 위치가 된다.
.
테일러 급수에서 수렴을 안하는 부분이 있다.
이미지 만 마지막 줄 공식의 범위에서만 수렴을 하게 된다.
ln(x)를 위의 공식을 넣어서 절대값을 계산해보면
0 < x < 2의 범위를 갖는다.
스칼라를 벡터로 미분하는 법
말이 어려울 수 있는데 함수값이 스칼라가 되고, 함수의 매개변수로 벡터가 들어올 때
벡터가 변할때 스칼라가 어떻게 변하는지 찾는 것이다.
위의 스크린샷에서 x 는 벡터를 뜻하고, 맨 위의 수식의 의미는
dx뒤에 수식은 미분의 결과를 뜻한다.
3번째 줄을 살펴보면, 2dxx^T가 나오는데 dx를 제외하면 2x^T 가 되고, 이게 바로 미분 결과가 된다는 것임.
즉 벡터를 풀어서 계산하는 것이 아닌 벡터인 상태에서 미분을 쉽게 할 수 있음.
또한 f = xx^T 에서 바로 변화량 공식을 사용하면
df = dxx^T + xdx^T = dx2x^T 가 되는것을 알 수 있다.
왜 그라디언트는 가장 가파른 방향을 향할까
내적은 닮은 정도를 나타내므로, 가장 가파른 방향을 나타내려면, 그라디언트 방향과 같아야 되고,
따라서, 그라디언트가 가장 가파른 방향을 향하는 것을 알 수 있다.
로스 함수 자체가 미분을 하기 위해 테일러 급수를 통해 함수를 근사해서 계산한 것이므로
learning rate가 차이가 많이 나면, 근사한 함수가 차이가 많이 나게 된다.
따라서 learning rate 조절이 중요하다.
벡터를 벡터로 미분하는 법
결과 값이 여러개 나오는 경우다.
즉 결과가 벡터로 나오므로 f 가 벡터가 된다.
f2 부분을 벡터 오른쪽에 단순하게 추가해서 행렬로 만들면 된다.
행렬의 중요성이 체감되는 부분이다.
벡터를 벡터로 미분할 때의 연쇄 법칙
벡터를 벡터로 미분하는 방법을 통해 식을 풀면 자연스럽게 위와 같은 방식의 꼴이 나온다.
이것이 벡터를 벡터로 미분할때의 chain rule 이다.
스칼라를 행렬로 미분하는 법
행렬을 행렬로, 벡터를 행렬로 미분하는 법
랜덤 변수와 확률 분포
평균과 분산
균등 분포와 정규 분포
최대 우도 추정 (MLE)
최대 사후 확률(MAP)
정보 이론 기초 (Entropy, Cross-Entropy, KL - divergence, Mutual information)