课代表立正

本期邀请了得到金牌讲师,亚马逊算法科学家,吴晶辰同学,为大家讲解算法是什么。 吴晶辰的课程《算法通识16讲》截止发稿日,在得到上已经有一万三千多个订阅了。 本期视频,晶辰同学就用日常生活中生动的故事,帮助大家理解算法是什么,可以帮大家做什么。既权威,又趣味,我也尽力展现自己颜艺,希望大家喜欢。

What is 课代表立正?

课代表立正的官方Podcast
深度访谈,有用干货,亲身验证的「真本事」
Superlinear Academy创始人,Maven Top AI Instructor
前Statsig布道师(OpenAI收购),腾讯副总监,Meta,Amazon;康奈尔经济学博士

社区:Superlinear.Academy
课程:ai-builders.com
个人:lizheng.ai

往后一点
不会站到的
不会可以
就不动
停停停
大家好
我是孙运征
感谢大家对我的
感谢大家对我频道的支持
然后我今天能达到100万的订阅用户
我显得非常高兴
今天我们有幸请来了吴京成来给大家
我们今天一块来做这些视频
大家好
我们今天有幸请来的吴京成同学
来给我们讲算法
算法这个话题虽然听上去很高深
但是其实跟我们的生活是息息相关的
吴京成同学也在德大上了一门课
然后现在已经有1万多个人去买这门课了
所以说今天来免费
今天来免费给大家介绍一下这门课都讲什么的

大家好
我是吴京成
很高兴来到孙运征的频道
然后也希望大家多多支持孙运征的YouTube频道
为了点赞评论加关注一键三连
谢谢
那金诚同学你做一下自我介绍吧
好好好
我叫吴京成
然后今天很有意思
今天拿了这么一个小玩偶是孙运征家的
然后我是北京大学毕业的
然后我是在北京大学学的是数学系
然后方向是计算数学
后来我到了美国密歇根大学
读的是应用数学的博士
然后我的研究方向是跟库存管理有关
然后跟优化算法
然后跟运筹学有关
后来我就到了亚马逊的库存管理部门
然后也是它的供应链管理部门
在那做算法方面的优化研究
我听了这么多
我觉得脑子都晕了
但是听起来大家网上盛传
北大数学系都是一些很神奇的人
你觉得怎么样
是对的吗
我觉得北大数学系有很多很厉害
很神奇的人
然后我其实不算
我其实不算
得到助理奖师
我觉得我是一个比较稍微
有点斜杠倾点的那种感觉
我自己是做算法方面的研究
但是我自己是一个特别喜欢演戏
然后在表演舞台的这么一个人
所以我经常会参加一些

铁口秀西雅图铁口秀
没有
我们不是铁口秀
西雅图非著名铁口秀
不是铁口秀
西雅图非著名戏剧演员
非著名戏剧演员
好的
所以你觉得许善凡对你演话剧有帮助吗
一点帮助都没有
如果你想当一个好的话剧演员
不要去学算法
没有
那好
那许善凡会对我的什么有帮助呢
算法实际上有意思的一件事是
它的一个帮助你的思维逻辑
当然它又跟数学不是
不是简单的数学有关
真的
那所以什么是算法
算法
如果你一定要看它的定义的话
算法就是为了解决一定的问题
遵照一定的步骤
执行一些命令
最后得到一个答案
这么一个过程
这个叫算法
就是把人变成机器人的过程吗
如果你一定要这么做
可以说是
但上我们每个人都有作为人性的一面
和解决问题的时候那种追求效率高效的那一面
如果说你想特别高效的解决一些问题
那学一些算法实际上是好的
如果我想高校再找女朋友
就有一个这样的算法帮助
可以
我觉得是可以的
你这世间有这么多时间管理大师是吧
我觉得算法比较厉害

我给算法大师试试看
那我们知道了
就是算法是帮我提高我做事情的效率是吧
然后有一套怎么说呢
规定的方法
或者说提炼出来的方法
对这个又是一个非常有意思的事情
当然我们说经常我们要做事情
想做事情做的效率高
但是我们是遇到的问题很不一样
对吧
你有时候要去看这个事情
就说找女朋友
有时候你在工作当中要安排工作
当然每件事都不一样
所以你采取的方法也不一样
你用的算法肯定不一样
这个时候就需要我们对一些经典的问题有些了解
让你遇到类似问题的时候
你说
我就遇到过这个问题
我学过这个问题
这个问题当中
用这个模型用这个算法比较合适
那这个时候你就能把你以前学到的知识
用到无论是你生活当中
或者是工作当中去
其实我提女朋友这件事情是因为
我之前有一个学弟他在学校教书
他就用这个来引出算法的
他是说算法可以告诉你在什么时候
有子偶是最佳的时机
因为你会不断explore
但是你要去开始explore
然后在这个过程中的话
是用一个optimal trade off

