21 神经网络与深度学习:计算机是如何理解图像、文本和语音的? 21 神经网络与深度学习:计算机是如何理解图像、文本和语音的?在上一讲的最后,我们提到过“浅层模型”和“深层模型”。其实,人工智能的早期并没有“浅层模型”的概念,浅层模型是深度学习出现之后,与之对应而形成的概念。在浅层模型向深层模型转变的过程中,神经网络算法无疑是个催化剂 ,并在此基础上诞生了深度学习。 这一讲,我们就来学习一下神经网络和深度学习。 神经网络的基本结构及其表达 2022-08-23 专栏 > 程序员的数学课
20 决策树:如何对 NP 难复杂问题进行启发式求解? 20 决策树:如何对 NP 难复杂问题进行启发式求解?这一讲,我们学习决策树模型。决策树模型既可以解决分类问题,也可以解决回归问题,经典的决策树算法有 ID3、C4.5,以及 CART 算法。 当今主流的人工智能模型都是基于决策树的模型,例如更复杂的梯度提升决策树、随机森林等等。这些模型有着更加复杂、深厚的数学机理,但本质上还是决策树的思想。 决策树及其基本结构决策树算法采用 2022-08-23 专栏 > 程序员的数学课
22 面试中那些坑了无数人的算法题 22 面试中那些坑了无数人的算法题前面的课时,我们学习了“代数与统计”“算法与数据结构”,至今这门课程的主体知识已告一段落,下面我们进入彩蛋环节,我会向你介绍两个应用到数学的场景,第一个是求职面试,第二个是做人生规划。 这一讲,我们先聊一聊求职面试时常见的数学题。 毕业后,相信你一定参加过不少的面试吧。在求职面试的时候,即使目标工作岗位很少需要直接使用数学知识,也依然有不少面 2022-08-23 专栏 > 程序员的数学课
24 结束语 数学底子好,学啥都快 24 结束语 数学底子好,学啥都快学到了最后,不知道你有没有思考过这样的问题:数学究竟意味着什么? 在回答这个问题之前,我们先看几个跟数学有关的案例或桥段。 美剧《危机边缘》第三季的第三集 一个年轻男子在邮筒上放置了一支笔,紧接着发生了一系列的连锁案件。先是笔掉在地上,导致一个老人去弯腰捡拾;接着,骑车而过的路人撞倒了老人,导致一群人围观;最后,围观群众过多,让公交车司机没注 2022-08-23 专栏 > 程序员的数学课
00 数据结构与算法,应该这样学! 00 数据结构与算法,应该这样学!你好,我是公瑾,很高兴我们来一起重学数据结构与算法。 工作以来,我一直专注于机器学习、深度学习等计算机领域算法的研发,算得上是国内首批从事 AI工作的工程师,代码开发和优化过程让我不断加强了对数据结构、算法思想的理解。 想象一下,你在开发一个网站的用户系统。这个用户系统的功能之一是,对某个尝试登录用户的ID去核实是否合法,这就需要去存储着海量 2022-08-23 专栏 > 重学数据结构与算法-完
23 站在生活的十字路口,如何用数学抉择? 23 站在生活的十字路口,如何用数学抉择?人的一生需要面临很多重大的选择和决策,举例而言: 大漂亮毕业一年后遇到了一个小伙靠谱哥;面对靠谱哥的追求,大漂亮是应该接受还是拒绝? 大迷糊工作 3 年,猎头推荐给他一个不错的工作机会,面对年薪 30% 的涨幅,大迷糊是接受 offer 还是拒绝 offer? 除了这些重大决策以外,我们生活中也需要做一些小的决策。 例如,点外卖 2022-08-23 专栏 > 程序员的数学课
02 数据结构:将“昂贵”的时间复杂度转换成“廉价”的空间复杂度 02 数据结构:将“昂贵”的时间复杂度转换成“廉价”的空间复杂度上一节课,我们讲了衡量代码效率的方法。相信通过前面的学习,拿到一段代码,你已经能够衡量出代码效率的高低,那么,针对这些低效代码,你知道如何提高它们的效率吗?接下来我们来一起看一下数据结构对于时间复杂度和空间复杂度之间转换的内容,以帮助你掌握提高代码效率方法 。 你面试的过程中,常常会遇到考察手写代码的场景,通常面 2022-08-23 专栏 > 重学数据结构与算法-完
01 复杂度:如何衡量程序运行的效率? 01 复杂度:如何衡量程序运行的效率?前面我说到了,咱们这个专栏的目标是想教会你利用数据结构的知识,建立算法思维,并完成代码效率的优化。为了达到这个目标,在第一节课,我们先来讲一讲如何衡量程序运行的效率 。 当你在大数据环境中开发代码时,你一定遇到过程序执行好几个小时、甚至好几天的情况,或者是执行过程中电脑几乎死机的情况: 如果这个效率低下的系统是 离线 的,那么它会让我们 2022-08-23 专栏 > 重学数据结构与算法-完
04 如何完成线性表结构下的增删查? 04 如何完成线性表结构下的增删查?通过前面课时的学习,我们了解到数据在代码中被处理和加工的最小单位动作是增、删、查。它们是深入学习数据结构的根基,通过“增删查”的操作,我们可以选择更合适的数据结构来解决实际工作中遇到的问题。例如,几个客户端分别向服务端发送请求,服务端要采用先到先得的处理方式,应该如何设计数据结构呢?接下来,从本课时开始,我们将正式开始系统性的学习数据结构的 2022-08-23 专栏 > 重学数据结构与算法-完
05 栈:后进先出的线性表,如何实现增删查? 05 栈:后进先出的线性表,如何实现增删查?通过前面课时的学习,相信你已经掌握了线性表的基本原理,以及如何完成线性表结构下的增删查操作。 线性表是使用非常广泛的一类数据结构,它对数据的顺序非常敏感,而且它对数据的增删操作非常灵活。在有序排列的数据中,可以灵活的执行增删操作,就好像是为排好队的数据增加了插队的入口。这既是灵活性也是缺陷,原因在于它的灵活性在某种程度上破坏了数据的 2022-08-23 专栏 > 重学数据结构与算法-完