ML2001-1 机器学习/深度学习 Introduction of Machine / Deep Learning

news2024/11/5 9:05:51

图片说明来自李宏毅老师视频的学习笔记,如有侵权,请通知下架

影片参考

【李宏毅】3.第一节 - (上) - 机器学习基本概念简介_哔哩哔哩_bilibili

1. 机器学习的概念与任务类型

  • 概念:机器学习近似于寻找函数,用于处理不同类型的任务。
  • 任务类型
    • 回归(Regression):函数输出一个标量,例如预测 PM2.5 浓度。
    • 分类(Classification):函数从给定的选项(类别)中输出正确的一个,如语音识别、图像识别、垃圾邮件过滤、围棋落子位置预测等。
    • 结构化学习(Structured Learning):创建具有结构的内容,如图像、文档。

2. 寻找函数的方法

  • 确定具有未知参数的函数:基于领域知识构建模型,包含权重、偏差和特征等参数。
  • 从训练数据定义损失(Loss)
    • 损失是参数的函数,表示一组值的好坏程度。
    • 例如使用交叉熵(Cross - entropy)作为损失函数。
    • 通过分析 2017 年 1 月 1 日 - 2020 年 12 月 31 日的数据来定义损失。
  • 优化
    • 使用梯度下降(Gradient Descent)算法,计算正负梯度以更新参数,朝着损失减小的方向优化。
    • 讨论了局部最小值和全局最小值问题,指出在大多数深度学习框架中,优化过程可以用一行代码实现。

3. 模型的局限性与改进

  • 线性模型的局限性:以预测视频观看量为例,说明线性模型存在严重局限性,需要更灵活的模型。
  • 改进方向
    • 增加特征和激活函数
      • 介绍了如何用分段线性曲线近似连续曲线,以及 sigmoid 函数及其相关操作(改变斜率、平移、改变高度)。
      • 提出新模型增加特征,如使用 Rectified Linear Unit (ReLU) 作为激活函数,并对比了不同激活函数和不同隐藏层数量的实验结果。
    • 深度学习模型
      • 多层神经网络(Neural Network),即深度学习,包含多个隐藏层。介绍了 AlexNet、VGG、GoogleNet、Residual Net 等网络结构及层数,并指出深度学习中 “深”(Many hidden layers)的特点。
      • 解释了为什么选择 “深” 网络而非 “胖” 网络,同时提到过度拟合(Overfitting)问题,即模型在训练数据上表现好,但在未见过的数据上表现差。

最后,文档提到下次将讨论模型选择,并给出了相关学习资源的链接,还介绍了反向传播(Backpropagation)是一种高效计算梯度的方法。

本課程介紹機器學習和深度學習的基本概念,並透過實際例子解釋如何利用機器學習來預測YouTube頻道的觀看人數。首先,機器學習是讓機器找出複雜函式的能力,並通過回歸分析和分類任務來實現。接著,課程詳細說明了如何定義損失函數並使用梯度下降法來優化參數,最終達到最小化損失的目的。透過不斷調整模型,能夠提高預測的準確性,並探討如何利用過去的數據來預測未來的趨勢。

幻灯片 2:机器学习的近似概念

  • 表明机器学习≈寻找函数,并列举了语音识别、图像识别、下围棋等应用场景作为示例。

00:01 那我们就开始上课吧
00:04 那第一堂课啊是要简单跟大家介绍一下machine learning
00:09 还有deep learning的基本概念啊
00:12 等一下呢
00:13 会讲一个跟宝可梦完全没有关系的故事
00:17 告诉你机器学习
00:19 还有深度学习的基本概念好
00:23 那什么是机器学习呢
00:26 那我知我想必大家在报章杂志上
00:28 其实往往都已经听过机器学习这个词汇
00:32 那你可能也知道说啊
00:34 机器学习就是跟今天很热门的AI
00:38 好像有那么一点关联
00:41 那所谓的机器学习到底是什么呢
00:45 顾名思义好像是说机器它具备有学习的能力
00:50 那些科普文章往往把机器学习这个东西
00:54 吹得玄之又玄
00:56 好像机器会学习以后
00:57 我们就有了人工智慧
00:59 有了人工智慧以后
01:00 机器接下来就要统治人类了
01:03 好那机器学习到底是什么呢
01:10 可以用一句话来描述机器学习这件事
01:14 什么叫机器学习呢
01:16 机器学习就是让机器具备找一个函式的能力
01:22 那机器具备找函式的能力以后
01:25 他可以做什么样的事情呢
01:27 它确实可以做很多事
01:29 举例来说
01:30 假设你今天想要叫机器做语音辨识
01:33 机器听一段声音
01:35 产生这段声音对应的文字
01:37 那你需要的就是一个函式
01:40 这个函式的输入是声音讯号
01:43 输出是这段声音讯号的内容
01:48 那你可以想象说这个可以把声音讯号当作输入
01:52 文字当做输出的函式
01:54 显然非常非常的复杂
01:56 它绝对不是你只可以用人手写出来的方程式
02:01 这个函式它非常非常的复杂
02:04 人类绝对没有能力把它写出来
02:06 所以我们期待凭借着机器的力量
02:09 把这个函式自动找出来
02:12 这件事情就是机器学习
02:15 那刚才举的例子是语音辨识
02:18 还有好多好多的任务
02:20 我们都需要找一个很复杂的函式
02:24 举例来说
02:25 假设我们现在要做影像辨识
02:29 那这个影像辨识我们需要什么样的函式呢
02:32 这个函式的输入是一张图片
02:36 它的输出是什么呢
02:38 它是这个图片里面有什么样的内容
02:42 或者是大家都知道的阿尔法狗
02:46 其实也可以看作是一个函式
02:48 要让机器下围棋
02:50 我们需要的就是一个函式
02:52 这个函式的输入是棋盘上黑子跟白子的位置
02:56 输出是什么
02:57 输出是机器下一步应该落子的位置
03:02 假设你可以找到一个函式
03:04 这个函式的输入就是棋盘上黑子跟白子的位置
03:08 输出就是下一步应该落子的位置
03:13 那我们就可以让机器做自动下围棋这件事
03:17 就可以做一个阿尔法狗
03:20 而那随着我们要找的函式不同啊

幻灯片 3 - 4:不同类型的函数 - 回归

  • 回归类型中函数输出一个标量,以预测明天的 PM2.5 为例,展示了其可能与今天的 PM2.5、温度、O3 浓度等因素相关。