有这么一个理论
就是说
范莱茵是代表大师的老婆
是我通过算法找到的
没有
这有一个
一个不用secretary的一个问题
就是说你如果说
你会interview 100个secretary
我忘了具体是多少
第37个还是第几个
我具体忘了第几个
就是说如果你要找女朋友
然后你知道你这一辈子可能会遇到10个人
然后可能从
你可能先去认识三到四个
然后你看一下哪个人最好
你不一定要去选他们
之后你一旦发现了一个比你之前
遇到跟你最合适的一个人
更合适的一个人
那你就抓住机会
然后你就不用再浪费时间了
这就是你最好的选择
否则你有可能一辈子都找不到对象了
找不到好的对象了
换一个话题吧
换一个话题
好的
那好的
就是算法在我们生活中无处不在
那可是我觉得就是大家不用算法也可以活得很好
那肯定算法用来听起来
就是算法是用来解决一些更复杂的问题的
对吧

我觉得应用算法实际上它有两个特别典型的目的
一个是
你说对
我觉得有两个主要的解决方向
一个是自动化一些事情
就是很多东西需要
是我们经常要去labor
我们就是手工做一些事情
比如说我要看一眼以前看
比如说你以前FBI干一些事情
可能它有很多人的照片
然后你要看这个照片拿过来看看是谁
然后这个照片拿过来看看是谁
这可能都是人工做
那现在我们就有可能
就可以有一些机器学习的算法
然后能帮你直接去识别出这个人脸是谁
那这个就把这个过程就完全自动化了
然后在算法还经常干的一件事情是优化
就比如说再举个例子
就比如说我们开车
现在有很多帮助我们开车的一些算法
然后一方面它提供了自动化的一个过程
它帮助我们开车
另外一部分它还优化
它试图开的更安全
虽然我们现在可能在经常新闻当中
可能看到有些开车的这些算法
并不一定显得那么安全
但是如果真的和人开车出事物的比例比较一下的话
可能还是算法更安全
这个实际上是一个优化的过程
所以我觉得算法在我们生活当中
很多时候起到这两个方面的作用
你要说我们不用算法是不是可以生活下去呢
我觉得没问题
我觉得没有问题
只不过我自己的看法是从工业革命之后
我们的整个社会就越来越多的追求效率
而你看机器上是追求效率的
然后我们现在这个时代
算法也是极其追求效率的
如果你的工作或者你要做的事情
你对效率有要求的话
那算法很有可能能是你的好朋友
但是如果你对这些没有要求
比如说我是一个艺术家
我就喜欢做一些天马行空的东西
无论是音乐
无论是绘画
这个是需要你的想象力
你可能不需要说
我要在多少时间之内做出多少幅画
效率不是我想做的事情
我也不想自动化这个过程
那你就不需要算法
这个时候你完全没有算法可以活得很好
好的
所以我这样说一下的话
或者说这样
我觉得有一个例子就是
有一些这些所谓的life hacker
他们就把自己的人生做得特别精准
然后很多东西吃了卡路里
然后锻炼的时候产出的消耗的卡路里
什么的都算得特别清楚
他甚至对自己的精力值什么都有估计
然后他就基于这些东西
把自己的人生变得非常optimized
他就利用时间的效率非常高
未必值得鼓励
但是我觉得这种人就是
其实算法大师
可以这么说
每个人有自己的人生选择
然后他每个人有自己的方法论
对吧
他可能说我学了很多跟算法有关的东西
所以我就愿意把这方面的东西
量化的一些东西用到生活当中去
然后当然不是每个人都这样
其实你也可以学了之后你不用
但是这是你自己的
相当于是你自己最终的一个选择
好的
那这是我们人生
就是人生感觉对我来说不是那么复杂
但是可能管理公司
或者说是管理机器
或者说是利用很大的算力去完成一些任务
或者说操作很多机器去完成很多任务
那这个时候可能算法就很重要了
对吧
我记得就是我之前去亚马逊的仓库
参观过
就是一进去
好多好多仓库里边
然后就几十万种商品放在一层
那这个时候怎么样子把这个商品存进去
或者取出来
感觉就是很需要算法才能解决

