제퍼넷 로고

빨지 않는 딥 러닝 모델을 만드는 방법

시간

모든 튜토리얼을 시청하셨습니다. 이제 신경망이 어떻게 작동하는지 이해했습니다. 고양이와 개 분류기를 만들었습니다. 반쯤 괜찮은 캐릭터 수준의 RNN을 시도했습니다. 당신은 단지 하나입니다 pip install tensorflow 터미네이터를 구축하는 것과는 거리가 멀죠? 잘못된.

기계 학습 밈
출처

딥 러닝의 매우 중요한 부분은 올바른 하이퍼파라미터를 찾는 것입니다. 이것은 모델이 배우다.

이 기사에서는 Kaggle 리더보드의 1위 자리로 가는 길에 만날 수 있는 가장 일반적이고 중요한 하이퍼파라미터 중 일부를 안내해 드리겠습니다. 또한 하이퍼파라미터를 현명하게 선택하는 데 도움이 되는 몇 가지 강력한 알고리즘도 보여 드리겠습니다.

딥 러닝의 초매개변수

하이퍼파라미터는 모델의 조정 손잡이로 생각할 수 있습니다.

AV 리시버를 스테레오로 설정하면 인간 귀의 가청 범위를 넘어 베이스를 생성하는 서브우퍼가 있는 멋진 7.1 Dolby Atmos 홈 시어터 시스템은 무용지물입니다.

스테레오 앰프를 켰다
님이 촬영 한 사진 마이클 안드레 / Unsplash

마찬가지로, 3조 개의 매개변수가 있는 inception_vXNUMX는 하이퍼 매개변수가 꺼져 있는 경우 MNIST를 통과하지도 못합니다.

이제 올바른 설정을 다이얼하는 방법을 알아보기 전에 조정할 노브를 살펴보겠습니다.

학습률

가장 중요한 하이퍼파라미터인 학습률은 대략적으로 말하면 신경망이 "학습"하는 속도를 제어합니다.

그래서 우리는 이것을 증폭하고 빠른 차선에서 삶을 사는 것이 어떻습니까?

속도계
출처

그렇게 간단하지 않습니다. 딥 러닝에서 우리의 목표는 손실 함수 최소화. 학습률이 너무 높으면 손실이 모든 곳에서 점프하기 시작하고 수렴되지 않습니다.

모델의 학습률
출처

그리고 학습률이 너무 작으면 위에서 설명한 것처럼 모델이 수렴하는 데 너무 오래 걸립니다.

기세

이 기사는 하이퍼파라미터 최적화에 초점을 맞추기 때문에 전체 개념을 설명하지는 않겠습니다. 기세. 그러나 간단히 말해서, 운동량 상수는 손실 함수의 표면을 굴러 내려가는 공의 질량으로 생각할 수 있습니다.

공이 무거울수록 더 빨리 떨어집니다. 그러나 너무 무거우면 막히거나 목표물을 초과할 수 있습니다.

무거운 볼, 오버슛 타겟
출처

탈락

여기에서 주제를 감지했다면 이제 다음으로 안내하겠습니다. 아마르 부디라자의 탈락에 대한 기사.

표준 신경망 vs. 드롭아웃 적용 후 신경망
출처

그러나 간단히 복습하듯이, 드롭아웃은 (p)의 확률로 신경망의 활성화를 무작위로 0으로 설정하는 Geoff Hinton이 제안한 정규화 기술입니다. 이것은 신경망이 데이터를 학습하는 것과 반대로 과적합(암기)하는 것을 방지하는 데 도움이 됩니다.

(p)는 초매개변수입니다.

아키텍처 — 레이어 수, 레이어당 뉴런 등

상당히 최근의 또 다른 아이디어는 신경망 자체의 아키텍처를 초매개변수로 만드는 것입니다.

우리는 일반적으로 기계가 우리 모델의 아키텍처를 알아내도록 만들지 않지만(그렇지 않으면 AI 연구원은 일자리를 잃게 됩니다), 다음과 같은 몇 가지 새로운 기술이 있습니다. 신경 아키텍처 검색 다양한 정도의 성공으로 이 아이디어를 구현했습니다.

