当前位置: 首页 > news >正文

Course1-Week1:机器学习简介

Course1-Week1:机器学习简介

文章目录

  • Course1-Week1:机器学习简介
    • 1. 课程简介
      • 1.1 课程大纲
      • 1.2 Optional Lab的使用 (Jupyter Notebooks)
      • 1.3 欢迎参加《机器学习》课程
    • 2. 机器学习简介
      • 2.1 机器学习定义
      • 2.2 有监督学习
      • 2.3 无监督学习
    • 3. 线性回归模型
      • 3.1 线性回归模型
      • 3.2 代价函数
    • 4. 梯度下降法
      • 4.1 梯度下降法
      • 4.2 用于线性回归的梯度下降

  • 笔记主要参考B站视频“(强推|双字)2022吴恩达机器学习Deeplearning.ai课程”。
  • 该课程在Course上的页面:Machine Learning 专项课程
  • 课程资料:“UP主提供资料(Github)”、或者“我的下载(百度网盘)”。

好文:

  • 2023吴恩达机器学习: 上班族35 天学完~学习笔记 (1.1 监督学习)——系列文章
  • 入门机器学习/深度学习要多长时间?

1. 课程简介

1.1 课程大纲

图1-1-1 课程大纲

  和国内大部分课程结构不同,本套机器学习课程分为3个Course,每个Course又分为若干个Week,如上图所示。笔记的结构与课程大纲相同,由于每个Week中又包含10~20节不等的讲解视频,所以单篇笔记就包含单个Week的内容。本篇笔记就对应了课程的Course1-Week1(上图中深紫色)。

1.2 Optional Lab的使用 (Jupyter Notebooks)

  为了帮助同学们在学习过程中更直观的理解机器学习中的概念,本套课程同步包含一系列实验。这些实验无需初学者有什么数学或代码基础,但需要使用 “Jupyter Notebooks” 打开。Jupyter Notebooks 是当今机器学习和数据科学从业者最广泛使用的工具,是进行编写代码、实验、尝试的默认环境。所以为了使用这些课程资料,需要我们在自己的浏览器中搭建 Jupyter Notebooks 环境,并用来测试一些想法。下面是配置环境(安装Anaconda)、打开课程资料的方法:

  1. 配置Jupyter Notebook环境:参考“辅助笔记-Jupyter Notebook的安装和使用”。
  2. 打开课程资料(如下图):使用“Anaconda Prompt”cd到存放课程资料的目录,然后 jupyter notebook打开即可。

注1:课程资料下载见“UP主提供资料(Github)”、或者“我的下载(百度网盘)”。
注2:课程资料中包含课程中的实验、Quiz、PPT,可自行查阅。

图1-1-2 使用Jupyter Notebook打开课程资料

1.3 欢迎参加《机器学习》课程

机器学习是一门让计算机在 没有明确编程 的情况下学习的科学。机器学习已经出现在生活的方方面面:

  • 消费者应用领域:
  1. 搜索引擎的排名机制。
  2. 社交软件为图片添加标签。
  3. 流媒体服务推荐机制,比如B站的“首页通知书”。
  4. 语音助手返回的答案,如问Siri附近的餐厅有哪些。
  5. 邮箱自动识别垃圾邮件。
  • 工业领域:
  1. 优化风力涡轮机发电。
  2. AI医学影像诊断。
  3. Landing AI将计算机视觉应用到工厂中,帮助检查流水线产品质量等。

机器学习广泛应用的原因:

  1. 很多场景无法写出显式程序。大多数情况下,我们不知道如何编写显式程序执行更有趣的事情,如网络引擎的推荐结果、识别人类语言、医学诊断、自动驾驶。我们所知道的唯一做这些事情的方法就是让机器学会自己做。
  2. AGI(Artifical General Intelligence, 通用人工智能)的创造应该要用到某种“学习算法”。通俗来说,AGI就是一个和正常人类智力相当的人工智能。“AGI”这种概念令广大AI研究者兴奋,虽然预计大概还需要50~500年才能实现,但大多数AI研究者认为最接近该目标的方法就是使用某种“学习算法(learning algorithms)”,虽然可能需要深入研究人类大脑的工作方式来寻找灵感,但机器学习算是进入AI领域的第一步。