03:23 机器学习有不同的类别
03:26 那这边介绍几个专有名词给大家认识一下好
03:31 第一个专有名词叫做regression
03:34 regression的意思是说
03:36 假设我们今天要找的函式
03:39 它的输出是一个数值好
03:43 它的输出是一个scale
03:45 那这样子的机器学习的任务
03:48 我们称之为regression
03:51 那这边举一个regression的例子
03:53 假设我们今天要机器做的事情
03:55 是预测未来某一个时间的pm2.5的数值
04:00 你要叫机器做的事情是找一个函式啊
04:03 这个我们用F来表示
04:04 这个函式的输出是明天中午的pm2.5的数值
04:10 它的输入可能是种种
04:12 跟预测pm2.5有关的指数
04:14 包括今天的pm2.5的数值
04:16 今天的平均温度
04:18 今天平均的臭氧浓度等等
04:20 这个函式可以拿这些数值当做输入输出
04:24 明天中午的pm2.5的数值
04:27 那这一个找这个函式的任务叫做regression
04:34 那还有别的任务吗
04:35 还有别的任务
04:37 除了regression以外
04:38 另外一个呃大家耳熟能详的任务呢叫做classification
04:45 那classification这个任务要机器做的是选择题哦
04:50 我们人类先准备好一些选项啊
04:53 这些选项呢又叫做类别
04:56 又叫做FS
04:57 我们现在要找的函式
04:59 它的输出啊
05:00 就是从我们设定好的选项里面
05:03 选择一个当做输出啊
05:06 这个问题这个任务就叫做classification
05:10 举例来说啊
05:11 现在每个人都有gmail com
05:14 那gmail com里面呢有一个函数
05:17 这个函式可以帮我们侦测一封邮件
05:20 是不是乐色邮件
05:22 这个函式的输入是一封电子邮件
05:26 那它的输出是什么呢
05:28 你要先准备好你要机器选的选项
05:31 在侦测垃圾邮件这个问题里面
05:34 可能的选项就是两个是垃圾邮件
05:37 或不是垃圾邮件
05:38 yes或者是NO
05:40 那机器要从yes跟NO里面选一个选项出来
05:45 这个问题叫做classification
05:48 那classification不止不一定只有两个选项
05:51 也可以有多个选项
 

05:54 举例来说
05:55 阿尔法狗本身也是一个classification的问题
06:00 那只是这个classification它的选项是比较多的
06:04 那如果要叫机器下围棋
06:06 你想追到阿尔法go的话
06:07 我们要给机器多少个选项呢
06:10 你就想想看棋盘上有多少个位置
06:14 让我们知道棋盘上有19×19个位置
06:18 那叫机器下围棋
06:19 这个问题
06:20 其实就是一个有19×19个选项的选择题
06:25 你要叫机器做的就是找一个函式
06:27 这个函式的输入是棋盘上黑纸和白纸的位置
06:31 输出
06:31 就是从19×19个选项里面
06:34 选出一个正确的选项
06:36 从19×19个可以落子的位置里面
06:40 选出下一步应该要落子的位置
06:44 这个问题也是一个分类的问题

亮點:
01:10 機器學習是一種讓機器具備自動找出函式能力的技術,能夠處理複雜的任務如語音辨識和影像辨識。這種技術的核心在於不需要人類手動編寫複雜的方程式,機器能自動學習。
       -語音辨識是機器學習的一個實際應用案例,機器需要找到將聲音訊號轉換為文字的函式。這個函式的複雜性遠超過人類能手動撰寫的範疇,因此機器的學習能力至關重要。
       -影像辨識同樣需要機器學習,機器需要識別圖像內容並找出合適的函式。這需要機器分析圖像的各種特徵,並做出準確的判斷,這在各種應用中都非常重要。
       -機器學習的不同類型包括回歸和分類任務。回歸任務尋求預測數值,而分類任務則需要從多個選項中選擇一個,這些都是機器學習在實際應用中的關鍵技術。

幻灯片 5 - 7:不同类型的函数 - 分类

  • 分类任务中函数从给定选项(类别)中输出正确的一个。
  • 分别以垃圾邮件过滤(是 / 否类别)和围棋下一步落子位置预测(19x19 个类别)为例进行说明。

06:48 那其实很多教科书啊
06:50 在讲机器学习的种种不同类型的任务的时候
06:54 往往就讲到这边告诉你说机器学习两大类任务
06:59 一个叫做regression
07:02 一个叫做classification
07:04 然后就结束了
07:06 但是假设你对机器学习的认知只停留在
07:10 机器学习
07:10 就是两大类任务
07:12 regression和classification
07:13 那就好像你以为说这个世界只有五大洲一样
07:18 你知道这个世界不是只有五大洲
07:21 对不对
07:21 哎这个世界不是外面是有一个黑暗大陆的
07:25 哎
07:25 不在鬼灭之刃联赛之前
07:28 我们就已经出发前往黑暗大陆了
07:30 鬼灭之刃联赛以后
07:31 我们居然都还没有到
07:33 可见这个黑暗大陆距离我远
07:36 那在机器学习这个领域里面
07:38 所谓的黑暗大陆是什么呢
07:40 在regression和classification以外
07:43 大家往往害怕碰触的问题叫做structure的
07:48 也就是机器今天不只是要做选择题
07:51 不只是输出一个数字
07:53 它要产生一个有结构的物件
07:57 举例来说
07:58 机器画一张图
08:00 写一篇文章
08:01 这种叫机器产生有结构的东西的这个问题呀
08:06 就叫做structure learning
08:08 那如果要讲的比较拟人化
08:10 比较潮一点
08:11 Structure learning
08:12 你可以用拟人化的讲法说
08:14 我们就是要让机器学会创造这件事情好
08:20 那到目前为止
08:21 我们就是讲了三个机器学习的任务
08:24 regression classification跟structure learning
08:27 接下来我们要讲的是

幻灯片 9:如何寻找函数 - 案例研究

  • 以 YouTube 频道数据为例展开说明如何寻找函数。