들어 본 적이 있다면 AutoML, 이것이 기본적으로 Google이 수행하는 방식입니다. 모든 것을 하이퍼파라미터로 만든 다음 문제에 XNUMX억 TPU를 던져 스스로 해결하도록 합니다..

그러나 블랙프라이데이 세일 이후에 저렴한 기계로 고양이와 개를 분류하려는 대다수의 사람들에게는 이러한 딥 러닝 모델을 실제로 작동시키는 방법을 알아낼 때입니다.

초매개변수 최적화 알고리즘

이것은 좋은 하이퍼파라미터를 얻는 가장 간단한 방법입니다. 말 그대로 그냥 무력입니다.

알고리즘: 주어진 하이퍼파라미터 세트에서 여러 하이퍼파라미터를 시도하고 가장 잘 작동하는 것을 확인하십시오.

노트북에서 사용해 보세요

장점 : XNUMX학년 학생이 구현하기에 충분히 쉽습니다. 쉽게 병렬화할 수 있습니다.

단점 : 짐작할 수 있듯이 계산 비용이 엄청나게 많이 듭니다(모든 무차별 대입 방법이 그렇듯이).

나는 그것을 사용해야 하는가: 아마 그렇지 않을 것입니다. 그리드 검색은 매우 비효율적입니다. 단순하게 유지하고 싶더라도 임의 검색을 사용하는 것이 좋습니다.

모든 것이 이름에 있습니다. 무작위 검색 검색입니다. 무작위로.

알고리즘: 일부 하이퍼파라미터 공간에 균일한 분포에서 무작위 하이퍼파라미터 무리를 시도하고 가장 잘 작동하는 것을 확인하십시오.

노트북에서 사용해 보세요

장점 : 쉽게 병렬화할 수 있습니다. 그리드 검색만큼 간단하지만 약간 더 나은 성능, 아래 그림과 같이:

랜덤 검색 알고리즘 - 하이퍼파라미터 최적화
출처

단점 : 그리드 검색보다 더 나은 성능을 제공하지만 여전히 계산 집약적입니다.

나는 그것을 사용해야 하는가: 사소한 병렬화와 단순성이 가장 중요하다면 그것을 선택하십시오. 그러나 시간과 노력을 아끼면 베이지안 최적화를 사용하여 큰 보상을 받을 수 있습니다.

베이지안 최적화

지금까지 본 다른 방법과 달리 베이지안 최적화는 알고리즘의 이전 반복에 대한 지식을 사용합니다. 그리드 검색 및 랜덤 검색에서 각 하이퍼파라미터 추측은 독립적입니다. 그러나 베이지안 방법을 사용하면 서로 다른 초매개변수를 선택하고 시도할 때마다 완벽에 가까워집니다.

딥 러닝은 베이지안 밈입니다
출처

베이지안 초매개변수 조정의 이면에 있는 아이디어는 길고 세부 사항이 풍부합니다. 너무 많은 토끼굴을 피하기 위해 여기에서 요점을 알려 드리겠습니다. 그러나 다음을 반드시 읽으십시오. 가우스 과정일반적인 베이지안 최적화, 관심 있는 분야라면.

이러한 초매개변수 조정 알고리즘을 사용하는 이유는 실제로 여러 초매개변수 선택을 개별적으로 평가하는 것이 불가능하기 때문입니다. 예를 들어 수동으로 좋은 학습률을 찾고 싶다고 가정해 보겠습니다. 여기에는 학습률 설정, 모델 학습, 평가, 다른 학습률 선택, 처음부터 다시 모델 학습, 재평가가 포함되며 주기가 계속됩니다.

문제는 "모델 훈련"이 완료되는 데 (문제의 복잡성에 따라) 최대 며칠이 걸릴 수 있다는 것입니다. 따라서 컨퍼런스의 논문 제출 마감일이 될 때까지는 몇 가지 학습률만 시도할 수 있습니다. 그리고 당신은 기세를 가지고 놀기 시작하지도 않았습니다. 죄송합니다.

갈색과 흰색 시계를 착용하는 사람
님이 촬영 한 사진 브래드 네더리 / Unsplash

