목록분류 전체보기 (408)
오답노트
정확도 지표 분류문제에서 자주 사용되는 지표들을 의미한다. 추천시스템에서는 제공하는 추천 결과 중에서 실제로 사용자가 선호하는 아이템의 비율을 측정하는 지표다. 대표적으로 정확도 (Accuracy), 정밀도 (Precision), 재현율 (Recall), F1-Score이 존재한다. 정확도 (Accuracy) 정확도는 모든 경우에서 예측과 실측이 모두 맞았을 때를 의미한다. 하지만 데이터가 편향되어 있다면 그 신뢰성이 많이 떨어진다. 예를들어 True가 일반적인 Domain에서 가끔 False가 등장한다고 했을 때, 모델이 대부분을 True로 예측할 것이다. 그렇다면 True에 대한 정확도는 높지만 False에 대한 정확도는 낮다는 단점이 있다. 정밀도 (Precision) 정밀도는 예측이 True인 것..
Embedding Embedding은 sparse 벡터 데이터를 dense 벡터 데이터로 변환 하는 것을 의미한다. sparse 벡터 데이터는 One-Hot Encoding된 데이터인데, One-Hot Encoding은 데이터 마다 인덱스를 부여하고 데이터의 유니크 개수 만큼의 차원의 벡터에 해당 인덱스에 1을 입력하는 것이다. 위 그림에서 red는 [1,0,0], blue는 [0,1,0], green는 [0,0,1] 으로 표현 가능하다. dense 벡터 데이터는 sparse 벡터 데이터와 달리 0이 대부분 없는 데이터를 의미한다. sparse 벡터 데이터를 dense 벡터 데이터로 변환할 때 가중치 테이블을 사용해 변환하게 되는데, 역전파를 통해 이 가중치 테이블이 계속 업데이트 된다. Embeddin..
Negative Sampling 네거티브 샘플링은 다중 분류 문제에서 이진 분류 문제로 바꾸는 것에 초점을 준다. 다중 분류에서 이진 분류로 문제를 바꾸므로 임베딩 벡터 값을 업데이트 시킬 때, 원하는 벡터 값만 업데이트 한다. 이 과정에서 연산량이 크게 줄어든다. NLP에서의 Negative Sampling Skip-gram에서 Negative Sampling를 사용할 수 있다. Skip-gram은 주변 단어를 예측하기 위해 중심 단어를 활용하는 모델이다. 즉, Skip-gram은 중심 단어를 input으로 주변 단어들 중 1개를 맞추는 다중 분류 문제인 것이다. 하지만 Skip-gram에 Negative Sampling을 사용하여 이진 문제로 바꿀 수 있다. 위는 기존의 Skip-gram의 모델을 도..
Collaborative Filtering 협업 필터링은 사용자와 항목의 유사성을 동시에 고려해 추천한다. 기존에 사용자의 관심사가 아닌 항목도 추천 가능하고 자동으로 임베딩 학습이 가능해 도메인 지식이 필요없다. 하지만 학습 과정에 나오지 않은 항목은 임베딩을 만들 수 없다. 또 추가 특성을 사용하기 어렵다. KNN 머신러닝에서 봤던 KNN과 같은 원리다. 가장 근접한 K 명의 이웃을 통해서 예측하는 방법. https://dhjkl123.tistory.com/226 [ML] KNN (K-Nearest Neighbors) KNN 예측 데이터의 변수로 부터 실측 데이터의 변수 사이의 거리를 계산하여 그 중 가장 가까운 k개 데이터의 평균으로 타겟 데이터를 예측하는 알고리즘 (출처 : https://pub...
Content-based Filtering Content-based Filtering은 이전의 행동과 명시적 피드백을 통해 좋아하는 것과 유사한 항목을 추천한다. 유사도를 기반으로 추천한다. 많은 수의 사용자를 대상으로 쉽게 확장 가능하고 사용자가 관심을 갖지 않던 상품까지 추천 가능한 장점이 있다. 하지만 입력 특성을 직접 설계해야 하기 때문에 많은 도메인 시직이 필요하고 사용자의 기존 관심사항을 기반으로만 추천 가능한 단점이 있다. 유클리드 거리 위에서 유사도를 기반으로 추천한다고 했는데, 그 중 사용되는 유사도인 유클리드 거리 유사도이다. 이를 Python 코드로 구현하면 아래와 같다. import numpy as np euclidean_dist = np.sqrt(np.sum(np.square(my..
전체 구조 지금까지 본 신경망은 인접하는 계층의 모든 뉴런과 결합되어 있었다. 이를 완전연결(fully-connected)이라고 하며 완전히 연결된 계층을 Affine 계층이라는 이름으로 구현했다. CNN에서는 새로운 '합성곱 계층'과 '풀링 계층'이 추가된다. CNN의 계층은 'Conv-ReLU-(Pooling)' 흐름으로 연결된다. 주목할 또 다른 점은 출력에 가까운 층에서는 지금까지의 'Affine-ReLU' 구성을 사용할 수 있다는 것이다. 도 마지막 출력 계층에서는 'Affine-Softmax' 조합을 그대로 사용한다. 합성곱 계층 완전연결 계층의 문제점 완전연결 계층에서는 인접하는 계층의 뉴런이 모두 연결되고 출력의 수는 임의로 정할 수 있다. 완전연결 계층의 문제점은 '데이터의 형상이 무시'..
매개변수 갱신 신경망 학습의 목적은 손실 함수의 값을 가능한 한 낮추는 매개변수를 찾는 것이고 이는 곧 매개변수의 최적값을 찾는 문제이다. 이러한 문제를 푸는 것을 최적화라고 한다. 지금까지 최적의 매개변수 값을 찾는 단서로 매개변수의 기울기(미분)를 이용했다. 매개변수의 기울기를 구해, 기울어진 방향으로 매개변수 값을 갱신하는 일을 몇번이고 반복해서 점점 최적의 값에 다가갔다. 이것이 확률적 경사 하강법(SGD)이란 단순한 방법인데, 지금부터 SGD의 단점과 다른 최적화 기법을 알아보자. 모험가 이야기 가장 크게 기울어진 방향으로 가자는 것이 SGD의 전략이다. 이 일을 반복하면 언젠가 깊은 곳에 찾아갈 수 있을지 모른다. 학률적 경사 하강법(SGD) class SGD: def __init__(self..
수치 미분은 단순하고 구현하기도 쉽지만 계산 시간이 오래 걸린다는게 단점이다. 이번엔 가중치 매개변수의 기울기를 효과적으로 계산하는 '오차역전파법(backpropagation)'을 배워보자. 오차역전파법을 제대로 이해하는 방법으로는 수식을 통한 것과 계산 그래프를 통한 것이 있다. 전자 쪽이 일반적인 방법으로, 특히 기계학습을 다루는 책 대부분은 수식을 중심으로 이야기를 전개한다. 하지만 계산 그래프를 사용하면 시각적으로 이해할 수 있다. 계산 그래프 계산 그래프는 계산 과정을 그래프로 나타낸것이다. 여기서 그래프는 복수의 노드와 엣지(노드 사이의 직선)로 표현된다. 계산 그래프로 풀다 계산 그래프는 계산 과정을 노드와 화살표로 표현한다. 노드는 원으로 표기하고 원 안에 연산 내용을 적는다. 또, 계산 ..
학습이란 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것이다. 신경망이 학습할 수 있도록 해주는 지표는 손실 함수다. 손실 함수의 결과값을 가장 작게 만드는 가중치 매개변수를 찾는 것이 학습의 목표다. 데이터에서 학습한다 데이터 주도 학습 기계학습에서는 사람의 개입을 최소화하고 수집한 데이터로부터 패턴을 찾으려 시도한다. 데이터에서 특징을 추출하고 그 특징의 패턴을 기계학습 기술로 학습하는 방법이 있다. 여기서 말하는 특징은 입력 데이터에서 본질적인 데이터를 정확하게 추출할 수 있도록 설계된 변환기를 가리킨다. 하지만 문제에 적합한 특징을 쓰지 않으면 혹은 특징을 설계하지 않으면 좀 처럼 좋은 결과를 얻을 수 없다는 뜻이다. 신경망의 이점은 모든 문제를 같은 맥락에서 풀 수 있다. 세부..
퍼셉트론은 복잡한 함수도 표현할 수 있다. 하지만 가중치를 설정하는 작업 즉, 원하는 결과를 출력하도록 가중치 값을 적절히 정하는 작업은 여전히 사람이 수동으로 한다는 것이다. 그러나 신경망은 가충치 매개변수의 적절한 값을 데이터로부터 자동으로 학습하는 성질이 있다. 퍼셉트론에서 신경망으로 신경망의 예 아래 그림은 신경망이다. 여기서 가장 왼쪽 줄은 입력층, 맨 오느쪽 줄은 출력층, 중간 줄은 은닉층이다. 은닉층의 뉴런은 입력층이나 출력층과 달리 사람 눈에는 보이지 않는다. 퍼셉트론 복습 퍼셉트론을 수식으로 나타 냈을때, b는 편향을 나타내는 매개변수고 뉴런이 얼마나 쉽게 활성화되느냐 제어한다. 한편, w1,w2는 각 신호의 가중치를 나타내는 매개변수로, 각 신호의 영향력을 제어한다. 위 그림은 퍼셉트론..