入门零基础入门深度学习——线性单元和梯度下降腾讯云开发者社区

无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(DeepLearning)这个超热的技术,会不会感觉马上就out了?

往期回顾

线性单元是啥

感知器有一个问题,当面对的数据集不是线性可分的时候,『感知器规则』可能无法收敛,这意味着我们永远也无法完成一个感知器的训练。为了解决这个问题,我们使用一个可导的线性函数来替代感知器的阶跃函数,这种感知器就叫做线性单元。线性单元在面对线性不可分的数据集时,会收敛到一个最佳的近似上。

为了简单起见,我们可以设置线性单元的激活函数f为f(x)=x这样的线性单元如下图所示

对比此前我们讲过的感知器

这样替换了激活函数f之后,线性单元将返回一个实数值而不是0,1分类。因此线性单元用来解决回归问题而不是分类问题。

线性单元的模型

当我们说模型时,我们实际上在谈论根据x输入预测输出y的算法。比如,x可以是一个人的工作年限,y可以是他的月薪,我们可以用某种算法来根据一个人的工作年限来预测他的收入。比如:

函数h(x)叫做假设,而w、b是它的参数。我们假设参数w=1000,参数b=500,如果一个人的工作年限是5年的话,我们的模型会预测他的月薪为

你也许会说,这个模型太不靠谱了。是这样的,因为我们考虑的因素太少了,仅仅包含了工作年限。如果考虑更多的因素,比如所处的行业、公司、职级等等,可能预测就会靠谱的多。我们把工作年限、行业、公司、职级这些信息,称之为特征。对于一个工作了5年,在IT行业,百度工作,职级T6这样的人,我们可以用这样的一个特征向量来表示他

既然输入x变成了一个具备四个特征的向量,相对应的,仅仅一个参数w就不够用了,我们应该使用4个参数w1、w2、w3、w4,每个特征对应一个。这样,我们的模型就变成

其中,x1对应工作年限,x2对应行业,x3对应公司,x4对应职级。

为了书写和计算方便,我们可以令w0=b等于,同时令x0对应于特征x0。由于其实并不存在,我们可以令它的值永远为1。也就是说

这样上面的式子就可以写成

我们还可以把上式写成向量的形式

长成这种样子模型就叫做线性模型,因为输出y就是输入特征x1,x2,x3,...的线性组合。

监督学习和无监督学习

接下来,我们需要关心的是这个模型如何训练,也就是参数取什么值最合适。

机器学习有一类学习方法叫做监督学习,它是说为了训练一个模型,我们要提供这样一堆训练样本:每个训练样本既包括输入特征,也包括对应的输出y(y也叫做标记,label)。也就是说,我们要找到很多人,我们既知道他们的特征(工作年限,行业...),也知道他们的收入。我们用这样的样本去训练模型,让模型既看到我们提出的每个问题(输入特征x),也看到对应问题的答案(标记y)。当模型看到足够多的样本之后,它就能总结出其中的一些规律。然后,就可以预测那些它没看过的输入所对应的答案了。

另外一类学习方法叫做无监督学习,这种方法的训练样本中只有x而没有y。模型可以总结出特征的一些规律,但是无法知道其对应的答案y。

很多时候,既有x又有y的训练样本是很少的,大部分样本都只有x。比如在语音到文本(STT)的识别任务中,x是语音,y是这段语音对应的文本。我们很容易获取大量的语音录音,然而把语音一段一段切分好并标注上对应文字则是非常费力气的事情。这种情况下,为了弥补带标注样本的不足,我们可以用无监督学习方法先做一些聚类,让模型总结出哪些音节是相似的,然后再用少量的带标注的训练样本,告诉模型其中一些音节对应的文字。这样模型就可以把相似的音节都对应到相应文字上,完成模型的训练。

线性单元的目标函数

现在,让我们只考虑监督学习。

在监督学习下,对于一个样本,我们知道它的特征x,以及标记y。同时,我们还可以根据模型h(x)计算得到输出\bar{y}。注意这里面我们用表示训练样本里面的标记,也就是实际值;用带上划线的\bar{y}表示模型计算的出来的预测值。我们当然希望模型计算出来的和越接近越好。

数学上有很多方法来表示的\bar{y}和y的接近程度,比如我们可以用\bar{y}和y的差的平方的1/2来表示它们的接近程度

我们把叫e做单个样本的误差。至于为什么前面要乘1/2,是为了后面计算方便。

训练数据中会有很多样本,比如N个,我们可以用训练数据中所有样本的误差的和,来表示模型的误差E,也就是