注:学习算法(learning algorithm),是机器学习算法、深度学习算法等具备学习能力的算法的统称。

  本门课程广泛介绍了现代机器学习,包括监督学习(多元线性回归、逻辑回归、神经网络和决策树)、无监督学习(聚类、降维、推荐系统)以及人工智能和机器学习创新(评估和调整模型、采用以数据为中心的方法来提高性能等)在硅谷的最佳实践。具体将:

  1. 使用流行的机器学习库 NumPy 和 scikit-learn 在 Python 中构建机器学习模型。
  2. 构建和训练用于预测和二元分类任务的监督机器学习模型,包括线性回归和逻辑回归。

2. 机器学习简介

2.1 机器学习定义

  Arthur Samuel 在1950s就编写出了可以进行自我学习的跳棋程序(checkers playering program)。下面是他给出的“机器学习”的定义(非正式定义):

英文:Field of study that gives computers the ability to learn without being explicitly programmed. – Arthur Samuel (1959)
翻译:使计算机能够在没有明确编程的情况下学习的研究领域。

Question
If the checkers program(跳棋程序) had been allowed to play only ten games (instead of tens of thousands) against itself, a much smaller number of games, how would this have affected its performance?
× Would have made it better
√ Would have made it worse

启示:一般情况下,学习的机会越多,算法的表现越好。

本节课将学习很多机器学习算法,内容包括:

  1. 有监督学习(Supervised learning):实际应用中,有监督学习使用最广泛,并取得了最快速的进步和创新。Course1、Course2聚焦于有监督学习
  2. 无监督学习(Unsupervised learning):Course3聚焦于无监督学习
  3. 强化学习(Reinforcement learning)”:由于应用没有前两者广泛,所以本课程没有简单介绍。
  4. 使用“学习算法”的实用建议(很重要):“学习算法”本身只是一种工具,比工具本身更重要的是 如何正确使用这些工具。即使是某些大公司中最熟练的机器学习团队,可能也会因为最开始找错了算法方向而导致多年的成果付诸东流。所以本课程不仅会讲解机器学习算法,同时也会介绍最熟练的机器学习工程师是如何构建系统的,以及一些机器学习应用的最佳案例。

注:学习算法(Learning Algorithm),是机器学习算法、深度学习算法等具备学习能力的算法的统称。

2.2 有监督学习

  “有监督学习”指的是学习从 输入 x x x(一个或多个) 映射到 输出 y y y 的算法。有监督学习算法的关键在于首先要提供正确的样本示例供算法学习,然后算法便可以针对未见过的输入,输出相应的预测结果。下面是一些有监督学习的在现实生活中的示例:

  • 垃圾邮件过滤器:email --> 垃圾邮件?(0/1)
  • 语音识别:语音 --> 文本
  • 机器翻译:英文 --> 中文
  • 广告投递:广告、用户信息 --> 用户点击?(0/1)
  • 自动驾驶:图片、雷达信息 --> 其他车辆位置
  • 视觉检测:手机图片 --> 有缺陷?(0/1)

“有监督学习”中两类最常见的典型问题就是 回归(Regression)分类(Classification)。两者的主要区别在于:

  • 回归问题:要预测的结果有无穷种可能,比如在一段范围内都有可能的数字取值。
  • 分类问题:只有有限种可能的输出结果,比如前面提到的判断某个邮件是否为垃圾邮件。

注1:任何预测数字的“有监督学习”模型,就是解决所谓的“回归问题”。
注2:在“分类问题”中,输出“类别”的英文是classcategory,两者可以混用。

下面将给出这两个问题的示例。

回归问题示例:房价预测

  “房价预测”就是根据房子的面积计算价格。下图中的“红叉”就是预先提供的有正确映射关系的样本,“蓝色拟合线”就相当于算法学习输入样本,最后通过拟合线得到房价便是“预测”,这便是“有监督学习”的完整流程。注意到这个回归问题的输出(房价)可以是任意数字,于是便有无穷种可能。

图1-1-3 房价预测问题示意图
  1. 直线拟合:根据拟合直线,可以预测房屋面积 750 feet 2 750\text{feet}^2 750feet2 对应的价格大约为 $$150k$。
  2. 曲线拟合:根据拟合曲线,可以预测房屋面积 750 feet 2 750\text{feet}^2 750feet2 对应的价格大约为 $$200k$。

