본문 바로가기

오늘의 코딩/머신러닝,Deep Learning

(9)
[딥러닝 구조] tf https://github.com/MrGemy95/Tensorflow-Project-Template MrGemy95/Tensorflow-Project-Template A best practice for tensorflow project template architecture. - MrGemy95/Tensorflow-Project-Template github.com torch https://cs230.stanford.edu/blog/pytorch/ Introduction to Pytorch Code Examples This post follows the main post announcing the CS230 Project Code Examples. Here we explain some details ..
[NLP] 단어임베딩 정리 # 4.21. 1차 수정 단어임베딩 (개요) 1. 신경망은 비선형적 차원 축소를 통해 특징을 효율적으로 추출할 수 있다. 2. 그러나 비선형적 차원 축소는 계산 비용이 매우 비싸고 최적화가 어렵다. 3.비선형적 방법을 이용하지 않고서도 성능이 좋은 단어임베딩을 구현한 알고리즘이 word2vec / GloVe 알고리즘 종류 : word2vec (skip-gram&CBOW) / GloVe Word2Vec CBOW : 주변에 나타나는 단어들을 원핫인코딩된 벡터로 입력받아 해당 단어를 예측 skip-gram : 대상 단어를 입력받아 주변에 나타나는 단어를 예측하는 네트워크를 구성해 단어 임베딩 벡터를 학습 (분류문제-softmax사용) Negative Sampling : 전체 단어 집합에 대하여 임베딩을 조정하..
자연어 처리 시작! word embedding 특정 인물이 어떤 사람인지 알기 위해서는 어떻게 해야 할까? 한 방법으로는 그 사람의 주변인을 보면 된다는 말이 있다. 그렇다면 특정 단어의 특징을 알기 위해서는 어떻게 해야 할까? 마찬가지로 그 단어가 어울리는 단어를 확인하면 된다. Word Embedding은 이런 생각에서 나온 것 같다. 각 단어(token)을 One hot encoding 을 하면 모든 단어 벡터 사이의 거리가 같다. 모든 단어는 서로 독립적이라는 뜻인데, 전혀 그렇지 않다. 예를 들어, '강아지'와 '고양이'는 비슷한 카테고리이지만, '강아지'와 '날다'는 거의 관계가 없다. 이처럼 벡터 공간에 token을 뿌릴 때, 연관성이 높은 단어는 근처에, 연관성이 떨어지는 단어는 멀리 token 벡터를 배치해야 할 것이다. word e..
[ML]Regularization에 대하여 Concept of bias and variance ML model의 hypotheses를 평가하는 기준은 무엇인가? 단순히 모델의 정확도만을 가지고 판단하기엔 불안하다. 99개의 참인 데이터와 단 1개의 거짓인 데이터에 대하여 항상 참밖에 모르는 바보같은 모델을 평가한다고 상상해보라! 모델의 성능을 평가하는 또하나의 기준으로 우리는 모델을 평가하는 기준의 하나로 실제값과 예측치 간의 에러를 평가 기준으로 삼을 수 있다. 이때 에러는 두 가지의 관점에서 발현된다. 1. Approximation 2. Generalization Approximation 근사에 의한 에러 ML는 현실의 데이터를 예측하기 위해 SVM이나 logistic 등 특정한 learning algorithm을 사용한다. 그러나 algor..
재밌는 분야[적대적 훈련(Adversarial training)] 적대적 훈련이란 적대적 훈련 Adversarial training은 regularization의 한 방법이다. 머신러닝, 딥러닝 분야에서 regularization은 overfitting을 막고 모델을 robust하게 만들어주기 위해 사용한다. 딥러닝 모델은 Input data를 학습하여 적절한 label을 반환하는 것을 목적으로 훈련을 진행한다. Adversarial attack은 반대로 이미 훈련된 모델에 대하여 입력 데이터를 잘못 예측하도록 Input을 조작하는 것을 말한다! (Adversarial attack) 이미지 데이터를 input으로 받는 CNN의 경우 정답 Y에서 내가 원하는 예측값Y'를 반환하도록 조금씩 이미지의 픽셀을 수정한다. 그렇다면 이러한 공격에 대하여 어떻게 방어할 수 있는가?..
pytorch transfer learning 모델 설정 중 에러.. 1. Traceback (most recent call last): File "/home/pirl/PycharmProjects/untitled2/SVHN_transfer_test.py", line 285, in num_epochs=25) File "/home/pirl/PycharmProjects/untitled2/SVHN_transfer_test.py", line 189, in train_model loss = criterion(outputs, labels) File "/home/pirl/PycharmProjects/untitled2/venv/lib/python3.6/site-packages/torch/nn/modules/module.py", line 532, in __call__ result = sel..
[pytorch] 데이터 불러오기 1. 데이터셋 불러오기 모델 학습에 사용할 데이터셋을 불러오고, 변형한다. torchvision.datasets.데이터셋 명( root, train = True , transform = None, target_transform = None, download = False) #데이터셋 종류 MNIST, Fashion-MNIST, KMNIST, EMNIST, QMNIST, FAKEDATA, COCO, LSUN, IMAGENET, CIFAR, SVHN 등 #파라미터 root - 데이터셋을 저장할 디렉토리 위치 train - 다운받을 데이터셋 종류(train/val/test) download - True로 할 경우, 인터넷에서 데이터셋을 root 경로에 다운받는다. 데이터가 있을 경우, 재다운하지 않는다. tr..
[pytorch] require_grad, zero_grad(), no_grad() 차이 Autograd-자동미분 grad가 붙은 함수는 대부분 gradient 계산에 사용한다고 보면 된다. pytorch에서는 신경망에서 역전파 단계의 연산을 자동화하는 자동미분 기능을 제공한다. 신경망의 순전파 단계를 지나 역전파 과정에서 autograd 기능을 이용하여 변화도(gradient)를 쉽게 계산할 수 있다. 구현은 다음과 같다. #loss 는 Tensor 연산을 사용하여 계산한 손실값으로 (1, ) 형태의 Tensor로 정의한다. loss.backward() 이 함수는 backpropagation을 수행하여 x.grad에 변화도를 저장한다. require_grad require_grad = True로 설정하면 역전파 중에 이 Tensor들에 대한 변화도를 계산하라는 의미가 된다. 계산한 변화도는..