上式的e^{(1)}表示第一个样本的误差,e^{(2)}表示第二个样本的误差......

我们还可以把上面的式子写成和式的形式。使用和式,不光书写起来简单,逼格也跟着暴涨,一举两得。所以一定要写成下面这样

其中

(式2)中,x^{(i)}表示第i个训练样本的特征,y^{i}表示第i个样本的标记,我们也可以用元组(x^{(i)},y^{(i)})表示第i训练样本。

则是模型对第i个样本的预测值。

我们当然希望对于一个训练数据集来说,误差最小越好,也就是(式2)的值越小越好。对于特定的训练数据集来说,(x^{(i)},y^{(i)})的值都是已知的,所以(式2)其实是参数W的函数。

由此可见,模型的训练,实际上就是求取到合适的w,使(式2)取得最小值。这在数学上称作优化问题,而E(w)就是我们优化的目标,称之为目标函数。

梯度下降优化算法

大学时我们学过怎样求函数的极值。函数y=f(x)的极值点,就是它的导数f^`(x)=0的那个点。因此我们可以通过解方程f^`(x)=0,求得函数的极值点(x_{0},y_{0})。

不过对于计算机来说,它可不会解方程。但是它可以凭借强大的计算能力,一步一步的去把函数的极值点『试』出来。如下图所示:

首先,我们随便选择一个点开始,比如上图的x0点。接下来,每次迭代修改x的为x1,x2,x3,......经过数次迭代后最终达到函数最小值点。

你可能要问了,为啥每次修改的值,都能往函数最小值那个方向前进呢?这里的奥秘在于,我们每次都是向函数y=f(x)的梯度的相反方向来修改x。什么是梯度呢?翻开大学高数课的课本,我们会发现梯度是一个向量,它指向函数值上升最快的方向。显然,梯度的反方向当然就是函数值下降最快的方向了。我们每次沿着梯度相反方向去修改的值,当然就能走到函数的最小值附近。之所以是最小值附近而不是最小值那个点,是因为我们每次移动的步长不会那么恰到好处,有可能最后一次迭代走远了越过了最小值那个点。步长的选择是门手艺,如果选择小了,那么就会迭代很多轮才能走到最小值附近;如果选择大了,那可能就会越过最小值很远,收敛不到一个好的点上。

按照上面的讨论,我们就可以写出梯度下降算法的公式

其中,\nabla是梯度算子,\nablaf(x)就是指f(x)的梯度。\eta是步长,也称作学习速率。

对于上一节列出的目标函数(式2)

梯度下降算法可以写成

聪明的你应该能想到,如果要求目标函数的最大值,那么我们就应该用梯度上升算法,它的参数修改规则是

下面,请先做几次深呼吸,让你的大脑补充足够的新鲜的氧气,我们要来求取\nablaE(w),然后带入上式,就能得到线性单元的参数修改规则。

关于\nablaE(w)的推导过程,我单独把它们放到一节中。您既可以选择慢慢看,也可以选择无视。在这里,您只需要知道,经过一大串推导,目标函数E(w)的梯度是

因此,线性单元的参数修改规则最后是这个样子

有了上面这个式子,我们就可以根据它来写出训练线性单元的代码了。

需要说明的是,如果每个样本有M个特征,则上式中的x,w都是M+1维向量(因为我们加上了一个恒为1的虚拟特征X0,参考前面的内容),而y是标量。用高逼格的数学符号表示,就是

为了让您看明白说的是啥,我吐血写下下面这个解释(写这种公式可累可累了)。因为w,x是M+1维列向量,所以(式3)可以写成

如果您还是没看明白,建议您也吐血再看一下大学时学过的《线性代数》吧。

的推导

这一节你尽可以跳过它,并不太会影响到全文的理解。当然如果你非要弄明白每个细节,那恭喜你骚年,机器学习的未来一定是属于你的。

首先,我们先做一个简单的前戏。我们知道函数的梯度的定义就是它相对于各个变量的偏导数,所以我们写下下面的式子

可接下来怎么办呢?我们知道和的导数等于导数的和,所以我们可以先把求和符号\Sigma里面的导数求出来,然后再把它们加在一起就行了,也就是

现在我们可以不管高大上的\Sigma了,先专心把里面的导数求出来。

我们知道,y是与w无关的常数,而

,下面我们根据链式求导法则来求导(上大学时好像叫复合函数求导法则)

我们分别计算上式等号右边的两个偏导数

代入,我们求得\Sigma里面的偏导数是

最后代入

,求得

至此,大功告成。

随机梯度下降算法(StochasticGradientDescent,SGD)

