鸢尾花分类_鸢尾花的分类方法以及回传

本文介绍了鸢尾花分类问题,通过神经网络模型和回传方法优化参数进行判断。讨论了MP-模型、损失函数、梯度下降法在训练过程中的作用,强调了学习率对模型训练的影响。
摘要由CSDN通过智能技术生成

1.3 回传

以如何给鸢尾花分类为例, 有三种鸢尾花, 0-狗尾鸢尾, 1-杂色鸢尾 和 2-弗吉尼亚鸢尾。人们通过经验的累积总结出了判断鸢尾花种类的规律,通过测量花瓣长、花瓣宽、花萼长和花萼宽 (例如: 花萼长>花萼宽并且花瓣长/花瓣宽>2就是狗尾)

ca5740d1628d459278430cebe5d8836a.png

狗尾鸢尾

e4ba8b5cf74cab6f46ed3015336746ba.png

杂色鸢尾

ef3b738ffa485f5679f6e200be7ea75e.png

弗吉尼亚鸢尾

现在很多人希望通过“if-case”语句实现分类,事实上条件判断语句的确可以给鸢尾花分类,这种方法利用符号主义作出理性的判断。但是鸢尾花种植者并不需要测量以上参数就能判断种类而是看一眼就知道了。随着经验的增长判断的准确度和速度也会变得越来越好。这就是直觉:建立了神经网络。

神经网络:采集了大量的数据集包含花瓣长、花瓣宽、花萼长和花萼宽以及这朵花的种类然后把他们喂入神经网络。通过回传的方法优化参数得到模型。最后读取新的图片判断出鸢尾的类型。

输入数据花瓣长、花瓣宽、花萼长和花萼宽之后输出三种鸢尾花的可能性。McCulloch和Pitts给出了神经的计算模型成为MP-模型。

e270c7b9898c3f03a30346dc22c8ee0e.png

为了简化模型我们先省略这个非线性函数

d94de87ec4770fcc13e662d7060ba625.png
c3b42995884581e3c9bdfcc30bcd890c.png

我们向鸢尾花的数据输入到这个表达式里, x(1, 4)*w(4, 3)+b(3, )=y(3, 0).

a394eed143a7d12a337184718fa2aa43.png
8dc1305772494139c657dfd78b1d6476.png

我们把0-狗尾鸢尾输入到MP-模型中, 得到的答案却是1-杂色鸢尾,为什么?因为参数W和B是随机生成的所以我们要训练模型。我们用损失函数来分析这些参数

损失函数反映出预测值(y)和标准值(y_)的差别。它可以判断W和B优缺点和质量。当损失函数取到最小值时,参数W和B为最佳值. 均方误差是一种常用的损失函数。

fd87a54f5fa872d260e65a0b895b75f4.png

现在一组W和B使得损失函数最小。梯度是每个参数的函数偏导数得到方向。梯度的方向就是函数减小的方向。我们可以用这种梯度下降法在损失函数梯度的方向上找到损失函数的最小值,继而获得最佳的参数。

4cfab0f3de0adb4866203a910e3ad085.png

lr表示学习率,它可以由我们自己设置。如果学习率过大, 损失函数的梯度将在最小值左右摇摆。有过学习率过小,梯度下降太慢可能不会达到最小值

我们将用一个函数模拟这个过程

例如:

9d7134f8a0cdbeda8eedd90780aa1da0.png
e1edb0935248b589f5f6bf03349f16b7.png
import tensorflow as tfw = tf.Variable(tf.constant(5, dtype=tf.float32))lr = 0.2epoch = 40for epoch in range(epoch):    with tf.GradientTape() as tape:        loss = tf.square(w + 1)    grads = tape.gradient(loss, w)    w.assign_sub(lr * grads)    print("After %s epoch,w is %f,loss is %f" % (epoch, w.numpy(), loss))
ddf8e2d2c173d69faf4a68c9bcf4ca91.png

当 loss=0,w = -1. 答案符合预期.

10e958af549015d9332beaa3b416190c.png

但是如果 lr=0.001, 知道40次学习结束之后我我们也不会达到w=-1

d0e52f79cdbcc377dd47f04844e22d6a.png

如果lr=0.999,w会在-1两端波动

import numpy as npimport matplotlib.pyplot as pltw = np.linspace(-8, 6, 1000)loss = (w + 1)*(w + 1)plt.plot(w,loss,'r',linewidth=2)plt.show()
acc9cf82712a1dc1585ffcb6c3219c09.png
8cf8a4b79bd272c6f73c0a030e562182.png

微信搜索:做梦当院士的李子哥

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值