Candidate Sampling이란? - Multiclass Classification를 수행하는 딥러닝 모델은 소프트맥스 확률을 계산하는 레이어를 지닌다. - 모델 학습 과정에서 Backprogation을 위해서는 모든 클래스의 소프트맥스 확률을 계산이 필요하다. - 문제는 클래스가 매우 많은 경우 소프트맥스 확률 계산에 많은 연산 비용이 든다는 점이다. - 특히 NLP 문제의 경우 단어의 수가 많게는 수백만개에 이르기 때문에 이런 문제가 필연적이다. - 수많은 아이템을 다루는 추천 시스템도 이런 문제를 겪는다. - Candidate Sampling은 이런 문제를 해결하기 위해 고안된 방법론이다. - 전체 클래스에 대해 소프트 맥스 확률값을 계산하는 대신에 일부 카테고리만 랜덤하게 뽑아 소프트맥스 확..
아래 블로그를 보고 학습한 내용을 정리한다. https://colah.github.io/posts/2015-08-Understanding-LSTMs/ LSTM (Long Short-Term Memory) - RNN(Recureent Neural Network)의 일종 - Vanila RNN의 취약점인 장기 의존성을 학습하기 위해 고안되었다. - 현재는 기본적인 RNN은 거의 안쓰고 LSTM이 널리 사용된다. LSTM은 어떻게 장기 의존성을 학습할 수 있을까?? - 기본적인 RNN에서는 gradient vanishing 문제를 해소하기 위해 학습 단계에서 여러 트릭을 사용한다. - 반면, LSTM은 아예 명시적으로 과거의 정보를 다음 스테이트로 넘기는 구조를 사용하여 장기 의존성을 학습한다. LSTM의 핵..
목표 활주로 예약 문제를 통해 기존 자료 구조의 한계를 파악한다. 이진 탐색 트리의 개념을 이해한다. 이진 탐색 트리의 삽입, 탐색 등의 방법을 이해한다. 이진 탐색 트리를 사용한 활주로 예약 문제의 해법을 살펴보며, 한계점을 짚어본다. [문제] 활주로 예약 하기 활주로가 하나뿐인 공항에서 착륙 시간을 예약하는 시스템에 대해 생각해보자. 예약에 대한 리퀘스트가 왔을 때, 시점 앞뒤로 k분 이내에 예약이 없을 때만 시스템에 등록이 된다. 예시) 현재 시점은 37이며, 예약 명단이 [41, 46, 49, 51]이며, k = 3일때 -> 44 : not allowed -> 53 : ok -> 22 : not allowed (already past) log(n)의 시간 안에 예약을 완료할 수 있는 방법이 있을까..
Standard Network가 시퀀스 데이터 처리에 적합하지 않은 이유 텍스트의 서로 다른 위치에서 학습된 피쳐가 공유되지 않는다. 예컨대 문장의 특정 위치에서 다음 단어를 예측하는 문제에서는 이전 단어들을 아는 것이 도움이 될 것이다. standard network에서는 한 위치에서의 정보가 다른 위치로 빠르게 일반화되지 않는다. 다시 말해, 우리가 문장을 이해할때는 단어 단위로 이해하지 않고 전체 문맥을 이해하는데, Standard Network는 이런 방식으로 정보를 처리하지 않는다. 모든 트레이닝 데이터는 같은 입력 길이를 가지지 않는다. Fully connected layer를 사용하면 파라미터의 개수가 너무 많아진다. 만약 고려해야할 총 단어 수가 10,000개이고 시퀀스의 길이가 100이라..
Modeling Delayed Feedback in Display Advertising 논문을 읽고 내용을 정리한다. 논문에서 풀고자 하는 문제 Click 이후에 발생하는 Conversion Rate의 추정 cost-per-conversion(CPA) payment model에서 ad-exchange나 DSP는 impression의 가치를 추정해야한다. impression의 가치인 eCPM(expected Cost Per Mile)은 다음과 같이 계산된다. @@ \begin{align} eCPM & = CPA \times Pr(conversion, click) \\ & = CPA \times Pr(click) \times Pr(Conversion | click) \end{align} @@ 문제는 Clic..
ML을 실무에 적용하다 보면 만나게 되는 도전과제 중 하나는 모형이 내놓는 결과에 대한 해석이다. 아무리 예측력이 좋은 ML 모형이라고 하더라도 실제 액션을 취하려면 왜 이런 예측 과정에 대한 이해가 필수적이다. 모형의 동작 방식에 대한 이해가 가능해야 사용자 입장에서 그 결과를 “신뢰”하고 사용할 수 있다. 또한 모델에 대한 해석은 모델을 만드는 과정에서도 매우 중요한 정보이다. 모델을 만드는 분석가나 엔지니어의 입장에서도 모형이 왜 이렇게 작동하는지 이해해야 모델을 배포하기 이전에 결함을 인지하고 개선할 수 있다. 문제는 대부분의(특히 예측 성능이 좋은) ML 모형이 Black box라는 점에 있다. 지난 몇년간 다양한 분야에서 ML을 폭넓게 활용하려는 시도들과 함께 이러한 문제를 해결하기 위한 접근..
최근 프로그래밍 기초를 다지고자 공부를 하고 있는데, 듣고 있는 강의가 python 2를 사용하여 진행된다. 이미 내 노트북에는 python 3가 설치되어 있는 상황이어서 두 버전을 모두 사용할 수 있도록 아나콘다의 가상환경을 사용하였다. 가상환경은 한 컴퓨터에서 여러 프로젝트를 작업할 때 파이썬 패키지의 의존성이 충돌하지 않도록 관리해주는 툴이다. 가상환경을 생성하면 환경변수 그룹이 만들어지고 그룹마다 지정된 경로에 패키지를 설치하고 참고하게 된다. 즉 내 경우처럼 하나의 컴퓨터에서 다른 버전의 파이썬을 사용하는 용도 뿐만 아니라 여러 프로젝트를 개발할 때 가상환경을 사용하면 라이브러리의 버전 관리가 용이해진다. 아나콘다 가상환경 생성하기 먼저 아나콘다를 설치한 상태에서 Anaconda prompt를 ..