일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 이것이 코딩테스트다
- 파이썬
- IRIS
- 태블로
- 데이터 분석
- Deep Learning Specialization
- 코딩테스트
- 데이터분석준전문가
- Python
- matplotlib
- tableau
- 시각화
- r
- pytorch
- 자격증
- sklearn
- 딥러닝
- SQL
- 데이터 전처리
- scikit learn
- ML
- 데이터분석
- pandas
- ADsP
- 통계
- Google ML Bootcamp
- 이코테
- SQLD
- 회귀분석
- 머신러닝
- Today
- Total
목록학회 세션/파인드 알파 (14)
함께하는 데이터 분석
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/FNiGg/btrQq5qgVdy/r5RiLwlJh9tx7oxmTBkksk/img.png)
ELECTRA의 생성자와 판별자 이해하기 생성자 MLM 태스크 수행 15% 확률로 전체 토큰을 마스크 된 토큰으로 교체, 생성기에서 마스크 된 토큰을 예측하도록 학습 진행 입력 토큰이 X=[x1, x2, ... xn] 일 때 h_G(X)=[h1, h2, ... hn]을 생성기를 통해 얻은 각 토큰의 표현 이제 마스킹한 토큰에 대한 표현을 소프트맥스 함수를 갖고있는 피드포워드 네트워크 분류기에 입력 후 토큰에 대한 확률분포 결과를 얻음 'The chef cooked the meal'이라는 문장을 입력하고 일부 토큰에 대해 마스킹 작업을 수행한 후 생성기에 입력하면, 생성기는 사전에 있는 각 단어의 확률 결과를 출력 xt를 t 위치의 마스크된마스크 된 단어라고 하면, 생성자는 소프트맥스 함수를 적용해 사전의..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/0nU1I/btrPQIPDoTW/k6RCNDZePmkbXdiJhAvHRk/img.png)
Markov decision processes Markov process 파트에서는 RL(Reinforcement Learning) 문제를 해결하는 데 사용되는 방법으로 이동을 가능하게 하는 RL의 이론적 토대를 익힐 것 이 파트는 책의 나머지 부분을 이해하는 데 중요하며 RL에 익숙해지는 것을 보장 먼저 방금 논의한 formalisms(reward, agent, actions, observations, and environment)의 수학적 표현과 개념을 소개하고, 이것을 기초로 하여 우리는 state, episode, history, value, gain을 포함한 RL언어의 2차적 개념을 소개하는데, 이는 책의 후반부에서 다른 방법을 설명하는데 반복적으로 사용됨 그리고 Markov decision p..
![](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/b4UKlH/btrMIWKm723/klylY1VglKr50siAM83lXk/img.png)
순환 신경망의 한계 및 개선 방안 RNN은 어느 정도 이상부터는 결과가 한계에 부딪힘 이유는 타임 시퀀스가 늘어나며 역전파 시 하이퍼볼릭 탄젠트 함수의 미분 값이 0 ~ 1 사이의 값이 나오고 여러 번 곱해져 기울기 값이 역전파될 때 타임 시퀀스가 길어질수록 모델이 제대로 학습을 하지 못하는 기울기 소실(vanishing gradient)이라는 현상이 일어남 순환 신경망에서는 활성화 함수를 바꾸는 경우도 있지만 개선 모델인 LSTM과 GRU를 사용 LSTM(long short-term memory) 기존의 순환 신경망 모델에 장기기억을 담당하는 부분을 추가한 것 기존에는 은닉 상태만 있었다면 셀 상태라는 이름을 가지는 전달 부분을 추가 GRU(gated recurrent unit) LSTM보다 간단한 구..
![](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/bROOgA/btrKMEYq6MQ/gzjh1iJJrIVsTJ8qNdJ831/img.png)
앙상블 학습 가장 좋은 모델 하나보다 비슷한 일련의 예측기로부터 예측을 수집하여 더 좋은 예측을 얻는 것 투표 기반 분류기 정확도가 80% 정도 되는 분류기를 여러 개 훈련시켰다고 가정 더 좋은 분류기를 만드는 매우 간단한 방법은 각 분류기의 예측을 모아 가장 많이 선택된 클래스를 예측 이렇게 다수결의 투표 즉, 통계적 최빈값으로 정해지는 분류기를 직접 투표(hard voting)이라 함 이 다수결 투표 분류기가 앙상블에 포함된 개별 분류기 중 가장 뛰어난 것보다 정확도가 높은 경우가 많음 각 분류기가 약한 학습기(weak learner)일지라도 많고 다양하면 앙상블은 강한 학습기(strong learner)가 될 수 있음 큰 수의 법칙 import numpy as np import pandas as p..