개인공부/데이터 사이언스

개인공부/데이터 사이언스

GAN 논문 리뷰

Introduce 딥러닝은 다양한 데이터에 대한 확률 분포를 나타내는 풍부하고 계층적인 모델을 발견할 수 있다는 가치를 가지고 있다. 하지만 딥러닝으로 생성모델을 발견하려고 하면 확률적 계산이 복잡하고 Relu의 장점을 살리지 못한다는 단점이 존재한다. 때문에 이 논문에서는 이러한 어려움을 우회하는 새로운 생성 모델 추정 절차인 GAN을 제안한다. GAN에 원리의 비유로 들 때 보편적으로 '위조지폐범과 경찰'의 관계를 예로 들곤 한다. 위조지폐범은 진짜지폐를 위조해 위조지폐를 만들고 경찰은 위조지폐를 감별해낸다. 그러면 위조지폐범은 더 진짜 같은 위조지폐를 만들어내도록 기술을 발전시키고 경찰은 위조지폐를 더 잘 찾아낼 수 있는 기술을 발전시킨다. 그러다가 경찰이 위조지폐를 감별해낼 확률이 반반이 된다면 ..

개인공부/데이터 사이언스

AlexNet 논문 리뷰

Introduce 객체인식에는 기계학습이 사용되며, 기계학습은 큰 데이터 셋, 강력한 모델, 과적합을 감소시킬 수 있는 기술이 필요하다. 이에 더해 객체 인식을 하기 위해서는 labeled image가 필요한데, labeled image는 각 이미지가 내용이나 특징을 나타내는 클래스와 관련된 식별자를 가지고 있는 이미지를 뜻한다. 하지만 labeled image는 상대적으로 적은 편이기 때문에 라벨을 보존, 변형, 보강함으로써 간단한 인식 작업이 가능할 정도로 데이터를 늘릴 수 있다. 예로 Mnist 숫자 인식 작업 오류율이 사람과 비슷한 0.3% 미만이 나오기도 하였다. 하지만 사실적 객체의 경우 변동성이 크기 때문에 더 많은 데이터 셋이 필요하다. 이러한 데이터 셋 부족 문제는 예전부터 거론되던 문제..

개인공부/데이터 사이언스

BERT 논문 리뷰

BERT는 transformer의 인코더 구조만을 사용하여 만든 bidirectional 모델이다. BERT 논문에서는 'Deep'이라는 글자를 강조했는데, 이는 기존의 language representation 모델들과 다르게 자신들의 모델 구조가 진정한 의미의 양방향 representation을 가능하게 했다는 것을 말하고자 한 것으로 보인다. BERT의 가장 큰 특징은 한번 Pre-training해 놓으면 모델 구조를 바꾸지 않고도 Fine-tuning 만으로 여러 NLP task에 적용할 수 있다는 것이다. 이처럼 개량 방식은 매우 간단하지만 여러 분야에서 SOTA를 달성할 만큼 우수한 모델임이 증명되었다. Introduction LM pretraining은 BERT 이전에도 다양한 NLP tas..

개인공부/데이터 사이언스

Attention Is All You Need 논문 리뷰

Introduction 초기 기계번역 모델은 Seq2Seq 아키텍처로 구현되었다. 이 모델은 입력 문장을 인코더로 압축하고, 그 결과를 디코더로 전달하여 번역을 생성하는 'encoder-decoder' 방식이었다. 그러나 이 방식은 인코더가 context vector라는 고정된 크기의 벡터에 모든 입력 정보를 담기 때문에 정보가 손실될 우려가 있었다. 뿐만 아니라 Seq2Seq와 같은 RNN 기반 모델들은 계산이 순차적으로 이루어져 병렬처리가 어려웠다. 하지만 논문에서 제안하는 Transformer 모델은 행렬곱 계산을 통해 Context vector을 순차적 계산 없이 한번에 생성할 수 있는 동시에, 정보 손실을 최소화하는 매커니즘을 가지고 있다. Seq2Seq 모델은 위 그림과 같이 인코더의 최종 결..

개인공부/데이터 사이언스

편향과 분산

머신러닝에서 편향과 분산은 모델의 성능을 평가하고 최적화하는 데 중요한 역할을 한다. 편향은 모델의 예측값이 실제값과 얼마나 차이가 나는지를 나타내며, 분산은 예측값들이 얼마나 넓게 퍼져있는지를 보여준다.   이미지에서 볼 수 있듯이, 높은 편향과 낮은 분산을 가진 모델은 단순한 패턴을 보이며 데이터의 복잡성을 제대로 잡아내지 못해 과소적합 상태에 빠진다. 반면, 낮은 편향과 높은 분산을 가진 모델은 데이터의 노이즈까지 학습하여 과대적합 상태가 된다.좋은 모델을 만들기 위해서는 편향과 분산 사이의 균형을 찾는 것이 중요하다. 하지만 이 둘은 서로 상충관계에 있어, 하나를 개선하려고 하면 다른 하나가 악화되는 경향이 있다. 따라서 모델 개발자는 적절한 복잡도를 가진 모델을 설계하여 두 요소 사이의 최적점을..

