이후 심층신경망(DNN)은 산업계와 학계 모두에서, 특히 컴퓨터 비전 작업에서 큰 성공을 거두었습니다. 딥러닝의 성공은 주로 수십억 개의 매개변수로 데이터를 인코딩하기 위한 확장 가능한 아키텍처에 기인합니다. 딥러닝의 학습 목표는 기존 학습 데이터 세트의 입력과 출력 간의 관계를 모델링하는 것입니다. 성능은 네트워크의 복잡성에 따라 크게 달라집니다. 레이블이 지정된 훈련 데이터의 양과 품질.
컴퓨터 비전 분야의 기존 알고리즘에 비해 대부분의 DNN 기반 모델은 과잉 매개변수화로 인해 강력한 일반화 기능을 갖고 있습니다. 반면, 이러한 일반화 기능은 특정 문제에 대한 모든 데이터 입력에 반영됩니다. 모델은 훈련 데이터, 테스트 데이터, 문제에 속하는 알 수 없는 데이터 등 더 나은 예측 결과를 제공할 수 있습니다.
현재 딥 러닝 환경에서 비즈니스 알고리즘의 예측 효과를 향상시키기 위해 알고리즘 엔지니어는 종종 두 가지 솔루션을 사용합니다.
매개변수화된 더 복잡한 네트워크를 사용합니다. 이러한 유형의 네트워크는 매우 강력한 학습 기능을 갖추고 있지만 필요합니다. 대량의 경우 훈련을 위해 더 많은 컴퓨팅 리소스가 필요하며 추론 속도가 느려집니다.
앙상블 모델은 일반적으로 매개변수 통합 및 결과 통합을 포함하여 효과가 약한 많은 모델을 통합합니다.
이 두 가지 솔루션은 기존 알고리즘의 성능을 크게 향상시킬 수 있지만 둘 다 모델의 규모를 늘리고 더 큰 계산 부담을 발생시키며 대규모 컴퓨팅 및 스토리지 리소스가 필요합니다.
작업에서 다양한 알고리즘 모델의 궁극적인 목표는 특정 애플리케이션을 제공하는 것입니다. 물건을 사고 파는 것과 마찬가지로 우리는 수입과 지출을 통제해야 합니다. 산업 응용에서는 모델이 좋은 예측을 하도록 요구하는 것 외에도 컴퓨팅 리소스의 사용도 엄격하게 제어해야 하며 효율성을 고려하지 않고 결과만 고려할 수는 없습니다. 입력 데이터 인코딩량이 많은 컴퓨터 비전 분야에서는 컴퓨팅 리소스가 더욱 제한되어 있으며, 제어 알고리즘의 리소스 점유도가 더욱 중요합니다. 일반적으로 모델이 클수록 예측 결과가 더 좋지만 학습 시간이 길고 추론 속도가 느린 문제로 인해 모델을 실시간으로 배포하기가 어렵습니다. 특히 영상감시, 자율주행차, 처리량이 많은 클라우드 환경 등 컴퓨팅 자원이 제한된 기기에서는 응답속도가 확실히 부족하다. 작은 모델은 추론 속도가 더 빠르지만 매개변수가 부족하여 추론 효과와 일반화 성능이 좋지 않을 수 있습니다. 대규모 모델과 소규모 모델의 가중치를 어떻게 측정할 것인가는 항상 뜨거운 주제였습니다. 현재 대부분의 솔루션은 배포 환경에서 단말 장치의 성능을 기반으로 적절한 크기의 DNN 모델을 선택하는 것입니다.
빠른 추론 속도를 유지하면서 대형 모델과 동일하거나 가까운 효과를 얻을 수 있는 작은 모델을 원한다면 어떻게 해야 할까요?
머신러닝에서는 입력과 출력 사이에 잠재적인 매핑 기능 관계가 있다고 가정하는 경우가 많습니다. 새로운 모델을 처음부터 학습하는 것은 입력 데이터와 해당 라벨 사이에 대략 알 수 없는 매핑 기능입니다. 입력 데이터가 변경되지 않는다는 전제 하에 작은 모델을 처음부터 훈련시키는 것은 경험적 관점에서 큰 모델의 효과에 접근하기 어렵습니다. 일반적으로 소규모 모델 알고리즘의 성능을 향상시키기 위한 가장 효과적인 방법은 더 많은 입력 데이터에 레이블을 지정하는 것입니다. 즉, 더 많은 감독 정보를 제공하여 학습된 매핑 기능을 더욱 강력하게 만들고 더 나은 성능을 발휘할 수 있습니다. 두 가지 예를 들자면, 컴퓨터 비전 분야에서 인스턴스 분할 작업은 추가 마스크 정보를 제공하여 대상 경계 상자 감지 효과를 향상시킬 수 있습니다. 전이 학습 작업은 더 큰 규모의 사전 훈련된 모델을 제공하여 새로운 작업을 크게 향상시킬 수 있습니다. 데이터 세트 예측 효과. 따라서더 많은 감독 정보를 제공
하는 것이 소규모 모델과 대규모 모델 간의 격차를 줄이는 열쇠가 될 수 있습니다.앞서 말했듯이, 더 많은 감독 정보를 얻는다는 것은 더 많은 훈련 데이터에 라벨을 지정하는 것을 의미하며, 이는 종종 막대한 비용이 필요합니다. 그렇다면 감독 정보를 얻는 저비용의 효율적인 방법이 있을까요? 2006년 기사 [1]에서는 새 모델을 원래 모델에 가깝게 만들 수 있다고 지적했습니다(모델은 기능임). 원래 모델의 기능이 알려져 있기 때문에 새 모델을 훈련할 때 더 많은 감독 정보가 자연스럽게 추가되며 이는 분명히 더 실현 가능합니다.
더 생각해보면, 원래 모델이 가져온 감독 정보에는 다른 차원의 지식이 포함될 수 있습니다. 이러한 고유한 정보는 새 모델 자체에서는 어느 정도 포착되지 않을 수도 있습니다. "교차 도메인" 학습.2015년 Hinton은 "Distilling the Knowledge in a Neural Network"[2] 논문의 근사 아이디어를 따랐으며 "Knowledge Distillation(KD)" 개념을 처음 제안했습니다. 강력한 모델을 만들고, 그 안에 담긴 지식을 더 작은 모델에 전달함으로써 "소형 모델의 더 빠른 추론 속도를 유지하면서 대형 모델과 동등하거나 그에 가까운 효과를 달성한다"는 목적을 달성합니다. 먼저 훈련된 큰 모델을 교사 모델이라고 부를 수 있고, 나중에 훈련된 작은 모델을 학생 모델이라고 부를 수 있습니다. 전체 훈련 과정은 "교사-학생 학습"에 생생하게 비유될 수 있습니다. 그 후 몇 년 동안 많은 양의 지식 정제 및 교사-학생 학습 작업이 등장하여 업계에 더 많은 새로운 솔루션을 제공했습니다. 현재 KD는 모델 압축과 지식 전달이라는 두 가지 분야에서 널리 사용되고 있습니다[3].
Knowledge Distillation은 "교사-학생 네트워크" 아이디어를 기반으로 한 모델 압축 방법으로, 단순성과 효율성 때문에 업계에서 널리 사용됩니다. . 그 목적은 훈련된 대형 모델인 Distill(Distill)에 포함된 지식을 다른 작은 모델로 추출하는 것입니다. 그렇다면 대형 모델의 지식이나 일반화 능력을 소형 모델에 어떻게 전달할 수 있을까요? KD 논문에서는 대형 모델의 샘플 출력의 확률 벡터를 소프트 타겟인 소형 모델에 제공하므로 소형 모델의 출력은 이 소프트 타겟(원래는 원-핫 인코딩에 의존함)에 의존하려고 합니다. 대규모 모델 행동의 학습을 근사화합니다.
기존의 하드 라벨 학습 과정에서는 모든 부정적인 라벨이 균일하게 처리되지만 이 방법은 카테고리 간의 관계를 분리합니다. 예를 들어, 손으로 쓴 숫자를 인식하려는 경우 "3"과 동일한 레이블이 있는 일부 그림은 "8"에 더 가깝게 보일 수도 있고 일부는 "2"에 더 가깝게 보일 수도 있지만 하드 레이블은 이 정보를 구별할 수 없습니다. 훈련된 대형 모델이 나올 수 있습니다. 대형 모델의 소프트맥스 레이어 출력에는 긍정적인 예 외에도 부정적인 레이블에도 많은 정보가 포함되어 있습니다. 예를 들어 일부 부정적인 레이블에 해당하는 확률은 다른 부정적인 레이블보다 훨씬 큽니다. 근사 학습의 동작을 통해 각 샘플은 기존 교육 방법보다 학생 네트워크에 더 많은 정보를 가져올 수 있습니다.
따라서 저자는 학생 네트워크를 훈련할 때 손실 함수를 수정하여 작은 모델이 훈련 데이터의 Ground Truth 레이블에 적합할 뿐만 아니라 대규모 모델 출력의 확률 분포에도 적합하도록 했습니다. 이 방법을 지식 증류 훈련(KD Training)이라고 합니다. 지식 증류 프로세스에 사용되는 훈련 샘플은 대규모 모델을 훈련하는 데 사용된 샘플과 동일하거나 독립적인 전송 세트를 찾을 수 있습니다.
방법에 대한 자세한 설명
훈련 중에 Teacher 모델이 학습한 지식은 먼저 작은 모델로 증류됩니다. 특히 샘플 X의 경우 큰 모델의 두 번째 레이어를 먼저 온도 T로 나눈 다음 소프트맥스를 통해 소프트 타겟을 예측합니다. 작은 모델도 마찬가지로 두 번째 레이어를 동일한 온도 T로 나눈 다음 소프트맥스를 통해 결과를 예측한 다음 이 결과의 교차 엔트로피와 소프트 타겟을 교육 전체 손실의 일부로 사용합니다. 그런 다음 작은 모델의 정규 출력과 실제 값 레이블(하드 타겟)의 교차 엔트로피가 훈련 총 손실의 또 다른 부분으로 사용됩니다. 총 손실은 작은 모델을 훈련하기 위한 최종 손실로 두 손실을 합친 가중치입니다.
소형 모델이 학습되어 예측이 필요한 경우 더 이상 온도 T가 필요하지 않으며 기존 소프트맥스에 따라 직접 출력할 수 있습니다.
FitNet 논문에서는 학생 모델의 훈련을 안내하기 위해 증류 과정에서 중급 수준의 힌트를 소개합니다. 좁고 깊은 학생 모델을 훈련하려면 넓고 얕은 교사 모델을 사용하세요. 힌트 안내를 수행할 때 힌트 레이어와 안내 레이어의 출력 모양을 일치시키는 레이어를 사용하는 것이 좋습니다. 이를 향후 작업에서는 종종 적응 레이어라고 합니다.
일반적으로 지식 증류를 할 때 Teacher 모델의 로짓 출력뿐만 아니라 Teacher 모델의 중간 계층 특징 맵을 감독 정보로 사용하는 것과 동일합니다. 상상할 수 있는 것은 작은 모델이 출력 끝에서 큰 모델을 직접 모방하는 것이 너무 어렵다는 것입니다(모델이 깊을수록 훈련하기가 더 어렵고 마지막 감독 신호 계층을 전면) 중간에 일부 감독 신호를 추가하면 모델이 훈련 중에 더 어려운 매핑 기능을 계층별로 학습할 수 있으며 힌트 안내를 통해 수렴이 가속화됩니다. 볼록하지 않은 문제에서 더 나은 로컬 최소값을 찾으면 학생 네트워크가 더 깊어지고 더 빠르게 훈련될 수 있습니다. 우리의 목적은 학생들에게 대학 입시 문제를 보도록 하는 것 같아서 먼저 중학교 문제를 가르칩니다(먼저 작은 모델이 모델의 전반부를 사용하여 이미지의 기본 특징을 추출하는 방법을 배우도록 합니다). 그런 다음 원래 목적으로 돌아가서 대학 입학 시험 문제를 학습합니다(소형 모델의 모든 매개변수를 조정하려면 KD를 사용함).
이 글은 제안된 증류 중간 특징 맵의 조상입니다. 제안된 알고리즘은 매우 간단하지만 아이디어는 획기적입니다.
FitNets의 구체적인 방법은 다음과 같습니다.
실제 훈련에서는 이전 섹션의 KD Training과 함께 훈련을 위한 2단계 방법을 사용하는 경우가 많습니다. 먼저 힌트 훈련을 사용하여 작은 모델의 전반부의 매개변수를 사전 훈련한 다음 다음을 사용합니다. 모든 매개변수를 훈련하는 KD 훈련. 증류 과정에서 더 많은 감독 정보가 사용되므로 중간 특징 맵을 기반으로 한 증류 방법이 결과 로짓을 기반으로 한 증류 방법보다 성능이 좋지만 훈련 시간이 길어집니다.
지식 증류는 앙상블이나 고도로 정규화된 대형 모델에서 소형 모델로 지식을 전달하는 데 매우 효과적입니다. 증류 모델을 훈련하는 데 사용되는 마이그레이션 데이터 세트에서 하나 이상의 클래스에 대한 데이터가 누락된 경우에도 증류는 매우 잘 작동합니다. 고전적인 KD와 FitNet이 제안된 후 다양한 증류 방법이 등장했습니다. 앞으로는 모델 압축 및 지식 전달 분야에서도 더 많은 연구를 진행하기를 희망합니다.
Ma Jialiang은 NetEase Yidun의 수석 컴퓨터 비전 알고리즘 엔지니어입니다. 그는 주로 콘텐츠 보안 분야에서 컴퓨터 비전 알고리즘의 연구, 개발, 최적화 및 혁신을 담당하고 있습니다.
위 내용은 대형 모델은 소형 모델을 정확하게 피드백하고, 지식 증류는 AI 알고리즘 성능을 향상하는 데 도움이 됩니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!