2022吴恩达机器学习(Deep learning)课程对应笔记23
高级学习算法
更新时间:2023/03/21
学习计划
神经网络
需求预测
如下图,在整个计算过程中,logistic回归充当的是激活函数的感觉。
这一块吴恩达老师的讲解还是形象的,建议去看原视频。(大体就是深度学习比机器学习的优势是隐藏层的引入,不用手工去设计特征)
图片识别实例
在人脸识别任务重,可以看到在不同层中的神经元,在学习不同的特征。有直线,斜线,眼睛,眉毛,鼻子等特征。
跟上面的人脸识别任务一样,下面的车辆分类模型,不同层的神经元也在关注不同级别的特征。
神经网络层
输入层
每个神经元的计算过程是一个小的逻辑回归单元(激活函数是sigmoid的情况下)。
隐层
输出层
根据输出层的输出值与阈值的比较,来预测类别。
更复杂的神经网络
做个题,下图空白处填什么(答案是3,2,3)
推理-做出预测(前向传播)
这是一个手写数字识别的例子,
- a ⃗ [ 1 ] \vec{a}^{[1]} a[1]的计算方式如下
- a ⃗ [ 2 ] \vec{a}^{[2]} a[2]的计算方式如下
-
a
⃗
[
3
]
\vec{a}^{[3]}
a[3]的计算方式如下
前向传播,都是些机械式的计算,没有什么技巧所言
tensorflow实现
咖啡豆烘烤的例子:在烘烤咖啡豆时通常要注意的两个特征是烘烤时间(Duration)和温度(temperature),输出结果是好咖啡和坏咖啡。
下面是TensorFlow实现的第一层,输入特征是[200,17],表示烘烤时间是17min,烘烤温度是200度。输入到Dense层后(dense层所用的神经元数是3,激活函数是sigmoid)。
神经网络的第二层也是一个dense层,该层的神经元数是1,激活函数还是sigmoid,代码如下
神经网络的最后要做的是将预测值 a 1 [ 2 ] a_1^{[2]} a1[2]与阈值做对比,
整个数字识别的模型就如下所示,不过是换了下每一层的神经元数量而已
TensorFlow中的数据
下面不细讲了,有代码基础的应该很好看懂
构建一个神经网络
第一种构造方式
用Sequential()来构建一个model,如下图
在单一层的前向传播
下面是一层前向传播的网络
没什么好讲的,写得很清楚
前向传播的一般实现
下面是代码实现前向传播的过程
- def dense是计算每一层的神经元
- def sequential是讲每一层联合起来,构成整体的模型。