장장 8시간 동안 진행되는 무한 통계 지옥 1일차
8시간 동안 끊임없이 강의하시는 강사님과... ュ걸 듣ヱ 있는 ㄴr... 다음 생엔 AI로 태어ㄴr길...
첫 수업이라 익숙한 용어들도 있었지만 뒤로 갈수록 아주아주 생경한 용어들이 마구마구 쏟아졌다.
강사님께서 통계는 AI에서 너무나 중요한 분야이기 때문에 포기하면 안된다고 하셨다. 논문을 읽고, 직접 구현하는 AI Researcher들은 물론이고 이들과 소통해야 하는 AI Engineer도 어느 정도 지식을 알고 있어야 된다고도 하셨다.
강사님께서 개념을 설명하실 때 여러 각도에서 주요 개념들에 대한 정의를 내려주셔서 이해하기 조금 더 수월했다. 언어적 표현, 수식 표현, 코드로 구현된 표현 등으로 설명해주셨다. 강사님께서 알려주신 내용과 더불어 공부하다 모르는 개념들을 추가로 정리해보았다.
PyTorch
PyTorch는 머신러닝과 딥러닝 모델을 구현하기 위한 오픈 소스 딥러닝 프레임워크이다. Facebook AI Research 연구소인 FAIR의 연구원과 엔지니어들에 의해 개발되었다. 다양한 플랫폼에서 동작하고 사용자 친화적인 인터페이스와 작업의 편리성 때문에 산업계는 물론 학계의 연구 논문에서도 딥러닝 개발 시 PyTorch를 많이 사용한다.
Tensor 텐서
텐서란 수학적으로 데이터를 표현하는 가장 기본 단위로 차원에 따라 스칼라(0D), 벡터(1D), 행렬(2D) 같은 데이터로 표현될 수 있다.
# Scalar
scalar = torch.tensor(99.9)
# Vector
vector = torch.tensor([1, 22, 36, 3.5])
# Matrix
matrix = torch.tensor([[12, 74, 32], [34, 12, 8], [86, 23, 2]])
위의 코드는 스칼라, 벡터, 행렬을 표현한 것으로 모두 torch.tensor()로 만든 객체인데 이는 모두 텐서이며 스칼라, 벡터, 행렬은 텐서의 하위 개념이라 볼 수 있다.
Scalar 스칼라
단일 값으로 표현, 0차원 텐서
Vector 벡터
순서가 있는 여러 값으로 표현, 1차원 텐서
Matrix 행렬
벡터들이 모여서 형성된 행과 열로 표현, 2차원 텐서
Norm of Vector 노름
노름은 벡터가 원점에서 얼마나 떨어졌 있는지를 의미한다. 노름에는 L1 노름, L2 노름, L∞ 노름 등 여러가지 유형이 존재한다.
L1 노름
L1 노름은 벡터의 모든 요소의 절댓값의 합으로 정의한다.
L1 노름은 맨해튼 노름으로 불리기도 한다. 뉴욕 맨해튼은 격자형 도로망으로 되어 있어서 두 지점 사이의 거리를 이동하려면 가로와 세로 방향으로 이동해야 하는데 이 모습이 L1 노름과 유사해서 그렇다고 한다.
# L1 노름
v = torch.tensor([1, 1], dtype=torch.float32)
l1_norm = torch.norm(v, p = 1)
L2 노름
L2 노름은 벡터의 모든 요소의 제곱합의 제곱근으로 정의한다.
L2 노름은 유클리드 노름이라고 불리기도 한다. 유클리드 공간에서 두 점 사이의 거리를 계산하는 방법과 같기 때문이다.
# L2 노름
v = torch.tensor([1, 1], dtype=torch.float32)
l2_norm = torch.norm(v, p = 2)
L∞ 노름
L∞ 은 벡터에 포함된 모든 요소의 절댓값 중 최댓값으로 정의한다.
# L∞ 노름
v = torch.tensor([1, 2], dtype=torch.float32)
linf_norm = torch.norm(v, float('inf'))
위의 모든 개념들이 머릿속에서 단번에 정리되는 건 아니었지만 통계의 중요성과 어려움 모두 확실히 느낄 수 있었던 첫날이었다. To be continued.