08:30 那我们说机器学习就是要找一个函式
08:33 那机器怎么找一个函式呢
08:37 那这边要用个例子跟大家说明说
08:39 机器怎么找一个函式
08:43 这边的例子是什么呢
08:44 这边的例子在讲这个例子之前呢
08:47 先跟大家说一下
08:49 说这门课呢有一个YOUTUBE的频道啦
08:53 诶然后这个呃
08:55 我会把上课的录音呢
08:56 放到这个YOUTUBE的YOUTUBE的频道上面啊
09:00 那这个频道呢感谢呃
09:02 过去修过这门课的同学不嫌弃
09:04 其实也蛮多人订阅
09:06 所以我算是一个三流的YOUTUBE啊
09:09 是没有什么太多流量
09:10 但是也是有这边也是7万多订阅啦
09:14 那为什么突然提到这个YOUTUBE的频道呢
09:17 因为我们等一下要举的例子啊
09:19 跟YOUTUBE是有关系的
09:22 那你知道身为一个YOUTUBE啊
09:24 YOUTUBE在意的东西是什么呢
09:26 YOUTUBE在意的就是这个频道的流量
09:29 对不对
09:30 就假设这个有一个YOUTUBE呢是靠着YOUTUBE为生的
09:34 他会在意说频道有没有流量
09:36 这样的他才会知道他可以获利多少
09:41 所以我在想说
09:42 我们有没有可能找一个函式
09:45 这个函式它的输入是YOUTUBE后台的资讯输出
09:49 是这个频道隔天的总点阅率总共有多少哦
09:55 假设你自己有YOUTUBE频道的话
09:57 你会知道说在YOUTUBE后台
09:59 你可以看到很多相关的资讯
10:02 比如说每一天看赞的人数有多少啊
10:05 每天订阅的人数有多少啊
10:07 每天观看的次数有多少
10:09 我们能不能够根据一个频道
10:11 过往所有的资讯去预测
10:14 他明天有可能的观看的次数是多少呢
10:18 我们能不能够找一个函式
10:20 这个函式的输入是啊
10:23 YOUTUBE上面YOUTUBE后台是我的资讯输出
10:27 就是某一天隔天呃
10:30 这个频道会有的总观看的次数呢
10:33 那你可能会问说为什么要做这个嗯
10:37 如果我有盈利的话
10:39 我可以知道我未来可以赚到多少钱
10:41 但我其实没有开盈利
10:42 所以我也不知道我为什么要做这个
10:44 就是完全没有任何卵用
10:46 我单纯就是想举一个例子而已好
10:50 那接下来啊我们就要问怎么找出这个函式呢
10:54 怎么找这个函式

08:30 那我们说机器学习就是要找一个函式
08:33 那机器怎么找一个函式呢
08:37 那这边要用个例子跟大家说明说
08:39 机器怎么找一个函式
08:43 这边的例子是什么呢
08:44 这边的例子在讲这个例子之前呢
08:47 先跟大家说一下
08:49 说这门课呢有一个YOUTUBE的频道啦
08:53 诶然后这个呃
08:55 我会把上课的录音呢
08:56 放到这个YOUTUBE的YOUTUBE的频道上面啊
09:00 那这个频道呢感谢呃
09:02 过去修过这门课的同学不嫌弃
09:04 其实也蛮多人订阅
09:06 所以我算是一个三流的YOUTUBE啊
09:09 是没有什么太多流量
09:10 但是也是有这边也是7万多订阅啦
09:14 那为什么突然提到这个YOUTUBE的频道呢
09:17 因为我们等一下要举的例子啊
09:19 跟YOUTUBE是有关系的
09:22 那你知道身为一个YOUTUBE啊
09:24 YOUTUBE在意的东西是什么呢
09:26 YOUTUBE在意的就是这个频道的流量
09:29 对不对
09:30 就假设这个有一个YOUTUBE呢是靠着YOUTUBE为生的
09:34 他会在意说频道有没有流量
09:36 这样的他才会知道他可以获利多少
09:41 所以我在想说
09:42 我们有没有可能找一个函式
09:45 这个函式它的输入是YOUTUBE后台的资讯输出
09:49 是这个频道隔天的总点阅率总共有多少哦
09:55 假设你自己有YOUTUBE频道的话
09:57 你会知道说在YOUTUBE后台
09:59 你可以看到很多相关的资讯
10:02 比如说每一天看赞的人数有多少啊
10:05 每天订阅的人数有多少啊
10:07 每天观看的次数有多少
10:09 我们能不能够根据一个频道
10:11 过往所有的资讯去预测
10:14 他明天有可能的观看的次数是多少呢
10:18 我们能不能够找一个函式
10:20 这个函式的输入是啊
10:23 YOUTUBE上面YOUTUBE后台是我的资讯输出
10:27 就是某一天隔天呃
10:30 这个频道会有的总观看的次数呢
10:33 那你可能会问说为什么要做这个嗯
10:37 如果我有盈利的话
10:39 我可以知道我未来可以赚到多少钱
10:41 但我其实没有开盈利
10:42 所以我也不知道我为什么要做这个
10:44 就是完全没有任何卵用
10:46 我单纯就是想举一个例子而已好
10:50 那接下来啊我们就要问怎么找出这个函式呢
10:54 怎么找这个函式
10:55 F输入是YOUTUBE后台的资料输出
10:58 是这个频道隔天的点阅的总人数呢
11:03 那机器学习找这个函式的过程啊
11:06 分成三个步骤
11:08 那我们就用YOUTUBE频道点阅人数预测这件事情
11:12 来跟大家说明这三个步骤是怎么运作的
11:17 第一个步骤是
11:19 我们要写出一个带有未知参数的函数
11:25 简单来说就是我们先猜测一下
11:28 我们打算找的这个函式F
11:30 它的数学式到底长什么样
11:35 举例来说呃
11:36 我们这边先做一个最初步的猜测
11:39 这个F长什么样子呢
11:41 这个输入跟Y之间有什么样的关系呢
11:45 我们写成这个样子
11:46 Y等于B加W乘以XY
11:51 这边的每一个数值是什么呢
11:53 这个Y啊是就假设是今天吧
11:56 这个Y因为今天还没有过完嘛
11:58 所以我还不知道今天总共的点阅次数是多少
12:01 所以这件事情是我们未知的
12:03 Y是我们准备要预测的东西
12:05 我们准备要预测的是今天2月26号
12:08 这个频道总共观看的人数
 

幻灯片 10 - 11:具有未知参数的函数

  • 基于领域知识确定函数,包含模型的权重、偏差和特征等未知参数。

