찾다

신경망 최적화

Oct 13, 2024 am 06:15 AM

La semaine dernière, j'ai publié un article sur la façon de construire des réseaux de neurones simples, en particulier des perceptrons multicouches. Cet article approfondira les spécificités des réseaux de neurones pour expliquer comment nous pouvons maximiser les performances d'un réseau de neurones en modifiant ses configurations.

Combien de temps faut-il former votre modèle

Lors de la formation d'un modèle, vous pourriez penser que si vous entraînez suffisamment votre modèle, celui-ci deviendra parfait. Cela est peut-être vrai, mais cela ne vaut que pour l'ensemble de données sur lequel il a été formé. En fait, si vous lui fournissez un autre ensemble de données dont les valeurs sont différentes, le modèle pourrait produire des prédictions complètement incorrectes.

Pour mieux comprendre cela, disons que vous vous entraînez chaque jour pour votre examen de conduite en conduisant en ligne droite sans bouger le volant. (S'il vous plaît, ne faites pas cela.) Bien que vous obteniez probablement de très bons résultats sur la piste d'accélération, si on vous demandait de tourner à gauche lors de l'examen lui-même, vous pourriez finir par vous transformer en panneau STOP à la place.

Ce phénomène est appelé surapprentissage. Votre modèle peut apprendre tous les aspects et modèles des données sur lesquelles il est formé, mais s'il apprend un modèle qui adhère trop étroitement à l'ensemble de données d'entraînement, alors lorsqu'il reçoit un nouvel ensemble de données, votre modèle fonctionnera mal. Dans le même temps, si vous n’entraînez pas suffisamment votre modèle, celui-ci ne sera pas en mesure de reconnaître correctement les modèles d’autres ensembles de données. Dans ce cas, vous seriez sous-ajusté.

Optimizing Your Neural Networks


Un exemple de surapprentissage. La perte de validation, représentée par la ligne orange augmente progressivement tandis que la perte d'entraînement, représentée par la ligne bleue, diminue.

Dans l'exemple ci-dessus, une excellente position pour arrêter l'entraînement de votre modèle serait la bonne lorsque la perte de validation atteint son minimum. Il est possible de le faire avec arrêt précoce, qui arrête l'entraînement une fois qu'il n'y a pas d'amélioration de la perte de validation après un nombre arbitraire de cycles d'entraînement (époques).

L'entraînement de votre modèle consiste à trouver un équilibre entre le surajustement et le sous-ajustement tout en utilisant un arrêt précoce si nécessaire. C'est pourquoi votre ensemble de données d'entraînement doit être aussi représentatif que possible de votre population globale afin que votre modèle puisse faire des prédictions plus précises sur les données qu'il n'a pas vues.

Fonctions de perte

L'une des configurations d'entraînement les plus importantes pouvant être modifiées est peut-être la fonction de perte, qui est "l'inexactitude" entre les prédictions de votre modèle et leurs valeurs réelles. L'« imprécision » peut être représentée mathématiquement de nombreuses manières différentes, l'une des plus courantes étant l'erreur quadratique moyenne (MSE) :

MSE=i=1n(y나는ˉy나는)2ntext{MSE} = frac{sum_{i=1}^n (바{y_i} - y_i)^2}{n} MSE= ni=1 n(yiˉyi)2

wo yiˉbar{y_i} yichˉ ist die Vorhersage des Modells und yiy_i yi ist der wahre Wert. Es gibt eine ähnliche Variante namens mittlerer absoluter Fehler (MAE)

MAE=i=1ny나는ˉy나는ntext{MAE} = frac{sum_{i=1}^n |bar{y_i} - y_i|}{n} MAE= ni=1 nyiˉyi

Quelle est la différence entre ces deux-là et lequel est le meilleur ? La vraie réponse est que cela dépend de divers facteurs. Considérons un exemple simple de régression linéaire bidimensionnelle.

Dans de nombreux cas, il peut y avoir des points de données qui constituent des valeurs aberrantes, des points éloignés des autres points de données. En termes de régression linéaire, cela signifie qu'il y a quelques points sur le xyxy xy -avions qui sont loin des autres. Si vous vous souvenez de vos cours de statistiques, ce sont des points comme ceux-ci qui peuvent affecter de manière significative la droite de régression linéaire calculée.

Optimizing Your Neural Networks
Un graphique simple avec des points sur (1, 1), (2, 2), (3, 3) et (4, 4)

Si vous vouliez penser à une ligne qui pourrait traverser les quatre points, alors y=xy = x y=x serait un excellent choix car cette ligne passerait par tous les points.

Optimizing Your Neural Networks
Un graphique simple avec des points sur (1, 1), (2, 2), (3, 3) et (4, 4) et la droite y=xy = x y=x en passant par ça

Cependant, disons que je décide d'ajouter un autre point à (5,1) (5, 1) (5,1) . Maintenant, quelle devrait être la droite de régression ? Eh bien, il s'avère que c'est complètement différent : y=0,2x 1,6y = 0,2x 1,6 y=0,2x 1,6

Optimizing Your Neural Networks


Un graphique simple avec des points sur (1, 1), (2, 2), (3, 3), (4, 4) et (5,1 ) avec une ligne de régression linéaire qui le traverse.

Compte tenu des points de données précédents, la ligne s'attendrait à ce que la valeur de yy y quand x=5x = 5 x=5 est 5, mais en raison de la valeur aberrante et de son MSE, la ligne de régression est « tirée vers le bas » de manière significative.

Ce n'est qu'un exemple simple, mais cela pose une question à laquelle vous, en tant que développeur d'apprentissage automatique, devez vous arrêter et réfléchir : Dans quelle mesure mon modèle doit-il être sensible aux valeurs aberrantes ? Si vous voulez que votre modèle pour être plus sensible aux valeurs aberrantes, vous choisirez alors une métrique comme MSE, car dans ce cas, les erreurs impliquant des valeurs aberrantes sont plus prononcées en raison de la mise au carré et votre modèle s'ajustera pour minimiser cela. Sinon, vous choisiriez une métrique comme MAE, qui ne se soucie pas autant des valeurs aberrantes.

옵티마이저

이전 게시물에서는 역전파, 경사하강법의 개념과 이들이 모델 손실을 최소화하는 방법에 대해서도 논의했습니다. 그라디언트는 가장 큰 변화의 방향을 가리키는 벡터입니다. 경사하강법 알고리즘은 이 벡터를 계산하고 정확히 반대 방향으로 이동하여 결국 최소값에 도달합니다.

대부분의 최적화 프로그램에는 일반적으로 다음과 같이 표시되는 특정 학습률이 있습니다. α알파 α 그들이 고수하는 것. 본질적으로 이는 기울기를 계산할 때마다 알고리즘이 최소값을 향해 이동하는 정도를 나타냅니다. 학습률을 너무 크게 설정하지 않도록 주의하세요! 최소값을 반복적으로 건너뛸 수 있는 큰 단계로 인해 알고리즘이 최소값에 도달하지 못할 수도 있습니다.

Optimizing Your Neural Networks
[Tensorflow의 신경망 놀이터](https://playground.tensorflow.org)에서는 학습률을 너무 크게 설정하면 어떤 일이 발생할 수 있는지 보여줍니다. 테스트 손실과 훈련 손실이 모두 `NaN`인 것을 확인하세요.

경사하강법으로 돌아가면 손실을 최소화하는 데 효과적이지만 손실 함수가 전체 데이터세트에 대해 계산되므로 훈련 프로세스가 크게 느려질 수 있습니다. 더 효율적이지만 각각의 단점이 있는 경사하강법에 대한 여러 가지 대안이 있습니다.

확률적 경사하강법

표준 경사하강법의 가장 인기 있는 대안 중 하나는 확률적 경사하강법(SGD)이라는 변형입니다. 경사하강법과 마찬가지로 SGD에도 고정된 학습률이 있습니다. 그러나 SGD는 경사 하강과 같은 전체 데이터 세트를 실행하는 대신 무작위로 선택된 작은 샘플을 사용하고 대신 샘플을 기반으로 신경망의 가중치를 업데이트합니다. 결국 매개변수 값은 손실 함수를 대략적으로(정확하지는 않지만) 최소화하는 지점으로 수렴됩니다. 이는 항상 정확한 최소값에 도달하지 않기 때문에 SGD의 단점 중 하나입니다. 또한 경사하강법과 마찬가지로 설정한 학습률에 계속 민감합니다.

아담 옵티마이저

Adam이라는 이름은 적응 모멘트 추정에서 따왔습니다. 기본적으로 SGD의 두 가지 변형을 결합하여 각 훈련 반복 중에 업데이트되는 빈도에 따라 각 입력 매개변수의 학습 속도를 조정합니다(적응형 학습 속도). 동시에 과거 기울기 계산을 이동 평균으로 추적하여 업데이트를 원활하게 합니다(모멘텀). 하지만 모멘텀 특성으로 인해 다른 알고리즘보다 수렴하는 데 시간이 더 오래 걸릴 수 있습니다.

모든 것을 하나로 합치기

이제 예를 들어보겠습니다!

PyTorch를 사용하여 간단한 선형 관계를 학습하는 신경망을 만드는 예제 연습을 Google Colab에서 만들었습니다.

Python이 처음이더라도 걱정하지 마세요! 각 섹션에서 무슨 일이 일어나는지 설명하는 몇 가지 설명을 포함시켰습니다.

반사

여기서 신경망 최적화에 대한 모든 내용을 다룰 수는 없지만, 최소한 자신의 모델을 훈련하는 동안 활용할 수 있는 가장 중요한 개념 몇 가지만 다루고 싶었습니다. 이번 주에 뭔가를 배우셨기를 바라며 읽어주셔서 감사합니다!

위 내용은 신경망 최적화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
파이썬 : 자동화, 스크립팅 및 작업 관리파이썬 : 자동화, 스크립팅 및 작업 관리Apr 16, 2025 am 12:14 AM

파이썬은 자동화, 스크립팅 및 작업 관리가 탁월합니다. 1) 자동화 : 파일 백업은 OS 및 Shutil과 같은 표준 라이브러리를 통해 실현됩니다. 2) 스크립트 쓰기 : PSUTIL 라이브러리를 사용하여 시스템 리소스를 모니터링합니다. 3) 작업 관리 : 일정 라이브러리를 사용하여 작업을 예약하십시오. Python의 사용 편의성과 풍부한 라이브러리 지원으로 인해 이러한 영역에서 선호하는 도구가됩니다.

