본문 바로가기
Drawing (AI)/DeepLearning

Udemy - 딥러닝의 모든 것(AutoEncoders) - (1)

by 생각하는 이상훈 2024. 1. 10.
728x90

AutoEncoders

우선 AutoEncoder는 아래와 같이 생겼다. 다시 유향 신경망 모델로 돌아왔음을 알 수 있다.

인코딩후에 디코딩을 하고 값을 서로 비교하는 과정을 통해서 학습을 진행하여 비지도 학습중 하나의 형태인 Self-supervised라고 볼 수 있다. 학습 과정에서 Hidden Nodes들에 학습되어 나타난 feature들을 추합하여 feature 추출에도 이용될 수 있고 강력한 추천 모델로도 이용될 수 있다. 우선 아래의 간소화된 모델을 통해서 살펴보자.

유저가 보고 평가한 영화들에 대해서 좋게 평가한것은 1, 나쁘게 평가한 것은 0으로 기록되어있고 인코더를 통해서 암호화가 될 것이다.

네개의 노드를 두개의 노드로 압축하여 공간 효율도 챙길 수 있게 된다. 어떻게 이렇게 압축이 가능한지 살펴보자.

위와 같이 파란색은 +1, 검정색은 -1로 weight를 뒀을때 movie1만 선호하는 사람의 경우 아래와 같이 계산이 될 것이다.

인코딩 과정부터 살펴보면 0인 경우는 은닉층에 영향을 끼치지 않으니 movie1의 1에 +1을 곱한 1이 각각 Hidden node의 값이 된다.

디코딩과정을 하나씩 따져보면 movie1은 1*(+1) + 1*(+1)이므로 2가 되고 movie2와 movie3은 1*(+1) + 1*(-1)이므로 0이 되고 movie4는 1*(-1)+1*(-1)이므로 -2가 된다.

최종적으로 확률을 구해야하기 때문에 Softmax함수에 값을 넣으면 아래와 같이 나온다.

아래의 케이스들에서도 제대로 작동한다. 계산은 생략한다.


Bias

Bias는 단순히 편향으로 z=f(Wx + b)에서 b와 같이 더해진 값을 말한다. 결과를 일정한 수준으로 옮기고 싶을때 흔히 쓰인다.

위와 같이 다음 레이어로 넘어가기 전에 공통적으로 1을 더해주는 식의 단순한 역할이다.


Training

아래와 같이 여섯개의 영화에 대해서 유저들이 내린 평가로 AutoEncoder의 training 과정을 살펴보자.

Training과정을 step별로 살펴보자.

 

STEP 1: 사용자와 영화에 해당하는 관측치(행)와 특징(열)을 포함한 배열로 시작한다. 각 셀(u, i)은 사용자 u에 의한 영화 i의 평점(1에서 5까지, 평점이 없으면 0)을 담고 있다.

STEP 1 (예시 데이터일 뿐 추후에 AutoEncoder를 직접 실습할때는 1-5평점을 가진 데이터를 이용한다.)


STEP 2: 첫 번째 사용자가 네트워크로 입력된다. 입력 벡터 x는 모든 영화에 대한 그의 평점(r1, r2, ..., rm)을 포함합니다.

STEP 2


STEP 3: 입력 벡터 x가 매핑 함수(시그모이드 함수)를 사용하여 더 낮은 차원의 벡터 z로 인코딩된다. z = f(Wx + b)

STEP 3


STEP 4: z는 다시 입력 벡터 x와 같은 차원의 출력 벡터 y로 디코딩된다. 목표는 입력 벡터 x와 같게 복구하는 것이다.

STEP 4


STEP 5: Reconstruction error d(x, y) = ||x-y||이 계산된다. 이를 최소화하는 방향으로 학습이 된다.

STEP 5


STEP 6: 오른쪽에서 왼쪽으로, error가 역전파된다. 이는 오차역전파와 같고 가중치는 오류에 얼마나 많은 영향을 끼치는지에 따라 업데이트된다. 학습률은 가중치를 얼마나 업데이트할지 결정한다.

STEP 6


STEP 7: STEP 1에서 6을 반복하는데 이때 각각의 관측후에 가중치를 업데이트하면 강화 학습이고 배치후에 이루어지면 배치 학습이다.

STEP 7


STEP 8: 전체 훈련 세트가 신경망을 통과하는 것이 한 에폭이고 반복하여 여러 에폭을 수행한다.

STEP 8


 

728x90