12:11 那x1是什么呢
12:13 x1是这个频道前一天总共观看的人数的
12:18 Y跟X呢跟XY呢都是数值
12:22 都是我们啊
12:23 这个这个Y呢是我们准备要预测的东西
12:26 而XY是我们已经知道的资讯啊
12:31 那B跟W是什么呢
12:33 B跟W未知的参数
12:36 它是准备要透过资料去找出来的
12:40 我们还不知道W跟B应该是多少
12:44 我们只是隐约的猜测说
12:46 但这个猜测为什么会有这个猜测呢
12:48 这个猜测往往就来自于你对这个问题上的了解
12:53 也就是for man knowledge
12:55 所以常常会听到有人说啊
12:57 这个做机器学习呀
12:59 你就需要一些domain knowledge
13:01 这个dmain knowledge通常是用在哪里呢
13:04 这个domain knowledge
13:05 就是用在写这个带有未知数的函数的时候
13:10 所以我们怎么知道说
13:12 这个能够预测未来点阅次数的函数是F
13:15 它就一定是前一天的点阅次数乘上W
13:20 再加上B呢
13:21 我们其实不知道这是一个猜测
13:24 也许我们觉得说呃
13:25 这个呃
13:26 呃今天的点阅次数
13:29 总是会跟昨天的点阅次数有点关联吧
13:32 好所以我们把昨天的点阅次数乘三个数值
13:35 但是总是不会一模一样
13:37 所以再加三个B做修正
13:39 当做是对于2月26号点阅次数的预测啊
13:44 这是一个猜测
13:45 他不一定是对的
13:47 我们等一下回头会再来修正这个猜测
13:50 好
13:51 那现在总之我们就随便猜
13:53 说Y等于B加W乘以XY
13:56 而B跟W是未知的
13:59 这个带有未知的参数啊
14:02 这个parameter中文通常翻译成参数了
14:05 这个带有unknown的parameter的这个function
14:08 那我们就叫做妈的
14:11 所以常常听到有人说模型model这个东西
14:15 model这个东西在机器学习里面
14:17 就是一个带有未知的parameter的function
14:23 好
14:23 那这个x1哪是这个方式里面
14:26 我们已知的已经知道的东西
14:28 它是来自于YOUTUBE后台的资讯
14:30 我们已经知道
14:31 2月25号点阅的总人数是多少
14:35 这个东西叫做正确
14:38 而W跟B是我们不知道的
14:40 他是unknown的parameter
14:42 那这边我们也给W跟B呢给它一个名字
14:46 这个跟feature做相乘的未知的参数
14:49 这个W我们叫它weight
14:52 这个没有跟feature相乘的
14:54 是直接加上去的
14:55 这个我们叫它白眼
14:58 那这个只是一些名词的定义而已
15:01 让你等一下我们讲课的时候
15:03 在称呼模型里面的每一个东西的时候
15:05 会更为方便好
15:07 那这个是第一个步骤好


06:00 機器學習不僅僅是回歸和分類這兩大類任務,還包括結構學習。這意味著機器不僅要做出選擇或預測數字,還需要創造有結構的物件,如圖像或文本。
       -在機器學習中,棋盤遊戲如圍棋的問題可以視為一個分類問題。機器需要從19×19的選擇中找到最佳的落子位置,這展示了機器學習在解決複雜問題上的能力。
       -結構學習的概念讓機器學會創造,例如自動生成圖像或文本。這種能力的發展不僅增強了機器的智能,也拓展了人工智慧的應用範疇。
       -舉例來說,預測YouTube頻道的觀眾數量可以透過機器學習找到函式,這個函式的輸入是頻道的各種數據。這展示了如何利用過去資料進行未來預測的過程。

幻灯片 12 - 19:从训练数据定义损失

  • 损失是参数的函数,表示一组值的好坏程度。
  • 以 2017 年 1 月 1 日 - 2020 年 12 月 31 日的数据为例,介绍如何根据数据定义损失,涉及到交叉熵等概念。
  • 通过数据展示不同时间点的数值以及对应的标签,分析如何衡量损失。

15:12 那第二个步骤是什么呢
15:13 第二个步骤呢是我们要定义一个东西叫做loss
15:19 什么是loss呢
15:20 loss啊
15:21 它也是一个function
15:24 那这个function它的输入是我们model里面的参数
15:31 我刚才已经把我们的model写出来了
15:33 对不对
15:34 我们说我们的model叫做Y等于B加W乘以XY
15:38 而第一个W是未知的
15:40 是我们准备要找出来的
15:42 那所谓的L啊
15:44 所谓的这个loss啊
15:46 它是一个方向
15:47 这个方向的输入是什么
15:49 这个方向的输入就是B跟W
15:53 所以LO它是一个方式
15:55 它的输入是parameter
15:57 是model里面的parameter
16:00 但这个north这个方向的输出的值代表什么呢
16:03 这个方式输出的值代表说
16:05 现在如果我们把这一组未知的参数
16:10 设定某一个数值的时候
16:12 这组数值好还是不好
16:15 那这样讲可能你觉得有点抽象
16:19 所以我就举一个具体的例子
16:21 假设现在我们给未知的参数的设定是D
16:27 这个bias x等于0.5K
16:30 这个WF呢直接等于一
16:34 那这个loss怎么计算呢
16:35 如果我们B设0.5K这个W正一
16:40 那我们拿来预测
16:42 而未来的这个点阅次数的函式啊
16:46 就变成Y等于0.5K加一倍的XY
16:51 那这样子的一个函式
16:54 这个0.5K跟一它们所代表的这个函数
16:58 它有多好呢
16:59 这个东西就是loss
17:02 那在我们的问题里面
17:03 我们要怎么计算这个loss呢
17:06 好这个我们就要从训练资料来进行计算
17:11 在这个问题里面
17:12 我们的训练资料是什么呢
17:14 我们的训练资料是这个频道过去的点阅次数
17:19 举例来说
17:20 从2017年到2020年的点阅次数
17:25 每天的这个频道点阅次数都知道吧
17:27 啊这边是假的数字了
17:29 随便乱编的好
17:31 那所以我们知道2017年1月1号
17:34 到2020年12月31号
17:36 的点阅数字是多少
17:38 好接下来我们就可以计算loss怎么计算呢
17:43 我们把2017年1月1号的点阅次数
17:47 代入这一个函式里面
17:50 我们已经说
17:51 我们想要知道D设定为0.5
17:54 KW设定为一的时候
17:55 这个函式有多棒
17:57 好
17:57 当B设定为0.5KW设定为一的时候
18:00 我们拿来预测的这个函数是Y等于0.5K
18:03 加一倍的XY
18:05 那我就把这个XY带4.8K
18:08 看看预测出来的结果是多少哦
18:10 所以根据这个函式
18:12 根据B设0.5KKW设一的这个函式
18:17 如果1月1号是4.8K的点阅次数的话
18:21 那隔天应该是4.8K乘以10.5K
18:24 也就是5.3K的点阅次数
18:26 那隔天实际上的点阅次数
18:28 1月2号的点阅次数我们知道吗
18:31 从后台的资讯里面我们是知道的
18:34 所以我们可以比对一下
18:35 现在这个函式预估的结果跟真正的结果
18:39 它的差距有多大
18:41 这个函式预估的结果是5.3K
18:45 真正的结果是多少呢
18:46 真正的结果是4.9K
18:49 看来是高估了
18:50 高估了这个频道可能的这个点阅的人数
18:53 就可以计算一下这个差距
18:55 计算一下估测的值跟真实的值的差距
18:59 这边估测的值用Y来表示真实的值
19:02 用y hand来表示
19:03 你可以计算Y跟y hat之间的差距
 

