일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 4948
- 손실함수
- end to end
- 백준
- streamlit
- 밑바닥부터 시작하는 딥러닝
- 기계학습
- 파이썬
- 설정
- 15649
- 그리디 알고리즘
- 신경망 학습
- BOJ
- 1101
- 백트래킹
- 1002
- Python
- 재귀
- pyenv
- 경사하강법
- 가상환경
- 개발환경
- N-Queen
- 파이싼
- Mac
- 9020
- n과 m
- 실버
- Today
- Total
파이톨치
[부스트캠프] 인공지능 기초 다지기 - 기초 수학 - 벡터 본문
네이버 부스트 캠프를 지원하려고 봤더니, 프리코드 라는 것이 있어서 정리해보려 한다.
학부 과정에서 봤던 내용들이 새록새록 기억 난다. 봤는데 기억 나지 않는 내용도 있고, 처음 본 내용도 있다.
하지만, 나는 장기 기억력이 그렇게 좋은 편은 아니기에 나중에 다시 보기 위해 정리하려 한다.
다루는 내용의 범위가 너무나 방대하여 시험이 있는 3일 뒤까지 정리해보려 한다.
기초 수학
우선, 기초적인 선형대수와 확률에 대해 다루려 한다.
AI가 학습하는데 있어서 가장 중요한 것은 벡터일 것이다. 때문에 벡터에 대한 수학을 이해하는 것은 기초이다.
벡터와 노름 (Norm)
AI의 학습에서 벡터는 데이터를 표현하는 기본 단위입니다. 벡터를 이해하고 다루는 능력은 머신 러닝과 딥 러닝 모델을 구축하는 데 필수적입니다. 벡터를 다루기 위해 중요한 개념 중 하나가 노름 (Norm)입니다. 노름은 벡터의 크기(길이)를 측정하는 방법으로, 여러 가지 종류가 있지만 여기서는 L1 노름과 L2 노름을 중심으로 설명하겠습니다.
L1 노름 (L1 Norm)
L1 노름은 벡터의 각 성분의 절대값을 모두 더한 값입니다. 수식으로 표현하면 다음과 같습니다:
예를 들어, 벡터 이 주어진다면, L1 노름은 다음과 같이 계산됩니다:
L1 노름은 벡터의 각 성분의 절대값의 합이므로, 벡터의 크기를 측정하는 데 사용됩니다. L1 노름은 희소 벡터를 선호하는 경향이 있어, 데이터의 특정 요소들이 중요할 때 유용합니다. 예를 들어, L1 노름을 사용하는 모델은 많은 요소 중 일부만 중요한 특징으로 고려하여 모델의 복잡성을 줄이고 해석 가능성을 높일 수 있습니다.
왜 희소성이 나타나는가?
L1 노름을 사용하는 최적화 문제, 특히 회귀 분석에서는 LASSO (Least Absolute Shrinkage and Selection Operator)와 같은 기법이 있습니다. LASSO 회귀는 손실 함수에 L1 노름을 포함한 규제를 추가하여 모델을 학습합니다. 이를 통해 가중치 벡터가 희소(많은 요소가 0)하게 되는 경향을 보입니다.
- 가중치 감소 효과: L1 노름을 최소화하려는 과정에서 가중치 벡터의 요소들 중 중요하지 않은 요소들은 0으로 감소합니다. 이는 덜 중요한 특징들을 제거하고, 중요한 특징들만을 남기게 됩니다.
- 비볼록 함수의 특성: L1 노름은 절대값 함수이므로, 각 요소가 0에서 뾰족하게 변화합니다. 이 특성으로 인해 최적화 과정에서 많은 요소가 정확히 0으로 설정될 수 있습니다.
L2 노름 (L2 Norm)
L2 노름은 벡터의 각 성분을 제곱한 값의 합의 제곱근입니다. 수식으로 표현하면 다음과 같습니다:
L2 노름은 유클리드 거리(Euclidean distance)와 관련이 깊습니다. 벡터의 크기를 측정할 때, 모든 성분의 제곱합의 제곱근을 사용하므로, 데이터의 전반적인 분포를 고려하는 데 유리합니다. L2 노름을 사용하는 모델은 벡터의 모든 요소를 균등하게 고려하여, 노이즈에 민감하지 않고 안정적인 성능을 보이는 특징이 있습니다.
두 벡터의 내적
두 벡터의 내적은 선형대수에서 중요한 연산으로, 벡터 간의 유사성을 측정하거나 다른 유용한 정보를 얻는 데 사용됩니다. 내적은 벡터와 관련된 많은 계산의 기초가 됩니다.
두 벡터 a와 b의 내적(점곱, 스칼라곱)은 다음과 같이 정의됩니다:
이는 아래의 기학적인 수식과 동일합니다.
이를 응용하면 코사인 유사도를 구할 수 있습니다.
위 2개의 식에서 a와 b에 대한 길이 값을 왼쪽 항으로 넘겨주면 그것이 코사인 유사도입니다.
그레이디언트 벡터
다변수 함수 f가 주어졌을 때, 그레디언트 벡터 는 각 변수에 대한 편미분으로 구성된 벡터입니다. 수학적으로 다음과 같이 정의됩니다:
는 함수 f를 변수 xi에 대해 편미분한 값입니다.
그레디언트 벡터는 함수 f의 값이 가장 빠르게 증가하는 방향을 가리키며, 그 크기는 증가율을 나타냅니다.
예를 들어, 2차원 평면에서 라는 함수의 그레디언트 벡터
경사하강법은 손실 함수의 기울기(그레디언트)를 이용하여 함수의 최소값을 찾는 최적화 알고리즘입니다.
일반적으로 가중치 = 가중치 - 그레디언트 벡터 연산을 해줍니다.
배치 경사하강법은 전체 데이터셋에 대해 그레디언트를 계산하고 매개변수를 업데이트합니다.
이는 각 반복(iteration)마다 정확한 그레디언트를 계산할 수 있지만, 대규모 데이터셋에서는 계산 비용이 매우 높아질 수 있습니다.
확률적 경사하강법은 배치 경사하강법의 계산 비용 문제를 해결하기 위해 고안되었습니다. SGD는 매 반복마다 전체 데이터셋이 아닌 무작위로 선택된 단일 데이터 포인트(또는 소규모 배치)에 대해 그레디언트를 계산하고 매개변수를 업데이트합니다. 수학적으로는 다음과 같이 나타낼 수 있습니다:
미니배치 경사하강법은 배치 경사하강법과 확률적 경사하강법의 절충안으로, 전체 데이터셋에서 작은 배치(batch)를 랜덤하게 선택하여 그레디언트를 계산하고 매개변수를 업데이트합니다. 이는 배치 크기(batch size)를 조절하여 계산 효율성과 진동 문제를 균형 있게 해결할 수 있습니다.
SGD? 미니배치?
미니배치 경사하강법과 확률적 경사하강법은 모두 경사하강법의 변형으로, 큰 데이터셋을 효율적으로 처리하기 위해 사용됩니다.
SGD는 매 반복마다 단일 데이터 포인트를 사용하여 빠른 업데이트를 가능하게 하지만, 진동 문제로 인해 최적해에 수렴하는 속도가 느릴 수 있습니다.
미니배치 경사하강법은 작은 배치를 사용하여 그레디언트의 분산을 줄이고 안정적 수렴을 도모하며, 하드웨어 가속기(GPU)를 효율적으로 활용할 수 있습니다. 적절한 방법과 배치 크기를 선택하는 것은 데이터셋과 문제의 특성에 따라 달라집니다.
최적화에서 오목과 볼록
'AI&ML' 카테고리의 다른 글
[부스트캠프] 인공지능 기초 다지기 - 딥러닝 - PyTorch (1) | 2024.07.03 |
---|---|
[부스트캠프] 인공지능 기초 다지기 - 기초 수학 - 확률론 (1) | 2024.07.03 |
[CVPR 2022 tutorial] unified image-text modeling (0) | 2024.04.03 |
[코드리뷰] Falmingo (0) | 2024.04.02 |
[computer vision] Vision Transformer(ViT) Clone Code (1) | 2024.03.23 |