알고리즘: 베이지안 방법은 모델이 얼마나 좋은지 추정하는 함수(보다 정확하게는 가능한 함수에 대한 확률 분포)를 구축하려고 시도합니다. 수도 특정 하이퍼파라미터 선택을 위한 것입니다. 이 근사 함수(문헌에서 대리 함수라고 함)를 사용하면 대리 함수에 대한 하이퍼파라미터를 최적화할 수 있기 때문에 루프를 너무 많이 설정, 훈련, 평가할 필요가 없습니다.

예를 들어 이 함수를 최소화하고 싶다고 가정해 봅시다(모델의 손실 함수에 대한 프록시처럼 생각하세요).

대리 함수는 가우시안 프로세스(참고: 대리 함수를 모델링하는 다른 방법이 있지만 가우시안 프로세스를 사용하겠습니다)라고 하는 것에서 가져옵니다. 제가 언급했듯이, 저는 수학적인 파생을 하지 않을 것이지만 베이지안과 가우스에 대해 이야기하는 모든 내용은 다음과 같이 요약됩니다.

$$ mathbb{P} (F_n(X)|X_n) = frac{e^{-frac12 F_n^T 시그마_n^{-1} F_n}}{sqrt{(2pi)^n |시그마_n|}} $$

확실히 한 입입니다. 그러나 그것을 분해하려고 노력합시다.

왼쪽은 확률 분포가 관련되어 있음을 알려줍니다(멋진 모양( mathbb{P} )가 있는 경우). 대괄호 안을 살펴보면 임의의 함수인 ( F_n(X) )의 확률 분포임을 알 수 있습니다. 왜? 왜냐하면 우리는 특정 기능만이 아니라 가능한 모든 기능에 대한 확률 분포를 정의한다는 것을 기억하기 때문입니다. 본질적으로 왼쪽은 하이퍼파라미터를 모델의 메트릭(검증 정확도, 로그 가능성, 테스트 오류율 등)에 매핑하는 실제 함수가 일부 샘플 데이터가 주어지면 ( F_n(X) )일 확률을 말합니다. (X_n)은 오른쪽에 있는 것과 같습니다.

이제 최적화할 기능이 있으므로 최적화합니다.

최적화 프로세스를 시작하기 전의 가우스 프로세스는 다음과 같습니다.

2단계 후의 가우스 과정 및 효용 함수
2점으로 반복하기 전의 가우스 과정

선호하는 옵티마이저(예상 개선을 극대화하는 것과 같은 장점)를 선택하여 사용하십시오. 그러나 어떻게든 기호(또는 기울기)를 따르십시오.

몇 번의 반복 후에 가우스 프로세스는 목표 함수를 근사하는 데 더 좋아집니다.

5단계 후의 가우스 과정과 효용 함수
3점으로 2회 반복한 후의 가우산 과정

사용한 방법에 관계없이 이제 `argmin`을 찾았습니다. 대리 기능의. 놀랍게도, 놀랍게도 대리 함수를 최소화하는 인수는 최적의 하이퍼파라미터(추정치)입니다! 야.

최종 결과는 다음과 같아야 합니다.

9단계 후의 가우스 과정 및 효용 함수
7점으로 2회 반복한 후의 가우산 과정

이러한 "최적" 하이퍼파라미터를 사용하여 신경망에서 훈련을 실행하면 약간의 개선이 보일 것입니다. 그러나 이 새로운 정보를 사용하여 전체 베이지안 최적화 프로세스를 반복해서 다시 실행할 수도 있습니다. 원하는 만큼 베이지안 루프를 자유롭게 실행할 수 있지만 주의하십시오. 당신은 실제로 물건을 계산하고 있습니다. 이러한 AWS 크레딧은 무료로 제공되지 않습니다. 아니면 그들은 ...

노트북에서 사용해 보세요

장점 : 베이지안 최적화는 그리드 검색과 랜덤 검색보다 더 나은 결과를 제공합니다.

단점 : 병렬화하기가 쉽지 않습니다.

나는 그것을 사용해야 하는가: 대부분의 경우 그렇습니다! 유일한 예외는 다음과 같습니다.

  • 당신은 딥 러닝 전문가이고 단순한 근사 알고리즘의 도움이 필요하지 않습니다.
  • 방대한 컴퓨팅 리소스에 액세스할 수 있으며 그리드 검색과 랜덤 검색을 대규모로 병렬화할 수 있습니다.
  • 당신이 빈도주의자/반 베이지안 통계 괴짜라면.