19:06 得到一个1万
19:07 代表估测的值跟真实的值之间的差距
19:11 那计算差距其实有不止一种方式
19:13 我们这边把Y跟Y开始相减
19:15 直接取绝对值
19:17 算出来的值是0.4K好
19:21 那我们今天有的资料
19:23 不是只有1月1号跟1月2号的资料
19:26 我们有2017年1月1号到
19:29 2020年12月31号总共3年的资料
19:33 好像这个真真实的词啊
19:35 叫做label啊
19:36 所以常常听到有人说做机器学习就需要label
19:40 label指的就是正确的数值
19:43 这个东西叫做label好
19:46 那我们不只
19:48 我们不是只能够看
19:49 用1月1号来预测1月2号的值
19:51 我们可以用1月2号的值来预测1月3号的值
19:55 如果我们现在的函数是Y等于0.5K
19:57 加一倍的XY
19:59 那1月2号根据1月2号的点阅次数
20:02 预测的1月3号的点阅次数值是多少呢
20:05 是5.4K
20:06 你h one带4.9K进去
20:09 乘以倍加0.5K等于5.4K
20:11 接下来计算这个5.4K跟真正的答案
20:15 跟label之间的差距
20:16 label是7.5K
20:17 看来是一个低估啊
20:19 低估了啊
20:20 这个频道在1月3号的时候的点阅次数
20:23 那就可以算出EQ啊
20:25 这个EQ是Y减跟Y跟y hat之间的差距
20:29 算出来12.1K
20:31 那同样的方法
20:32 你就可以算过这3年来每一天的预测的误差
20:37 假设我们今天的function是Y等于0.5K
20:40 加一倍的XY

20:41 这3年来每一天的误差通通都可以算出来
20:45 每一天的误差都可以给我们一个小一好
20:50 那接下来我们就把每一天的误差通通加起来
20:53 好加起来
20:54 然后取一个平均
20:55 这个大N呢代表我们的训练资料的次数的个数
20:59 那我们训练资料的个数
21:01 就是3年来的训练资料嘛
21:02 所以就365×3了
21:04 每年365天3年
21:06 所以365×3好
21:08 那我们算出一个L好
21:10 我们算出一个大LL
21:12 这个大L是每一笔训练资料的误差
21:15 这个一呀相加以后的结果
21:17 这个大LL就是我们的loss
21:20 这个大L越大
21:21 代表说我们现在这一组参数越不好
21:24 这个大L越小代表我们现在这一组参数越好
21:28 那这个一呀
21:30 就是计算这个估测的值跟实际的值之间的差距
21:34 其实有不同的计算方法
21:35 在我们刚才例子里面
21:37 我们是算Y跟YA解绝对值的差距
21:40 这种计算差距的方法得到的这个大L啊
21:44 得到的loss啊叫做main test alute error哦
21:48 所显示FA1
21:49 那在作业一里面呢
21:51 我们是算Y跟y hat相减以后的平方哦
21:56 如果你接的一是用相减后平方算出来的
21:59 这个叫mesquare error
22:00 叫MS1
22:01 那NS1跟NA1
22:03 它们其实有非常微妙的差别啦
22:05 那通常你要选择用哪一种方法来衡量距离
22:09 那只看你的需求
22:11 看你对这个任务的理解
22:13 那在这边呢我们就不往下细讲
22:16 反正我们就是选择了ma1
22:18 作为我们计算这个误差的方式
22:20 把所有的误差加起来就得到loss
22:23 但你要选择NS1也是可以的
22:25 在作业里面我们会用MNC
22:28 那有一些任务有如果Y跟y head
22:31 它都是几率
22:35 都是几率分布的话
22:37 在这个时候你可能会选择cos entropy
22:41 那这个我们都之后再说
22:42 反正我们这边就是选择了MA1好
 

22:46 那这个是机器学习的第二步
22:50 那我刚才举的那些数字不是真正的例子
22:53 但是在这门课里面
22:55 我在讲课的时候就是要举真正的例子给你看
22:58 所以以下的数字是真实的例子
23:01 是这个频道真实的后台的数据所计算出来的
23:05 结果好
23:07 那我们可以调整不同的搭配
23:09 我们可以调整不同的B穷
23:12 举各种W穷取各种V我组合起来以后
23:15 我们可以为不同的W跟的跟B的组合
23:19 都不去计算它的loss
23:22 然后就可以画出以下这一个等高线图
23:26 好在这个等高线图上面呐
23:29 越偏红色系代表计算出来的loss越大
23:33 就代表说这一组W跟B呢越差哦
23:37 如果越偏蓝色系就代表loss越小
23:40 就代表这一组W跟B呢越好
23:43 拿这一组跟W跟B呢放到我们的function里面
23:47 放到我们的model里面
23:48 那我们的预测会越精准啊
23:51 所以你就可以
23:52 所以你就知道说诶
23:53 假设W带-0.25
23:56 这个B呢大于-500
23:58 就代表说了这个W在-0.25B代表-500
24:02 就代表说这个频道每天看的人越来越少
24:04 而且lose是很大
24:05 只能真实的状况不太可
24:07 如果W带0.75B1带500
24:13 这个正确率会啊
24:14 这个会这个估测呢会比较精准
24:17 那估测最精准的地方看起来应该是在这里啊
24:20 如果你今天W带一个很接近一的值
24:23 必须带一个小小的值
24:25 比如说100多
24:26 那这个时候估测是最精准的
24:29 那这跟大家预期可能是比较接近的
24:32 就是你拿前一天的点阅的总次数去预测
24:36 隔天的点阅的总次数
24:38 那可能前一天跟隔天的点阅的总次数
24:41 其实差不多的
24:42 所以W是一
24:42 然后B呢设一个小一点的数值
24:46 也许你的估测就会蛮精准的
24:49 那像这样子的一个等高线图啊
24:51 就是你试着试了不同的参数
24:54 然后计算它的north画出来的这个等高线图哇
24:58 叫做error的surface好
25:02 那这种是机器学习的第二步好
25:05 那接下来我们进入机器学习的第三步
25:09 那第三步要做的事情
25:11 其实是解一个最佳化的问题
25:14 那如果你知道最佳化的问题是什么的话
25:16 也没有关系