如果我们根据(式3)来训练模型,那么我们每次更新的迭代,要遍历训练数据中所有的样本进行计算,我们称这种算法叫做批梯度下降(BatchGradientDescent)。如果我们的样本非常大,比如数百万到数亿,那么计算量异常巨大。因此,实用的算法是SGD算法。在SGD算法中,每次更新的迭代,只计算一个样本。这样对于一个具有数百万样本的训练数据,完成一次遍历就会对更新数百万次,效率大大提升。由于样本的噪音和随机性,每次更新并不一定按照减少的方向。然而,虽然存在一定随机性,大量的更新总体上沿着减少的方向前进的,因此最后也能收敛到最小值附近。下图展示了SGD和BGD的区别

如上图,椭圆表示的是函数值的等高线,椭圆中心是函数的最小值点。红色是BGD的逼近曲线,而紫色是SGD的逼近曲线。我们可以看到BGD是一直向着最低点前进的,而SGD明显躁动了许多,但总体上仍然是向最低点逼近的。

最后需要说明的是,SGD不仅仅效率高,而且随机性有时候反而是好事。今天的目标函数是一个『凸函数』,沿着梯度反方向就能找到全局唯一的最小值。然而对于非凸函数来说,存在许多局部最小值。随机性有助于我们逃离某些很糟糕的局部最小值,从而获得一个更好的模型。

实现线性单元

接下来,让我们撸一把代码。

因为我们已经写了感知器的代码,因此我们先比较一下感知器模型和线性单元模型,看看哪些代码能够复用。

fromperceptronimportPerceptron

#定义激活函数f

f=lambdax:x

classLinearUnit(Perceptron):

def__init__(self,input_num):

Perceptron.__init__(self,input_num,f)

通过继承Perceptron,我们仅用几行代码就实现了线性单元。这再次证明了面向对象编程范式的强大。

接下来,我们用简单的数据进行一下测试。

defget_training_dataset():

捏造5个人的收入数据

#构建训练数据

#输入向量列表,每一项是工作年限

input_vecs=[[5],[3],[8],[1.4],[10.1]]

#期望的输出列表,月薪,注意要与输入一一对应

labels=[5500,2300,7600,1800,11400]

returninput_vecs,labels

deftrain_linear_unit():

使用数据训练线性单元

#创建感知器,输入参数的特征数为1(工作年限)

lu=LinearUnit(1)

#训练,迭代10轮,学习速率为0.01

input_vecs,labels=get_training_dataset()

lu.train(input_vecs,labels,10,0.01)

#返回训练好的线性单元

returnlu

linear_unit=train_linear_unit()

#打印训练获得的权重

printlinear_unit

#测试

程序运行结果如下图

拟合的直线如下图

小结

事实上,一个机器学习算法其实只有两部分

模型从输入特征预测输入y的那个函数h(x)目标函数目标函数取最小(最大)值时所对应的参数值,就是模型的参数的最优值。很多时候我们只能获得目标函数的局部最小(最大)值,因此也只能得到模型参数的局部最优值。

因此,如果你想最简洁的介绍一个算法,列出这两个函数就行了。

接下来,你会用优化算法去求取目标函数的最小(最大)值。[随机]梯度{下降|上升}算法就是一个优化算法。针对同一个目标函数,不同的优化算法会推导出不同的训练规则。我们后面还会讲其它的优化算法。

其实在机器学习中,算法往往并不是关键,真正的关键之处在于选取特征。选取特征需要我们人类对问题的深刻理解,经验、以及思考。而神经网络算法的一个优势,就在于它能够自动学习到应该提取什么特征,从而使算法不再那么依赖人类,而这也是神经网络之所以吸引人的一个方面。

