细说机器学习和深度学习

背景

平常业务开发中每天都要接触到机器学习和深度学习的概念,在听了很多大佬的普及后,发现甚是有趣。于是小编想着着手开始学习这部分的内容。

那废话不多说,就从最基础的机器学习和神经网络开始~

一、机器学习基础

1、机器学习是什么?

机器学习是对能通过经验自动改进的计算机算法的研究 ------ 可以理解为机器学习是一个研究 ,它的研究对象是计算机算法。这个计算机算法的特点是:能通过经验来自动改进自身的能力。也就意味着,它可以像人一样积累一些经验,然后自动改进。

机器学习是用数据或以往的经验,以此优化计算机程序的性能标准 ------ 强调了数据或以往的经验。比如说:拿线性回归来举例,如下图所示:

线性回归的意思指的就是你给我一个连续的输入,比如说图上的 x 轴,它从 050,然后我可以给你映射到它对应的 y 轴上的值分别是多少,也就是会给你一个连续的输出,我们可以在图上看到这个 y 轴从 035 也是一个连续的输出。

那么这个线性回归跟机器学习有什么关系呢?如我们上面所说的,这个线性回归问题通过数据或以往的经验 来解决。比如说我们这个图里面有很多黄色 的点,那么我们就可以沿着这些黄色的点,根据它的分布来画一条黄色的线,画完之后你随便给我一个 x 轴上的值,我都可以找到与之对应的 y 轴上的值。

比如说图上的 x20 的时候,那么它的 y 大概就在 5- 10 之间这个位置,且就是你给我任意一个 x 轴上的值,我都可以得到 y 轴对应的值。当然不只是刚才那个20,其他值也都可以。这就是通过数据以及以往的经验来解决线性回归问题,这些黄色的点就是数据或者说是以往的经验。

还有个问题是,可能有的小伙伴会有疑问:不使用机器学习,我也能画出这条黄线 or 红线。既然自己可以做到了,那为什么还需要机器学习呢?

其实啊,我们的目的就是为了实现人工智能,就是想办法让机器来代替人去画这两条线。

2、机器学习应用场景

上面我们说了机器学习的基础概念,接下来再列举一些常见的应用场景:

  • 图片分类 ------ 准备大量图片,让机器去学习,判断这是一只猫、还是一只狗。
  • 语音助手 ------ siri、小爱同学等等,给机器足够多的声音数据以及对应的标签,那么机器就可以识别我们的语音在讲什么了。

3、为何要用机器学习?

有些棘手问题只能用机器学习来解决:

  • 比如说给我一张图片,让我判断这个图片里有没有一只猫。这个问题看似简单,但是即便是很聪明的程序员,也没有办法通过编写规则和编写代码的方法来解决这个问题,这是不可能的。
  • 比如说先是编写了一堆规则,然后判断一只猫,判断一个图片里面有没有一只猫。但是我们想一下,如果这个猫随便换个位置,换个动作,换个颜色,换个品种,那么它的规则是不是就被废弃掉了,就没用了?它要写多少条规则?它要写无数份规则,无数行代码,这显然是不可能解决的。
  • 因此,我们可以通过机器,来学大量猫🐱的图片。之后,机器就大概知道了猫的特征是什么样的。然后等下次你再给它一张新的猫的图片,它就能判断这张图片里有一只猫的概率有多大了。

获取数据比编写规则更加容易:

  • 有些问题它既可以用机器学习来解决,也可以通过编写规则就是编写程序来解决。但是如果获取数据比获取规则更加容易 的话,那么这时候就应该用机器学习来解决。
  • 举个例子,比如说你写了一个翻译程序,可以把这个英文翻译成中文,但第二天PM跟你说,想让你把这个翻译程序拓展一下,可以把英文翻译成日语。
  • 如果是通过传统的编程,就会编写一堆的规则,一堆的 if else 逻辑。很大概率所有代码你还要全部再重写一遍,工作量非常大。
  • 但是如果是通过机器学习的手段来做这个翻译程序的话,那么你一行代码都不需要改。我们要做的是,只需要把训练数据 换一下,重新训练一个新模型就 OK 了。这也就是为什么要使用机器学习的原因,因为有时候往往获取数据比编写规则要容易得多。