좋은 학습률을 찾기 위한 대안적 접근

지금까지 본 모든 방법에는 하나의 기본 테마가 있습니다. 바로 기계 학습 엔지니어의 작업을 자동화하는 것입니다. 위대하고 모든 것; 상사가 이 사실을 알고 당신을 4개의 RTX Titan 카드로 교체하기로 결정할 때까지. 허. 수동 검색에 매달렸어야 한다고 생각합니다.

RTX 타이탄 카드
님이 촬영 한 사진 라파엘 폴 / Unsplash

그러나 절망하지 마십시오. 연구원이 적은 일을하면서 동시에 더 많은 급여를받는 분야에서 활발한 연구가 있습니다. 그리고 매우 잘 작동한 아이디어 중 하나는 학습률 범위 테스트입니다. 이 테스트는 제가 아는 한 처음으로 레슬리 스미스의 논문.

이 논문은 실제로 시간 경과에 따른 학습률을 스케줄링(변경)하는 방법에 관한 것입니다. LR(학습률) 범위 테스트는 작성자가 무심코 옆에 떨어트린 금덩이였다.

다음과 같이 학습률을 최소값에서 최대값으로 변경하는 학습률 일정을 사용하는 경우 순환 학습률 or 따뜻한 재시작을 통한 확률적 경사 하강, 저자는 작은 값에서 큰 값으로 각 반복 후에 학습률을 선형으로 증가시킬 것을 제안합니다(예: 1e-71e-1), 각 반복에서 손실을 평가하고 로그 척도의 학습률에 대해 손실(또는 테스트 오류 또는 정확도)을 플로팅합니다. 플롯은 다음과 같아야 합니다.

학습률 대 손실 그래프
출처

노트북에서 사용해 보세요

플롯에 표시된 대로 학습률 일정을 설정하여 최소 학습률과 최대 학습률 사이에서 바운스하도록 합니다. 이 학습률은 플롯을 보고 가장 가파른 기울기가 있는 영역을 주시하려고 시도하여 찾을 수 있습니다.

다음은 Colab의 샘플 LR 범위 테스트 플롯(CIFAR10에서 훈련된 DenseNet)입니다. 수첩:

샘플 LR 범위 테스트 플롯(CIFAR10에서 훈련된 DenseNet)
CIFAR201에서 훈련된 DenseNet 10의 샘플 LR 범위 테스트

경험에 비추어 볼 때 멋진 학습률 일정을 수행하지 않는 경우에는 일정 학습률을 플롯의 최소값보다 XNUMX배 낮은 수준으로 설정하면 됩니다. 이 경우 대략적으로 1e-2.

이 방법의 가장 멋진 부분은 실제로 잘 작동하고 다른 알고리즘으로 좋은 하이퍼파라미터를 찾는 데 필요한 시간, 정신적 노력 및 계산을 절약한다는 점을 제외하고는 추가 계산 비용이 거의 들지 않는다는 것입니다.

다른 알고리즘인 그리드 검색, 랜덤 검색 및 베이지안 최적화, 좋은 신경망 훈련 목표에 접하는 전체 프로젝트를 실행해야 하는 경우 LR 범위 테스트는 단순하고 규칙적인 훈련 루프를 실행하고 그 과정에서 몇 가지 변수를 추적하는 것입니다.

최적의 학습률을 사용할 때 기대할 수 있는 수렴 속도 유형은 다음과 같습니다. 수첩):

최적의 학습률에 맞는 모델에 대한 손실 대 배치
최적의 학습률에 맞는 모델에 대한 손실 대 배치

LR 범위 테스트는 다음 팀에서 구현했습니다. fast.ai, 그리고 당신은 확실히 그들의 라이브러리를 살펴보고 LR 범위 테스트를 구현해야 합니다. 학습률 찾기) 뿐만 아니라 다른 많은 알고리즘도 쉽게 사용할 수 있습니다.

보다 정교한 딥 러닝 실무자를 위해

