기계 학습(20)---신경망에 대한 자세한 설명


1. 신경망 개요

1.1 뉴런 모델

 1. 여기서는 가장 넓은 정의가 채택됩니다. 신경망은 적응 가능한 단순 단위로 구성된 광범위하게 병렬로 상호 연결된 네트워크이며, 그 조직은 실제 물체에 대한 생물학적 신경계의 상호 작용 반응을 시뮬레이션할 수 있습니다.

 2. 정의에 나오는 "단순 단위"는 신경망 모델이라고 불리는 신경망의 가장 기본적인 구성 요소입니다. 오늘날에도 여전히 사용되고 있는 것은 "MP 뉴런 모델"이다.

여기에 이미지 설명을 삽입하세요.

 3. 이 모델에서 뉴런은 n개의 다른 뉴런으로부터 입력 신호를 수신하며, 이 입력 신호는 가중치 연결을 통해 전달됩니다. 뉴런이 수신한 총 입력 값은 뉴런의 임계값과 같습니다. 비교가 이루어진 후 다음을 통해 처리됩니다. 뉴런의 출력을 생성하는 "활성화 기능".

1.2 활성화 기능

 1. 신경망의 활성화 함수는 비선형 특성을 도입하기 위해 뉴런의 출력에 적용되는 비선형 함수입니다. 활성화 함수의 기능은 복잡한 데이터 패턴에 더 잘 적응할 수 있도록 입력 신호를 변환하는 것입니다.

 2. 이상적인 활성화 함수는 입력 값을 출력 값 "0"과 "1"로 매핑하는 계단 함수입니다. 분명히 "1"은 뉴런 자극에 해당하고 "0"은 뉴런 억제에 해당합니다. 그러나 계단함수는 불연속성, 평활함 등 바람직하지 못한 특성을 갖고 있어 활성화함수로 시그모이드 함수를 자주 사용한다. 넓은 범위 내에서 변동될 수 있는 입력 값을 (0, 1) 출력 값 범위로 짜내기 때문에 "스쿼시 함수"(squashi function)라고도 합니다.

여기에 이미지 설명을 삽입하세요.
 3. 히든 레이어에서는 선형 활성화 함수를 사용하지 말고 일반적으로 히든 레이어에서는 ReLu 활성화 함수를 사용합니다.

여기에 이미지 설명을 삽입하세요.

2. 퍼셉트론

2.1 개요

 1. 퍼셉트론은 두 개의 뉴런 레이어로 구성됩니다. 입력 레이어는 외부 입력 신호를 수신하여 출력 레이어로 전달합니다. 출력 레이어는 "임계 논리 장치"라고도 알려진 MP 뉴런입니다.

여기에 이미지 설명을 삽입하세요.
 2. (필기) 퍼셉트론 학습 방법:

여기에 이미지 설명을 삽입하세요.

2.2 논리 연산 구현

 1. 퍼셉트론은 AND, OR, NOT과 같은 기본적인 논리 연산을 수행할 수 있습니다.참고: 올바른 매개변수를 선택해야 합니다!
 아래 그림과 같이 AND를 예로 들어 x1과 x2가 동시에 1을 취하면 출력 결과는 1이 되고, 둘 중 하나라도 0을 취하면 출력 결과는 0이 되어 논리를 구현합니다. AND 연산.

여기에 이미지 설명을 삽입하세요.

 2. 그러나 단일 레이어 퍼셉트론은 XOR 연산을 구현할 수 없습니다.

2.3 다층 퍼셉트론

 1. 다층 퍼셉트론은 여러 층의 뉴런으로 구성되어 있으며, 출력층과 입력층 사이의 뉴런층을 은닉층이라고 하며, 은닉층과 출력층 뉴런 모두 활성화 기능을 가지고 있다.

여기에 이미지 설명을 삽입하세요.

 2. 다층 퍼셉트론은 여러 개의 숨겨진 계층을 가질 수 있으므로 XOR 연산을 구현할 수 있습니다.

 3. 다층 퍼셉트론은 강력한 표현 기능을 가지고 있습니다. 은닉층에 충분한 뉴런이 포함되어 있는 한 다층 퍼셉트론은 임의의 정확도로 모든 복잡성의 연속 함수를 근사화할 수 있습니다. 다층 퍼셉트론은 여러 개의 은닉층을 가질 수 있으며, 각 은닉층은 서로 다른 특징을 추출하며, 은닉층이 깊을수록(출력층에 가까울수록) 상위 수준의 특징을 추출할 수 있습니다.

여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.

3. 신경망

3.1 작동 원리

 1. 원리는 다음과 같이 요약됩니다. 각 레이어는 숫자 벡터를 입력하고 여기에 여러 로지스틱 회귀 단위를 적용한 다음 다른 숫자 벡터를 계산하고(이 레이어의 출력은 다음 레이어의 입력으로 사용됨) 통과합니다. 최종 출력 레이어에 도달할 때까지 한 레이어에서 다른 레이어로 이동합니다. 후속 출력 결과는 예측될 수도 있고 예측되지 않을 수도 있습니다.

 2. 단순 신경망 모델의 작동 원리 분석:

여기에 이미지 설명을 삽입하세요.

메모: a, w, b의 오른쪽 상단에 있는 대괄호 안의 숫자는 레이어를 나타내고, 오른쪽 하단의 숫자는 레이어에 포함된 뉴런을 나타냅니다.

 3. 단순한 것부터 복잡한 것까지 다층 신경망의 작동 원리는 위에서 설명한 것과 동일합니다. 4계층 네트워크를 예로 들어보겠습니다.

여기에 이미지 설명을 삽입하세요.