这实际上是很有意思的一个问题
就是说如果你想一下仓库
仓库上有点像supermarket
有点像超级市场
然后里面有很多货物
然后工作人员
你要order
你要买什么东西的话
工作人员要到这个仓库里面去把这个东西拿出来
你可能再一想
这个仓库可能它就是一个跟supermarket
一样的一个东西
但是如果你真正到亚马逊的仓库里面去看的话
就完全不是这样
亚马逊的仓库里面货品的摆放都是非常随机的
random

我去了以后也很实情
这唱字的话为什么会更有效率呢

就是首先你要取货物的时候
就是如果你是一个工人
你然后我order了一个卫生纸
然后你进去找卫生纸
当然找东西实际上并不麻烦
那个所有这些卫生纸在这个仓库的什么位置上都是已经注册或者定义好了的
你让在自己的手机上面或者一个电脑上面一看
他就告诉你最近的卫生纸在这个地方
你作为一个取货的一个工人的话
你就可以走最近的路径去那个地方就可以了
这个地方
这个这件取这个东西呢
还挺容易的
但是你放东西的时候
如果卫生纸全都放在仓库的一个指定的位置的话
你叫你走很远
所有东西都放在那
但是每次要有新的要有卫生纸要拿的时候
你都要走一个很远的地方去那
但是如果我我作为customer
我买了一卷卫生纸和一个牙刷
然后呢
这两个东西又恰恰放在了不一样的地方
那就要先到A地点
再到B地点再回来
但是如果这些东西在整个仓库里面是随机摆放的话
就算比较均匀的随机摆放的话
你就会发现你可以很容易找到两个非常近的地方
然后就把这个取出来了
实际上这样的话就可以提高效率

而这这就是对效率的一个追求
而背后这个算法呢
他有一套一套理论啊
一套算法来支持这件事情

所以说背后的其实大家已经算好了
这样子摆放是最有效率的
而且其实我用了同样的资源是吧
我同样的空间
然后同样的东西
可是我可以让我这个事情做的更快
那这个就是挺神奇的一个地方

这个效率这件事是算法特别追求的一个目标
就是首先要把事情做成
其次就是说我们要追求效率
再把事情做成的情况下效率尽量的高

就我想起来以前韩信点兵
这是不是也是一个算法
韩信点兵多多益善是吧
韩信将兵多多益善
那韩信点兵是什么
好像就是说他用了一个很快的方法
然后下面的人报数
然后就知道了这练兵场上多少个人

那我那我听起来应该应该是一个很有意思的一个算法
哎呀不可
我这人们这是不够
不够不够
哈哈哈哈
但大概有一个意思
我觉得应该是
你来解释解释
其实也就记得这个
哈哈哈哈
都不记得了
哈哈哈哈
大概就是一个算法
就算你
那我这还有两个问题吧

第一个就是大家讲到算法的时候
其实好像很多定义的样子
比如说你刚刚说
我们生产论语是一种算法

然后大家在刷题的时候
也会要学算法数据结构

然后国内现在很多这个
工程师叫算法工程师
专门叫算法工程师
这个都是一个意思吗
还是其实大家是指的这个算法的不同部分

可能有一
还有很多相同的部分
就是算法实际上是一种解决问题的一种
类似于思维逻辑
然后你要是说在网上刷题
也有做一些算法题
实际上它背后有一些

有几个一定数量的一些思维逻辑
然后比如说动态规划呀
或者二分法呀
这类东西
如果你把这些思维逻辑理解的话

解决这些问题
实际上就是说
特别特别问题特别处理
但是我的这个
general的背后的逻辑是一样的

然后你要说算法工程师
算法工程师必须得懂这些逻辑
他才能真正遇到一个问题的时候
设计出一个好的方法解决它
并且解决的更快
当然作为工程师呢
你还肯定要把这个东西要真正写成代码
写成产品
让它真正在计算机上的运行
而不是只是停留在
就像是你做饭
我给你一个recipe
你知道怎么做
但是你从来没做过
那你也不是一个厨师

所以算法是一个逻辑
然后你通过代码把这个逻辑变成一个
程序

那第二个就是
算法就是为什么让你这么
就是你为什么对算法这么interested
是不是它因为它设计很精巧
给你一种秩序上的快感