分类问题示例:乳腺癌检测

  乳腺癌检测问题就是根据输入的一系列信息,如肿瘤块的大小、患者年龄、肿瘤块的厚度、细胞大小的均匀性、细胞形状的均匀性等,来判断是否为恶性肿瘤(0表示良性/1表示恶性)。下面给出“单输入的乳腺癌检测”、“两输入的乳腺癌检测”示意图:

单输入的乳腺癌检测:输入是“肿瘤的大小”,输出是“良性”、“恶性-类型1”、“恶性-类型2”。
两输入的乳腺癌检测:输入是“肿瘤的大小”、“患者年龄”,输出是“良性”、“恶性”。

图1-1-4 单输入的乳腺癌检测问题
图1-1-5 两输入的乳腺癌检测问题

2.3 无监督学习

无监督学习:
Data only comes with inputs x x x, but not output labels y y y. Algorithm has to find structure in the data.

  在“有监督学习”之后,“无监督学习”也被广泛应用起来。“无监督学习”不是要找映射关系,而是想要从 没有标记的数据集 中发现一些有趣的东西,比如这个数据集中有什么 可能的模式或结构。无监督学习的主要类型有:

  1. 聚类(Clustering):将相似的数据点分成一组。
  2. 异常检测(Anomaly detection):。有非常多的应用,比如在金融系统的诈骗检测中,异常时间、异常交易可能是欺诈。
  3. 降维(Dimensionality reduction):在尽可能丢失少的信息的前提下,将大数据集压缩成小得多的数据集。

Question:
Of the following examples, which would you address using an unsupervised learning algorithm?
× Given email labeled as spam/not spam, learn a spam filter.
√ Given a set of news articles found on the web, group them into sets of articles about the same story.
√ Given a database of customer data, automatically discover market segments and group customers into different market segments.
× Given a dataset of patients diagnosed as either having diabetes or not, learn to classify new patients as having diabetes or not.

知识点:有监督学习给数据和标签,重点在于对新输入预测出标签;无监督学习只给数据,重点在于自行分组。

下面给出“聚类”的3个示例,后续会再介绍“异常检测”和“降维”这两种无监督学习的示例:

聚类算法示例1:新闻分类
  “谷歌新闻”的任务就是将每天数十万的新闻进行聚类,找到提到相似词的文章并将其分组。很酷的是,聚类算法可以自己计算出哪些词暗示了这些文章属于同一个组,并且谷歌新闻的员工也没有事先告诉算法有哪些组。如下图所示,panda、twin、zoo都是相似的词,这些文章被归为一类。

图1-1-6 聚类算法示例——谷歌新闻文章分类

聚类算法示例2:基因分类

  下图所示的基因图谱,每一列表示一个人的全部基因,每一行表示一种基因,不同的颜色表示该基因的活跃程度,这些基因包括瞳孔颜色、身高、不爱吃西蓝花/包菜/莴苣等。聚类算法仅根据这些基因数据,将人进行分组,进而找出“基因上很相似的人”。

图1-1-7 聚类算法示例——基因分类

聚类算法示例3:客户分群

  还有一个很常见的聚类算法示例就是,根据客户信息数据库,将不同的客户划分进不同的细分市场,以便更有效的服务客户。比如深度学习团队“dot AI” 想知道 dot AI社区 中的人们,参加课程、订阅通知、参加AI活动等的动机是什么。于是通过调研团队便发现了拥有不同动机的人,比如:提升技能、发展事业、紧随AI潮流、或者哪个都不是。这个例子中调研团队就相当于无监督学习算法。

图1-1-8 聚类算法示例——客户分群

本节Quiz:

  1. Which are the two common types of supervised learning? (Choose two)
    A.Classification √
    B.Clustering
    C.Regression √
  2. Which of these is a type of unsupervised learning?
    A.Regression
    B.Classification
    C.Clustering √

3. 线性回归模型

