일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- scikit learn
- pandas
- 데이터 전처리
- ML
- SQL
- 통계
- r
- 회귀분석
- 데이터분석
- 코딩테스트
- 머신러닝
- 이코테
- 이것이 코딩테스트다
- 자격증
- Python
- 시각화
- ADsP
- 딥러닝
- Google ML Bootcamp
- matplotlib
- 데이터분석준전문가
- 데이터 분석
- 파이썬
- 태블로
- pytorch
- tableau
- Deep Learning Specialization
- SQLD
- sklearn
- IRIS
- Today
- Total
목록pytorch (10)
함께하는 데이터 분석
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bn0ZRS/btrNyGtbF9G/2OCJI1PPflyS7daCBdLZM1/img.png)
생성적 적대 신경망이란 생성적 적대 신경망(generative adversarial network) GAN은 심층 신경망의 발전에 힘입어 2014년 처음 소개된 학습 방식 gernerative(생성적)는 기존의 분류 모델들이 하던 역할은 데이터에서 특성들을 뽑아내고 이를 통해 데이터를 구분하는 것과 달리 생성 모델들은 데이터 자체를 생성해 냄 adversarial(적대적)는 생성 네트워크와 구분 네트워크 간의 상반되는 목적 함수로 인해 적대성이 생기게 되는데 예를 들면 위조지폐를 만드는 사람(생성 네트워크)과 위조지폐 감별사(구분 네트워크)가 있고 처음에는 쉽게 감별이 되겠지만 감별사를 속이는 것을 목표로 계속 학습하고 생성하다 보면 점점 감별사가 구분하기 어려운 수준까지 생성. 이때 위조지폐 생성자는 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/NJez2/btrM2rh0i6c/NoicJBxuFtHOcn9DzNCFPk/img.png)
정규화 학습 데이터에서는 잘 동작하는데 테스트 데이터에서는 학습이 제대로 안 된다면 단순히 오버피팅 문제가 아니라 두 데이터의 분포가 달라서인 경우도 존재 왼쪽이 학습 데이터 오른쪽이 테스트 데이터라 하면 학습 시 결과가 잘 나오던 모델도 테스트 시에는 결과가 좋지 않게 나올 수밖에 없을 것임 또한 학습 시에도 데이터 간의 분포가 다르다면 각 분포에 맞춰 변수가 업데이트될 테니 그 데이터를 그대로 쓰면 학습조차 제대로 안될 것임 이럴 때 필요한 것이 정규화(normalization) 데이터를 정규화 하는 방법은 여러가지가 있는데 대표적인 방법으로 표준화(standardization)가 있음 표준화는 데이터에서 평균을 빼고 표준편차로 나눠주는 과정을 거치는데 이렇게 되면 평균은 0, 분산은 1이 되어 데이..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/vCJUk/btrM2qi5R3u/f7kK9y8bp54uWUfPz9yk31/img.png)
학습률 적절한 모델, 적절한 초깃값을 설정했음에도 학습률에 따라 모델의 학습이 달라짐 학습률은 손실에 대한 가중치를 구하고 그 값과 학습률을 곱해서 변수들을 업데이터 하는데에 사용됨 학습률이 너무 높다면 업데이트 방향이 맞아도 너무 크게 업데이트 되고, 너무 낮다면 지엽적인 공간에서의 극솟값에만 도달하므로 전체 손실 공간에서의 극솟값에 도달할 수 없게 됨 따라서 적절한 학습률을 찾아야 모델이 학습을 잘하고 전체 손실 공간에서 극솟값을 찾을 수 있음 보통 실무에서는 초기에 비교적 높은 학습률로 시작하여 점차 학습률을 낮추는 전략을 취함 하지만 이 방법이 정석은 아니고 오히려 배치 사이즈를 늘리는 게 더 좋다는 연구도 있음 학습률을 점차 떨어뜨리는 방법을 학습률 부식이라고 하는데 이와 관련된 파이토치 함수들..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/UN6Mr/btrMU516usY/ks81x7kF44CYlpQ0k3SmKk/img.png)
초기화 모델을 학습할 때 주어진 입력과 결과, 그리고 정답 값을 통해 가중치를 학습하게 됨 최적의 가중치가 존재한다고 가정하면 그 가중치 역시 어떠한 값이기 때문에 그 최적의 값과 가까운 지점에서 시작할수록 빠르게 수렴할 수 있을 것 하지만 최적의 지점 자체가 우리가 모르는 어떤 목푯값이기 때문에 근처에서 시작한다는 말 자체가 성립할 수 없음 대신 모델이 학습되는 도중에 기울기 소실 현상이나 기울기 과다와 같은 현상을 겪지 않게 하거나 손실 함수 공간을 최적화가 쉬운 형태로 바꾸는 방법을 택함 이러한 방법 중 하나로 가중치의 초기화(initialization)가 있고 그 중 대표적인 방법으로 Xavier Glorot 초기화와 Kaiming HE 초기화가 있음 Xavier Glorot 초기화 논문 : ht..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/1eDkd/btrMIXoY6ze/hXrxK1VeTgeEy2rAKUL9Fk/img.png)
RNN 모델 구현 import torch import torch.nn as nn import string import random import re import time, math num_epochs = 2000 print_every = 100 plot_every = 10 chunk_len = 200 hidden_size = 100 batch_size = 1 num_layers = 1 embedding_size = 70 lr = 0.002 필요한 하이퍼 파라미터를 지정 # import 했던 string에서 출력가능한 문자들을 다 불러옴 all_characters = string.printable # 출력가능한 문자들의 개수를 저장 n_characters = len(all_characters) print(..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cQ7F4d/btrME2JP8sB/ftROplglVQEOJSacI0rpHK/img.png)
모델 구현 import torch import torch.nn as nn import torch.optim as optim import numpy as np from tqdm.notebook import tqdm n_hidden = 35 # 순환 신경망의 노드 수 lr = 0.01 epochs = 1000 string = "hello pytorch. how long can a rnn cell remember? show me your limit!" chars = "abcdefghijklmnopqrstuvwxyz ?!.,:;01" char_list = [i for i in chars] n_letters = len(char_list) 예시에서 사용할 문장은 'hello pytorch. how long can ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bpfB44/btrMDgJinS4/wZgqpOC0HLH5Kq6yuoa7kK/img.png)
순환 신경망의 발달 과정 순환 신경망(RNN)은 합성곱 신경망보다 먼저 나왔음 위키피디아에 따르면 1982년 존 홉필드가 순환 신경망의 기본적인 형태를 대중화했다고 알려져 있지만, 해당 아이디어가 이때 처음 나온 것은 아니고 이전에도 언급된 적이 있음 이때 만들어진 순환 신경망이 오늘날의 순환 신경망의 형태로 오기까지는 꽤 많은 시간이 걸렸는데, 발전된 연산 능력과 데이터의 증가로 인해 성과를 보일 수 있게 된 것 특히 발전 과정에서 나온 LSTM(long short-term memory)과 GRU(gated recurrent unit)같은 변형 모델들은 오늘날에도 많이 사용되고 있음 순환 신경망이 왜 필요한지를 살펴보면 TRIANGLE과 INTEGRAL이라는 글자는 같은 알파벳들의 나열이지만 순서가 다..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dWfS7n/btrLNvOru1r/khjKGjDJaJ5dcrzns61jqK/img.png)
모델 구현 import torch import torch.nn as nn import torch.optim as optim import torch.nn.init as init from tqdm.notebook import tqdm import matplotlib.pyplot as plt torch.nn에는 신경망 모델들이 포함 torch.optim에는 경사 하강법 알고리즘이 들어있음 torch.nn.init에는 텐서에 초깃값을 주기 위해 필요한 함수들이 있음 tqdm 라이브러리를 사용하여 상태진행률을 확인할 수 있음 num_data = 1000 num_epoch = 10000 noise = init.normal_(torch.FloatTensor(num_data,1), std=1) x = init.unif..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/C1siq/btrLOgvqael/cgZV7IiZJLu38Pk6okj641/img.png)
신경망이란 무엇인가 인공 신경망(Artificial Neural network)은 생물학적 신경망에서 영감을 얻어 만들어짐 생물학적 신경망은 여러 자극이 가지돌기들을 통해 신경세포로 들어오고 어느 정도 이상의 자극이 들어오면 이를 축식을 통해 다른 세포로 전달하는 구조 인공 신경망은 여러 자극 혹은 입력이 들어오면 각각 가중치를 곱해 더해주고 추가적으로 편차도 더함. 이렇게 다 더한 값을 활성화 함수(activation fuction)를 통해 변형하여 전달하는 단위를 인공 뉴런이라 하고 이러한 뉴런들이 모인 네트워크를 인공 신경망이라고 함 인공 신경망의 요소 입력층은 들어온 신호를 그대로 다음 노드에 전달하는 창구 역할로 가중합이나 활성화 함수를 계산하지 않고 시스템 외부로부터 입력자료를 받아들여 시스템..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bhjfTN/btrLE8SdYRF/UOWO9KwmdPupYsIAZPLKuK/img.png)
Pytorch란? 파이토치는 2017년 초에 공개된 딥러닝 프레임워크로 GPU를 활용하여 인공 신경망 모델을 만들고 학습시킬 수 있게 도와줌 Numpy라이브러리에 비해 계산이 간단하고 병렬 연산에서 GPU를 사용하므로 CPU보다 속도면에서 월등히 빠름 유명한 딥러닝 프레임워크인 텐서플로(tensorflow)는 'Define and Run' 방식으로 연산 그래프를 먼저 만들고 실제 연산할 때 값을 전달하여 결과를 얻고 파이토치(Pytorch)는 'Define by Run' 방식으로 연산 그래프를 정의하는 것과 동시에 값도 초기화되어 연산이 이루어지고 연산 속도도 빠르고, 적어도 밀리지는 않음 Pytorch 설치하기 https://pytorch.org/ PyTorch An open source machine..