14.机器学习:最后一节课也是第一节课

2024-02-20 00:50

本文主要是介绍14.机器学习:最后一节课也是第一节课,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

       一、复习

       二、学习思路

       三、往期内容


一、复习

       不知不觉间,我们已经来到了本次旅程的最后一刻,我们好像学到了很多,又好像什么都没有学到。当然,这就是本次课程的出发点,用最简单和直接的方式揭示概念和方法,帮助入门者在细碎又纷乱的机器学习神经网络知识体系中梳理出一条脉络,而避免陷入细节的礼貌。那在这最后一节课,我们先从头开始review一下我们所学的内容,并适当的补充一些之前课程中为了简化理解而舍弃的东西。当然只做简单的介绍,正如本次课程的标题一样,最后一节课也是第一节课,希望通过这些介绍,同学们可以自己去探索和研究。

       我们从深海生物小蓝开始介绍了人工智能启蒙阶段的Mcculloch-pitts神经元模型和Rosenblatt感知器,然后我们引入了线性回归,介绍了代价函数的概念,并在一个简单的抛物线性状的代价函数上介绍了梯度下降算法。

       我们说梯度下降算法能够在不断的训练中让误差代价逐渐向最低点挪动,同时相比于正规方程又不会一次性占用太多的计算和存储资源,这是一种在海量数据上用时间换空间的思想。那除了我们所提到的传统梯度下降算法以外,人们为了改进学习的效果,又在此之上发明了很多改进的版本。比如人们观察到梯度下降的过程和一个小球做下坡运动很相似,于是引入了动量的概念,得到了基于动量的梯度下降算 ,还有像AdaGrad和RMSProp这样能够根据学习过程自我调节学习率的自适应算法,以及同时结合了动量和自适应学习率的Adam算法等等,它们都在一定程度上提高了训练的效率。

       随后我们开始介绍反向传播的概念,从简单的线性回归问题开始,我们看到了数据前向传播进行预测误差代价、反向传播调整权重和偏置参数这个现代神经网络工作模式的雏形。随机我们介绍了神经网络中非常重要的我称之为灵魂的激活函数

       正是非线性激活函数让神经网络摆脱了线性系统的约束,从而产生了解决复杂问题的能力,这是激活函数的主要作用sigmoid作为激活函数,一般在输出层可以作为二分类问题的预测输出。而在多层神经网络的隐藏层中,我们采用relu激活函数,而通过一个加入激活函数的神经元,我们介绍了反向传播利用链式法则的一般行为。在讲述多层神经网络之后,我们完整的看见了反向传播在多层网络上的普遍行为,以及为什么深度神经网络能够working的原理。最后我们介绍了Keras框架,基于Keras框架,我们简单的分析了卷积神经网络循环神经网络的工作原理。

       当然同学们可能已经发现了,我们的课程从第六节课就开始主要讨论深度学习领域的知识。实际上深度学习只是机器学习的一个分支,人工智能、机器学习、深度学习之间的关系实际上是这样的。

       早在上个世纪50年代,人们基于让机器产生人类一样智能这样美好的愿望提出了人工智能的概念,所以一切试图做到这一点的都可以看作是人工智能技术。比如在人工智能早期曾十分流行的人工智能三大流派之一的符号主义,人们自己总结规则,然后通过类似if else的方法堆砌成一个专家系统,这也属于人工智能领域,而且是人工智能领域非常重要的一部分。

       近些年来,符号主义中的知识图谱在很多智能问答应用中还发挥着很重要的作用。但是这种符号主义手段对人工的消耗极大,每一个规则都需要人工录入,机器无法自主学习。所以为了解决这个问题,人们提出了机器学习的想法。这时候我们不再需要给机器逐个录入规则本身,而是让机器自己在数据中学习到规则。所以一切试图做到这一点的,都可以看作是机器学习技术。除了我们所学的深度学习,机器学习领域还有像SVM、随机森林、贝斯分类等等。其实深度学习发展的很早,但受制于算力等客观因素的限制在很长一段时间里都未能大放异彩,不像机器学习中的SVM那样一度成为主流。但随着近些年来计算机硬件算力的不断提升和互联网发展多年的数据积累,深度学习终于迎来了他的春天。

       深度学习最初的灵感来自于热脑中不计其数相互连接的神经元,所以深度神经网络属于典型的人工智能三大流派之一的连接主义。当然,这是对大脑的仿生而不是复刻,就像飞机是对鸟儿的仿生而不是复刻一样。面对真实的大脑,我们不能忽视深度神经网络和它之间的联系,但也不能过分的强调这种联系。2016年Alpha Go打败你事实可谓是深度学习的里程碑事件,从此以后一直到现

在,深度学习全面占领机器学习乃至人工智能领域的说法就一直不绝于耳,但个人观点是,人工智能、机器学习每个领域流派都有自己独特的优势和不足,只不过目前而言,很多时候深度学习的优势恰好大一点,但全面取代未免有点危言耸听。比如我曾参与过的一个智能QA项目,在这个过程中我发现对于商用QA系统生成的答案其实并没有很人性化的回答到问题,但是表述的准确性和正确性往往比所谓的智能更加重要。所以业内普遍还是偏向于使用符号主义中的知识图谱技术,而不是用深度学习让机器善于整活。

       除了深度学习以外,目前机器学习领域中还有另外一项振奋人心的技术,强化学习。强化学习的灵感来自于人工智能三大流派之一的行为主义,让一个智能体不断地采取不同的行动,改变自己的状态和环境进行交互,从而获得不同的奖励。我们只需要设计出合适的奖励规则,智能体就能在不断的试错中取得合适的策略。

       强化学习近些年来也得到了很多的应用,从Alpha Go开始,到近期腾讯的“觉悟”系统,通过强化学习训练的游戏AI已经让人类选手开始在某把游戏中深感绝望,当然像“觉悟”这样的AI在强化学习中也加入了深度学习的部分,也就是所谓的深度强化学习。近些年来,人工智能机器学习领域随着算命、数据和从业者的不断增加,正在不断的涌现着一些十分有趣的想法,等待着大家去探索和发现。