3.1 线性回归模型

  本节将通过“线性回归模型”(Linear Regression Model)介绍“有监督学习”的整个过程,这也是本课程的第一个模型。下面是常用的机器学习术语:

  • Training Set(数据集):用于训练模型的数据集。
  • x x x:input variable(输入变量) / feature(特征) / input feature(输入特征),也就是“特征值”。
  • y y y:output variable(输出变量) / target variable(目标变量),也就是“目标值”。
  • m m m:表示训练样本的数量。
  • ( x , y ) (x,y) (x,y):单个训练样本。
  • ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i)):第 i i i 个训练样本。上标加括号是为了和求幂次区别开来。
  • y ^ \hat{y} y^:表示对 y y y 的估计或预测。
图1-1-9 有监督学习的过程示意图
  • 以前把 f f f 叫做hypothesis(假设),但是老师不建议这种叫法,而是称之为function(函数)。

  上图给出了整个“有监督学习”的流程,也就是“learning algorithm”根据输入的“训练集”得到一个 函数模型 f f f,于是便可以通过 f f f 来对 输入 x x x 进行预测 输出 y ^ \hat{y} y^。而“线性回归模型”就是假设 函数模型 f f f 为一条直线,因为简单易用,这可能是世界上使用最广泛的学习算法,后续也会在其他机器学习模型中见到线性回归模型。
  “线性回归”只是解决回归问题的方法之一,其他方法会在Course2中会介绍。现在以上一小节“房价预测”问题举例,若使用“线性回归模型”假设 f f f 就是一条直线,于是该模型就可以写成

f w , b ( x ) = w x + b f_{w,b}(x)=wx+b fw,b(x)=wx+b

表示函数 f f f x x x 为函数输入,其输出 y ^ \hat{y} y^ 取决于 w w w b b b 的值。

  • w w w b b b:模型的参数(parameter)。
  • f w , b ( x ) f_{w,b}(x) fw,b(x)通常会简写为 f ( x ) f(x) f(x)
图1-1-10 线性回归模型

3.2 代价函数

  显然,虽然现在已经构建好了“线性回归模型”,但是过训练集的直线有无数种,如何找出 与训练数据最拟合的线 还不明确,于是本节就来介绍 代价函数(cost funtion)。在机器学习中,代价函数用于 衡量模型的好坏,最简单、最常用的代价函数是“平均误差代价函数”(Squared error cost function):
J ( w , b ) = 1 2 m ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 = 1 2 m ∑ i = 1 m ( f w , b ( x ( i ) ) − y ( i ) ) 2 \begin{aligned} J(w,b) &= \frac{1}{2m} \sum_{i=1}^{m}(\hat{y}^{(i)}-y^{(i)})^2\\ &= \frac{1}{2m} \sum_{i=1}^{m}(f_{w,b}(x^{(i)})-y^{(i)})^2 \end{aligned} J(w,b)=2m1i=1m(y^(i)y(i))2=2m1i=1m(fw,b(x(i))y(i))2

  • w w w b b b:模型的参数。
  • i i i:训练样本的标号。
  • m m m:训练样本的总数。
  • y ( i ) y^{(i)} y(i):第 i i i 的样本的真实目标值。
  • y ^ ( i ) \hat{y}^{(i)} y^(i):对 y ( i ) y^{(i)} y(i) 的预测目标值。
  • 除以 2 m 2m 2m:按照惯例,机器学习中的平均代价函数会除以 2 m 2m 2m 而非 m m m,这是为了使后续的计算更加简洁。

  现在来直观的看一下,最小化代价函数如何找到与训练数据最拟合的线。首先简化模型,设置参数 b = 0 b=0 b=0,并假设训练数据只有三个点。下图给出了不同的 w w w 所对应不同的 代价 J ( w ) J(w) J(w),显然在 w = 1 w=1 w=1 处代价最小,直线也最拟合:

min ⁡ w J ( w ) = 1 2 m ∑ i = 1 m ( f w , b ( x ( i ) ) − y ( i ) ) 2 = 1 2 m ∑ i = 1 m ( w x ( i ) − y ( i ) ) 2 \begin{aligned} \min_{w} J(w) &= \frac{1}{2m} \sum_{i=1}^{m}(f_{w,b}(x^{(i)})-y^{(i)})^2\\ &= \frac{1}{2m} \sum_{i=1}^{m}(wx^{(i)}-y^{(i)})^2 \end{aligned} wminJ(w)=2m1i=1m(fw,b(x(i))y(i))2=2m1i=1m(wx(i)y(i))2

