본문 바로가기

자연어 처리 과정

(62)
CNN을 이용한 sequential data processing 1. CNN for NLP https://reniew.github.io/25/ NLP를 위한 CNN (1): Understanding CNN for NLP An Ed edition reniew.github.io -> 자연어 데이터를 이용한 분류 문제 즉, 감정 분석 등의 task에서 좋은 성과를 보여준다. 2. CNN for forecasting task using sequential data https://machinelearningmastery.com/how-to-develop-convolutional-neural-networks-for-multi-step-time-series-forecasting/
CBOW와 skip-gram 개요 1. 자연어를 컴퓨터에게 이해시키기 위한 노력과 Word2vec 2. CBOW 3. Skip-gram 4. 마무리 1. 자연어를 컴퓨터에게 이해시키기 위한 노력과 Word2vec 인공지능의 분야에서 자연어 처리는 컴퓨터가 자연어를 다룰 수 있도록 하는 분야이다. 여기에서 자연어란 인간의 언어를 의미한다. 즉, 자연어 처리라는 분야는 컴퓨터가 인간의 언어를 이해할 수 있어야 하며, 그 이해를 기반으로 여러 가지 task를 해결해낼 수 있도록 한다. 그렇다면, 도대체 어떻게 컴퓨터가 인간의 언어를 이해할 수 있다는 것일까? 컴퓨터는 0과 1이라는 입력으로 많은 것을 해낸다. 결국, 자연어를 컴퓨터에게 이해시키기 위한 시작도 0과 1이 될 수밖에 없다는 것이다. 우리는 자연어를 벡터 형태로 변환하여 컴퓨..
Adam optimizer의 hyperparameter에 따른 학습 불가 issue 개요 1. 문제 상황 2. 원인 파악 및 대처 3. 결과 4. 더 나아가서 1. 문제 상황 Numpy로 Adam optimizer를 구현하여 MLP 학습에 사용하려고 한다. 식을 구현하는 데에 있어서 토대가 된 Adam optimizer의 수학식은 아래와 같다. 초기에 m과 v값이 너무 작아서 결과적으로 파라미터의 값을 업데이트 할 때 적응형 lr이 너무 커지게 된다. 이에 따라, 초기 이동이 너무 먼 곳으로 이동하게 될 수 있다. 즉, 초기 학습에서 편향이 생길 수 있는 가능성이 존재하게 된다. 그래서 이를 방지하기 위해, 구한 m과 v값에 1-Beta값을 나눠주는 식을 추가해주었다. 이러한 식을 추가해줌으로써, 맨 처음 m과 v값이 0일 때에도 즉, m과 v값이 작을 때에도 적당한 값의 파라미터 업데..
Sigmoid function의 forward, backward 과정 개요 0. Notation 1. Sigmoid function의 forward 2. Sigmoid functioin의 backward 3. Sigmoid function의 식 간소화와 의의 4. 마무리 0. Notation 글을 진행하기에 앞서, sigmoid function의 식을 다음과 같이 정의하려고 한다. 1. Sigmoid function의 forward Sigmoid function의 forward 과정을 계산 그래프로 그려서 확인해보자. 그 모습은 위의 사진과 같다. 그렇다면, 이 계산 그래프를 토대로 backward를 진행하면 어떤 연산들이 이뤄질까? 2. Sigmoid function의 backward Sigmoid function의 backward 과정을 계산 그래프로 그려서 확인해보자..
해석학적 미분과 수치 미분 개요 1. 해석학적 미분이란? 2. 수치 미분이란? 3. 전방, 후방, 중앙 차분 4. 마무리 실제로 신경망 학습의 backpropagation에서 gradient를 구하기 위해서 쓰이는 미분 방식은 아니지만, backpropagation 과정에서 미분이 사용되는 것은 명확하다. 그 이유는 gradient descent를 위해서는 기울기값을 구해야 하기 때문이다. -> backpropagation에서 gradient를 구할 때는, 미분식을 구해놓고 거기에 x만 대입해서 기울기값을 구하는 식과 가깝다. 따라서, 미분에 대해 알아보려고 한다. 미분은 두 가지로 나누어 설명할 수 있다. -> 해석학적 미분, 수치 미분 1. 해석학적 미분이란? 해석학적 미분은 수학에서 원하는 진정한 미분값을 구하는 것이라고 할..
Training with SAM optimizer 개요 Accumulation을 사용하는 상황에서 sam optimizer를 사용할 때 어떻게 학습 코드를 작성하면 좋을지 알아보자! Task는 QA(mrc) task로 설정한다. 1. Sam optimizer 기본 사용법 2. Accumulation을 적용한다면? 3. 마무리 1. Sam optimizer 기본 사용법 Sam optimizer를 사용하는 데에 있어서 다른 optimizer와의 차이점은 바로 두 가지가 있다. - loss backward를 2번 밟는다. - optimizer의 step을 2번 밟는다. 그렇다면 이에 대한 코드를 어떻게 작성해야 하는 걸까? 정말 다행스럽게도, 이곳에 sam optimizer를 사용하는 기본적인 방법에 대해 설명이 되어 있다. 위에서 설명했던 차이점 그대로 m..
Flat minima VS Sharp minima 개요 Flat minima와 sharp minima의 특징을 알아보자. 1. Flat minima 2. Sharp minima 3. 마무리 1. Flat minima 위에서 볼 수 있는 사진으로 우리는 flat minimum과 sharp minimum이 어떤 모양인지 확인할 수 있다. 검정색 선은 training data에 대한 inference를 했을 때의 loss 값을 나타낸 graph이고, 빨간색 점선은 test data에 대한 inference를 했을 때의 loss 값이라고 보면 된다. training data와 test data는 다를 것이기 때문에, data가 다르다는 것을 표현하기 위해 조금 shifted 되어 있다. Flat minima의 특징 모델이 flat minima에 수렴하게 되면 ..
When an activation function is non-zero centered why it invokes zig-zag path? https://rohanvarma.me/inputnormalization/ Downsides of the sigmiod activation and why you should center your inputs Software Engineer @ Facebook rohanvarma.me
Contiguous는 도대체 뭘까? 개요 torch에 존재하는 contiguous()가 도대체 어떤 method인지 알아보자. 1. contiguous란 무엇인가? 2. 마무리 Contiguous란 무엇인가? Contiguous의 의미 무작정 contiguous라는 영단어의 의미부터 살펴보자면 "인접하고 있는", "근접한"이라는 의미가 나타난다. 어떤 메시지를 전달하려는지는 파악이 되지 않더라도 contiguous가 뭔가가 붙어있어야 한다는 뉘앙스를 풍긴다는 것만 인지하자! Contiguous의 이해 t = torch.tensor([[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]) 위와 같은 tensor가 하나 있다고 생각해보자. t라는 tensor는 현재 아래와 같은 모양으로 저장되어 있다. 그렇다면 메모리..
Pruning이란? https://techy8855.tistory.com/17 [논문 정리] Learning both Weights and Connections for Efficient Neural Networks 최근 model compression 에 관심이 생겨, 논문을 찾아보던 와중, 인용 수가 높아보여서 읽어본 논문이다. 코드는 해당 깃헙을 참고하였다. 해당 논문은 network pruning 기법을 사용한다. network pruning 이란 techy8855.tistory.com