绝对是有的
就首先
实际上有两点
我们说到算法的时候
我会经常说
有一部分是数学模型的部分
就是你要解决一个实际问题
你首先得理解这个问题
你要用一种量化的方法
用一种逻辑的方法把它刻画出来
这个是模型的部分
一旦你刻画出来之后
你会发现
我要解决其中的某一个特别的一个问题
那这个时候你可能就要用
用算法来做
但是算法有很多种
你可能能最开始先设计
我用一个特别蠢的算法
比如说
那个暴力解法
那个
我要猜你的密码是什么
当然猜密码也没有什么更好的别的方法去猜
就是说


我们举一个什么例子变化
韩信点兵的例子

点还是

韩信点兵算不懂
就是说
韩信点兵
我们可以韩信一个人过去一个一个一个一个一个人的点
这样的效率很低
然后呢
但是他他新想出一个好方法
说我告诉你们两个将军
你们各自把自己队伍点完了
然后这两个将军也说

这哥就给这两个旅长
你们把我这个东西点完了
然后效率就最高
我要搜一下韩信点兵
哈哈

暂停五分钟啊
A few moments later

好了
我们用五分钟的时间看了一下韩信点兵是什么
但好像跟我们要讲的东西没有太大的关系
哈哈哈
可以把它剪掉了
整个整个韩信点兵的都剪掉了
我们再找一个什么其他的例子吧

愚蠢的愚蠢的算法到高级的算法

的例子
我们就还说刚才就还说刚才那件事吧
叫还是韩信点兵这件事
如果有两种做法去做
韩信有一个傻的韩信
有一个傻的韩信呢
然后韩信就会一个一个一个人
那一共如果有一万个人
他就要点一万次
但是呢
那然后并且花的时间就可能是一万秒
对吧
就很长时间了
但是如果他把这个任务分派给两个人去做
这个这个军长
你就点这边的
那个军长你去点那边的
然后这两个军长又可以同时的去
再把这个任务分配给底下两个师长

这个师长
你就点你们是有多少人
这个事让你点你们是只有几个人
这些东这些信息全部分散化
然后最后再到每个班
每个班长就数自己班有几个人十个人数完了以后
告诉自己的上级
这样的话就可以并行去聚散这件事
那整个花的时间就少了
这就是一个
典型的一个蠢的方法和一个稍微聪明一点方法
那其实我在学计算机的过程中
一直对这个动态规划这个东西
就是你学了以后
可是我觉得我没有一个很直观的理解
要不来这个做个例子
给我们讲讲动态规划的思想是什么吧
那那那先点定了
不是先点定的例子
我说就是在这个
在这这次正好来给我们讲讲动态规划是干什么的吧
我不知道你原来玩没玩过一个游戏
叫做大航海十台四
是一个特别好玩的游戏
如果你没玩过的话
我极度推荐你去玩一玩
然后其中有一个桥段
其中有个桥段是你作为主人公
你会走到一个酒馆
然后酒馆里面有一个人
然后这个这个人会给你玩一个抓硬币的游戏
这桌子上面有一堆硬币
然后呢
你每次可以抓一个硬币两个硬币或者三个硬币
你不能不抓
你必须抓一二三当中的一个
然后呢
你的对手也是同样的规则
你先抓
谁抓到了最后那个硬币
谁就输了比赛
请问这时候你该怎么抓
你如果说你遇到这个问题的
那你说我抓一个
抓两个
抓三个
你不会知道有什么Consequence
你不知道将来会发生什么
但是如果告诉你
现在桌上只有一个硬币了
然后要你抓
我死了
你就死了
如果这两个硬币的话
抓一个
你抓一个
三个硬币
抓两个四个硬币

五个硬币呢
抓一个

对吗
四个硬币的时候你抓三个
然后呢
等到上一个的时候死的话
就抓一个的时候死
你如果五个硬币的时候
你抓一个
你抓
对啊
五个硬币的时候我又死了
不不不
因为我抓一二三
对手剩下的就是四三二

他都能解法

完了
这段得重说
不用重说
所以你发现
抓到五个硬币的时候
我就死了
你又死了
你抓一个硬币的时候
剩一个硬币的时候你会死
剩五个硬币的时候你会死
六个的时候你又活了
七个时候又活了
八个时候又活了
九个时候
你又死了