幻灯片 20 - 23:优化 - 梯度下降

  • 介绍优化过程使用梯度下降算法。
  • 通过图像展示误差表面(Error Surface),说明损失是参数的函数,并解释如何通过计算正负梯度来更新参数,以减小损失。
  • 讨论了局部最小值和全局最小值问题,以及在大多数深度学习框架中优化过程的便捷性。

25:17 我们今天要做的事情就是找一个W跟B
25:21 把未知的参数找一个数值出来
25:24 看带哪一个数值进去
25:26 可以让我们的大L让我们的loss的值最小
25:30 那个就是我们要找的W跟B
25:33 那这个可以让loss最小的W跟B啊
25:35 我们就叫做w star跟b star
25:39 代表说他们是最好的一组
25:40 W跟B可以让loss的值最小好
25:45 那这个东西要怎么做呢
25:47 在这门课里面
25:49 我们唯一会用到的optimization的方法
25:52 叫做gradient descent
25:55 好像这个gradient descend这个方法怎么做呢
25:57 他是这样做的
25:58 为了简化起见
25:59 我们先假设我们未知的参数只有一个啊
26:02 就是W我们先假设没有B那个位置的参数
26:06 只有W这个位置的参数
26:08 那当我们W在不同的数值的时候
26:11 我们就会得到不同的loss
26:14 那这一条曲线就是apple surface
26:17 只是刚才在前一个例子里面
26:18 我们看到的error surface是二二维的
26:21 是2D的
26:22 那这边只有一个参数
26:24 所以我们看到的这个error surface是1D的好
26:29 那怎么样找一个W去让这个loss的值最小的
26:34 那首先呢你要随机选取一个初始的点啊
26:39 这个初始的点我们叫做ARU0
26:42 那这个初始的点往往真的就是随机的
26:46 就是随便选一个真的都是随机的
26:48 那在往后的课程里面
26:50 我们其实会看到
26:51 也许有些方法可以给我们一个比较好的
26:55 W0的值
26:56 那我们先不讲这件事
26:57 是我们先当做就是随机的
27:00 随便掷个骰子
27:01 随机决定说W0的值应该是多少

27:04 那假设我们随机决定的结果是在这个地方好
27:08 那接下来呀
27:09 你就要计算说这个在W等于W0的时候
27:14 他就这个参数对loss的微分是多少
27:18 那我假设你知道微分是什么
27:20 你知道微分是什么
27:21 这对你来说不是个问题
27:23 就计算W等于loss的微分是多少
27:27 而如果你不知道微分是什么的话
27:29 那没有关系
27:30 反正我们做的事情就是计算在这一个点
27:34 在W0这个位置呃
27:37 这个error surface的切线斜率也就是这一条蓝色的虚线
27:44 它的斜率
27:45 但如果这个这条曲线的斜率是负的
27:48 那代表什么意思呢
27:50 代表说左边比较高
27:52 右边比较低
27:53 代表在这个位置附近
27:54 左边比较高
27:55 右边比较低
27:56 那如果左边比较高
27:58 右边比较低的话
27:59 那我们要做什么样的事情呢
28:00 如果左边比较高
28:01 右边比较低的话
28:03 那我们就把W的值变大
28:05 那我们就可以让loss变小
28:08 如果算出来的斜率是正的
28:11 就代表说左边比较低
28:12 右边比较高
28:13 是这个样子啊
28:14 左边比较低
28:15 右边比较高
28:16 如果左边比较低
28:17 右边比较高的话
28:19 那就代表左代表我们把W变小嘛
28:21 W往左边移
28:22 我们可以让roll loss的值变小
28:24 那这个时候你就应该把W的值变小
28:28 那假设你连斜率是什么的话
28:30 是什么都不知道的话
28:32 也没有关系
28:32 我就想像说有一个人站在这个地方
28:35 然后呢他左右环视一下
28:38 那这个算微分这件事啊
28:41 就是左右反式
28:42 然后他会知道说左边比较高还是右边比较高
28:44 看哪边比较低
28:45 他就往比较低的地方跨出一步
28:49 那这一步要跨多大呢
28:51 这一步的步伐的大小啊
28:53 取决于两件事情
28:55 第一件事情是这个地方的斜率有多大
28:59 这个地方斜率大
29:00 这个步伐就画大一点
29:02 斜率小步伐就画小一点
29:05 另外除了斜率以外
29:08 就是除了这个微分这一项和微分这一项
29:10 我们刚才说他就代表了斜率
29:12 除了微分这一项以外
29:13 这个还有另外一个东西会影响步伐的大小
29:16 这个东西我们这边用艾塔来表示
29:19 这个艾塔叫做learning rate
29:23 叫做学习速率
29:25 这个learning rr它是怎么来的呢
29:27 它是你自己设定的
29:29 你自己决定这个A塔的大小
29:31 如果A塔设大一点
29:33 那你每次参数它data的就会量很大
29:37 你的学习可能就比较快
29:38 如果ELA设小一点
29:40 那你参数的update就很慢
29:42 每次都会只会改变一点点参数的数值
29:46 那这种你在做机器学习需要自己设定的东西
29:50 叫做HYPERPARADIOR
29:53 这个我们刚才想说
29:55 机器学习第一步就是定一个有未知参数的function
30:00 而这些参数
30:01 这些未知的参数是机器自己找出来的

36:21 但之后会再告诉你说
36:23 gradient descend真正的痛点到底是什么
36:29 好那刚才举的是只有一个参数的例子而已
36:34 那我们实际上我们刚才模型有两个参数
36:36 有WW跟B那有两个参数的情况下
36:40 怎么用gradient descend呢
36:42 其实跟刚才一个参数没有什么不同
36:44 如果一个参数你没有问题的话
36:46 你可以很快的推广到两个参数
36:49 好我们现在有两个参数
36:51 那我们给它两个参数
36:53 我们都给它随机的初始的值就是W0跟B0
36:57 然后接接下来呢你要计算W对loss的微分
37:02 你要计算B对loss的微分计算在哪里
37:05 计算是在W等于W0的位置
37:08 B等于B0的位置
37:09 在W等于W0的位置
37:11 B等于V0的位置
37:12 你要计算W对L的微分计算
37:15 一对L的微分计算完以后
37:19 就根据我们刚才一个参数的时候的做法
37:22 去更新W跟B啊
37:24 W0减掉learning rate乘上微分的结果得到w one
37:29 把B0减掉learning rate乘上微分的结果得到b one
37:34 那有的同学可能会问
37:35 说嘶这个微分这个要怎么算呢
37:39 呃在这么你不会算微分的话
37:42 不用紧张
37:44 怎么不用紧张呢
37:46 在deep learning的framework里面
37:49 或在我们做一会用的PYTORCH里面
37:52 这个算微分呐
37:53 都是程序自动帮你算的

