최근 몇 년 동안 신경망은 광범위한 작업에서 매우 우수한 것으로 나타났기 때문에 인기가 높아졌습니다.
이미지 및 오디오 인식, 자연어 처리, 심지어 바둑 및 체스와 같은 복잡한 게임에도 훌륭한 선택인 것으로 나타났습니다.
이 게시물에서는 신경망 훈련의 전체 과정을 안내합니다. 신경망을 훈련시키는 모든 단계를 언급하고 설명하겠습니다.
단계를 살펴보는 동안 간단한 예를 추가하여 실용적인 예도 있는지 확인하고 싶습니다.
자, 따라와서 신경망을 처리하는 방법을 배워봅시다.
간단하게 시작해서 무엇인지 물어봅시다. 신경망 첫 번째 장소입니다.
신경망이란 정확히 무엇입니까?
신경망은 인간 두뇌의 작동을 시뮬레이션하는 컴퓨터 소프트웨어입니다. 그들은 방대한 양의 데이터와 사람들이 감지하기 어려울 수 있는 패턴을 통해 배울 수 있습니다.
신경망은 사진 및 오디오 인식, 자연어 처리 및 예측 모델링과 같은 작업에서 다재다능함으로 인해 최근 몇 년 동안 인기가 높아졌습니다.
전반적으로 신경망은 광범위한 응용 분야를 위한 강력한 도구이며 광범위한 직업에 접근하는 방식을 변화시킬 기회가 있습니다.
왜 우리는 그들에 대해 알아야 합니까?
신경망을 이해하는 것은 컴퓨터 비전, 음성 인식 및 자연어 처리를 포함한 다양한 분야에서 발견을 이끌어 냈기 때문에 중요합니다.
예를 들어, 신경망은 자율 주행 자동차, 자동 번역 서비스, 심지어 의료 진단 분야의 최근 발전의 중심에 있습니다.
신경망의 기능과 설계 방법을 이해하면 새롭고 독창적인 애플리케이션을 구축하는 데 도움이 됩니다. 그리고 아마도 그것은 미래에 더 큰 발견으로 이어질 수 있습니다.
자습서에 대한 참고 사항
위에서 말했듯이 신경망을 훈련시키는 단계를 예를 들어 설명하고 싶습니다. 이를 위해서는 MNIST 데이터 세트에 대해 이야기해야 합니다. 신경망을 시작하려는 초보자에게 인기 있는 선택입니다.
MNIST는 Modified National Institute of Standards and Technology의 약자입니다. 기계 학습 모델, 특히 신경망을 훈련하고 테스트하는 데 일반적으로 사용되는 손으로 쓴 숫자 데이터 세트입니다.
이 컬렉션에는 70,000에서 0까지 손으로 쓴 숫자의 그레이스케일 사진 9장이 포함되어 있습니다.
MNIST 데이터셋은 널리 사용되는 벤치마크입니다. 이미지 분류 작업. 작고 다루기 쉬우면서도 기계 학습 알고리즘이 대답하기 어려운 문제를 제기하기 때문에 교육 및 학습에 자주 사용됩니다.
MNIST 데이터 세트는 TensorFlow, Keras 및 PyTorch를 비롯한 여러 기계 학습 프레임워크 및 라이브러리에서 지원됩니다.
이제 우리는 MNIST 데이터 세트에 대해 알고 있으므로 신경망 훈련 단계를 시작하겠습니다.
신경망 훈련을 위한 기본 단계
필요한 라이브러리 가져오기
신경망 훈련을 처음 시작할 때 모델을 설계하고 훈련하는 데 필요한 도구를 갖추는 것이 중요합니다. 신경망 생성의 초기 단계는 TensorFlow, Keras 및 NumPy와 같은 필수 라이브러리를 가져오는 것입니다.
이러한 라이브러리는 신경망 개발을 위한 빌딩 블록 역할을 하며 중요한 기능을 제공합니다. 이러한 라이브러리의 조합을 통해 정교한 신경망 설계 및 빠른 교육을 생성할 수 있습니다.
우리의 예를 시작하려면; TensorFlow, Keras 및 NumPy를 포함하는 필수 라이브러리를 가져올 것입니다. TensorFlow 오픈 소스 기계 학습 프레임워크인 Keras는 고급 신경망 API이며 NumPy는 수치 컴퓨팅 Python 라이브러리입니다.
import tensorflow as tf
from tensorflow import keras
import numpy as np
데이터세트 로드
이제 데이터 세트를 로드해야 합니다. 데이터 세트는 신경망이 훈련될 데이터 세트입니다. 이것은 사진, 오디오 및 텍스트를 포함한 모든 유형의 데이터일 수 있습니다.
데이터 세트를 두 부분으로 나누는 것이 중요합니다. 하나는 신경망 훈련용이고 다른 하나는 훈련된 모델의 정확성을 평가하기 위한 것입니다. TensorFlow, Keras 및 PyTorch를 포함한 여러 라이브러리를 사용하여 데이터 세트를 가져올 수 있습니다.
이 예에서는 Keras를 사용하여 MNIST 데이터 세트를 로드합니다. 데이터 세트에는 60,000개의 훈련 사진과 10,000개의 테스트 이미지가 있습니다.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
데이터 전처리
데이터 전처리는 신경망 훈련에서 중요한 단계입니다. 데이터가 신경망에 공급되기 전에 데이터를 준비하고 정리하는 작업이 수반됩니다.
픽셀 값 스케일링, 데이터 정규화, 레이블을 원-핫 인코딩으로 변환하는 것이 전처리 절차의 예입니다. 이러한 프로세스는 신경망이 보다 효과적이고 정확하게 학습하는 데 도움이 됩니다.
데이터를 사전 처리하면 과적합을 최소화하고 신경망의 성능을 개선하는 데 도움이 될 수도 있습니다.
신경망을 훈련시키기 전에 데이터를 전처리해야 합니다. 여기에는 레이블을 원-핫 인코딩으로 변경하고 픽셀 값을 0과 1 사이로 조정하는 것이 포함됩니다.
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = keras.utils.to_categorical(train_labels, 10)
test_labels = keras.utils.to_categorical(test_labels, 10)
모델 정의
신경망 모델을 정의하는 프로세스에는 계층 수, 계층당 뉴런 수, 활성화 함수 및 네트워크 유형(피드포워드, 반복 또는 컨볼루션)과 같은 아키텍처 설정이 포함됩니다.
사용하는 신경망 설계는 해결하려는 문제의 종류에 따라 결정됩니다. 잘 정의된 신경망 설계는 신경망 학습을 보다 효율적이고 정확하게 만들어 학습에 도움이 될 수 있습니다.
이제 신경망 모델을 설명할 차례입니다. 이 예제에서는 각각 128개의 뉴런이 있는 두 개의 숨겨진 레이어와 10개의 뉴런이 있는 softmax 출력 레이어가 있는 간단한 모델을 사용합니다.
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
모델 컴파일
신경망 모델을 컴파일하는 동안 손실 함수, 옵티마이저 및 메트릭을 지정해야 합니다. 출력을 정확하게 예측하는 신경망의 능력은 손실 함수로 측정됩니다.
훈련 중에 신경망의 정확도를 높이기 위해 옵티마이저는 가중치를 수정합니다. 훈련 중 신경망의 효율성은 메트릭을 사용하여 측정됩니다. 신경망을 훈련하기 전에 모델을 만들어야 합니다.
이 예제에서는 지금 당장 모델을 구성해야 합니다.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
모델 훈련
손실 함수를 최소화하기 위해 신경망의 가중치를 수정하면서 준비된 데이터셋을 신경망에 전달하는 것을 신경망 훈련이라고 합니다.
유효성 검사 데이터 세트는 효과를 추적하고 과적합을 방지하기 위해 훈련 중에 신경망을 테스트하는 데 사용됩니다. 훈련 과정은 다소 시간이 걸릴 수 있으므로 신경망이 과소적합을 방지하도록 적절하게 훈련되었는지 확인하는 것이 중요합니다.
교육 데이터를 사용하여 이제 모델을 교육할 수 있습니다. 이렇게 하려면 배치 크기(모델이 업데이트되기 전에 처리되는 샘플 수)와 에포크 수(전체 데이터 세트에서 반복되는 수)를 정의해야 합니다.
model.fit(train_images, train_labels, epochs=10, batch_size=32)
모델 평가
테스트 데이터 세트에서 신경망의 성능을 테스트하는 것은 이를 평가하는 과정입니다. 이 단계에서는 훈련된 신경망을 사용하여 테스트 데이터 세트를 처리하고 정확도를 평가합니다.
신경망이 시도되지 않은 새로운 데이터에서 올바른 결과를 얼마나 효과적으로 예측할 수 있는지가 정확도의 척도입니다. 모델을 분석하면 신경망이 얼마나 잘 작동하는지 확인하고 더 나은 방법을 제안하는 데 도움이 될 수 있습니다.
최종적으로 학습 후 테스트 데이터를 사용하여 모델의 성능을 평가할 수 있습니다.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
그게 다야! 우리는 MNIST 데이터 세트에서 숫자를 감지하도록 신경망을 훈련했습니다.
데이터 준비에서 훈련된 모델의 효과 평가에 이르기까지 신경망 훈련에는 여러 프로세스가 포함됩니다. 이러한 지침은 초보자가 신경망을 효율적으로 구축하고 훈련하는 데 도움이 됩니다.
신경망을 사용하여 다양한 문제를 해결하려는 초보자는 다음 지침을 따르면 됩니다.
예제 시각화
더 잘 이해하기 위해 이 예에서 수행한 작업을 시각화해 보겠습니다.
Matplotlib 패키지는 이 코드 스니펫에서 훈련 데이터 세트에서 무작위로 선택한 사진을 그리는 데 사용됩니다. 먼저 Matplotlib의 "pyplot" 모듈을 가져와서 "plt"로 별칭을 지정합니다. 그런 다음 전체 크기가 10 x 10인치인 하위 그림의 5행 5열 그림을 만듭니다.
그런 다음 for 루프를 사용하여 서브플롯을 반복하고 각 서브플롯에 대한 교육 데이터 세트의 그림을 표시합니다. 사진을 표시하려면 "imshow" 기능을 사용하고 "cmap" 옵션을 'gray'로 설정하여 사진을 회색조로 표시합니다. 각 서브플롯의 제목도 컬렉션에 있는 연결된 이미지의 레이블로 설정됩니다.
마지막으로 “show” 기능을 사용하여 플롯된 그림을 그림에 표시합니다. 이 기능을 사용하면 데이터 세트의 사진 샘플을 시각적으로 평가할 수 있으므로 데이터를 이해하고 가능한 문제를 식별하는 데 도움이 될 수 있습니다.
import matplotlib.pyplot as plt
# Plot a random sample of images
fig, axes = plt.subplots(nrows=5, ncols=5, figsize=(10,10))
for i, ax in enumerate(axes.flat):
ax.imshow(train_images[i], cmap='gray')
ax.set_title(f"Label: {train_labels[i].argmax()}")
ax.axis('off')
plt.show()
중요한 신경망 모델
- 피드포워드 신경망(FFNN): 정보가 하나 이상의 숨겨진 계층을 통해 입력 계층에서 출력 계층으로 한 방향으로만 이동하는 간단한 유형의 신경망입니다.
- 컨볼루션 신경망(CNN): 이미지 감지 및 처리에 일반적으로 사용되는 신경망입니다. CNN은 사진에서 자동으로 기능을 인식하고 추출하기 위한 것입니다.
- 순환 신경망(RNN): 이미지 감지 및 처리에 일반적으로 사용되는 신경망입니다. CNN은 사진에서 자동으로 기능을 인식하고 추출하기 위한 것입니다.
- 장단기 기억(LSTM) 네트워크: 표준 RNN에서 그래디언트가 사라지는 문제를 극복하기 위해 만들어진 RNN의 한 형태입니다. 순차 데이터의 장기 종속성은 LSTM으로 더 잘 캡처할 수 있습니다.
- 오토인코더: 네트워크가 출력 레이어에서 입력 데이터를 재생산하도록 학습되는 비지도 학습 신경망. 데이터 압축, 이상 감지 및 사진 노이즈 제거는 모두 자동 인코더로 수행할 수 있습니다.
- 생성적 적대 신경망(GAN): 생성 신경망은 훈련 데이터 세트와 비교할 수 있는 새로운 데이터를 생성하도록 학습되는 신경망의 한 형태입니다. GAN은 새로운 데이터를 생성하는 생성자 네트워크와 생성된 데이터의 품질을 평가하는 판별자 네트워크의 두 가지 네트워크로 구성됩니다.
결론, 다음 단계는 무엇입니까?
신경망 교육에 대해 자세히 알아보려면 여러 온라인 리소스 및 과정을 살펴보세요. 프로젝트나 예제 작업은 신경망을 더 잘 이해하는 한 가지 방법입니다.
이진 분류 문제 또는 그림 분류 작업과 같은 쉬운 예제로 시작한 다음 자연어 처리 또는 강화 학습.
프로젝트 작업은 실제 경험을 얻고 신경망 훈련 기술을 향상시키는 데 도움이 됩니다.
또한 온라인 기계 학습 및 신경망 그룹 및 포럼에 가입하여 다른 학습자 및 전문가와 상호 작용하고, 작업을 공유하고, 의견과 도움을 받을 수 있습니다.
LSRS 몬라드-크론
⁶ĵ오류 최소화를 위해 Python 프로그램을 보고 싶었습니다. 다음 레이어의 가중치 변경을 위한 특수 선택 노드