SarahhhC / ml-study

0 stars 0 forks source link

ml_crash_course_week4 #1

Open SarahhhC opened 6 years ago

SarahhhC commented 6 years ago

Multi-Class Neural Networks

One vs. All : 다중 클래스 신경망: 사과, 곰, 사탕, 개 중 무엇일까?

각각의 가능한 클래스마다 하나의 로지스틱 회귀 출력 노드를 사용

이진 분류 활용 방법

image

소프트맥스

로지스틱 회귀(0~1사이 확률)를 다중 클래스 문제에 적용

다중 클래스 문제의 각 클래스에 소수 확률을 할당

확률의 합은 1.0

image

image image

변형된 소프트맥스

One Label vs. Many Labels : 사과랑 오렌지랑 같이 있다면?

로지스틱 회귀를 여러 개 사용 => 각 출력값이 개별로 계산

실습 MNIST Digit Classification programming exercise

SarahhhC commented 6 years ago

Embeddings

협업 필터링 (Collaborative filtering)에 필요한 임베딩

영화 추천을 한다고 하면...

범주형 입력 데이터 (Categorical Input Data)

image

대부분의 요소가 0인 희소 텐서를 통해 가장 효율적으로 표현
ex ) 사용자 x가 본 영화
"단어, 문장, 문서"를 희소벡터로
ex ) 각 어휘 목록에 속한 단어 찾아내기

Network 사이즈

입력 벡터가 거대해지면 신경망에 엄청나게 많은 가중치 만들어짐 어휘에 M개의 단어 x 첫 번째 레이어에 N개의 노드 = MxN개의 가중치를 학습

가중치의 수가 커지면 다음과 같은 문제가 발생

데이터의 양. 모델의 가중치가 많을수록 효과적인 학습을 위해 더 많은 데이터가 필요합니다. 계산량. 가중치가 많을수록 모델을 학습하고 사용하는 데 더 많은 계산이 필요합니다. 따라서 하드웨어가 이를 지원하지 못할 가능성이 높습니다.

벡터 간의 의미 있는 관계 부족

저런 이유로 솔루션은 임베딩

크기가 큰 희소 벡터를 의미론적 관계를 보존하는 저차원 공간으로 변환

image

2차원 좌표로 표현되는 임베딩 공간에 영화들을 매핑

+ d차원 임베딩

저차원 공간으로 변환

image

벡터 공간의 위치(거리와 방향)는 좋은 임베딩을 통해 의미론을 인코딩

망 축소하기

검색표로서의 임베딩

??? 무슨말이지

임베딩은 하나의 행렬이고, 행렬의 각 열은 어휘 항목 하나에 대응합니다. 단일 어휘 항목에 대한 밀집 벡터를 얻으려면 해당 항목에 대응하는 열을 검색합니다.

하지만 희소한 BOW(bag of words) 벡터는 어떻게 변환해야 할까요? 여러 개의 어휘 항목(예: 문장 또는 단락의 모든 단어)을 나타내는 희소 벡터에 대한 밀집 벡터를 얻으려면 개별 항목에 대해 임베딩을 검색한 다음 이를 전부 더하면 됩니다.

희소 벡터에 어휘 항목의 수가 포함되어 있으면 각 임베딩에 해당 항목의 수를 곱한 다음 이를 합계에 추가할 수 있습니다.

어디에선가 해본 것 같지 않나요?

행렬 곱셈으로서의 임베딩 검색
방금 설명한 검색, 곱셈, 덧셈 절차는 행렬 곱셈과 동일합니다. 1xN 크기의 희소 표현 S와 NxM 크기의 임베딩 표 E가 주어지면 행렬 곱셈 SxE를 통해 1xM 밀집 벡터를 얻을 수 있습니다.

다음 챕터로 일단...

임베딩 획득

표준 차원 축소 기법

Word2vec

Word2Vec은 실제로 함께 등장하는 단어 그룹과 무작위로 그룹화된 단어를 구분하도록 신경망을 학습시켜 이와 같은 문맥상의 정보를 활용합니다. 입력 레이어는 하나 이상의 문맥 단어와 함께 대상 단어의 희소 표현을 취합니다. 이 입력은 더 작은 히든 레이어 하나에 연결됩니다.

이 알고리즘의 한 버전에서는 시스템이 대상 단어 대신 무작위의 노이즈 단어를 취하여 음의 예를 만듭니다. 양의 예로 '비행기가 난다'가 있으면 시스템은 '조깅'을 대신 넣어 대조되는 음의 예인 '조깅이 난다'를 만들 수 있습니다.

다른 알고리즘 버전에서는 실제 대상 단어와 무작위로 선택한 문맥 단어를 짝지어 음의 예를 만듭니다. 이를 통해 시스템은 양의 예인 (비행기, 가) (난다, 비행기)와 음의 예인 (편찬하다, 비행기) (누가, 비행기)를 취하여 어느 쌍이 텍스트에 실제로 함께 표시되었는지 구분하는 법을 학습합니다.

더 큰 모델의 일부로서 임베딩 학습

임베딩을 대상 작업을 위한 신경망의 일부로서 학습할 수도 있습니다. 이 접근법은 특정 시스템에 맞게 임베딩을 효과적으로 맞춤화할 수 있지만 임베딩을 별도로 학습하는 것보다 시간이 오래 걸릴 수 있습니다.

image

일반적으로, 희소 데이터 또는 임베딩하려는 밀집 데이터가 있는 경우 크기가 d인 특수 유형의 은닉 단위인 임베딩 단위를 만들 수 있습니다. 이 임베딩 레이어는 다른 특성 및 히든 레이어와 결합할 수 있습니다. 모든 DNN(심층신경망)이 그러하듯, 최종 레이어는 최적화 중인 손실입니다.

예를 들어, 다른 사용자의 관심분야를 바탕으로 특정 사용자의 관심분야를 예측하기 위한 협업 필터링 작업을 한다고 가정합니다. 이 작업에서 사용자가 시청한 소수의 영화를 양의 라벨로 무작위로 따로 분류하여 지도 학습 문제로 모델링한 다음 소프트맥스 손실을 최적화할 수 있습니다.

실습 intro_to_sparse_data_and_embeddings