개인공부/데이터 사이언스

앙상블 기법

앙상블(ensemble) 기법은 머신러닝에서 여러 모델을 결합하여 더 강력하고 안정적인 예측 모델을 만들기 위한 방법이다. 앙상블 기법에는 대표적으로 배깅(bagging), 부스팅(boosting), 스태킹(stacking) 방식이 있다. Bagging 배깅은 Bootstrap Aggregating의 약어로, 중복을 허용하는 샘플링을 통해 여러 개의 모델을 병렬적으로 학습하고 각 모델의 예측을 평균 또는 투표를 통해 결합하는 방식이다. 즉, 전체 데이터에서 데이터를 중복 선택하여 모델을 여러 개로 늘리는 것이다. 이를 통해 모델의 분산을 줄여 과적합을 방지하고, 안정적인 예측을 가능하게 한다. Boosting 부스팅은 단일 모델로는 성능이 낮은 약한 학습기들을 순차적으로 학습시켜, 이전 모델이 실패한 샘..

개인공부/데이터 사이언스

로지스틱 회귀

로지스틱 회귀모델의 배경 선형 회귀모델의 경우 입력변수에 따른 출력변수는 연속성을 가지고 있다. 하지만 출력변수가 연속형 변수인 모델 뿐만 아니라 이진변수나 멀티변수 같은 범주형 데이터를 갖는 모델도 많다. 이러한 모델들을 다루기 위해서 선형 회귀모델과는 다른 방식으로 접근해야할 필요가 있는데 그것이 바로 로지스틱 회귀모델이다. 로지스틱 회귀모델은 새로운 관측치가 왔을 때 이를 기존 범주 중 하나로 예측하는 '분류' 모델이다. 예를 들어 생산된 물건이 불량인지 정상인지, 또는 이 사람이 병에 걸렸는지 안걸렸는지를 분류해주는 모델 등이 있다. 입력변수 X가 주어졌을 때 출력변수 Y가 이진 또는 멀티변수로 표현된다면 이를 그래프 상에 나타내어 의미있는 결과가 도출될 수 없다. 때문에 로지스틱 회귀모델에서 입..

개인공부/데이터 사이언스

최근접 이웃(K-Nearest Neighbor) 알고리즘을 이용한 종양 판별 모델 만들기

KNN(K-Nearest Neighbor) 알고리즘을 이용해 종양 덩어리에 대한 데이터가 주어졌을 때 이 종양 덩어리가 단순히 양성종양인지 아니면 악성종양인지 판별해주는 머신러닝 모델을 만들어보았다. 개발환경은 구글의 Colab에서 진행하였으며 다음은 전체 코드이다. https://github.com/hizibu7/datascience_practice/blob/master/cancer_%20discrimination GitHub - hizibu7/datascience_practice Contribute to hizibu7/datascience_practice development by creating an account on GitHub. github.com K-최근접 이웃 회귀 알고리즘이란? 우선 코드..

개인공부/데이터 사이언스

신뢰도 높은 리뷰 탐색 프로젝트(파이어베이스, 파이썬)

인터넷에서 내가 찾고자 하는 리뷰를 검색해보면 신뢰할만한 리뷰를 찾을 때도 있지만 멋모르고 광고성 리뷰를 읽게 되는 경우도 적지 않다. 때문에 이번에는 파이썬과 파이어베이스를 이용해 리뷰에 적힌 단어들 중 광고성 리뷰에서 나올법한 단어들이 있는지를 확인하고 이를 바탕으로 그 리뷰의 신뢰도를 판단해주는 파이썬 프로젝트를 진행해봤다. 전체 코드는 다음과 같다. # import : firebase db import firebase_admin from firebase_admin import credentials from firebase_admin import db # import : crowling import urllib.request import urllib.parse from bs4 import Beaut..

개인공부/데이터 사이언스

Selenium을 이용한 미세먼지 크롤러 만들기(2)

이제 본격적으로 미세먼지 크롤러를 제작해보도록 하자. 다음은 전체 코드이다. from selenium import webdriver from bs4 import BeautifulSoup driver = webdriver.Chrome('C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\python\crawling\selenium\chromedriver') driver.implicitly_wait(3) driver.get('http://openAPI.seoul.go.kr:8088/(인증키)/xml/RealtimeCityAir/1/25/') raw = driver.page_source html = BeautifulSoup(raw, 'html...

DevM
'개인공부/데이터 사이언스' 카테고리의 글 목록