在上一章,感知机的权重和参数是人为定的。
神经网络则能自动从数据中学习到合适的权重参数。
神经网络的结构
激活函数(activation function)是连接感知机和神经网络的桥梁
感知机使用阶跃函数作为激活函数。(输入超过阈值就输出)
神经网络则使用其他激活函数。
阶跃函数的实现(参数和返回值为numpy数组)
sigmoid函数及实现
ReLU函数(rectified linear unit)及实现
通过矩阵乘法实现 输入*权重
代码实现三层神经网络
init_network()用字典初始化权重和偏置
forward()模拟过程
输出层的激活函数选用恒等函数
输出层的设计
根据问题确定输出层所用激活函数
回归问题:恒等函数
二元分类:sigmoid
多元分类:softmax
softmax及实现
由于涉及指数,很容易溢出,需要“减最大值”处理
特征: softmax函数的输出介于0到1之间,输出总和为1。可将其解释为概率。
*求解机器学习问题的步骤可以分为学习和推理两个阶段。
*假设学习已经全部结束,神经网络的推理过程也叫前向传播(forward propagation)
手写数字识别
MNIST数据集
MNIST数据集的图像数据是28pixel×28pixel的灰度图像(一通道),每个pixel取值在0到255之间。每个图象数据都相应标上了“7”,“2”等标签。
先导入+处理mnist 并且显示第一个图片+标签
实现推理过程 并计算识别精度(accuracy)
输入层有784个神经元 输出层有10个神经元
预处理(pre-processing):这个例子用到了正规化(normalization),即输入的所有数据值都除以255.
批(batch)处理:打包输入多张图像,速度更快