일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- convolution
- skip-gram
- Charlse Severance
- pytorch
- f1-score
- object detaction
- 1x1 Convolution
- 동시발생 행렬
- deep learning
- Long Short Term Memory
- 시소러스
- CBOW
- Gated Recurrent Unit
- 상호 정보량
- Linear algebra
- Python
- nn.Module
- GoogLeNet
- Multi-Layer Perceptron
- mlops
- 파이썬
- 분포 가설
- docker
- 벡터 간 유사도
- 선형대수
- 차원 감소
- dl
- py4e
- pythonForEverybody
- excel
- Today
- Total
목록분류 전체보기 (31)
Tech & TIL
Transformer 다음에 나온 논문으로, NLP 분야에서 꼭 알아야 하는 BERT 논문을 리뷰해보자. Table of contents 개요 이전 연구와의 차이점 메인 결론 BERT : Pre-training of Deep Bidirectional Transformers for Language Understanding 1. 개요 BERT - 트랜스포머 기반 양방향 인코더 표현 주요 특징 - Pre-training - Unlabeled Data - Bidirectional - MLM(Masked Language Modeling) - NSP(Next Sentence Prediction) 효과적인 분야 - QA (Question Answering) - Language Inference 2. 이전 연구와의 차..
"밑바닥부터 시작하는 딥러닝 2"을 기반으로 정리한 내용입니다. Word2Vec은 앞서 살펴보았던 통계 기반 기법의 단점을 보완하고자 나온 추론 기반 기법이다. 통계 기반 기법에서는 주변 단어의 빈도를 기초로 단어를 표현했었다. 구체적으로는 동시발생 행렬을 만들고 PPMI 행렬로 변환하고 SVD로 차원을 감소시킴으로써, 거대한 sparse vector를 작은 dense vector로 변환할 수 있었다. 통계 기반 기법은 말뭉치 전체의 통계(동시발생 행렬과 PPMI 등)를 이용해 단 1회의 처리(SVD 등) 만에 단어의 분산 표현을 얻는다. 한편, 추론 기반 기법에서는, 예컨대 신경망을 이용하는 경우는 미니 배치로 학습하는 것이 일반적이다. 그림 1을 보면 통계 기반 기법은 전체 학습 데이터를 모두 사용해..
"밑바닥부터 시작하는 딥러닝 2"를 기반으로 정리한 내용입니다. 자연어를 컴퓨터에게 이해시키려면 "단어의 의미"를 이해시켜야 한다. 지금부터 컴퓨터에게 단어의 의미에 대해 학습시킬 수 있는 3가지 기법에 대해 알아보자. 시소러스를 활용한 기법 통계 기반 기법 추론 기반 기법(Word2Vec) 시소러스 시소러스(thesaurus)는 쉽게 말해 유의어 사전이다. 사람이 직접 단어의 의미를 정의하는 방식을 생각해볼 수 있다. 아래 그림을 보면 이해가 쉬울 것이다. 검색 엔진을 예로 들어, "automobile"과 "car"가 유의어임을 알고 있으면 "car"의 검색 결과에 "automobile"의 검색 결과도 포함시켜주는 것과 같은 기법이다. 그렇다면 시소러스의 문제점은 무엇이 있을까? 시소러스는 수많은 단어..
한국어, 영어, 중국어 등 우리가 평소에 쓰는? 말을 자연어(natural language)라고 한다. 개발자들이 일반적으로 사용하는 C, Java, Python과 같은 언어는 기계적이고 고정되어 있는 프로그래밍 언어인 반면, 자연어란 한국어나 영어와 같은 "부드러운" 언어를 말한다. 부드러운 언어인 자연어를 처리해서 컴퓨터에게 이해시키기 위한 기술을 자연어 처리(Natural Language Processing)라 한다. 하지만 기계가 사람이 하는 말을 이해한다는 것이 가능할까? 가능하다. 이미 자연어처리는 우리의 실생활에 밀접하게 연관되어 있다. 검색 엔진, 기계 번역, 질의응답 시스템, 감정분석 등 다양한 분야에서 자연어 처리가 사용되고 있다. 앞으로 NLP에서 사용하는 기본적인 기법에 대해 정리할..
[CLASS] torch.nn.Module 공식문서에 따르면 torch.nn.Module 은 PyTorch의 모든 Neural Network의 Base Class이다. 모듈은 다른 모듈을 포함할 수 있고, 트리 구조로 형성할 수 있다. 공식문서에 예제를 코딩해보면서 감을 잡아보자. import torch.nn as nn import torch.nn.functional as F class MyModel(nn.Module): def __init__(self): super(Model, self).__init__() self.conv1 = nn.Conv2d(1, 20, 5) self.conv2 = nn.Conv2d(20, 20, 5) def forward(self, x): x = F.relu(self.conv1..
Pytorch는 tensor가 모든 것의 기본 구성 요소이다. 하지만 공식 문서를 읽어보면 torch.tensor와 torch.Tensor가 있다. 둘의 차이점은 무엇일까? torch.Tensor Class int 입력시 float으로 변환 torch 데이터 입력시 입력 받은 데이터의 메모리 공간을 사용 list, numpy 데이터 입력 시 입력 받은 데이터를 복사하여 새롭게 torch.Tensor를 만든 후 사용 torch.tensor Function int 입력시 int 그대로 입력 받은 데이터를 새로운 메모리 공간으로 복사 후 사용
Python, PyTorch, TensorFlow 등 대중화된 언어, 라이브러리, 프레임워크들은 개발자들이 본인들이 만든 언어나 라이브러리에 대해 자세하게 작성해놓은 설명서가 존재한다. 하지만 그런 오픈소스 툴을 사용하는 개발자들은 구글링에 의존하는 경향이 크다고 생각한다. 물론 아직 개발을 시작한 지 얼마 되지 않았다면 영어로 된 공식문서를 읽는 것보단 구글링으로 블로그 글 등을 읽는 것이 더 도움이 된다. 빠르게 원하는 정보를 찾을 수 있기 때문이다. 하지만 숙련도가 조금 올라가면 블로그에서 다루는 것으로는 부족한 경우가 많아진다. 예를 들면 어떤 함수의 파라미터로 어떤 값을 전달해야 하는지는 블로그 글만 읽으면 내가 원하는 정보를 찾을 수 없다. 이때 필요한 것이 공식문서를 보는 것이라고 생각한다...
딥러닝을 할 때, 코드는 처음부터 다 짜야할까? 죽을수도있다.. 남이 만든걸 쓴다. 자료 많고 관리 잘 되고 표준이다. 딥러닝 프레임워크 리더는 PyTorch(facebook)와 TensorFlow(google) PyTorch와 TensorFlow의 가장 큰 차이는 Computational graph가 Static한지 Dynamic한지가 있다. Computational Graph란 연산의 과정을 그래프로 표현한 것. TensorFlow: Define and Run, 그래프를 먼저 정의하고 -> 실행시점에 데이터 feed, 실제 제품 생산 production 영역에선 장점이 있다. PyTorch: Define by Run, 실행하면서 그래프를 생성하는 방식, 디버깅할 때 이점을 가짐. 최근 파이토치 사용량..
앞서 배웠던 모델들은 이미지 데이터를 기반으로 예측하는 모델을 소개했었다. 이번에는 이미지 데이터가 아닌 Sequential 데이터를 input으로 가지는 모델을 공부해보자. 먼저 Sequential Data란 순서가 있는 데이터를 말한다. 대표적으로 글이나 말 등이 sequential data이다. Naive sequence model Recurrent Neural Network 앞의 정보가 뒤의 정보에 영향을 미쳐야 하기 때문에, 정보를 레이어 뒤쪽으로 전달하는 구조를 갖고 있는 네트워크를 RNN이라 한다. RNN은 짧은 sequential data에서는 잘 동작하지만 sequence가 길어지면 앞의 정보가 뒤에 레이어까지 전달되지 않는 문제가 발생한다. 이를 Short-term dependenc..
Semantic Segmentation : "의미론적인 분할" 정도로 해석할 수 있다. 이 과정에서 Fully Convolutional Network (fully connected layer 와는 다름!) 이 사용된다. Convolutionalization 과정을 통해 CNN 마지막 레이어에 있는 FC layer를 Convolution 연산으로 바꾸는 과정이다. Convolutionalization을 해도 그림에서 보이는 바와 같이 파라미터 수에는 변화가 없다. 그렇다면 왜 FC layer를 Convolution layer로 바꾸게 될까? 위 그림처럼 기존 FC layer를 Output Layer에 사용하게 되면 softmax나 sigmoid activation function을 통해 인풋 이미지가 "고..