图1-1-11 使代价函数最小

  那回到刚才的问题中,同时将 w w w b b b 都考虑在内,并引入更多的训练数据,便可以得到下面的代价函数示意图。为了更好的将代价函数可视化,同时使用“等高线图”和“3D图”来展示不同的 w w w b b b 所对应不同的 代价 J ( w , b ) J(w,b) J(w,b)。“3D图”类似一个“碗”,显然在“碗”的底部,代价函数最小:

图1-1-12 可视化代价函数

上图见课程资料:C1_W1_Lab04_Cost_function_Soln.ipynb

  • bug1:ModuleNotFoundError: No module named ‘ipympl’
    解决办法:新打开一个“Anaconda Prompt”输入conda install ipympl,然后重启内核重新运行即可。

注:图片很多,运行后会有点卡,若加载不出来图片可以尝试重新运行。

本节Quiz:

  1. For linear regression, the model is f w , b ( x ) = w x + b f_{w,b}(x)= wx + b fw,b(x)=wx+b. Which of the following are the inputs, or features, that are fed into the model and with which the model is expected to make a prediction?
    × m m m
    × ( x , y ) (x,y) (x,y)
    x x x
    × w w w and b b b.
  2. For linear regression, if you find parameters w w w and b b b so that J ( w , b ) J(w, b) J(w,b) is very close to zero, what can you conclude?
    × This is never possible - there must be a bug in the code.
    √ The selected values of the parameters w w w and b b b cause the algorithm to fit the training set > really well.
    × The selected values of the parameters w w w and b b b cause the algorithm to fit the training set > really poorly.

  虽然现在距离完成“线性回归问题”非常接近了,但是上述是通过人眼来直观的寻找代价函数的最小点,实际上要画出有足够多细节的3D图需要计算大量的 J ( w , b ) J(w,b) J(w,b),而很多 J ( w , b ) J(w,b) J(w,b)点 都是没用的,这显然不划算。下一节就来介绍如何通过计算有限的 J ( w , b ) J(w,b) J(w,b)点 来找到代价函数最小点。

4. 梯度下降法

4.1 梯度下降法

  梯度下降(Gradient Desent)常用于寻找某函数(比如代价函数)的最大值、最小值。梯度下降不仅用于线性拟合,也用于训练如神经网络(Course2)等深度学习模型、以及一些最大型、最复杂的人工智能模型。下面以前面的 min ⁡ w , b J ( w , b ) \min_{w,b} J(w,b) minw,bJ(w,b) 来举例,梯度下降算法的步骤为:

  1. 选择初始点,一般在取值范围内选取简单的整数,如 w = 1 , b = 0 w=1,b=0 w=1,b=0
  2. 沿着 J J J 的“负梯度”方向,不断迭代计算 w w w b b b。之所以沿着“负梯度”方向,是因为沿该方向下降速度最快(steepest descent, 最速下降)。如下:
    w = w − α ∂ ∂ w J ( w , b ) b = b − α ∂ ∂ b J ( w , b ) \begin{aligned} w &= w - \alpha \frac{\partial }{\partial w} J(w,b)\\ b &= b - \alpha \frac{\partial }{\partial b} J(w,b) \end{aligned} wb=wαwJ(w,b)=bαbJ(w,b)
  • α \alpha α:学习率(Learning rate),用于控制步长。通常为介于0~1之间的一个小的正数,如0.01。
  • ∂ ∂ w J ( w , b ) \frac{\partial }{\partial w} J(w,b) wJ(w,b):代价函数对 w w w 的偏导数(Partial Derivative),其取负值表明的方向可以使 J J J 下降。
  • ∂ ∂ b J ( w , b ) \frac{\partial }{\partial b} J(w,b) bJ(w,b):代价函数对 b b b 的偏导数,意义同上。