THE END
1.AI产品经理必备的AI基础知识路线图+AI学习资料,建议人手一份!!随着人工智能(AI)技术的迅速发展,AI产品经理这一角色变得越来越重要。为了有效地管理和推进AI项目,AI产品经理需要具备一定的AI基础知识。这些知识不仅包括对AI行业的了解,还包括数学统计学、AI模型构建等方面的基本概念。 AI行业现状 AI产品经理需要了解AI行业的最新趋势和发展动态。这包括但不限于: https://blog.51cto.com/u_16163453/12591300
2.AIGC学习一文带你了解AIGC基础知识(适用于AI入门小白)在这里,锅头整理了AIGC的基础知识和本文学习思维导图,方便提炼重点和学习总结。 在过去的几十年中,人工智能(AI)从科幻小说中的异想天开,逐渐走进了我们的现实生活。如今,以AI为核心的内容生成技术(AIGC)正在掀起一场创作领域的革命。 本文将带您走进AIGC的世界,了解其概念、原理、发展历程、应用场景、优势以及挑https://blog.csdn.net/m0_59236602/article/details/144111376
3.AI人工智能是什么:人工智能技术的基本原理和应用–Multiable随着科技的迅猛发展,人工智能(AI)已经成为一个热门话题。那么,什么是AI?它有哪些基本原理和应用场景呢? 一、AI的定义与基本原理 万达宝LAIDFU(来福)是一款可配置的Copilot工具,旨在为用户提供便捷的AI体验。以下是万达宝LAIDFU(来福)的一些主要特点: 1. 易于使用 即使没有Python知识的https://www.multiable.com.cn/?p=88832
4.人工智能新手入门指南掌握AI基础知识与应用实践人工智能新手入门指南:掌握AI基础知识与应用实践 AI的基本概念与发展历史 人工智能(AI)是计算机科学的一个分支,旨在创造出能够模仿、扩展、甚至超越人类智能行为的系统。从1950年代的逻辑理论到今天深度学习和强化学习的崛起,AI已经经历了多个发展阶段。了解这些历史背景对于理解当前AI技术至关重要。 https://www.ykngnhhi.cn/xing-ye-zi-xun/496509.html
5.AI新手入门教程从零到英雄AI技术的基础知识与实践指南在这个数字化和智能化日益增长的时代,人工智能(AI)已经成为科技领域中最受关注的话题之一。对于想了解并深入AI世界的新手来说,有一份全面的入门教程将是非常有帮助的。本文旨在为读者提供一个详尽而易于理解的人工智能新手入门教程,让你从基础知识开始,逐步掌握AI技术,并通过实际案例加深理解。 https://www.tfecwigwf.com/news/543651.html
6.人工智能需要哪些知识,人工智能需要哪些知识储备人工智能大家好,今天小编关注到一个比较有意思的话题,就是关于人工智能需要哪些知识的问题,于是小编就整理了3个相关介绍人工智能需要哪些知识的解答,让我们一起看看吧。 人工智能需要哪些知识储备? 学习人工智能技术通常要根据自身的知识基础来选择一个学习切入点,对于初学者来说,可以按照三个阶段来学习人工智能技术,分别是基础http://www.zytxia.com/rgzn/34e62bb8a6ec6b91.html
7.课程43. 200077这几个软件你可能没听过,测试 CC测试杨杨200077 38次播放 44. 2000772018护考复习方法及考点测试 CC测试杨杨200077 32次播放 45. 200077教师资格证必考100个知识测试 CC测试杨杨200077 42次播放 46. 蜻蜓测试蜻蜓队长 899889 蜻蜓学繁體囍 24次播放 47. 蜻蜓测试1 899889 蜻蜓学繁體囍 26次播放 48.https://www.cctalk.com/m/program/1503331906489209
8.国内外AI芯片算力综合对比1、ARM Cortex-M3权威指南 2、ARM v8-v9架构入门指南 算力铸就大模型:超算、智算及数据中心行业报告(2023) 《2023年高性能计算研讨合集(上)》 《2023年高性能计算研讨合集(下)》 《AI基础知识深度专题详解合集》 《硬件技术一致性设计及测试汇总(1)》 https://www.eet-china.com/mp/a229033.html
9.《普通人AI认知100条》:AI轻松入门最小必要知识对于大多数普通人来说,AI仍然是神秘而难以理解的。 为了更好地理解并利用AI,我根据近万次使用AI的经验和心得,特别整理了这份《普通人AI认知100条》(更新中),作为普通人理解并用好AI的最小必要知识。 有了这张清单,所有人都可以轻松入门AI。 AI理解篇 https://www.douban.com/note/863138236/
10.比如再过50年,全世界最牛的最有影响力的100个智能体里面,也许只PC时代,基本上只有Window这个主流操作系统;移动互联网时代,安卓和iOS双雄并立。作为AI应用基础底座的大模型,最终能做大做强的基本上不会超过三个,也就是99%的入局者注定只能陪跑,沦为炮灰。AI原生时代,我们需要100万量级的AI原生应用,不需要100个大模型。 https://xueqiu.com/7314072668/286338118
11.零基础入门AI:1token~=3/4words?3分钟理解大语言模型分词1个按Openai 的估算,1 token ~= 3/4 words,100个token大约是75个单词。 输入的文本是如何被分解为 token 的呢?在大语言模型处理文本时,分词(Tokenization)是最基础又相对独立的一个环节,在整个流程中非常重要,但又经常容易被忽略。今天我们就一起来梳理分词(Tokenization)相关的知识。 https://article.juejin.cn/post/7345660202715611146
12.第15期量子计划“稚辉君”不负青丝,向善而行.md·zzhoudi/【采访源《华为的100张面孔》】 三、媒体眼中的天才少年: 华为天才少年以一己之力打造出一个团队都无法做出的智能设备 甲小姐对话稚晖君:深度学习并非AI的终点 | 甲子光年 稚晖君:我既不是天才,也不是少年 四、稚晖君小档案 稚晖的个人站 http://www.pengzhihui.xyz/ 【笔记】关于我https://gitee.com/zzhoudi/siger/blob/master/%E7%AC%AC15%E6%9C%9F%20%E9%87%8F%E5%AD%90%E8%AE%A1%E5%88%92%20%E2%80%9C%E7%A8%9A%E8%BE%89%E5%90%9B%E2%80%9D%20%E4%B8%8D%E8%B4%9F%E9%9D%92%E4%B8%9D%EF%BC%8C%E5%90%91%E5%96%84%E8%80%8C%E8%A1%8C.md
13.优优教程网官网免费自学AIGC就上优优网Recraft AI保姆级教程!9种高阶用法详细拆解! AIGC YaooooAIGC 年终汇报有妙招!8款数据可视化工具锦上添花! 夏花生AIGC 为什么面试初审不通过?可能是因为这6个原因! MINDesignAIGC UI基础知识!10分钟带你掌握原子设计理论! 酸梅干超人AIGC 查看更多灵感 https://uiiiuiii.com/
14.助听器推荐!哪款助听器好?助听器品牌排行榜前十名价格是多少?助听器助听器一般分为以下三个价格区间: 打开网易新闻 查看精彩图片 1、入门级价格区间(约100-1000元):这类助听器主要提供基础的声音放大功能,适合预算有限的用户或初次尝试使用助听器的人。 2、中档价格区间(约1000-5000元):中档助听器通常配备了改善音质和减少背景噪音的功能,适用于日常较为复杂的听音环境。https://3g.163.com/news/article/JCHADJGK05568JTB.html
15.AI绘画必备!100个Midjourney特效关键词合集优设9图近期又整理了不少高质量的 Midjourney 绘画提示词,今天就为大家分享其中100个效果出色的特殊效果关键词,主要包括:人造光特效、角度特效、风格特效和特殊效果,它们可以生成高质量设计素材,包括创意摄影、科技感背景、风格人物插画!喜欢AI绘画的小伙伴一定不要错过啦!https://www.uisdc.com/group/526597.html
16.AI入门教程100集小白AI系统教程,从入门到精通,从0到副业接单100道新手必备的海报练习题,一天一道,每日Get一个新知识! 270 -- 1:21:09 App 【字体教程】8个案例让小白也能学会字体设计! 462 1 2:02:30 App 【电商设计】网点美工必学的详情页设计详细制作教程 | 从零手把手教会你 2814 37 12:49:28 App 【AI2024全套】AI零基础入门必看基础知识,20年老设计师专https://m.bilibili.com/video/BV1mt4y1c788/
17.今日头条良法善治 | 你的宪法知识锦囊,请收好! 学习贯彻党的二十届三中全会精神 热烈庆祝澳门回归祖国25周年 突发!美国发生大规模枪击事件 德国一中学教师发七页紧急求助信:几乎每天都要被学生辱骂威胁,校园霸凌现象严重 南方“湿冷魔法攻击”上线!这些地方的冬天将加速赶到! https://www.toutiao.com/
18.建议收藏!100篇必读论文大模型月报(2024.02)来自斯坦福、微软研究院和加州大学洛杉矶分校的研究团队提出了一种交互式智能体基础模型,它采用了一种多任务智能体训练范式,用于在广泛的领域、数据集和任务中训练 AI 智能体。这一训练范式统一了不同的预训练策略,包括视觉遮蔽自动编码器、语言建模和下一步行动预测,从而实现了一个多功能、适应性强的 AI 框架。https://hub.baai.ac.cn/view/35698
19.课时38粒子基本介绍42.AE系统教程100课时4.PR+AE教程课时100视频、输出 08分 03秒 4K 下载 4-3.PR软件速成教程 第01课:新建一个项目和素材导入 05分 31秒 4K 下载 第02课:如何对视频素材剪辑 0806-基础课-调色 01 调色基础知识浅析 10分 13秒 4K 下载 02 达芬奇软件的基本设置及工作面板介绍 03分 41秒 4K 下载 03 达芬奇节点式软件操作方式https://www.aigei.com/item/4_pr_ae_jiao_ch_167.html