메모: 일반적으로 다층 신경망을 말할 때 출력층과 입력층을 제외한 모든 히든층을 포함합니다.

3.2 순방향 전파

 신경망은 훈련 및 계산 중에 순방향 전파 알고리즘(왼쪽에서 오른쪽으로)을 사용합니다.

여기에 이미지 설명을 삽입하세요.

3.3 Tensorflow 실제 시연

3.3.1 보기 위해 데이터 세트 가져오기

 MNIST 데이터 세트는 60,000개의 훈련 이미지와 10,000개의 테스트 이미지, 그리고 이미지에 있는 숫자를 나타내는 레이블로 구성됩니다. 각 이미지는 28×28 회색조 픽셀로 표시되며 여기에서 API를 직접 호출할 수 있습니다.

import tensorflow as tf
import matplotlib.pyplot as plt

mnist = tf.keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

# 查看整体情况
print("train_images shape: ", train_images.shape)
print("train_labels shape: ", train_labels.shape)
print("test_images shape: ", test_images.shape)
print("test_labels shape: ", test_labels.shape)

# 展示前9个图像
fig = plt.figure(figsize=(10, 10))

nrows = 3
ncols = 3
for i in range(9):
    fig.add_subplot(nrows, ncols, i + 1) #行数、列数、索引
    plt.imshow(train_images[i])
    plt.title("Digit: {}".format(train_labels[i]))
    plt.axis(False)
plt.show()

여기에 이미지 설명을 삽입하세요.

3.3.2 데이터 전처리

 그 안에 숫자가 있기 때문에 모델이 숫자를 숫자 값으로 취급하는 것을 방지합니다.우리의 목적은 크기가 다른 숫자 값이 아닌 숫자를 식별하는 것이므로 고유한 레이블로 표시합니다.

train_images = train_images / 255
test_images = test_images / 255

print("First Label before conversion:")
print(train_labels[0]) #5

# 转换成One-hot标签
train_labels = tf.keras.utils.to_categorical(train_labels)
test_labels = tf.keras.utils.to_categorical(test_labels)

print("First Label after conversion:")
print(train_labels[0]) #[0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]

3.3.3 모델 구축

 1.층을 편평화하다: 입력 이미지는 2D 배열입니다. 평탄화 레이어는 행별 언스태킹을 통해 2D 배열(28 x 28 픽셀)을 1D 배열(픽셀)로 변환합니다. 이 레이어는 데이터의 모양만 변경하고 매개변수/가중치(28*28=784)는 학습하지 않습니다.숨겨진 레이어: 우리의 유일한 숨겨진 레이어는 각각 활성화 함수를 갖는 완전히 연결된 노드(또는 뉴런)의 조밀한 레이어로 구성됩니다 512relu.출력 레이어: 신경망의 출력 레이어는 10개의 출력 뉴런이 있는 밀집 레이어로 구성되며, 각 뉴런은 10개의 확률을 출력하며, 각 확률은 0~9이며, 이는 이미지가 해당 숫자일 확률을 나타냅니다. 출력 레이어에는 입력 활성화를 확률로 변환하는 활성화 함수가 할당됩니다 softmax.

 2.손실 함수: 실제 라벨과 모델이 예측한 라벨 사이의 오류를 찾는 방법을 모델에 알려줍니다. 이 측정항목은 훈련 중 모델의 정확도를 측정합니다. 우리는 모델이 이 함수 값을 최소화하기를 원합니다. 모델에 손실 함수를 사용하겠습니다.최적화: 데이터 및 손실 함수 값을 확인하여 모델의 가중치/매개변수를 업데이트하는 방법을 모델에 알려줍니다. 우리는 모델에 최적화 프로그램인 Adam을 사용할 것입니다.색인(선택 사항): 학습 및 테스트 단계를 모니터링하기 위한 측정항목 목록이 포함되어 있습니다. 모델별로 정확하게 분류된 이미지 수 또는 정확도를 사용합니다.

### 设置图层
model = tf.keras.Sequential([
  # 展平层
  tf.keras.layers.Flatten(),
  # 隐藏层
  tf.keras.layers.Dense(units=512, activation='relu'),
  # 输出层
  tf.keras.layers.Dense(units=10, activation='softmax')
])

### 编译模型
model.compile(
  loss = 'categorical_crossentropy',
  optimizer = 'adam',
  metrics = ['accuracy']
)

3.3.4 평가 모델

 1. 손실 시각화:

여기에 이미지 설명을 삽입하세요.

 2. 시각화 정확도:

여기에 이미지 설명을 삽입하세요.

4. 역전파

 1. 여기서는 소개를 위해 레이어당 하나의 단위를 갖는 다층 퍼셉트론을 사용합니다. 아래 그림의 W와 B의 K는 생략된 값을 나타냅니다.

여기에 이미지 설명을 삽입하세요.

 2. 역전파 계산에서는 각 매개변수에 대해 실제로 경사하강법이 수행됩니다. 경사하강법을 찾는 핵심은 각 매개변수에 대한 손실 함수의 편도함수를 찾는 것입니다.

여기에 이미지 설명을 삽입하세요.

 3. 도출 과정:

여기에 이미지 설명을 삽입하세요.
 4.역전파 요약: 마지막 레이어부터 시작하여 각 매개변수의 편도함수를 계산하고, 각 레이어에서 얻은 편도함수 값(오차)을 이전 레이어로 역전파하여 이전 레이어의 매개변수의 편도함수 계산을 용이하게 합니다. 층.

5. 예시 질문

5.1 질문 1

여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.

5.2 질문 2

여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.

5.3 질문 3

여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.

추천

출처blog.csdn.net/m0_62881487/article/details/132986753