일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스 42883번
- 원격서버 로컬 동기화
- jupyter 셀 추가 단축키
- 프로그래머스 42885번
- zip 압축해제 명령어
- DeepLabv3+
- Optimization algorithms
- 프로그래머스 42839번
- 프로그래머스 67256번
- MMdetection
- 프로그래머스 67257번
- YOLO detection
- 프로그래머스 보석 쇼핑
- jupyter 명령어 모드 단축키
- 프로그래머스 67258번
- 프로그래머스 43164번
- Kullback-Leibler Divergence
- object detection
- augmentation 이후 이미지 확인
- vscode sftp
- 카카오 보석 쇼핑
- 백준 효율적인 해킹
- 백준 1325번
- 가상환경 확인
- gradient descent optimization
- 가상환경 제거
- pytorch 이미지 확인
- 백준 3190번
- os 확인 명령어
- 프로그래머스 72410번
- Today
- Total
소소한 블로그
[1주차 - Day5] Entropy, Cross-entropy 본문
점점 기록의 중요성을 느끼고 있습니다.
전에 배운 내용이지만 시간이 지나면 자연스레 잊혀지게 되더라구요.
이번 게시물에서 다룰 내용도 전에 배웠지만 까먹은(ㅎㅎ) 개념입니다.
이제부턴, 배웠다는 사실만 남고 내용은 잊혀진 개념들을 마주칠 때마다
블로그 글로 리뷰하려고 합니다.
이번에는 Entropy, Cross-entropy의 개념을 다뤄보겠습니다.
[Impurity Function]
Entropy를 이해하기 위해서는 먼저 impurity function(불순도 함수)를 이해할 필요가 있습니다.
impurity function의 정의는 아래와 같습니다.
쉽게 풀어 쓴다면 impurity function은 (p1, ..., pk)를 input으로 삼고 있습니다.
또한 모든 input값을 합하면 1이 되어야 합니다.
(확률은 음이 아닌 값이며, 총 합은 1이 된다는 것을 참고하세요.)
1. impurity function은 모든 input의 값이 동일할 때 최대값을 가져야 합니다.
간단하게 말하면 모든 경우의 확률 값이 (1/k)일 때 최대값을 가집니다.
이는 모든 경우의 수가 나올 확률이 동일하다는 것인데,
일반적으로 주사위를 던졌을 때 각 면이 나올 확률이 동일한 것을 떠올리시면 됩니다.
2. impurity function은 특정 input의 값이 1이고 이외의 값은 0일 때 최소값을 가져야 합니다.
예를 들면 각 면의 값이 모두 1인 주사위를 던졌을 때 1이 나올 확률을 떠올리시면 됩니다.
3 impurity functio은 input의 순서를 뒤섞어도 항상 같은 값을 가져야 합니다.
이 정의를 봤을 때 impurity function을 쉽게 생각해보자면 '불순도를 측정하는 함수' 로 생각하시면 됩니다.
여러가지 경우의 수가 있고 이중 어떤 case가 발생(event)할 것인지 판단할 때,
모든 case의 확률이 똑같아서 판단을 내리기가 어려운 경우
impurity function의 값이 높게 나온다고 생각하시면 됩니다.
반대로 어떤 경우가 발생할 지 분명하게 추측할 수 있다면
impurity function의 값이 낮게 나옵니다.
impurity function에 대한 설명이 길어졌네요.
이것을 설명한 이유는 Entropy는 impurity function의 한 종류이기 때문입니다!
[Entropy]
엔트로피 지수의 수식은 아래와 같습니다.
$$E(p_{1},...,p_{J}) = -\sum_{j = 1}^{J}p_{j}log_{2}p_{j}$$
이는 아래와 같이 변경할 수 있습니다.
$$E(p_{1},...,p_{J}) = \sum_{j = 1}^{J}p_{j}log_{2}\frac{1}{p_{j}}$$
엔트로피 지수의 수식은 위에서 소개한 impurity function의 3가지 성질을 모두 만족시킵니다.
수식은 아래처럼 생각할 수 있습니다.
log부분을 정보의 양이라고 부르는 것이 와닿지 않습니다. 저 또한 그랬고요.
사실 엔트로피는 정보이론에서 쓰이는 개념입니다.
저같은 경우는 아래와 같이 이해했습니다.
[Cross-Entropy]
딥러닝에서 크로스 엔트로피 수식은 아래와 같이 표현 가능합니다.
$$H(P, Q) = \sum_{j = 1}^{J}p_{j}log_{2}\frac{1}{q_{j}}$$
여기서의 P는 실제 확률분포, Q는 예측 확률분포라고 생각하시면 됩니다.
여기서 Q가 P와 완전히 반대의 값이라면 발산하고,
P와 Q가 비슷한 분포를 띄고 있다면 P의 entropy 값으로 수렴합니다.
정답이 나와있는 경우에는 entropy가 0이되므로 결국 0으로 수렴합니다.
쉽게 정리하면 실제 분포와 예측 분포가 다르다면 값이 크게 나오고
실제 분포와 예측분포가 비슷하다면 값이 작게 나옵니다.
한가지 성질로는 Cross-Entropy 값은 Entropy 값보다 크거나 같습니다.
(증명은 넘어가기로 하겠습니다.)
지금까지 Entropy와 Cross-Entropy에 대해 알아봤는데요,
시간이 된다면 추후 Kullback-Leibler Divergence에 대해서 글을 작성해보려고 합니다.
그럼 이만~
'부스트캠프 AI Tech' 카테고리의 다른 글
[4주차 - Day15] F1 Score (0) | 2021.08.23 |
---|---|
[4주차 - Day15] VSCode ssh 접속 (0) | 2021.08.23 |
[2주차 - Day7] Gradient Descent Optimization Algorithms (0) | 2021.08.12 |
[1주차 - Day4] MLE(maximum likelihood estimation) (0) | 2021.08.06 |
[1주차 - Day3] unittest, mock.patch (0) | 2021.08.04 |