深度学习入门_P2 神经网络

深度学习入门_P2 神经网络

JBpeople

1. 从感知机到神经网络

下图所示的结构就是两层神经网络,从左到右依次是输入层,中间层和输出层。中间层有时候也称为隐藏层,隐藏层的神经元是看不到的。

前面说了感知机的公式是:

对于该公式可以进行简化。

h(x) 这个函数将信号的总和转换为信号,就被称为激活函数

2. 激活函数

2.1. sigmoid 函数

def sigmoid(x):
return 1 / (1 + np.exp(-x))

2.2. 阶跃函数

def step_function(x):
if x > 0:
return 1
else:
return 0

下面函数图像有问题,从 0 到 1 时没有斜率的。

2.3. ReLU 函数

def relu(x):
return np.maximum(0, x)

[!note]
上面的激活函数都是明显的非线性函数,注意激活函数只能使用非线性函数。如果激活函数使用线性函数,那么神经网络层数就失去了意义。

3. 实现三层神经元

通过自定义权重和偏置可以实现三层神经元。

import numpy as np

def sigmoid(x):
return 1 / (1 + np.exp(-x))

def identity_function(x):
return x

class NetWork:
def __init__(self):
self.params = {}
self.params['W1'] = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]])
self.params['b1'] = np.array([0.1, 0.2, 0.3])
self.params['W2'] = np.array([[0.1, 0.4], [0.2, 0.5], [0.3, 0.6]])
self.params['b2'] = np.array([0.1, 0.2])
self.params['W3'] = np.array([[0.1, 0.3], [0.2, 0.4]])
self.params['b3'] = np.array([0.1, 0.2])

def forward(self, x):
W1, W2, W3 = self.params['W1'], self.params['W2'], self.params['W3']
b1, b2, b3 = self.params['b1'], self.params['b2'], self.params['b3']

a1 = np.dot(x, W1) + b1
z1 = sigmoid(a1)

a2 = np.dot(z1, W2) + b2
z2 = sigmoid(a2)

a3 = np.dot(z2, W3) + b3
y = identity_function(a3)

return y

network = NetWork()
x = np.array([1.0, 0.5])
y = network.forward(x)
print(y)

上述代码中有用到恒等函数 identity_function ,该函数的主要作用是把函数原本的样子输出出来。一般的回归问题用恒等函数,二元分类问题用 sigmoid 函数,多元分类问题用 softmax 函数。

4. 输出层的设计

4.1. softmax 函数

softmax 函数如下所示。

可以看到其中大量使用了 e 的指数,如果 xk 过大会导致数字溢出,为了解决这个问题需要对公式进行改进。

C' 数字可以取输入信号的最大值,用 python 实现应该如下所示。

def softmax(a):
c = np.max(a)
exp_a = np.exp(a - c)
sum_exp_a = np.sum(exp_a)
y = exp_a / sum_exp_a

return y

4.2. softmax 函数特征

softmax 函数的输出是 0 到 1 之间的实数,并且函数的输出值总和是 1

求解机器学习问题的过程可以分为学习和推理两个阶段,在学习阶段进行模型的学习,然后在推理阶段用学到的模型对未知的数据进行推理。

  • Title: 深度学习入门_P2 神经网络
  • Author: JBpeople
  • Created at : 2025-11-11 00:00:00
  • Updated at : 2025-11-18 14:43:45
  • Link: https://blog.ddacc.me/posts/3f4d5009/
  • License: This work is licensed under CC BY-NC-SA 4.0.