파이썬과 시간 : 공부 시간을 최대한 활용파이썬과 시간 : 공부 시간을 최대한 활용Apr 14, 2025 am 12:02 AM

제한된 시간에 Python 학습 효율을 극대화하려면 Python의 DateTime, Time 및 Schedule 모듈을 사용할 수 있습니다. 1. DateTime 모듈은 학습 시간을 기록하고 계획하는 데 사용됩니다. 2. 시간 모듈은 학습과 휴식 시간을 설정하는 데 도움이됩니다. 3. 일정 모듈은 주간 학습 작업을 자동으로 배열합니다.

파이썬 : 게임, Guis 등파이썬 : 게임, Guis 등Apr 13, 2025 am 12:14 AM

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.

Python vs. C : 응용 및 사용 사례가 비교되었습니다Python vs. C : 응용 및 사용 사례가 비교되었습니다Apr 12, 2025 am 12:01 AM

Python은 데이터 과학, 웹 개발 및 자동화 작업에 적합한 반면 C는 시스템 프로그래밍, 게임 개발 및 임베디드 시스템에 적합합니다. Python은 단순성과 강력한 생태계로 유명하며 C는 고성능 및 기본 제어 기능으로 유명합니다.

2 시간의 파이썬 계획 : 현실적인 접근2 시간의 파이썬 계획 : 현실적인 접근Apr 11, 2025 am 12:04 AM

2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

파이썬 : 기본 응용 프로그램 탐색파이썬 : 기본 응용 프로그램 탐색Apr 10, 2025 am 09:41 AM

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 ​​같은 작업에 적합합니다.

2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까?2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까?Apr 09, 2025 pm 04:33 PM

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법?10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법?Apr 02, 2025 am 07:18 AM

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기