GPU等计算能力显著提升:

  • 机器学习的训练需要消耗大量的计算能力。在过去我们的算力非常的差的时候,其实使用机器学习的成本是很高的,或者说几乎是不可能的。在过去科学家跑一次训练可能得几个月,而且几个月跑一次训练实验,在这个过程中一般还要失败很多次。这个训练实验需要不断地试错,不断地试验,才能慢慢降低失败的次数。
  • but...这么看的话,一次试验都要跑好几个月,那这个实验基本上也就没有什么可行性了,这也是为啥上世纪这个神经网络算法就已经被发明出来,但是到最近几年才火起来,就是因为过去的计算能力太差了。
  • 但是现在我们的计算能力显著提升了,可能一个小时内我就能跑完一次训练,得到一个模型,看到实验结果了。那么这时候使用机器学习的可行性就变得非常高了。

4、机器学习如何运作?

  • 机器学习可以通过神经网络算法来进行运作。
  • 除了神经网络之外,还可以用很多其他的算法来进行机器学习,比如说决策树支持向量机贝叶斯分类器强化学习等等。

二、神经网络简介

1、什么是神经网络

  • 神经网络,也称人工神经网络。
  • 人工神经网络是一种运算模型(就是输入输出的映射),由大量的节点(或称神经元)之间相互联接构成。
  • 运算模型指的是:从输入到输出的一种映射。

2、人工神经网络模型的特点

(1)特点

人工神经网络的特点就是:由大量的节点或神经元 相互连接构成,连接之后就形成了一张类似于网络状 的结构,所以我们把它称为神经网络

(2)举例

举例生活中很常见的相亲例子:

左边是输入层,右边是输出层。中间的隐藏层,其实就是神经元,这个隐藏层是为了用来输出最后结果的。

对于输入来说,输入是我们可以从相亲对象身上直观看到的一些信息,那这些信息,每一个对应到形象、财富、品质和有趣的权重值,都不太一样。

可能五官跟财富和品质就没啥关系,那在财富和品质这两个神经元中,五官的权重就低一点。又或者说,学历和家境可能会对一个人的品质造成影响,所以说在品质这个神经元里面,它的权重可能就比较偏向于学历和家境。

总之,每一个神经元里面都存储着一些权重,然后把上一层的输入乘上这些权重加起来之后就得到一个值,得到值之后,就进入到下一层的神经元。

下一层的神经元就是最后一层的神经元,这个神经元叫满意程度 ,这个神经元里面也存着 4 个权重,它是把前面形象、财富、品质和有趣这四个神经元算出来权重,加起来得到的满意程度。

不过呢,现实生活中的机器学习比这还要复杂的多。比如说:有些用户他的眼光是比较高的,可能在我们看来已经很好看很漂亮的女孩,或者很帅的小伙,但是在他看来就是一般人,那么这时候我们光靠权重来算形象就不够了,可能还要加上一个偏置 。比如说在其他用户眼中,一个相亲对象他的形象有十分,但是在那个眼光比较高的用户眼里,只有 1 分 ,那么他的偏置就是-9。

值得注意的是,偏置是最后加上的,也就是那些权重乘完之后加起来然后再加上这个偏执。

接着,我们再来考虑一种情况,大多数人可能都会对相亲对象的财富有一定的要求,但是假设说超过了一定范围,其实对我们来说就没有区别了。比如说你觉得你的相亲对象只要年薪超过百万就可以了,那么他年薪 100 万、 200 万对你来说其实差别不大,但是对计算机来说这可是整整两倍的差距。所以说我们要告诉计算机,你不能再这么线性的增长上去了,对我来说只要超过 100 万都没有区别,不要再增加它的值了。

那么如何实现这一点呢? 神经元里面还有一个东西叫做激活函数 ,激活函数的作用就是用来做一些非线性的变化。所谓非线性的变化,就是:比如刚才我们举的例子,年薪超过 100 万就可以了,不要再线性的增长了,接下来我们可以把它想象成一条线,增长着增长这,最后就趋于直线平稳了,这就是一个非线性变化。