因为九个硬币
你无论抓几个的时候
对方都可以把剩下的一些硬币
抓完剩到五个
但是你知道五个
你一定会死
所以这个
这你会发现了
你之后剩
你剩
现在剩N个硬币的时候
你是活还是死
取决于N-1
N-2
N-3的情形的时候
会发生什么事情
那解决这类的问题
你只要从小向大的来解决
先看N等于1的时候怎么解决
N-2上怎么解决
这样的话往上推
到N等于1
一万的时候
你也能把这个问题解决了
这是动态规划吗
这是动态规划
它和地归有什么区别
地归
地归是一种关系
比如说N的时候的情况
基于N-1的情况
基于N-2的情况
这是一种地归关系
动态规划是解决问题的一个方法
地归定义的只是关系
定义的不是解决问题的方法
OK

那动态规划里面是不是一定会包含地归关系

动态规划是基于地归关系
它首先有地归关系存在
然后呢
从小到大构筑一个结
这个是动态规划的一个
从算法上面的一个问题
但是为什么叫动态规划
因为动态规划最初解决的问题
大部分的时候都有不同时间的概念
就比如说你现在做一件什么事情
你现在做一件事情会影响
将来会把你的状态在下一个时间的时候发生改变
然后你下个时间段再做一个事情
又会把你带到下一个时间的另外一个状态
而这个时候
你如果想最终达到某一个状态的时候
你需要倒着来推
这个是就有不同的时间段的这个问题叫做动态规划问题
当然你用这个模型
并不一定要解决那些有不同时间段的那些问题
因为时间只不过是一个变量

OK
所以说
对吧
刚才我觉得就是一个很好的例子
就是我之前我可能要想
我看到了一堆硬币
我就在想我拿一个
拿两个
拿三个
但是如果从最小的到推的话
这个问题其实就有解了
对吧
我就知道我在拿到14硬币的时候
我到底应该拿几个

你有多个硬币的时候
你多硬币的解
实际上基于少硬币的解
这个是你跟他说的低规关系
有这个低规关系之后
你知道你要从后往前解决这个问题
这是动态规划的算法解法
所以怎么样是用动态规划去追女朋友
那就是先想清楚你最后要什么
从倒着来看
然后看看这个遇到的这个女孩合不合适
然后你想知道
到什么程度上我求婚
他会同意
需要满足哪些条件
那我先实现哪个后实现哪个
从后向前推
这就是动态规划
这真的没说出来
估计不管用
能用吗
不管用
不是成功了吗
那还要帮忙
对不是
什么法法
叹息法
暴力法
什么
不是
要看
什么
没有
我找我老婆没有用到算法
大家记得了
算法家是找老婆也不是用算法家
所以我们这些课其实是没什么用的
好的
其实可以了
可以了
我们最后
这视频最后
就是我们刚刚讲了
那我们稍微总结一下
就是我们视频刚刚讲了
就是算法在我们生活中有什么用
但是它更重要的是用来解决什么样的问题的
它可以提高我们的效率
是吧
它可以帮助我们优化
然后它可以把一些东西自动换
停下来
让我们去使用更大的力量
比如说算力
那它也有一些很精巧的数学构思在
比如说这个动态被换了
就是你如果从前往前的话
就刚才那个例子确实很难解
但是从前往后的话
它就有一个解法
从前往前
从前往前就有解法
如果对
如果从前往后没有解
从前往前就有解法了

所以说就是这个时候
就是学会了算法
有的时候真的可以让你的生活变得更简单
或者说这就是一个很好的hack
就是在别人
不知道怎么解决这个问题的时候
你是有一个很好的解答
你是有一个最好的解答
下回别人要再问你
怎么用算法的方法找女朋友
找老婆
你也可以装逼的跟人说一说
但是估计没有用
我觉得应该是没什么用
那好
这个金晨同学在得到的课程叫什么名字
叫做
叫做什么
算法同时16奖

我在得到的课程叫做算法同时16奖
欢迎大家关注
里面都讲了些什么东西
在这个课程里面
我们会讲一些算法是什么
算法关注的东西是什么
怎么理解算法
有那些我们常见的一些算法当中用到的一些思维
到最后的时候也会讲一下机器学习算法
有什么特别有意思的地方
好的
那大家有如果感兴趣的话
欢迎去subscribe金晨同学的课
只要70人民币是吧
两杯奶茶钱就可以去学到这么多高级的算法知识
感谢大家关注
希望大家更多的关注孙义征的YouTube频道
有本事在你的课里边说