二、学习思路

       简单的回顾和扩展之后,那我们来聊聊在这个入门课程之后,同学们如果想要继续学习,应该是什么样的思路?当然大家的背景和目的都不太一样,所以只讲讲个人的想法和建议,大家还是结合自身的实际情况决定如何去做。就像很多技术领域一样,往往可以把这个领域的知识体系简单的分为两层,底层实现和上层应用,而上层应用中往往随着该领域的发展也会出现很多经过验证的行之有效的经典方法。我们举个可能不是十分贴合的例子,比如编程语言中Java这个体系,Jvm虚拟机、字节码技术构成的Java体系的底层实现,并通过Java语言向上提供应用的接口,而像spring、mybatis等框架以及各种常用的库则是人们在多年在实践中总结而成,能高效用于生产的经典上层实现。那在实现一个具体任务的时候,Java程序员往往会直接使用这些框架和库,而他们往往也能够应对绝大多数的问题。

       同样,在深度学习领域,我们学习过像梯度下降、反向传播、CNN、RN以及我们课上并没有详细说明的其他的一些基本原理,则构成的现代神经网络的底层实现。而像LeNet-5络,LSTM,GRU以及我们课上没有说过的AlexNet、VGG、ResNET、Yolo等等,则是在神经网络发展的过程中经过检验而行之有效的模型。同样,这些经典的网络模型在很多常见的场景,比如语音识别、自然语言处理、图像识别等领域中都有很不错的效果。所以如果你想要用神经网络实现一个具体的任务,那么你应该首先考虑这些已有的经典网络模型,就像我们使用spring开发Java项目一样,是很自然的选择。而我们为了提高自己Java项目的开发水平,可能需要去熟悉框架的实现。好消息是我们可以阅读他们的源码,只要你想,你就能知道所有的细节。而坏消息是,这些代码往往非常的庞杂,配合文档和资料也需要长时间的学习和研究。同样,为了提高对神经网络应用的水平,我们可能需要去熟悉这些经典的网络模型,最好的方法就是阅读他们的论文,好消息是这些论文一般不会特别的长,内容也相对单一,很快就可以看一遍。但坏消息是这些论文往往不会负责源码,一般都是数学公式和图表,阅读他们的门槛可能更高。但另外一个好消息就是,对于这些经典的网络结构,目前网络上已经有很多人写了博客,做了更加通俗的解读,比如我们上一节课中提到了一篇关于LSTM的著名博客,《Unederstanding LSTM Networks》,这要比看LSTM的原论文要轻松许多,有些文章甚至会逐步的贴出相应的代码,比如对于LeNet-5和AlexNet,随便在网上一搜就能找到一大批关于他们论文的解读和用Keras实现的代码,所以对于这些经典网络的学习并不是一件特别困难的事情。(有关LSTM的更多理解,可以参考这篇博客:《Understanding LSTM Networks》)

       当然,人工智能作为一门正处于高速发展的学科,每段时间社区都会有新的idea被提出,有些可能是变革性的,有些可能只是一个小的修补。不论怎样,如果你希望了解这些新的想法,那么唯一的方法就是自己去看这些原始的论文。我知道这可能比较艰难,因为很多论文都是对想法进行简单的描述,然后给出一些公式,而且一般不会详细的说明这些公试每一步推导的细节,最后贴出测试效果的图表,而且并不会附赠源码。所以为了提高阅读的效率,那只能是多看,排除那些写的特别晦涩的论文。一般来说,一个领域内的论文看得多了,也就能够慢慢的培养出一点感觉。当然,这里还有一个很重要的问题,那就是你对机器学习神经网络的底层实现有足够的了解,不仅仅是概念上的,还有数学上的。当然,如果你并不是想做机器学习神经网络相关的研究工作,而只是想把它应用到自己的实际问题上,那倒是不必研究的如此深刻在理解了大致的工作原理之后,去学习使用那些经典的模型就好,正如我们在学习编程语言的时候,即使不是特别的深入了解计算机的底层实现,也可以写出不错的程序,但是如果是从事像操作系统这样的计算机方面的研究工作,那么深入的学习则是不可避免的。

       好的,那我们的分享就到这里,是时候和大家说再见了,最后跟大家在人工智能领域不断的学习和进步,并利用好这门技术,在各自的领域乘风破浪,找到自己想要的未来。

三、往期内容

 

引言:来一场人工智能的奇妙冒险吧~

1.一元一次函数感知器:如何描述直觉

2.方差代价函数:知错

3.梯度下降:能改

4.曲面梯度下降和反向传播:能改

5.激活函数:给机器注入灵魂

6.隐藏层:神经网络为什么working

7.高维空间:机器如何面对越来越复杂的问题

8.初识Keras:轻松完成神经网络模型搭建

9.深度学习:神奇的DeepLearning

10.卷积神经网络:打破图像识别的瓶颈

11. 卷积神经网络:图像识别实战

12.循环:序列依赖问题

13.LSTM网络:自然语言处理实践

14.机器学习:最后一节课也是第一节课

视频链接: https://pan.baidu.com/s/1nj6o_jrx9Ns3192AdcHTdQ?pwd=y73e

这篇关于14.机器学习:最后一节课也是第一节课的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/726532

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个