분류 전체보기 232

ML - RNN(3) / Long-term dependencies / Truncated / gradient 폭발&소실 / clipping / tradeoffs

문제 1. Long-Term Dependencies Long-Term Dependencies : sequence data에서 이전 시간 단계의 정보가 현재 또는 미래 시간 단계에서의 예측에 영향을 미치는 경우를 말한다. Long term denpendesncies로 인하여 time 구간이 너무 길어서 가장 끝에 있는 loss function이 앞쪽에 있는 입력단까지 잘 전달이 되지 않을 수 있다. CNN에서 Layer가 깊어지면, update하는 과정에서 gradient가 잘 흘러가지 않는다. RNN도 마찬가지로 time step이 길어지면 출력값에 대해서 bptt를 통해 update되면서 gradient가 소실될 수 있다. h2에서의 loss function이 있다면, RNN에서는 그 이전 모든 영역에..

ML - RNN(2) / character-level language model / one-hot encoding / Ground Truth / auto regressive

Character-level language model Word level Language model : 주어진 텍스트나 문장을 이해하고 다음 단어나 토큰이 무엇일지 예측하는 잡업을 수행할 때 사용되는 것이 Language model이다. 예측은 문장의 맨 끝의 단어도 가능하고, 문장 중간에 있는 단어를 target word로 하여 예측하는 작업을 수행할 수도 있다. 구글이나 네이버에 어떠한 단어의 조합을 검색할 떄, 내가 자성하고 있는 단어 뒤에 올 단어를 이어서 검색창 아래쪽에 연관 검색어로 보여주는 것이 이에 해당한다. 완벽한 문장에 구멍을 뚫어, RNN과 같은 model에 앞 단어들을 순차적으로 넣어주고, 마지막 출력을 예측하도록 한다. 이렇게 수많은 데이터를 학습하며 문맥 관계를 파악하고, 이렇..

ML - RNN(1) / sequence data / many to one / one to many / hidden state weight / BPTT

Temporal Modeling [contents] 1. Recurrent Neural Networks (RNN) 2. Long Short-Term Memory (LSTM) 3. Transformer : Self-Attention Recurrent Neural Networks (RNN) Sequence Data : RNN은 Sequence data를 처리하는 모델이다. Sequence data는 순서대로 처리되어야하는 data이며 음성인식, 자연어처리 등이 이에 포함된다. 자연어의 경우 단어 하나만 안다고해서 처리될 수 없고, 앞뒤 문맥을 함께 이해해야 해석이 가능하다. 따라서 지금까지 배운 neural network나 CNN만으로는 할 수 없다. 순차적으로 들어온느 입력을 그림으로 표현하면 위와 같다...

Python - 파일 읽고 쓰기 / readline vs readlines / read / 읽기모드

04-3 파일 읽고 쓰기 파일 생성 에디터에 다음과 같이 작성하면, 프로그램을 실행한 디렉토리에 새로운 파일이 생성된다. 파일을 생성하기 위해 파이썬 내장함수인 open을 사용한다. [파일 열기 모드] 다음과 같이 파일 객체를 생성할 때, open함수의 입력값으로 파일 이름과, 파일 열기 모드를 받아야한다. 파일 열기 모드에는 r,w,a, 세가지가 있다. 파일을 읽거나, 내용을 쓰거나, 새로운 내용을 추가할 때 각각 상황에 맞는 열기 모드를 사용하여 open 함수를 통해 파일을 생성하거나 다루 수 있다. 파일을 쓰기 모드로 열어 출력값 적기 write함수를 사용하여 file에 data를 작성하는 코드이다. 보통은 값을 에디터 화면에 출력하는 방식을 많이 사용하나 위 예시는 값을 파일 내에 작성해가는 방식..

ML - Computational Graph & Backpropagation / upstream & downstream & local gradient

Computational Graph Gradient loss function은 결국 W에 대한 함수이기 때문에, 특정 W에서의 편미분을 통해 gradient(기울기)가 낮은 방향으로 가면, loss를 줄일 수 있다. 결국 gradient는 편미분들로 구성되어있는 일종의 vector라고 볼 수 있다. 각 weight에 대해서 편미분되므로 여러개의 가중치가 있을 때에는 하나의 편미분 값이 아닌, vector로 표현될 수 있다. Backpropagation How to compute gradients? : layer가 20개 이상으로 너무 deep하거나 너무 복잡하면, loss funciton이 너무 복잡해져, 이것을 편미분하는 계산 과정이 너무너무너무울트라슈퍼똥방구 복잡해진다.... 위 식처럼 이미 loss..

