MaixPy Al 深度学习基础知识

1.如何让机器总结出算法
要让机器自动总结出算法,即机器学习(ML,Machine Learning), 我们先看看,人类是如何得到这个算法(方程)的。

步骤1: 首先,有大量数据点,然后人类根据这些数据点发现了直线都符合y = kx + b这个适应所有直线的算法, 但是发现,这里面有两个未知数k和b, 这就是适应任何直线的参数
步骤2: 然后具体的是什么样的直线,因为方程有两个未知数,即参数,将实际的两个数据点带入这个方程,得到了k = 3和b = 10
步骤3: 然后我们用在步骤2中没有用到的在线上的数据点,去试试这个算法(方程)是否正确,最终发现都验证正确
步骤4: 然后要通过x的值知道其它的点的y的值,只需要代入y = 3x + 10 即可
那么,机器学习是不是也可以利用这个步骤来做呢?

我们认为地设计一个算法结构, 加入我们碰巧直接设计成了y = kx + b, 我们给具体的直线留下了两个参数,我们暂且称呼这个结构叫 模型结构,因为有未知参数,我们称之为未训练的模型结构。其中x称为输入, y称为输出

现在,我们将我们这条直线的的几个点代入到这个方程, 我们称这个过程为 训练,得到y = 3x + 10 这个算法, 已经没有未知参数了, 我们现在称它为模型 或者 训练好的模型,其中k b是模型内的参数,y = kx + b是这个模型的结构。 而带入训练的数据点,就叫做训练数据,它们的统称就叫训练数据集

然后,我们使用几个在 训练 过程中没有用到的在线段上的数据点作为输入,代入这个模型进行运算,得到结果,比如 x = 10, 得到y = 40, 然后对比输出值是否与预期相符,这里我们发现x = 10, y = 40 确实是在图中这条直线上的, 并且训练时没有使用这个点,说明我们得到的模型在此次核验中通过,这个过程叫 验证, x = 10, y = 40 这个数据叫验证数据。 如果我们用多组数据去验证这个模型, 这些数据的统称就叫验证数据集

现在, 我们获得了一个模型,并且用验证数据集对这个模型进行了验证,貌似也是很准确了,那我们就可以假设这个模型基本满足了我们以后有一个x, 要求着图中线上任意一点的y值,都可以输入x给出这条直线上对应点的y坐标。 这个过程我们其实是在使用模型了,这个过程称之为推理

其实这就算是机器学习了, 我们人类需要的事就是设计y = kx + b这个结构,以及给出训练数据集和验证数据集,经过训练和验证得到一个我们认为可用的模型,然后使用输入 + 模型就可以得到认为的正确输出(结果)了。
什么是深度神经网络?
深度神经网络(DNN)是机器学习(ML)领域中的一种技术。

前面说了一个比较简单的例子, 根据一条直线数据来预测直线上的任何一个点, y = kx + b这个结构是人为设计的, 很简单,当用于复杂的数据,发现它就不适用了,比如“这张图片里面是球还是玩具”

小球 玩具

前面为了模型能够存下一条直线的信息, 用了结构y = kx + b,直线的特征都存在模型里面了。 现在用来存一张图的特征,光是y = kx + b这个线性结构, 以及k 和 b两个参数显然无法满足了, 需要设计一个更好的结构, 这时 神经网络 就出现了, 一种网状结构,能更好地记住图片的特征信息, 而这个网状结构又是多层的,也就是有深度的,所以称之为深度神经网络(DNN, deep neural network), 所以说 DNN 是一种网络结构,是为了实现机器学习的一种手段。 每一层由多个节点组成, 如下图, 一个 DNN 包含了 输入层, 隐藏层, 输出层, 这里隐藏层由三层组成(A[1], A[2], A[3]层),但是统称隐藏层:

深度神经网络

输入层: 图中就是一个深度神经网络结构, x 是输入, 比如x这里可以是图片, 输入有多个节点,每个节点可以是一个像素点值, 这里输入层画了 7 个节点, 加入我们有一张图片是 10 x 10的分辨率,则输入层共需要 100 个节点。 这里输入层是一个一维结构,实际情况可能有多维结构, 比如输入如果是一张灰度图片,分辨率3x3,这其实是一个二维结构,即两行两列的矩阵(关于矩阵的概念请自行学习,或者暂且理解成二维数组),比如:

[[109 138 110]
[220 37 166]
[32 243 67]
]
每个像素点的值取值范围∈[0, 255],然后我们将其平铺后变成共 9 个数据的一维数组给输入层

[109 138 110 220 37 166 32 243 67]
另外, 一般也会将输入层的值归一化到范围[0, 1]

如果是一张彩色图片,那就是三维,即高、宽、颜色通道,颜色通道比如RGB三个颜色通道,即,输入有形状(包含了维度和每个维度的数据数量),比如上面的一维输入形状为(9),其它图像通常以(高,宽,通道数)来表示形状,比如(10, 10, 3)表示分辨率10 x 10, 并且有三个颜色通道, 比如RGB。

这里为了入门好理解,原理只介绍一维的情况

输出层: y 是输出,这里输出有两个值,你可以理解成就是 MaixPy 的两个浮点值的 list [Y1, Y2], Y1是是小球的概率,值∈[0, 1], Y2是是玩具的概率。 所以最终我们使用这个模型, 就是给它一张图片, 机器按照这个模型规定的结构和算法进行计算后得到一个 list, 我们根据这个输出的值就知道图中是什么东西了。

隐藏层: 连接输入层和输出层的隐藏层,以及中间的连接,负责了将输入数据推算成合理的输出值。

–来源maixpy摘抄

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

晗晗子~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值