관심이 있으시면 순수로 작성된 공책도 있습니다. 파이 토치 위의 사항을 구현하는 것입니다. 이렇게 하면 비하인드 교육 과정을 더 잘 이해할 수 있습니다. 확인 해봐 여기에서 지금 확인해 보세요..

노력을 아끼세요

Nanonets 로고

물론 이러한 모든 알고리즘이 아무리 훌륭해도 실제로는 항상 작동하는 것은 아닙니다. 데이터를 사전 처리하고, 모델을 정의하고, 실제로 컴퓨터를 실행하기에 충분히 강력한 컴퓨터를 얻는 방법과 같이 신경망을 훈련할 때 고려해야 할 더 많은 요소가 있습니다.

나노 넷 사용하기 쉬운 API 제공 맞춤형 딥 러닝 훈련 및 배포 모델. 데이터 증대, 전이 학습 및 하이퍼파라미터 최적화를 포함한 모든 무거운 작업을 처리합니다!

나노 넷 방대한 GPU 클러스터에서 베이지안 검색을 사용하여 최신 그래픽 카드에 돈을 들이는 것에 대해 걱정할 필요 없이 올바른 하이퍼파라미터 세트를 찾습니다. out of bounds for axis 0.

최적의 모델을 찾은 후, 나노 넷 웹 인터페이스를 사용하여 모델을 테스트하거나 2줄의 코드를 사용하여 프로그램에 통합할 수 있도록 클라우드에서 제공합니다.

완벽하지 않은 모델과 작별을 고하십시오.

결론

이 기사에서 우리는 하이퍼파라미터와 이를 최적화하는 몇 가지 방법에 대해 이야기했습니다. 그러나 모든 것이 무엇을 의미합니까?

우리가 AI 기술을 민주화하기 위해 점점 더 열심히 노력함에 따라 자동화된 초매개변수 조정은 아마도 올바른 방향으로 나아가는 단계일 것입니다. 당신과 나 같은 일반 사람들은 수학 박사 학위 없이도 놀라운 딥 러닝 애플리케이션을 구축할 수 있습니다.

컴퓨팅 성능에 굶주린 모델을 만드는 것은 해당 컴퓨팅 성능을 감당할 수 있는 사람들에게 최고의 모델을 남겨두는 것이라고 주장할 수 있지만 AWS 및 Nanonet과 같은 클라우드 서비스는 강력한 기계에 대한 액세스를 민주화하여 딥 러닝에 훨씬 더 쉽게 액세스할 수 있도록 합니다.

하지만 더 근본적으로, 우리는 실제로 더 많은 수학을 해결하기 위해 수학을 사용하여 여기에서 하고 있습니다. 이는 메타가 어떻게 들리는지뿐만 아니라 얼마나 쉽게 잘못 해석될 수 있기 때문에 흥미롭습니다.

AI 및 미디어 분야의 Google 인턴
출처

우리는 확실히 펀치 카드와 트레이스 테이블의 시대에서 기능을 최적화하는 기능을 최적화하는 기능을 최적화하는 시대로 먼 길을 왔습니다. 그러나 우리는 스스로 "생각"할 수 있는 기계를 만드는 데 가까이 있지 않습니다.


그리고 그것은 낙심하지 않습니다. 왜냐하면 인류가 아주 적은 것으로 많은 것을 할 수 있다면, 우리의 비전이 우리가 실제로 볼 수 있는 것이 될 때 미래가 어떻게 될지 상상해보십시오.

그래서 우리는 쿠션이 있는 메쉬 의자에 앉아 빈 터미널 화면을 바라보고 있습니다. 키를 누를 때마다 sudo 디스크를 깨끗하게 닦을 수 있는 초능력.

그래서 우리는 앉아서 하루 종일 앉아 있습니다. 왜냐하면 다음 큰 돌파구는 단 하나일 수 있기 때문입니다. pip install 떨어져.


코딩에 게으르신가요? 컴퓨팅 리소스에 지출하고 싶지 않습니까? 로 이동 나노 넷 모델 구축 시작 지금!

다음에 대한 최신 게시물에 관심이있을 수 있습니다.

코인 스마트. 유로파 최고의 비트 코인-보르 스
출처: https://nanonets.com/blog/hyperparameter-optimization/

spot_img

최신 인텔리전스

spot_img