基础!!!吴恩达deeplearning.ai:多标签分类与高级优化方法

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏


之前我们已经学习了多分类问题的神经网络的搭建。而有一种特殊的分类问题,叫做多标签分类问题,它可以理解为一个图像里面有多个标签存在。让我们举个例子。

智能驾驶

在智能驾驶汽车中常常面临的问题是,你需要同时判断一幅图之中是否有汽车,是否有巴士,是否有行人。
在这里插入图片描述
例如在上图的第一幅图中,有汽车,没有巴士,有行人;第二幅图中,没有汽车,没有巴士,有行人;第三幅图中,有汽车,有巴士,没有行人。
在这种情况之下,输出的y就不仅仅是一个数值,而是由三个布尔值组成的向量,例如,左图的向量就应该为 [ 1.0 , 1 ] [1.0,1] [1.0,1]。这与手写数字识别不同,它的y仅仅是一个数字,尽管它可能有十个不同的取值。
所以,我们该如何解决多标签分类问题呢?
第一种方法,我们可以将三种物品看作三个不同的机器学习问题来分别进行判断。这其实是一种不太合理的方法。随着标签数量的增加,搭建神经网络的任务量也随之线性增加,当需要判断的物体很多时就不太能够实现了。
第二种方法,当然就是搭建一个神经网络,让它同时判断图中是否有汽车,是否有巴士,是否有行人。
在这里插入图片描述
神经网络的架构如上图,将特征矩阵输入隐藏层,再传入最终输出层;最终输出层具有三个神经元,均采用sigmoid函数作为激活函数,那么,这个神经网络的输出就应该是:
a ⃗ [ 3 ] = [ a 1 [ 3 ] , a 2 [ 3 ] , a 3 [ 3 ] ] \vec{a}^{[3]}=[a_1^{[3]},a_2^{[3]},a_3^{[3]}] a [3]=[a1[3],a2[3],a3[3]]
其中a1,a2,a3分别对应是否有汽车,是否有巴士,是否有行人。
多分类问题和多标签分类问题有时候会相互混淆,因此在本篇中详细讲述了多标签分类,从而帮助你能更好地分析问题。
关于分类问题就说到这里,下面主要讲讲神经网络中一些更加高级的概念,包括比梯度下降算法更加优化的算法。

高级优化方法

梯度下降算法是一种广泛应用于机器学习的优化算法,是线性回归和逻辑回归等许多算法以及神经网络早期实现的基础。但事实证明,现在还有一些其它的优化算法可以最小化成本函数,甚至比梯度下降更好。今天我们将了解其中的一种。

梯度下降算法回顾

以下是梯度下降算法的表达式:
w j = w j − α ∂ ∂ w j J ( w ⃗ , b ) w_j=w_j-\alpha\frac{\partial}{\partial w_j}J(\vec{w},b) wj=wjαwjJ(w ,b)
在这里插入图片描述如图,在这个算法之中,可以看到算法一小步一小步向收敛点靠近,很明显,在这个例子中alpha可以设置得大一点。
在这里插入图片描述
而在这个例子之中,算法在收敛点两边反复横跳,且越跳越大,那在这里很明显alpha就显得过大了。
所以你可能会想到,我们为什么不找出一个算法,能够自动调整学习率呢?哈哈没错,这种算法叫做Adam

Adam算法(Adaptive Moment estimation)

Adam算法并没有在全局使用统一的学习率。它对模型的每个参数均使用不同的学习率,所以假设你有十个不同的参数w1~w10,那么学习率就有 α 1 \alpha _1 α1~ α 10 \alpha _{10} α10十个,那么b的学习率就是 α 11 \alpha_{11} α11
它的工作原理是,如果w_j或者b一直在朝着一个方向收敛,那么就增大alpha反之则减小alpha。至于Adam算法是如何实现这一点的,其实有点复杂,这超出了新手学习的范围,因此感兴趣可以自己了解。下面我们介绍下代码的写法:

模型部分

模型与之前完全相同:

model = Sequential([
          tf.keras.layers.Dense(units=25, activation='sigmoid')
          tf.keras.layers.Dense(units=15, activation='sigmoid')
          tf.keras.layers.Dense(units=10, activation='linear')
          ])

编译部分

编译部分与之前十分相似,只是我们要在编译函数中添加一个参数,指定要用Adam优化器。

model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=le-3),
  loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits-True))

需要说明的是,Adam算法也需要初始指定一个学习率(这里指定的是0.001),当你实践这个代码时,有必要多试几个值。

拟合部分

model.fit(X, Y, epochs=100)

如今大部分的深度学习使用者基本都采用Adam算法,希望你也可以掌握。
为了给读者你造成不必要的麻烦,博主的所有视频都没开仅粉丝可见,如果想要阅读我的其他博客,可以点个小小的关注哦。

  • 29
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江安的猪猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值