注意:上面是 同时更新(Simultaneously update),也就是使用旧的 ( w , b ) (w,b) (w,b) 直接分别计算出新的 w w w b b b;而不是先更新 w w w,再使用这个新的 w w w 计算新的 b b b

  1. 直到 w w w b b b的负梯度 都为 0 0 0(或者 0 0 0的邻域内),即可认为找到 J J J 的最低点。

  下面两张图很直观的给出了整个梯度下降法的过程。在下左图中,首先固定 b = 0 b=0 b=0,只分析 w w w 对代价函数 J ( w ) J(w) J(w) 的影响。可以发现,若当前 w w w在最低点右侧,由于“负梯度”小于0,于是下一个 w w w将向左移动;反之若当前 w w w在最低点左侧,由于“负梯度”大于0,下一个 w w w将向右迭代。只要选择合适的学习率 α \alpha α,最终就可以找到最低点所在的 w w w。在下右图中,则进一步同时考虑 w w w b b b,可以发现每次也是沿着“负梯度”下降最快的方向,最终可以到达最低点所在处。这个迭代的过程就是“梯度下降”,类似于“下山”的过程。

图1-1-13 理解梯度下降法的过程

注意点1:学习率

学习率 α \alpha α 的选取将会对梯度下降的效率产生巨大影响。若 α \alpha α 选取的不好,甚至会导致无法实现梯度下降。

  • α \alpha α 选取的太小,会导致下降的速度非常慢(意味着需要计算很长时间),但最终也会收敛(converge)到最小值。
  • α \alpha α 选取的太大,很可能会导致在极值点附近反复横跳甚至越来越远,也就是不会收敛甚至发散(diverge)。
  • α \alpha α 选取的合适,越接近代价函数极小值,梯度越来越小,就会导致步长越来越小。
图1-1-14 学习率对代价函数的影响

注意点2:多个极值点

  在前面的讨论中,一直使用平方误差项作为代价函数。对于 平方误差项 的代价函数,都是“凸函数”或“凸面”。但若代价函数非凸时,可能就会存在不止一个极值。如上图1-1-13中,不同的起始点,就会导致不同的收敛速度或极值。所以 代价函数尽量要选择凸函数

4.2 用于线性回归的梯度下降

  介绍完梯度下降法,现在来总结一下,将前面的线性回归模型、代价函数、梯度下降算法结合起来,按照下面公式不断迭代直至其收敛:
Linear regression model : f w , b ( x ) = w x + b Cost function : J ( w , b ) = 1 2 m ∑ i = 1 m ( f w , b ( x ( i ) ) − y ( i ) ) 2 Gradient descent repeat until convergence : { w = w − α ∂ ∂ w J ( w , b ) = w − α m ∑ i = 1 m [ ( f w , b ( x ( i ) ) − y ( i ) ) ⋅ x ( i ) ] b = b − α ∂ ∂ b J ( w , b ) = b − α m ∑ i = 1 m ( f w , b ( x ( i ) ) − y ( i ) ) \begin{aligned} \text{Linear regression model} &: \quad f_{w,b}(x) = wx+b\\ \text{Cost function} &: \quad J(w,b) = \frac{1}{2m} \sum_{i=1}^{m}(f_{w,b}(x^{(i)})-y^{(i)})^2\\ \begin{aligned} \text{Gradient descent} \\ \text{repeat until convergence} \end{aligned} &: \left\{\begin{aligned} w &= w - \alpha \frac{\partial }{\partial w} J(w,b) = w - \frac{\alpha}{m} \sum_{i=1}^{m}[(f_{w,b}(x^{(i)})-y^{(i)})·x^{(i)}] \\ b &= b - \alpha \frac{\partial }{\partial b} J(w,b) = b - \frac{\alpha}{m} \sum_{i=1}^{m}(f_{w,b}(x^{(i)})-y^{(i)}) \end{aligned}\right. \end{aligned} Linear regression modelCost functionGradient descentrepeat until convergence:fw,b(x)=wx+b:J(w,b)=2m1i=1m(fw,b(x(i))y(i))2: wb=wαwJ(w,b)=wmαi=1m[(fw,b(x(i))y(i))x(i)]=bαbJ(w,b)=bmαi=1m(fw,b(x(i))y(i))

从“等高线图”的角度来看,梯度下降法的迭代过程可能如下图红色箭头所示,从起始点不断收敛到最小值,并且注意到这个过程也是越来越慢的:

图1-1-15 梯度下降法求解线性回归模型

  最后说明一下,由于在使用梯度下降法求解问题的过程中,每次迭代都会使用到所有的训练集数据计算代价函数及其梯度,所以这个梯度下降的过程称为“批量梯度下降(Batch gradient descent)”。当然本问题较为简单,在其他数据更为复杂的模型中,为了简化梯度下降法的计算量,每次只使用训练集的子集

本节Quiz:

  1. Gradient descent is an algorithm for finding values of parameters w and b that minimize the cost function J ( w , b ) J(w,b) J(w,b).
    repeat until convergence : { w = w − α ∂ ∂ w J ( w , b ) b = b − α ∂ ∂ b J ( w , b ) \text{repeat until convergence}: \left\{\begin{aligned} w &= w - \alpha \frac{\partial }{\partial w} J(w,b) \\ b &= b - \alpha \frac{\partial }{\partial b} J(w,b) \end{aligned}\right. repeat until convergence: wb=wαwJ(w,b)=bαbJ(w,b)

When ∂ J ( w , b ) ∂ w \frac{\partial J(w,b)}{\partial w} wJ(w,b) is a negative number (less than zero), what happens to w w w after one update step?
× w w w stays the same
× It is not possible to tell if w w w will increase or decrease.
× w w w decreases.
w w w increases.

  1. For linear regression, what is the update step for parameter b b b?
    × b = b − α m ∑ i = 1 m [ ( f w , b ( x ( i ) ) − y ( i ) ) ⋅ x ( i ) ] b = b - \frac{\alpha}{m} \sum_{i=1}^{m}[(f_{w,b}(x^{(i)})-y^{(i)})·x^{(i)}] b=bmαi=1m[(fw,b(x(i))y(i))x(i)]
    b = b − α m ∑ i = 1 m ( f w , b ( x ( i ) ) − y ( i ) ) b = b - \frac{\alpha}{m} \sum_{i=1}^{m}(f_{w,b}(x^{(i)})-y^{(i)}) b=bmαi=1m(fw,b(x(i))y(i))

相关文章:

Course1-Week1:机器学习简介

Course1-Week1:机器学习简介 文章目录 Course1-Week1:机器学习简介1. 课程简介1.1 课程大纲1.2 Optional Lab的使用 (Jupyter Notebooks)1.3 欢迎参加《机器学习》课程 2. 机器学习简介2.1 机器学习定义2.2 有监督学习2.3 无监督学习 3. 线性回归模型3.1…...

这19个JS代码技巧,后悔没有早点看到

在实际工作中,开发者常面临一些需巧妙编程解决的挑战。有时几行代码就能迎刃而解。本文整理了一系列实用代码片段,助您轻松处理URL、DOM操作、事件处理、日期处理以及用户偏好设置等常见问题。 这些精选代码片段均源自“30 seconds of code”——一个卓…...

Rust UI开发(一):使用iced构建UI时,如何在界面显示中文字符

注:此文适合于对rust有一些了解的朋友 iced是一个跨平台的GUI库,用于为rust语言程序构建UI界面。 iced的基本逻辑是: UI交互产生消息message,message传递给后台的update,在这个函数中编写逻辑,然后通过…...

ros2文件package.xml与cmakelists.txt比较

每次在ros2里面添加文件以后,都要修改packages.xml,与cmakelists.txt文件。...

vue3使用element plus树形选择器懒加载回显失败问题。

vue3使用element plus树形选择器懒加载回显时树形数据还未加载完成,回显时显示的的绑定值,不是要显示的名称。 解决1:不使用懒加载,一次性将数据返回完成 解决2:编辑回显时,拿到要显示的中文强制修改显示…...

Java基于springoot开发的企业招聘求职网站

演示视频: https://www.bilibili.com/video/BV1xw411n7Tu/?share_sourcecopy_web&vd_source11344bb73ef9b33550b8202d07ae139b 技术:springootmysqlvuejsbootstrappoi制作word模板 主要功能:求职者可以注册发布简历,选择简…...

数据结构 / 顺序表 / 顺序表概述和结构体定义

1. 顺序表概述 顺序表:线性表的顺序存储称为顺序表逻辑结构:线性结构(一对一)存储结构:顺序存储(使用一段连续的存储空间存储类型相同的数据元素)顺序表:逻辑相邻,物理也相邻顺序表是借助于数组实现,但是不…...

js最新随机字符串,进制数随机字符串,更优秀的随机字符串方式,你绝对没用过的随机字符串方式,可控制位数!

js最新随机字符串,进制数随机字符串,更优秀的随机字符串方式,你绝对没用过的随机字符串方式,可控制位数! 函数封装和传参 首先我们,要封装这样一个函数,首先要确定,传入哪些参数。…...

通过内存标记扩展(MTE)提供增强的安全性

目录 一、内存安全BUG导致的安全漏洞 二、检测和修复内存安全漏洞的难点 三、MTE如何应对这一挑战...

深入理解main方法-Java

深入理解main方法-Java 一、语法说明二、特别说明三、动态传值 一、语法说明 public static void main(String[] args)main方法是虚拟机调用的java虚拟机需要调用类的main()方法,所以该方法的访问权限必须是publicjava虚拟机在执行main()方法时不必创建对象&#x…...

C#开发的OpenRA游戏之属性SelectionDecorations(10)

C#开发的OpenRA游戏之属性SelectionDecorations(10) 前面分析了选择属性,继续分析前面的内容,不过这里不再是选择,而是选择相关的属性。 当用玩家选择地图上一个物品,或者士兵,或者坦克时,就会在周边画上一些指示标记,并且有一个状态条。 通过上图,可以看到建筑物周…...

【机器学习】迁移学习

迁移学习:给定一个有标记的源域和一个无标记的目标域。这两个领域的数据分布不同。迁移学习的目的就是要借助源域的知识,来学习目标域的知识(标签)。或是指基于源域数据和目标域数据、源任务和目标任务之间的相似性,利用在源领域中学习到的知…...

ubuntu 安装 jetbrains-toolbox

ubuntu 安装 jetbrains-toolbox 官网下载 jetbrains-toolbox jetbrains 官网 jetbrains 官网:https://www.jetbrains.com/ jetbrains-toolbox 官网下载页面 在下载页面点击 Download 安装 jetbrains-toolbox 解压 jetbrains-toolbox 安装包 到指定目录 本案例将…...

5.一维数组——输入一行字符,统计其中各个大写字母出现的次数。

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码 四、举一反三一、题目描述 二、题目分析 三、解题 程序运行代码 前言 本系列为一维数组编程题,点滴成长,一起逆袭。 一、题目描述 输入一行字符,统计其中各个大写字母出现的…...

FreeImage 编译安装

FreeImage下载: The FreeImage Project 点击第6行: Download FreeImage 3.18.0 或: wget http://downloads.sourceforge.net/freeimage/FreeImage3170.zip #解压 unzip FreeImage3170.zip -d freeImage 编译FreeImage源代码可能需要遵循…...

编程开发的 词汇

函数命名相关词汇: Strategy 策略 concrete 具体的 Context 上下文 execute 执行 handler 操作者 target 代理对象 proxy 代理 request 请求 iterator 迭代器 handle 方法处理 notify 通知 update 更新 remove 移除,清除 reset 重置 com…...

【开源】基于JAVA的天然气工程运维系统

项目编号: S 022 ,文末获取源码。 \color{red}{项目编号:S022,文末获取源码。} 项目编号:S022,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统角色分类2.2 核心功能2.2.1 流程…...

MyBatis的功能架构,MyBatis的框架架构设计,Mybatis都有哪些Executor执行器,Mybatis中如何指定使用哪一种Executor执行器

文章目录 MyBatis的功能架构是怎样的把Mybatis的功能架构分为三层: **MyBatis的框架架构设计**是怎么样的架构图如下Mybatis都有哪些Executor执行器?它们之间的区别是什么?Mybatis中如何指定使用哪一种Executor执行器? MyBatis的功…...

关于提示SLF4J: Class path contains multiple SLF4J bindings的问题解决

今天搭建hbase的时候启动hbase的时候shell面板输入了一大堆日志,如下: stopping hbase.....................SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/opt/software/hadoop-3.1.3/share/hadoop/common/l…...

外贸CRM客户管理系统是什么?外贸CRM作用?

外贸CRM客户管理系统有哪些?海洋建站如何选外贸软件? 企业的外贸业务面临着日益激烈的竞争。为了更好地管理客户关系、提高运营效率,越来越多的企业开始采用外贸CRM客户管理系统。那么,海洋建站来介绍一下,外贸CRM客户…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...

管理学院权限管理系统开发总结

文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦&#xff0…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...