ML이란?
- 컴퓨터가 특정 패턴을 배우고 분석하는 것
- Feature(독립적으로 측정가능한 것, ML model의 입력으로 쓰인다.) Space에 '선'을 긋는 것
- Feature와 Label에 의해 정의된 train data로부터 decision boudary를 찾는 것
초기에는 하드코딩, 형식적이었지만.
현대는 컴퓨터가 경험을 배우고, 데이터에서 패턴을 추출해 지식을 얻을 줄 알게 되었다.
여러 종류가 있고, 예를 들어 그 중 이미지 데이터 쪽을 봐보겠다.
Object Detection은 네모 박스로 object가 있는 부분을 detect하는 것,
Instance Segmentation은 객체의 형태를 따라 선을 따고, 그 덩어리가 어떤 객체인지 파악하는 것이다.
DL은,
여러 Layer를 쌓는 것이고, Layer를 쌓을 수록 더 고차원적인 정보로 발전한다. 즉, 깊어질수록 더 깊은 의미/개념을 담게 된다.
그럼 왜 이제야 DL을 사용하게 됐냐면,
일단 데이터가 많아졌고, 컴퓨터 자원이 풍부해졌기 때문이다.
이를 이해하기 위한 기초적인 수학 지식을 조금 다져보겠다.
Tensor로 표현했을 때, scalar(ex, class label)는 0-d, vector(ex, feature vector)는 1-d, matrix는 2-d이다.
이후 RGB img는 3-d(w*h*c), batch of RGB img는 4-d (bs*w*h*c) , batch of videos는 5-d (bs*time*w*h*c) 이다.
행렬의 기본 법칙은..
(AB)' = B'A'
AB =/= BA
A(B+C) = AB+AC
A(BC) = (AB)C
x'y = y'x (vector)
Tr(ABC)=Tr(CAB)=Tr(BCA)임! 나머지는 안 같음.. ABC를 두 덩이로 나눠서 교차 가능. 뭔말이냐면
A/BC -> BCA, AB/C -> CAB 이렇게 되는 것
이고, 추가로 만약 연산기호에 동그라미가 쳐져있다? 그건 element-wise 연산임.
이건 연산을 당하는 두 행렬의 shape가 같아야 한다 그래서 각 자리끼리의 연산이 일어나는 것이다.
Diagonal matrix : 대각원소만 값이 있고, 비대각 원소는 모두 0인 행렬
Symmetric matrix : A=A'
Orthogonal matrix : A'=inv(A), 즉 A'A=AA'=I
앞으로 Norm이라는 것을 자주 접하게 될 것인데, 이건 0과 벡터간의 거리유사도를 나타내는 것이다.
L1-norms는 각 절댓값들의 합, L2-norms는 root(각 절댓값 제곱의 합), max-norms는 max|x|, *L0-norms는 #nonzero elements
확률 분포를 간단히 알아보겠다.
이산형 분포 (데이터 분포가 2, 3, 4 이렇게 돼있는 거, 예를 들어 옷 사이즈 s, m, l)의 밀도함수는 pmf
연속형 분포 (데이터 분포가 연속적, 예를 들어 키)의 밀도함수는 pdf
즉 pmf는 막대그래프 느낌 pdf는.. 일반적으로 생각하는 확률분포 느낌..~ 선으로 연결됨
Joint는 결합확률분포를 말하는데, P(x) 이런 게 아니라 P(x, y) 이렇게.. 여러 feature를 고려한다고 보면 된다.
만약 이때 x, y가 독립이라면? P(x, y) = P(x)P(y)로 쉽게 구할 수 있다.
Marginal 확률은 P(X=3) 이런걸 말하는데, 예를 들어 x와 y가 있는 분포에서 y값에는 상관없이 X가 3인 애들을 모두 찾아서 더하면 된다!
조건부확률은 P(Y|X)=P(X^Y)/P(X) 이렇게 생겼는데, 이걸로 chain rule이 가능하다.
예를 들어 P(a, b, c) = P(a|b, c)P(b|c)P(c) 이렇게!
글고 이렇게 P(Y|X)는 'X하다는 가정 하에' Y를 말하는 거고, P(Y)는 그냥 Y를 말하는 거라..
전자가 정보가 더 많음. 따라서 이렇게 생긴 것들이 더 확실함.
예를 들어서 GPT한테 '딥러닝에서의 Optimization에 대해 알려줘'라고 하는 거랑 'Optimization에 대해 알려줘'라고 하는 거랑 정보량의 차이가 있을 것이다.
이 조건부확률을 이용한 '베이즈 정리'라는 것이 있다. 내 생각엔 주어진 확률 정보가 몇 없을 때 요리조리 돌려쓰게 만든 편법같다.
예시를 보여주겠다.
(p30-31이미지첨부)
나이브 베이즈
이것도 예시 보여줌
분산은 데이터가 평균으로부터 얼마나 떨어져있는가에 대한 것으로, E[(f(x)-E[f(x)])^2] 이렇게 구할 수 있다.
공분산은 feature가 두 개일 때 그 각각이 얼마나 연관있는가를 나타내는 것으로, E[(f(x)-E(f(x))(g(y)-E(g(y))] 이렇게 구할 수 있다.
베르누이 분포는 x가 0또는 1밖에 되지 않는 경우의 분포이다.
따라서 P(x=1)=p라 하면, P(x=x)=p^x * (1-p)^(1-x)로 나타낼 수 있다. 글고 여기서 평균은 p, 분산은 p(1-p)가 된다.
가장 자주 접할 가우시안 분포는 정규분포라고도 불린다.
만약 이 분포의 평균이 0이고 분산이 1인 경우가 있다면, 그건 표준정규분포라고 불린다.
중심극한정리(CLT)는 독립변수들이 많이 합쳐지면 정규분포에 근사되는 것이다.
그냥.. sample size가 커지면 거의 정규분포에 근사한다고 보면 된다.
그리고 서로다른 간단한 분포를 결합한 것이 임의 분포가 된다..
정보이론
rare한 경우일수록 정보가 많다. 즉, '한국에서는 매일 해가 뜬다' 이런 문장은.. 별 정보가 없다.
따라서 100%인 정보(엔트로피)=0, 균일분포는 정보량 많음
이 엔트로피는 log에 의해 표현되기에 그 밑에 따라 여러 종류가 있다. 섀넌은 2, nat는 e, hartley는 10의 밑을 가진다.
보통 섀넌을 쓰기에 섀넌으로 알아보겠다.
정보량은 -log2P 로 구할 수 있다. (P<1 이므로 앞에 -를 붙인 것)
정보 엔트로피는 -Sigma(pi*logpi)로 구할 수 있다.
Cross Entropy는 두 분포의 차이를 나타낸다. 이게 중요한 게, 내가 추론해낸 분포와 실제 분포간의 차이를 측정할 수 있다.
예를 들어 H(P, Q)= -Sigma(pi*logqi)로 나타낼 수 있는데, 이건
'내가 이 데이터가 q 분포를 따를 것이라 예상했는데, 실제로는 p 분포를 따를 때의 차이'를 말한다.
그래서 이 CE는 분류문제에서도 쓰일 수 있다. GT와 Label의 차이로.
이때, 그럼 H(Q, P)는 안되냐?고 할 수 있는데,
일단 수학적으로 P는 0 or 1(분류 label)인데 이걸 log에 넣을 수가 없음
그리고 저렇게 쓰면 의미가 이상해짐. 실제 분포인 p를 예측 분포인 q에 맞추려는 의미가 됨
Kullback-Leibler divergence
동일한 변수 x에 대해 두 분포 p(x)와 q(x)간 차이를 말한다.
수식으로 나타내면 Sigma(p(x)*log[p(x)/q(x)])가 되어 두 분포가 같다면 KL-D는 0이 된다.
서로 다른 두 분포간 차이를 나타냈기 때문에 당연히 Kl-d 분포는 비대칭이 된다.
그리고.. CE를 KL-D를 이용해 나타내면,
H(P, Q) = H(P) + D_kl(P||Q)가 된다.
'AI > 딥러닝' 카테고리의 다른 글
| Regularization (1) | 2025.04.24 |
|---|---|
| 족보 (1) | 2025.04.24 |
| Perceptron, MLP (0) | 2025.04.24 |
| ML basics, Model capacity (0) | 2025.04.23 |
| DL Basic.. + Optimization (0) | 2025.04.23 |