3、神经网络总结

最后,我们来对上面所讨论的做一个小结:

  • 每个神经元里存储着若干权重(weight)、偏置(bias)和一个激活函数(activation)。
  • 输入乘上权重加上偏置,经过激活函数得到输出。
  • 激活函数用于添加一些非线性变换。
  • 神经网络通常包含一个输入层、若干隐藏层、一个输出层。
  • 输入层通常不用于计算神经网络的层数。

三、神经网络的训练

1、什么是神经网络的训练?

  • 给大量输入和输出,算出神经网络里所有神经元的权重、偏置,然后给定新的输入,可以算出新的输出。
  • 在机器学习里输入输出被称为特征标签 ,大量输入输出被称为训练集
  • 同样拿上面的相亲例子做举例:给 1000 个 相亲对象的数据(特征),以及对应的满意程度(标签)。训练完之后给一份新的相亲对象数据,就可以判定满意程度了。

2、如何训练神经网络?

  • 初始化: 随机生成一些权重和偏置。
  • 计算损失: 给定特征 ,计算出标签,看标签与真实标签差得多远。
  • 优化: 微调权重和偏置(隐藏层),使损失变小。(微调与微积分中求导求梯度有关,哪个方向损失降得最快,那个方向就是正确的方向)

3、前向传播与反向传播

  • 前向传播:把训练数据的特征送入网络,得到标签。
  • 反向传播:计算损失并优化。(在最后一层计算损失,然后微调和优化,之后计算倒数第二层的权重)

4、如何计算损失?

  • 使用业界已经研究出来的且很成熟的损失函数
  • 常见损失函数:均方误差、对数损失、交叉熵...

5、如何优化?

  • 使用业界科学家们已经研发的优化器
  • 常见优化器:随机梯度下降(SGD)、Adam(从第三方库中调用)

结束语

在上面的文章中,我们学习了机器学习的基础知识,以及由机器学习衍生而来的人工神经网络。同时,我们还谈到了如何去训练一个神经网络。

通过本文的介绍,相信你对机器学习和神经网络会有一个基础的认识。

以上就是本文的全部内容,我们下期见~🍻

后语

相关推荐
__基本操作__几秒前
边缘提取函数 [OPENCV--2]
人工智能·opencv·计算机视觉
Doctor老王5 分钟前
TR3:Pytorch复现Transformer
人工智能·pytorch·transformer
热爱生活的五柒5 分钟前
pytorch中数据和模型都要部署在cuda上面
人工智能·pytorch·深度学习
HyperAI超神经2 小时前
【TVM 教程】使用 Tensorize 来利用硬件内联函数
人工智能·深度学习·自然语言处理·tvm·计算机技术·编程开发·编译框架
扫地的小何尚3 小时前
NVIDIA RTX 系统上使用 llama.cpp 加速 LLM
人工智能·aigc·llama·gpu·nvidia·cuda·英伟达
埃菲尔铁塔_CV算法6 小时前
深度学习神经网络创新点方向
人工智能·深度学习·神经网络
艾思科蓝-何老师【H8053】6 小时前
【ACM出版】第四届信号处理与通信技术国际学术会议(SPCT 2024)
人工智能·信号处理·论文发表·香港中文大学
秀儿还能再秀7 小时前
机器学习——简单线性回归、逻辑回归
笔记·python·学习·机器学习
weixin_452600697 小时前
《青牛科技 GC6125:驱动芯片中的璀璨之星,点亮 IPcamera 和云台控制(替代 BU24025/ROHM)》
人工智能·科技·单片机·嵌入式硬件·新能源充电桩·智能充电枪
学术搬运工7 小时前
【珠海科技学院主办,暨南大学协办 | IEEE出版 | EI检索稳定 】2024年健康大数据与智能医疗国际会议(ICHIH 2024)
大数据·图像处理·人工智能·科技·机器学习·自然语言处理