幻灯片 24 - 25:线性模型的局限性

  • 以预测 2021 年视频观看量为例,将 2017 - 2020 年训练数据上建立的线性模型应用到 2021 年数据上,发现线性模型存在严重局限性,红色(实际观看量)和蓝色(估计观看量)曲线差异较大。

12:12 在這段內容中,我們探討了如何利用已知的數據來預測未來的點閱次數。這涉及到模型的建立及未知參數的估算,並強調了領域知識在機器學習中的重要性。
       -我們定義了模型的基本結構,其中Y是我們要預測的點閱次數,B與W則是未知的參數。這些參數的估算需要依賴於我們對問題的理解和領域知識的應用。
       -在建立模型的過程中,損失函數(loss)起到了重要的作用。它用來評估所選參數在預測未來點閱數時的準確性,並指導我們調整參數以達到更好的預測效果。
       -訓練資料在計算損失函數時是必不可少的。我們需要利用過去的點閱次數數據來評估預測模型的準確性,以便逐步改善模型的表現。


18:17 在這段影片中,討論如何利用歷史數據預測YouTube頻道的點閱次數,並分析預估值與實際值之間的差距。這些數據有助於評估預測模型的準確性,從而提高未來預測的準確性。
       -透過比較預測值與實際值,我們發現預測模型存在高估情況,這對頻道的點閱數可能造成誤導。預測值5.3K與實際值4.9K的差距,顯示出模型的改進空間。
       -影片提到使用不同方法計算預測誤差,包括絕對值和平方差。這些方法可用來衡量模型的好壞,並選擇合適的損失函數來優化模型效果。
       -在分析不同的損失函數時,影片強調選擇合適的計算方法取決於具體需求。這影響模型的表現和預測準確性,因此對於機器學習而言,選擇正確的損失函數至關重要。


24:20 在機器學習中,最佳化問題的解決至關重要,特別是尋找能最小化損失值的參數W和B。這個過程通常使用梯度下降法進行,透過不斷調整參數來達到最佳效果。
       -為了預測點閱次數,可以利用前一天的數據進行估算。如果設置適當的參數值,則可以達到較高的預測準確度,這是機器學習的基本概念之一。
       -在最佳化過程中,W和B的選擇對損失函數的最小化至關重要。找到最佳的W和B值,即w star和b star,使得損失最小,這是機器學習中的核心任務。
       -梯度下降法是一種常用的最佳化方法,它依賴於計算損失函數的斜率來調整參數。這種方法的步伐大小受斜率和學習速率的影響,學習速率的設置對算法的效率有重大影響。

30:22 loss函數可以是負值,因為它由使用者自行定義,這意味著使用者可以根據需求設計出不同的loss函數。雖然在某些情況下loss的定義可能不會出現負值,但使用者的定義仍然有彈性。
       -loss函數的形狀和定義是由使用者決定的,這意味著可以創建出各種不同的損失曲線。這種靈活性讓機器學習模型可以根據特定任務進行調整和優化。
       -HYPERPARAMETER是機器學習過程中需要自行設定的參數,這些參數會影響模型的學習過程與效果。使用者需根據實際情況調整這些參數以獲得最佳結果。
       -gradient descent方法在尋找最小值時可能陷入local minima,導致模型無法找到global minima。這一點在實務操作中非常重要,因為它會影響模型的最終表現。

36:29 在進行多參數的梯度下降時,對於每個參數都需計算對損失函數的微分,然後根據這些微分來更新參數的值。這個過程與單參數的情況相似,關鍵在於如何有效地計算和更新這些參數。
       -在使用梯度下降法時,初始值的選擇對於最終結果影響很大。隨機選擇的初始值可能會導致不同的收斂結果,因此需謹慎設定初始參數W0和B0。
       -計算微分的過程可以通過深度學習框架自動化完成,使用者只需撰寫簡單的程式碼即可獲得所需的微分值。這降低了對數學知識的依賴,使得更多人能夠進行模型訓練。
       -在訓練過程中,持續更新參數W和B是尋求最佳解的關鍵。透過不斷的迭代,最終能找到使損失值最小的參數組合,這對於預測的準確性至關重要。
42:33 透過分析觀看人次的數據,我們發現模型的預測精度受到時間週期的影響。這意味著考慮更多的歷史數據,如前七天的觀看人次,可以顯著提高預測的準確性。
       -在進行數據分析時,我們使用每天的觀看人次來預測隔天的數據,並計算出平均誤差值。這樣的分析持續進行,直到情人節的數據收集完成。
       -模型的預測結果顯示,僅僅依賴前一天的數據進行預測並不夠準確。透過觀察數據的周期性,我們發現每週五和六的觀看人次特別低,這是需要考慮的因素。
       -為了提高預測的準確性,我們提出了一個新模型,考慮到前七天的觀看人次。這樣的調整使得訓練數據的誤差值顯著下降,顯示出模型的改進效果。
48:36 考慮不同天數的數據對於預測準確性至關重要。在實驗中,使用前28天和56天的數據進行預測,結果顯示在訓練資料和未見過的資料上表現有所不同。
       -在考慮前七天的預測基礎上,若擴展至28天的資料,訓練資料上的效果提高至0.33K,未見過的資料則達到0.46K,顯示出考慮更多數據的潛力。
       -進一步考慮56天的數據,發現訓練資料略微下降至0.32K,但未見過的資料仍保持在0.46K,這顯示出考慮天數可能達到一定的極限。
       -這些預測模型使用feature乘以weight再加上BIOS來得到結果,這類模型被稱為linear model,後續將探討如何進一步改進這些模型的性能。

幻灯片 26 - 31:改进方向 - 增加特征和激活函数

  • 探讨如何用分段线性曲线近似连续曲线,介绍 sigmoid 函数及其操作(改变斜率、平移、改变高度),并提出新模型需要增加特征。
  • 介绍 Rectified Linear Unit (ReLU) 作为激活函数,对比不同激活函数(线性、10 ReLU、100 ReLU、1000 ReLU)在 2017 - 2020 年和 2021 年数据上的损失情况。
  • 进一步对比不同隐藏层数量(1 层、2 层、3 层、4 层)在相同条件下的损失情况,其中每层使用 100 ReLU 作为激活函数,输入特征为过去 56 天的观看量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2230129.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用Python打造媒体管理播放器:从零到全功能GUI应用

