20201231
글쓰기 시간, git에 대해서 배우는 시간, python jupyter notebook을 접한 날.
오후에는 git에 대해서 간략하게 내가 설명하는 시간을 가졌다. 내가 누구에게 설명할 자격이 있을까.
20210104
오전시간 : fundamental node 수행 시간
파이썬의 기초에 대해서 다루는 노드였는데, 의외로 어려운 개념들이 있었다.
1. 부동소수점 표현방식
IEEE의 표준을 따라서 bias를 채택해서 부동소수점을 표현하는 방식을 사용하면 다음과 같이 부동소수점을 bit에 담게 된다.
1비트는 부호, 8비트는 지수, 32비트는 가수부에 사용된다.
그리고 지수값을 저장할 때, 지수값을 2의 보수법으로 바꾸고 거기에 bias(127)을 더한다. bias는 2^8-1의 값.
2. 0.1 + 0.2 == 0.3 의 결과
놀랍게도 false였다. 왜냐면 1의 부동소수점 표현방식 때문에 처음에는 literal type으로 선언된 float이
계산하면서 0.3의 근접한 값을 가지게 되면서 literal 0.3과 값이 달라지게 되는 것이다.
여기에서 실제로 저 값을 계산하게 되면 0.300000000004쯤의 값을 보게 된다.
오후 시간 : C231N 3강 ~54p
2강에 대해서 복습하고 있는 시간.
C231N 3강
저번에는 함수 f(x) -> y를 다룰 때, f에 W가 사용된다는 것 까지 도출함.
그렇다면 구한 W가 적합한지 아닌지 스코어를 어떻게 구해내는가?
Loss-function에 대한 소개를 할 것이다.
임의의 값 W가 적합한지를 찾고 싶은데, 이 과정을 최적화 과정이라고 한다.
Loss function은 이 W를 가지고 학습했을 때 라벨과 학습 결과를 비교하고 distance를 구해서,
각 경우의 값들을 모두 합해서 평균을 내는 일을 한다. Loss function의 결과를 줄이는 것이 목표.
multi-class SVM : 여러 class를 다루기 위한 SVM
어떻게 loss를 구하는가?
Loss function은 이 W를 가지고 학습했을 때 라벨과 학습 결과를 비교하고 distance를 구해서,
각 경우의 값들을 모두 합해서 평균을 내는 일을 한다. Loss function의 결과를 줄이는 것이 목표.
정답이 아닌 클래스 스코어에 대해서
sum(max( 해당 클래스의 스코어 - 원래 클래스의 스코어 + 1 , 0 ))
근데 safety margin이 왜 1인가?
정답 스코어가 다른 스코어에 비해 얼마나 더 높은 값을 가지고 있느냐에 관심을 가지고 있기 때문에
(loss값이 얼마나 되는가),
1은 별로 상관없어지고, W 행렬곱을 하기 때문에 나중에 사라진다.
Q. 1을 주는 이유가 값을 보정하기 위해서 주는 걸까...?
Q. 정답 스코어는 왜 빠지는데요?
A. loss function에 영향을 줄 수도 있기 때문에.
L이 0이 나오더라도 W는 하나가 아닐수 있다. 2W도 답이 될 수 있다.
최종적으로 test data에서 L이 적게 나오는 W을 구해야 한다.
Regularization : L이 단순한 값을 가질 수 있도록 정리하는 역할. => 모델이 복잡해 지는 것을 막고, 복잡한 모델에 패널티를 부여하는 역할
가정 : 더 단순한 가정이 미래에 일어날 현상을 잘 설명할 수 있기 때문에, 단순한 가정을 택하는 것이 좋다.
overfitting을 막을 수 있다.
이 항이 있으면 저차원 모델 + soft penalty(복잡하게 나오는 모델 계속 쓰게 되면, 불리하게 된다..?)를 추가하는 것이 된다.
L2 regularization : 선형 함수를 유도하기 위한 패널티
L1 regularization : -> 단순한 모델에 적합하다.
cf) softmax도 자주 쓰인다. (Multinomial Logistic Regression) -> loss값에 의미를 부여하게 된다.
loss값을 확률 분포로 구하게 된다. 정확히 예측했다면 L이 1이 나오겠지.
exponential -> normalize과정을 거쳐 loss값을 구하게 된다.
softmax의 최소값은 0이고 최대값은 무한대이다. 하지만 최대값이 무한대가 나올 일이 없는게, 그러면 L값이 0에 근접해야 한다.
SVM에서는 정답 스코어와 아닌 값의 차이에 대해 다루고, softmax는 -log(정답 클래스)을 도출해서 해당 클래스로 분류될 확률값을 다루게 된다. softmax의 경우 정답 클래스의 결과를 최대한 높이고, 나머지 클래스의 결과를 최대한 낮추려고 한다.
SVM은 일정 마진을 넘으면 ok인데 softmax의 경우는 계속해서 최적화하는 방향으로 나아갈 것이다.
그렇다면 실제로 어떻게 W를 구할 것인가?
=> Optimization
(추후 보강 예정)
'Technology > AIFFEL 대전' 카테고리의 다른 글
[AIFFEL] DAY 3 (9) | 2020.12.30 |
---|---|
[AIFFEL] DAY 1-2 (6) | 2020.12.30 |