ML - Neural Networks (NN) / Tensor / flattening / non-linear / activation function / ReLU

Neural Networks Flow of Tensors Neural Network의 module들은 결국 tensor들의 flow이다. input tensor와 중간중간의 featur map tensor들이 계속해서 흘러가는 것이며 그것들이 또 다른 module 의 input 으로 주어지는 흐름으로 neural network가 구성된다. Tensor : scalar부터 vector,matrix 등을 모두 총칭하는 general한 용어이다. scalar는 0차원 tensor, vector는 1차원 tensor, matrix는 3차원 텐서라 할 수 있으나, 기준점을 어디에 두냐에 따라 차원은 달라질 수 있다. tensor에서 차원은 보통 축의 개수를 의미한다. Neural Networks (NN) [ Ar..

Python - 사용자 입출력 / input / print / 문자열 출력 / end 이어쓰기

사용자 입력 input //사용자 입력 : 사용자가 입력한 값을 변수에 대입하고 싶을 때에는 input함수를 사용한다. 입력값을 받기 위한 설명을 넣고 싶을 때에는 input함수의 parameter자리에 큰 따옴표를 포함하여 작성한다. 다음과 같이 코드를 작성하면 위와 같이 input으로 작성한 값이 name으로 들어가 출력된다. print //출력 - 기본 구조 print 함수의 파라미터 자리에 숫자,문자열, 리스트 를 넣으면 해당 값이 출력된다. - 큰따옴표 연결 위와 같이 큰따옴표로 구분하여 파라미터 자리에 연속해서 넣으면 해당 문자열들이 이어져 하나의 문자열로 출력된다. +를 통해 문자열들을 더한 것과 동일하게 출력된다. 허나, 위에 출력된 것을 보면 띄어쓰기가 되지 않아 문장으로 읽기 어렵다. ..

Python - 함수 / 입력 개수 모를 때 / keyword parameter / parameter 초기값 / global 변수

04-1 함수 함수 사용 이유 : 보통 똑같은 내용을 반복해서 작성해야할 때 사용되며, 어떤 입력값을 주었을 때 결과값을 돌려주는 식으로 작성된다. 함수 구조 함수는 def라는 예약어를 통해 만들어낼 수 있다. if문과 동일하게 함수 내용을 구성하는 부분은 콜론(:)을 통해 표현한다. 위와 같이 입력값과 결괏값이 있는 함수가 가장 일반적인 함수의 구조이다. [return 값이 없는 함수] 허나, 결과값이 없는 함수도 존재한다. 위 함수를 실행했을 때, 함수 내에 구현된 print 될 값이 출력되는 것은 확인할 수 있으나, 다음과 같이 a에는 아무런 값이 들어가지 않는다. 위에서 정의한 add함수는 return값이 없기 때문이다. 매개변수(parameter)와 인수(argument) 지정 없이 순서대로 그..

ML - Gradient Descent / SGD / learning rate / global & local optimum / epoch / mini-batch

How do we find the best Weight(W)? (Gradient Descent) Gradient Descent - Gradient Gradient는 특정값에서의 기울기를 의미한다. - Loss function loss는 W가 어떻게 되냐에 따라 달라진다. 따라서 loss function은 W에 대한 함수로 표현될 수 있다. 처음에는 임의의 initial weight가 들어가기 때문에 loss가 높을 수 있다. loss값이 낮아지게 하려면 기울기가 0인 쪽으로 가까워져야 한다. w의 변화량 식에 대해 알아보자. 먼저 loss 함수를 weight값에 대해 편미분하여 기울기를 구한다. 기울기가 0인 지점보다 우측에서는 기울기가 양수로 나오는데 기울기가 0인 지점과 가까워지도록 하려면 w값이 작..

ML - Classifier(2) / Softmax Classifier / one-hot vector

Softmax Classifier Softmax Classifier : 요즘은 SVM보다 softmas classifier를 더 많이 사용한다. Softmax classifier는 raw classifier score를 확률적으로 해석할 수 있도록 해준다. 위 예시로 설명해보았을 때, 지금 classifier가 image에 대해 cat일 확률은 13%, car인 확률은 87%로 추정하고 있다. 대소 비교 뿐만 아니라 확률적으로 접근하여 좀 더 직관적으로 해석할 수 있다. 확률적 접근을 위해 전처리 과정이 필요하다. - [전처리 과정] 1. 모든 score들을 모두 양수로 바꾸어주는 작업을 한다. 확률로서 다루려면 모든 수가 양수여야 하므로, e^x라 하는 지수함수를 사용하여 값을 모두 양수로 바꾸어준다...