背景 在日常生活中,我们经常需要管理和播放大量媒体文件。市面上的音频播放器可能功能单一,或者界面复杂。作为一名程序员,我决定使用Python自己打造一个简单yet强大的媒体管理播放器。 C:\pythoncode\new\playsong.py 全部代码 import os…

Cisco Packet Tracer 8.0 路由器静态路由配置

文章目录 静态路由简介一、定义与特点二、配置与命令三、优点与缺点四、应用场景 一,搭建拓扑图二,配置pc IP地址三,pc0 ping pc1 timeout四,配置路由器Router0五,配置路由器Router1六,测试 静态路由简介 …

【HarmonyOS】鸿蒙系统

文章目录 前言一、鸿蒙OS概述1. 定义与特性2. 核心技术理念3. 技术架构设计1. 应用层2. 框架层3. 系统服务层4. 内核层 二、分布式架构分布式架构的核心理念分布式能力的实现关键技术 三、 总结 前言 鸿蒙OS是由华为推出的一款开源操作系统,旨在满足智能终端设备的…

《双指针篇》---移动零

题目传送门 这道题可以归类为 数组划分/数组分块 。 题目制定了一个规则,我们可以在这个规则下,将数组划分为若干个区间。 这道题让我们把所有非零元素移动到左边。所有零元素移动到右边。 将数组划分为: 左区间非0; 右区间&…

网络编程项目之UDP聊天室

项目要求 利用UDP协议,实现一套聊天室软件。服务器端记录客户端的地址,客户端发送消息后,服务器群发给各个客户端软件。 问题思考 客户端会不会知道其它客户端地址? UDP客户端不会直接互连,所以不会获知其它客户端地址…

【NOIP普及组】 FBI树

【NOIP普及组】 FBI树 C语言版本C 版本Java版本Python版本 💐The Begin💐点点关注,收藏不迷路💐 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又…

Lucene的概述与应用场景(1)

文章目录 第1章 Lucene概述1.1 搜索的实现方案1.1.1 传统实现方案1.1.2 Lucene实现方案 1.2 数据查询方法1.1.1 顺序扫描法1.1.2 倒排索引法 1.3 Lucene相关概念1.3.1 文档对象1.3.2 域对象1)分词2)索引3)存储 1.3.3 常用的Field种类 1.4 分词…

不适合的学习方法

文章目录 不适合的学习方法1. 纯粹死记硬背2. 过度依赖单一资料3. 线性学习4. 被动学习5. 一次性学习6. 忽视实践7. 缺乏目标导向8. 过度依赖技术9. 忽视个人学习风格10. 过于频繁的切换 结论 以下是关于不适合的学习方法的更详细描述,包括额外的内容和相关公式&…

华为OD机试真题(Python/JS/C/C++)- 考点 - 细节

华为OD机试 2024E卷题库疯狂收录中,刷题 点这里。 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。

Linux中使用NGINX

NGINX简介 Nginx(engine x)是俄罗斯人编写的十分轻量级的HTTP服务器是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器官方网站:http://nginx.org/ NGINX概述 Nginx默认配置文件:/etc/ngin…

scrapy爬取名人名言

爬取名人名言:http://quotes.toscrape.com/ 1 创建爬虫项目,在终端中输入: scrapy startproject quotes2 创建之后,在spiders文件夹下面创建爬虫文件quotes.py,内容如下: import scrapy from scrapy.spi…

mmsegmentation训练自己的数据集

文章目录 前言一、安装MMSegmentation二、数据集转换1.labelme标签数据转化为voc数据 三、训练设置1.建立数据集文件,并存入数据集2.设置训练配置文件 四、使用官方权重1、选择预测的方法2、查看方法支持的预训练数据集和权重权重位置找到对应的数据集下载权重 3、使…

LeetCode994. 腐烂的橘子(2024秋季每日一题 54)

在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直到单元格中没有…

Pinctrl子系统中Pincontroller构造过程驱动分析:imx_pinctrl_soc_info结构体

往期内容 本专栏往期内容: Pinctrl子系统和其主要结构体引入Pinctrl子系统pinctrl_desc结构体进一步介绍Pinctrl子系统中client端设备树相关数据结构介绍和解析 input子系统专栏: 专栏地址:input子系统input角度:I2C触摸屏驱动分析…

地理信息科学专业想搞GIS开发:学前端还是后端?

地理信息科学专业的同学是学前端开发比较好呢还是学后端开发比较好呢? 部分网友:学前端更好 主修前端更好,因为地信学后端,是卷不赢学计算机的 本科卷前端,硕士阶段可以卷后端 甚至有网友直呼,地信根本没有…

批处理之for语句从入门到精通--呕血整理

文章目录 一、前言二、for语句的基本用法三、文本解析显神威:for /f 用法详解四、翻箱倒柜遍历文件夹:for /r五、仅仅为了匹配第一层目录而存在:for /d六、计数循环:for /l后记 for语句从入门到精通 一、前言 在批处理中&#…

第8章利用CSS制作导航菜单(第八次作业)

效果图如下&#xff1a; Html代码如下&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title>山水之间</title><style type"text/css">import url("../css/work1.css");</style…

Ubuntu22.04 安装图形界面以及XRDP教程

一、准备环境 1.一台服务器安装系统ubuntu&#xff08;这里大部分ubuntu系统可以同用&#xff09; 2.安装的ubuntu系统未安装图形界面 二、操作步骤 1.远程ssh或者直接登录服务器命令行界面 ssh -p 远程端口 rootIP 2.更新系统软件包 sudo apt update # 更新本地的软件包…

深度学习基础知识-编解码结构理论超详细讲解

编解码结构&#xff08;Encoder-Decoder&#xff09;是一种应用广泛且高效的神经网络架构&#xff0c;最早用于序列到序列&#xff08;Seq2Seq&#xff09;任务&#xff0c;如机器翻译、图像生成、文本生成等。随着深度学习的发展&#xff0c;编解码结构不断演变出多种模型变体…

扫描电镜的超低温冷冻制样及传输技术(Cryo-SEM)

扫描电镜的超低温冷冻制样及传输技术(Cryo-SEM) 扫描电镜&#xff08;Scanning Electron Microscope&#xff0c;简称SEM&#xff09;是一种利用聚焦电子束扫描样品表面&#xff0c;通过检测二次电子或反射电子等信号来获取样品表面形貌信息的显微观察技术&#xff1b;然而&…