일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MachineLearning
- 백준
- 백준 1339
- 백준 1916 자바
- 3745
- 1107번
- 짝지어제거하기
- 자바
- 1916
- 알고리즘
- GPT
- 머신러닝
- 클린코드
- 다익스트라
- 알렉스넷
- 백준 1339 자바
- deeplearning
- 1261
- 논문
- NLP
- Java
- 백준9095
- 관심사분리
- 딥러닝
- cs231n
- 논문리뷰
- dijkstra
- Alexnet
- 디미터법칙
- 논문구현
- Today
- Total
목록머신러닝&딥러닝 (7)
산 넘어 산 개발일지
Optimization 가중치를 최적화하는 방법, 혹은 가중치를 업데이트하는 방법을 말한다. Optimization에도 여러가지가 있다. 각 Optimization은 이전 기법의 단점을 보완하는 형태로 등장했고, 최근에는 어느 한 가지가 좋다!라는 느낌보다는 상황에 따라서 골라서 사용하는 추세이다. SGD 가장 초기에 사용된 optimizer이다. 기존의 Gradient Descent의 경우 한 번 학습할 때 모든 데이터를 봐야 하는데 이 때문에 속도가 너무 느려서 고안되었다. SGD는 전체 데이터에서 mini-batch라는 소규모 그룹을 뽑아서 이들을 가지고 loss를 계산한 뒤 가중치를 갱신하는 것이다. 그러나 다음과 같은 상황에서 문제가 발생한다. 이렇게 최적점을 찾아가는데 진동 현상이 있을 수 있..
Weight Initialization(가중치 초기화) 방법 1. 모두 0으로 초기화 이 경우 W가 모두 같으므로, 모든 뉴런이 같은 일만 하게 되는 문제점이 있다. 또한 모든 W가 모두 같기 때문에 업데이트도 항상 같은 값으로 업데이트된다. 방법 2. 작은 수로 초기화 이런 식으로 무작위으 작은 수로 초기화하는 방법도 생각해볼 수 있다. 그러나 이경우 얕은 네트워크에서는 작동하지만, 네트워크가 깊어질수록 작동하지 않는다. 정상적으로 작동하지 않는 첫 번째 이유는, 모든 W가 작기 때문에 layer가 거듭될수록 출력되는 activation 이 점점 작아지기 때문이다. 이는 곧 0으로 수렴하게 된다. 두 번째 이유는 역전파에 있다. 역전파 시 계산하는 Gradient는 위에서 내려온 미분값 * 현재 미분 ..
Activation Functions Activation function은 한 뉴런(혹은 레이어)에서 값을 출력할 때 사용되는 함수이다. 즉 가장 최종적인 연산이라고 생각하면 된다. 이 Activation function에도 여러 종류가 있다. 가장 최초로 나온 것은 Sigmoid이며, 이에 대한 보완책으로 여러 함수들이 개발되었다. 이 함수들에 대해서 각각 어떤 문제점을 보완했는지, 단점은 무엇이 남아있는지를 공부하고자 한다. Sigmoid 함수는 일정한 범위 내에서(약 [-4, 4])는 선형적인 모습을 보이지만, 이를 벗어나면 비선형적인 모습을 보인다. 이는 뉴런의 "firing rate"를 적절히 해석했다는 점에서 장점이 있지만, 3가지 단점이 있다. 첫 번째는 saturate 되는 부분, 즉 뉴런..
Fully Connected Layer (FC layer) Fully Connect Layer(이하 FC layer)는 보통 CNN 모델들의 마지막 분류기에서 사용된다. 보통 W라는 가중치에서 한 줄의 원소들이 모두 input 원소들과 곱해져 하나의 activation 노드를 형성하기 때문에 Fully-Connected(모두 연결된)이라는 용어를 쓰는 것 같다. W라는 가중치는 input -> output으로 만들어주므로 당연히 그 사이즈는 (inputSize x outputSize) 이다. 이를 통해, activation 노드 하나는 W의 특정한 가중치를 통해 input 전체를 본다고 할 수 있겠다. Convolution Layer Convolution Layer는 한 이미지를 필터들을 통해 연산을 하..
Backpropagation 기본 원리 위 그래프에서 초록색 숫자는 forward feed 시에 계산되는 숫자들이다. 그리고 Backpropagation을 위해 맨 마지막 노드인 f에서부터 시작을 한다. 맨 처음 받는 값은 df/df이므로 1이다. f노드에 해당하는 식은 q*z 이므로 q에대한 f의 미분은 z이고, z에 대한 f의 미분은 q이다. 따라서 아래와 같은 결과값들을 얻을 수 있다. 이 때, "A에 대한 B의 미분" 이라 함은 "B에 대한 A의 영향력" 이라고 해석할 수 있다. 즉 A가 바뀌는 정도에 따라서 B가 얼만큼 바뀌는지를 정의한 식이다. q에 대한 f의 미분을 알았으니, 다음으로는 x, y 에 대한 f의 미분(f에 대한 x, y의 영향력)을 구해야 한다. 이를 구하기 위해서 "Chain..
Loss Functions 1. Multiclass SVM loss 설명 Multiclass SVM loss는 정답 score와 비정답 score 간의 차이로 손실함수를 계산하는 방식이다. 이 때 중요한 점은 score의 정확한 값보다는 정답 scroe와 비정답 score간의 상대적인 차이에 집중한다는 점이다. 시그마에서 j = yi를 빼는 이유는 Loss의 이론적 최소 값을 0으로 맞추기 위함이다. 만약 j = yi가 식에 포함된다면, Sj - Syi + 1 = 1이 되므로 Loss의 최소 값이 0이 될 수 없다. 디버깅 초기 W의 설정은 주로 0과 비슷한 작은 값으로 설정한다. 즉 Sj 와 Syi가 매우 흡사해지므로, 초기 W가 잘 설정되어 있다면 Total loss = (Class 개수) - 1 이..
Kaggle Competition 주소 : www.kaggle.com/c/santander-customer-transaction-prediction/overview Santander Customer Transaction Prediction Can you identify who will make a transaction? www.kaggle.com Clone할 Kaggle code 출처 : www.kaggle.com/gpreda/santander-eda-and-prediction/notebook Santander EDA and Prediction Explore and run machine learning code with Kaggle Notebooks | Using data from Santander Cu..