(23.12.28) Fully connected layer (Affine layer) 이전까지의 신경망 layer 는 모두 fully connected layer 였다. (== Affine layer) fully connected layer 에서는 인접하는 layer 의 모든 뉴런이 연결되고, 출력 노드(뉴런)의 개수를 임의로 정할 수 있었다. -> but, 이미지 (w, h, c) 3차원 데이터가 flatten 1차원 데이터가 되어버리는 문제점이 존재한다. -> 예를 들어 MNIST 데이터는 28x28x1 이미지인데, 신경망에 넣을때, 784개의 1차원 데이터로 입력한다. -> fully connected layer (Affine layer) 는 데이터의 형상이 무시된다. --> 이미지의 RGB 각 채..
(23.12.18) 최적화 : 매개변수의 최적값을 찾는 것. 즉, 신경망의 학습에서는 손실함수의 결과값을 최솟값으로 만들기 위한 손실함수의 매개변수 최적값을 찾는 것을 말한다. 최적의 매개변수 값을 찾기 위해서 미분을 이용하였다. -> gradient descent, back propagation SGD, Momentum, AdaGrad, Adam ㄴSGD 는 방향에 따라 기울기가 달라지는 함수에서는 탐색경로가 비효율적이다. 가중치 초기값 설정 Xavier 초기값과 He 초기값 Batch Normalization - 학습 속도 개선 - 초기값 의존도 down - overfitting 개선 => mini-batch 단위로 정규화를 진행한다. 데이터 분포가 평균이 0, 분산이 1이 되도록 정규화한다. Ove..
(23.12.04) 가중치 매개변수의 기울기 구하는 방법 - 수치 미분: 단순하고, 구현하기 쉽다. but, 시간이 오래걸린다. - back propagation: 효율적인 계산이 가능하다. 계산그래프 위와 같이 왼쪽에서 오른쪽으로 계산을 진행하는 것을 "순전파: forward propagation" 이라고 한다. 계산 그래프는 "국소적 계산"을 전파하여 최종결과를 낸다. (국소적 계산: 자신과 직접 관계된 작은 범위) -> 아무리 복잡해도 각 노드에서는 단순한 계산이 이루어진다. 계산 그래프는 중간 계산 결과를 모두 저장할 수 있으며, 역전파를 통해 미분을 효율적으로 계산할 수 있다. 연쇄 법칙 : 합성 함수의 미분은 합성함수를 구성하는 각 함수의 미분의 곱으로 나타낼 수 있다. 덧셈 노드의 역전파 곱..
(23.11.27) 학습 - train data 로 부터 weight, bias (가중치 매개변수) 의 최적값을 얻는 것이다. ===> 신경망이 학습할 수 있도록 하는 지표를 loss function 이라고 한다. - 학습의 목표: loss function의 결과값을 가장 작게 만드는 weight, bias 를 찾는 것 - 신경망은 end-to-end machine learning 이라고도 한다. ==> 입력부터 출력까지 사람의 개입이 없다는 의미. 데이터의 구분 : train + test - train data 를 통해 학습하고, 최적의 weight, bias 를 찾는다. - test data 를 통해 학습한 모델의 성능을 평가한다. - 하나의 data 로 학습하고, 해당 data 로 평가하면, 그 성..
(23.11.20) 퍼셉트론의 한계: 선형적으로만 문제를 해결할 수 있음. --> 비선형 활성화 함수를 사용하여 여러개의 층을 쌓고, 비선형적으로 문제를 해결할 수 있게 됨. 신경망 - 여러 층으로 구성되어 있으며, 비선형 활성화 함수를 사용한 다층 퍼셉트론 - 2단계를 거쳐 문제를 해결 - 학습데이터를 통해 가중치 매개변수 학습 - 학습한 매개변수를 사용하여 입력 데이터에 대해 추론 활성화 함수 (activation function) - 입력신호의 총합을 출력신호로 변환하는 함수 - 입력신호의 총합이 활성화를 일으키는지 정하는 역할 활성화 함수 - step function - 단층 퍼셉트론에서 사용하는 원시적인 activation function 이다. - 0에서 출력이 불연속적이다. => 0에서 기울..
(23.11.13) 퍼셉트론 - 프랑크 로젠블라트. 1975년 고안 - 신경망 (딥러닝) 의 기원이 되는 알고리즘 - 다수의 신호를 입력으로 받아 하나의 신호를 출력 -> y가 어떠한 임계값을 넘으면 1을 출력, 넘지 못하면 0을 출력 -> 가중치가 클수록, 해당 신호가 그만큼 중요하다는 것을 의미 논리회로 AND 게이트 NAND 게이트 OR 게이트 XOR 게이트 - 베타적 논리합 - x1, x2 중 하나만 1일 경우에만 1을 출력 -> XOR 게이트의 입력과 출력을 좌표평면에 표현해보면, 어떠한 직선으로 영역으로 나눌 수 없다는 것을 알 수 있다. ====> 퍼셉트론의 한계 !! AND, NAND, OR 게이트를 조합하여 XOR 게이트를 만들 수 있다. -> AND, OR, NAND 는 단층 퍼셉트론 ..
(23.05.14) https://github.com/gompaang/algorithm_python GitHub - gompaang/algorithm_python Contribute to gompaang/algorithm_python development by creating an account on GitHub. github.com Count sort (계수 정렬) 모든 데이터가 양의 정수이고, 데이터의 범위가 제한 적일 경우에 사용하면 매우 빠르다. 시간 복잡도와 공간 복잡도는 O(N+K) 이다. 동일한 값을 가지는 데이터가 여러 개 등장할 때 사용하기에 적합하다. # count sort def count_sort(array): count = [0] * (max(array)+1) result = []..
(23.05.14) 정렬 알고리즘 정리!! https://github.com/gompaang/algorithm_python GitHub - gompaang/algorithm_python Contribute to gompaang/algorithm_python development by creating an account on GitHub. github.com selection sort : 선택 정렬 1. 가장 작은 수를 선택하여 맨 앞의 수와 자리를 바꾼다. 2. 그 다음으로 가장 작은 수를 선택하여 맨 앞에서 두번째 수와 자리를 바꾼다. 3. 위의 과정을 반복한다. def selection_sort(array): for i in range(len(array)): min_index = i for j in ..
(23.03.31) algorithms S. Dasgupta, C. H. Papadimitriou, and U. V. Vazirani (2008) 책 읽고 정리하기 http://algorithmics.lsi.upc.edu/docs/Dasgupta-Papadimitriou-Vazirani.pdf 정리한 내용 6.5 chain matrix multiplication chain matrix muliplication - 행렬 곱셈 연산에서 곱셈 순서를 다르게 하면, 곱셈 cost도 달라지는데 최소의 cost로 곱셈 연산을 할 수 있도록 하는 방법을 dynamic programming 알고리즘을 통해서 알아낼 수 있다. - 아래와 같이 A, B, C, D 행렬의 곱셈 순서를 다르게 하면 cost가 다르다. - T..
(23.03.30) algorithms S. Dasgupta, C. H. Papadimitriou, and U. V. Vazirani (2008) 책 읽고 정리하기 http://algorithmics.lsi.upc.edu/docs/Dasgupta-Papadimitriou-Vazirani.pdf 정리한 내용 6.4 Knapsack 예전에 수업들으면서 정리했던 내용: https://hey-stranger.tistory.com/140 Knapsack - 최대 무게가 정해져있는 배낭 안에 value가 최대가 되도록 물건을 담는 방법을 찾는 문제이다. - knapsack은 중복을 허용하여 물건을 선택하는 경우와 중복을 허용하지 않고 물건을 선택하는 경우로 나누어 생각해 볼 수 있다. knapsack with re..
(23.03.29) algorithms S. Dasgupta, C. H. Papadimitriou, and U. V. Vazirani (2008) 책 읽고 정리하기 http://algorithmics.lsi.upc.edu/docs/Dasgupta-Papadimitriou-Vazirani.pdf 정리한 내용 6.3 Edit distance Edit distance - edit distance: 어떤 두 단어(문자열)가 같아지도록 하기 위해 수행해야하는 연산의 수 (minimum number of edits) - 예를 들어 edit distance를 해결한 예시를 살펴보면 아래와 같다. - edit distance by dynamic programming - edit distance algorithm by ..
(23.03.29) algorithms S. Dasgupta, C. H. Papadimitriou, and U. V. Vazirani (2008) 책 읽고 정리하기 http://algorithmics.lsi.upc.edu/docs/Dasgupta-Papadimitriou-Vazirani.pdf 정리한 내용 6.1 Shortest paths in dags, revisited 6.2 longest increasing subsequences Dynamic Programming - dynammic programming의 핵심은 문제를 한 번만 풀도록 하는 것이다. - 하나의 problem을 sub-problem으로 계속해서 쪼개고, 가장 작은 sub-problem부터 해결함으로써 더 큰 sub-problem을 ..
(23.03.25) algorithms S. Dasgupta, C. H. Papadimitriou, and U. V. Vazirani (2008) 책 읽고 정리하기 http://algorithmics.lsi.upc.edu/docs/Dasgupta-Papadimitriou-Vazirani.pdf 정리한 내용 5.2 Huffman encoding ---> prefix encoding 예전에 수업들으면서 정리했던 내용: https://hey-stranger.tistory.com/152 Huffman encoding - 빈도수에 따라서 문자를 bit로 표현하는 방법이다. - 빈도수가 높을수록 더 적은 bit, 빈도수가 낮을수록 더 많은 bit으로 표현한다. - 이를 표현할 때 prefix-free encodin..
(23.03.24) algorithms S. Dasgupta, C. H. Papadimitriou, and U. V. Vazirani (2008) 책 읽고 정리하기 http://algorithmics.lsi.upc.edu/docs/Dasgupta-Papadimitriou-Vazirani.pdf 정리한 내용 5.1 Minimum spanning trees -> prim's algorithm Prim's algorithm - dijkstra와 비슷한 방법으로 priority queue를 사용한다. - priority queue에다가 weight를 저장하여 가장 작은 weight을 가진 노드를 꺼내는 방식으로 진행한다. 꺼낸 노드에 인접한 노드의 cost와 edge의 weight을 비교하여 더 적은 값으로 업..