AI/Deep learning(16)
-
Keras로 MF 구현
평점 데이터로 rating matrix 생성 import pandas as pd import numpy as np from sklearn.utils import shuffle r_cols = ['user_id', 'movie_id', 'rating', 'timestamp'] ratings = pd.read_csv('u.data', names=r_cols, sep='\t',encoding='latin-1') ratings = ratings[['user_id', 'movie_id', 'rating']].astype(int) TRAIN_SIZE = 0.75 ratings = shuffle(ratings) cutoff = int(TRAIN_SIZE * len(ratings)) ratings_train = rat..
2022.05.15 -
user based CF, item based CF
CF types user based CF: 사용자를 기준으로 비슷한 취향의 이웃을 선정하는 방식 item based CF: 둘의 차이는 유사도를 계산하는 기준이 사용자인지 아이템인지에 따름 user-based CF 사용자의 rating 정보가 많다면 정확한 추천이 가능 그러나 터무니없는 추천을 하는 경우가 있음 item-based CF 사용자별로 계산을 안해서 빠름 터무니 없는 추천을 할 가능성이 낮음 데이터 크기가 적고 사용자에 대한 충분한 정보가 있다면 UBCF 사용 데이터가 크고 사용자에 대한 충분한 정보가 없는 경우 IBCF 사용 rating 정보가 풍부하다면 UBCF가 다소 정확함 IBCF는 계산이 빠르기에 아마존같이 대규모 데이터를 다뤄야 하는 상업용 사이트에서는 IBCF기반의 알고리즘을 사용..
2022.03.22 -
역전파 (Back-propagation)
SGD를 통해 gradient를 구할 때 반복적으로 같은 parameter(즉, weight)에 대해서 미분을 수행 이는 성능의 문제를 야기 layer가 계속 커지면서 편미분의 횟수가 quadratic 하게 증가함 중복되는 미분을 수행하지 않도록 즉, 동적 계획법을 적용하여 해결한 것이 바로 "역전파" 역전파 편미분의 중복을 없애고 효율적으로 수행 각 layer들의 여러 weight들의 최적화를 위해 미분값을 구함 결과를 고정하고, 입력을 최적화 (즉, 입력 벡터를 미분하여 학습) 이런 입력 𝜙벡터의 초기화를 통해 역으로 정해진 출력에 맞는 입력을 생성할 수 있음 미분의 체인룰 사용 f(g(x))' = f(g(x))' * g(x)' x3 x4 ----> g(x) -------> f(x) ---------..
2022.03.06 -
Activation function(활성 함수)
why activation function? h(x) = v ⋅ 𝜙(x) f(x) = w ⋅ h(x) f(x) = w ⋅ v ⋅ 𝜙(x) = w ⋅ 𝜙(x) activation을 사용하지 않으면 최종 함수는 linear function 즉, activation 을 넣어야 non-linear이기에 activation function 사용 non-linear 해야 모든 함수에 근사 가능 -> 모든 함수를 비선형 적으로 '근사' 하기 위해서 activation function을 사용 sigmoid history 1980년대까지 sigmoid로 모든 종류의 함수를 근사할 수 있음을 증명하여 많이 사용되었음 그러나 학습 시 성능이 제대로 나오지 않았음 제프리 힌튼 학습 성능을 높일 수 있는 휴리스틱을 발견 sig..
2022.03.06 -
RNN(Recurrent Neural Network)
RNN(Recurrent Neural Network) CBOW는 맥락 안의 “단어 순서가 무시”된다는 한계가 있음 Bag-of-words는 순서가 없음 순서까지 고려하게 하려면, 은닉층에서 입력들의 순서를 갖고 concatenated 된 벡터를 만들어야 함 이렇게 되면 parameter가 무수히 많이 늘어남 그래서 RNN이 이를 해결하기 위해 등장 Recurrent Neural Network: 순환 신경망 각 입력들 내 token들이 순서대로 각각의 RNN에 (시차를 두고) 들어가는 형태로 구현되는 네트워크 RNN 계층은 이전 상태를 유지해야 함(그래야 순서를 반영) RNN 언어모델 단어 sequence에 확률을 부여 조건부 언어 모델은 지음까지의 단어 스퀀스로부터 다음에 출현할 단어의 확률을 계산 RN..
2022.03.06 -
seq2seq
seq2seq 입력된 sequence에서 다른 domain의 sequence를 출력하는 모델 기계 번역이라던가 쳇봇 등 어떤 문자열이 입력되면 이 입력의 결과가 다른 문자열로 출력됨 내용 요챡, STT 등에도 사용됨 기계 번역 입력 문자열 --> encoder -> ctx --> decoder --> output 문자열 context 벡터 입력 문자열의 모든 단어들을 순차적으로 입력 받고 이를 "압축해서" 벡터로 만듦 이 압축된 context 벡터가 디코더로 전송됨 디코더는 context를 받고 번역된 단어를 한 개씩 순차적으로 출력 보통 context 벡터는 수백~수천의 차원을 가진 벡터임 RNN 아키텍처 encoder와 decoder는 여러개의 LSTM으로 구성 바닐라 RNN이 아닌 LSTM 혹은 G..
2022.03.06