@hbaderts는 전체 워크 플로우를 완벽하게 설명했습니다. 그러나이 아이디어에 완전히 익숙하지 않은 경우에는 의미가 없습니다. 따라서 나는 평신도의 방식으로 설명 할 것입니다 (따라서 세부 사항은 생략 할 것입니다).
딥 네트워크는 데이터를 변환하는 기능으로 생각하십시오. 변환의 예로는 정규화, 데이터 로그 기록 등이 있습니다. 훈련중인 딥 네트워크에는 여러 계층이 있습니다. 이러한 각 계층은 일종의 학습 알고리즘을 사용하여 학습됩니다. 첫 번째 레이어의 경우 원본 데이터를 입력으로 전달하고 "동일한 원본 데이터"를 출력으로 되돌릴 수있는 함수를 얻으려고합니다. 그러나 완벽한 결과를 얻지는 못합니다. 따라서 첫 번째 레이어의 출력으로 변환 된 버전의 입력을 얻게됩니다.
이제 두 번째 계층에서는 이러한 "변환 된 데이터"를 가져 와서 입력으로 전달하고 전체 학습 프로세스를 반복합니다. 딥 네트워크의 모든 계층에 대해 계속 그렇게합니다.
마지막 계층에서 얻는 것은 원래 입력 데이터의 "변환 된 버전"입니다. 이것은 원래 입력 데이터의 높은 수준의 추상화로 생각할 수 있습니다. 딥 네트워크에서는 아직 레이블 / 출력을 사용하지 않았습니다. 그러므로이 시점까지의 모든 것은 비지도 학습입니다. 이것을 계층 별 사전 훈련이라고합니다.
이제 분류 자 / 회귀 모델을 학습하려고합니다. 이것은 감독 학습 문제입니다. 이 목표를 달성하는 방법은 딥 네트워크의 마지막 레이어에서 원래 입력의 "최종 변환 버전"을 가져 와서 모든 분류기의 입력으로 사용하는 것입니다 (예 : knn 분류기 / softmax 분류기 / 로지스틱 회귀 등). 이것을 스태킹이라고합니다.
이 마지막 단계 분류기 / 학습자를 교육 할 때는 모든 학습을 전체 네트워크에 전파합니다. 이를 통해 레이블 / 출력에서 학습하고 학습 된 레이어 별 매개 변수를 적절하게 수정할 수 있습니다.
따라서 생성 모델을 학습 한 후에는 생성 모델의 출력을 가져와 분류 자 / 학습자에 대한 입력으로 사용하십시오. 학습이 계속됨에 따라 오류가 전체 네트워크를 통과하도록하여 이전 단계에서 학습 한 계층 별 매개 변수를 수정할 수 있습니다.