Supervised learning demo

简介: 监督学习案例规范假设函数: 使用h(hypothesis, 假设)表示输入(input value)向量或者实数: 使用小写字母x等矩阵: 使用大写字母X等输出(output value)向量或者实数: 使用小写字母y等矩阵: 使用大写字母Y等参数(Parameter...

监督学习案例

规范

  • 假设函数: 使用h(hypothesis, 假设)表示
  • 输入(input value)
    • 向量或者实数: 使用小写字母x等
    • 矩阵: 使用大写字母X等
  • 输出(output value)
    • 向量或者实数: 使用小写字母y等
    • 矩阵: 使用大写字母Y等
  • 参数(Parameters): \(\theta\)
  • 样本的数量(列数): m
  • 样本中特征(feature)的个数: n
  • \(x_0^{(1)}\): 0表示第0个特征(为我们给出的样本中的特征是从1开始的,这里的0是我们自己添加上去的,所有的\(x_0^{(m)}\)都为1,其中1表示第几行数据, 它的一般式就是\(x_j^{(i)}\), 以后j表示第几个特征,i表示第几个样本

房价的Size和Price的预测

  • X 为 房子的 Size
  • 建立一个线性模型: \(h_\theta(x) = \theta_0 + \theta_1x\)
  • 要让我们fit的model与y差异最小, 称之为最小化(minimize)
    • 在这个案例中使用\[J(\theta_0, \theta_1) = {1\over2m}\sum_{i = 0}^m(h\theta(x^{(i)}) - y^{(i)})^2\]
    • 上面的就是我们的代价函数(cost function), 因为我们有让得到的和除以了2m, 所以我们的到函数也称之为平均误差函数(squared error function), 注意: cost function的自变量时theta_0和theta_1, 不在是我们熟悉的x了
    • \[{minimize_{\theta_0\theta_1}} J(\theta_0, \theta_1)\]表示求出一个\(\theta_0\)\(\theta_1\)使得\(J(\theta_0, \theta_1)\)的值最小, 我们称之为最小化的过程, 上面的这个表达式就是我们的优化目标(optimization objective), 也就是我们的目标函数
  • 对于线性回归模型来说, 它的\(J(\theta_0, \theta_1)\)目标函数是一个凸函数(没有局部最优点, 只有一个全局的最优点), 在二维上是抛物线, 在三维上是一个碗状, 对于三维的(J有两个theta参数), 一般使用等高线图来替代三维凸函数
  • 使用gradient regression梯度降维求出最优解, 梯度降维的公式为\(\theta_0 := \theta_0 - \alpha \times {\partial\over\partial\theta_0}J(\theta_0, \theta_1)\), 对于另一个\(\theta_1\)也是一样的, \(\theta_1 := \theta_1 - \alpha \times {\partial\over\partial\theta_1}J(\theta_0, \theta_1)\), 上面的是公式, 在实际更新我们的参数\(\theta_0, \theta_1\)的时候, 应该保证\(\theta_0, \theta_1\)同步更新, 所以应该这样子\[tmp0 := \theta_0 - \alpha \times {\partial\over\partial\theta_0}J(\theta_0, \theta_1)\] \[tmp1 := \theta_1 - \alpha \times {\partial\over\partial\theta_1}J(\theta_0, \theta_1)\] \[\theta_0 := tmp0\] \[\theta_1 := tmp1\], 在最后同步更新\(\theta_0\)\(\theta_1\)的值
  • 关于梯度下降公式的细节
    • 公式中, \(\alpha\)表示学习率, \({\partial\over\partial\theta_0}J(\theta_0, \theta_1)\)表示梯度下降的方向, 所以\(\alpha \times {\partial\over\partial\theta_0}J(\theta_0, \theta_1)\)表示\(\theta_0\)要更新多少的值, 形象一点就是说, 一个人在一个山顶上, 他步子的大小为\(\alpha\), 他希望尽快下山的方向为\({\partial\over\partial\theta_0}J(\theta_0, \theta_1)\), 这样我们就可以更新\(\theta_0\)的值了
    • 虽然我们在公式中规定了\(\alpha\)学习率, 但是并不代表我们走的每一步就是不变的, 因为导数是在变化的, 为最低点的时候为0, 在其他地方有时别的值
    • 要应用梯度下降法, 我们需要为\(\theta_0\)\(\theta_1\)进行初始化, 一般来说都初始化为0, 但是也要视情况而定
    • 什么时候停止梯度下降?
      • 我们可以规定一个阈值, 当我们的\(\alpha \times {\partial\over\partial\theta_0}J(\theta_0, \theta_1)\)小于这个阈值的时候停止, 这个是通过计算机自动停止迭代的, 但是不推荐使用
      • 另外一种方式就是通过画出\(minimize_{\theta_0\theta_1}J(\theta_0, \theta_1)\)与迭代次数的图像来判断应该迭代多少次, 如果画出来的是一个抛物线则表示我们设置的\(\alpha\)学习率太大了, 应该减小\(\alpha\)的值
  • 其他
    • 对于这个房价的模型, 我们除了使用梯度下降的方法求出我们的目标函数之外还可以使用matrix的方法来求, 这个更加的简单
    • 我们每求一次\(J(\theta_0, \theta_1)\)的值就要遍历一遍所有的数据, 因为the definition of the \(J(\theta_0, \theta_1)\) is \[\sum_{i=1}^{m}{1\over2m}{(h(x^{(i)}) - y^{(i)})^2})\], 这种方式我们称之为Batch梯度下降

房价的Size和Price的预测-其他解决方案

  • 在上一节中我们已经得到了一个线性模型\(h_\theta(x) = \theta_0 + \theta_1x\),根据这个假设函数我们定义出了一个目标函数(也称之为损失函数)\[J(\theta_0, \theta_1) = {1 \over 2m}\sum_{i = 0}^{m}(h(x^{(i)}) - y^{(i)})^2\]接着通过梯度下降的方法计算出\(minimize_{\theta_0\theta_1}J(\theta_0, \theta_1)\), 我们知道这种方法需要对进行迭代,比较麻烦,那有没有更加简单的方法呢?能不能一次迭代就可以求出我们的\(\theta_0\)\(\theta_1\)呢?答案就是正规方程

  • 正规方程: \(\theta = (A^{T}A)^{-1}A^{T}y\)
    • 其中\(\theta\)为一个列向量, 表示我们所有的参数
      \[ \begin{bmatrix} \theta_0 \\ \theta_1 \end{bmatrix} \]
    • A 表示输入的 x 组成的矩阵, 这里就是
      \[ \begin{bmatrix} 1 & x_1^{(1)} \\ 1 & x_1^{(2)} \\ \vdots & \vdots \\ 1 & x_1^{(m)} \end{bmatrix} \]
      上面的矩阵的原型就是
      \[ \begin{bmatrix} x_0^{(1)} & x_1^{(1)} \\ x_0^{(2)} & x_1^{(2)} \\ \vdots & \vdots \\ x_0^{(m)} & x_1^{(m)} \end{bmatrix} \]

      从上面我们可以知道\(x_0^{(n)}\)是值为1,这里的

      \[ \begin{bmatrix} x_0^{(1)} \\ x_0^{(2)} \\ x_0^{(3)} \\ \vdots \\ x_0^{(m)} \end{bmatrix} \]
      • 就是我们自己添加上去的新的特征值,这个特征比较特殊,因为它所有的值都为0,为什么要这样做?通过观察假设函数\(h(x^{(i)}) = \theta_0 \times 1 + \theta_1x^{(i)}\)我们发现,之后\(\theta_0\)没有自变量,为了数学上的统一,于是我们对其进行修改\(h(x^{(i)}) = \theta_0x_0^{(i)} + \theta_1x_1^{(i)}\),其中\(x_0^{(i)}\)为1。
    • 其中y为一个列向量,它的值为
      \[ \begin{bmatrix} y^{(1)} \\ y^{(2)} \\ y^{(3)} \\ \vdots \\ y^{(m)} \end{bmatrix} \]
      \(x_j^{(i)}\)对象的标签值

  • 如果构建 A ?
    • 首先,在书写假设函数的时候应该安装阶数的升序书序,如\(h(x^{(i)}) = \theta_0 + \theta_1x_1^{(i)} + \theta_2{(x_1^{(i)})}^2\)或者\(h(x^{(i)}) = \theta_0 + \theta_1x_1^{(i)} + \theta_2x_2^{(i)}\)分别从方便的式子中构建 A

      第一个是
      \[ \begin{bmatrix} 1 & x_1^{(1)} & {(x_1^{(1)})}^2 \\ 1 & x_1^{(2)} & {(x_1^{(2)})}^2 \\ \vdots & \vdots & \vdots \\ 1 & x_1^{(m)} & {(x_1^{(m)})}^2 \\ \end{bmatrix} \]

      第二个是
      \[ \begin{bmatrix} 1 & x_1^{(1)} & x_2^{(1)} \\ 1 & x_1^{(2)} & x_2^{(2)} \\ \vdots & \vdots & \vdots \\ 1 & x_1^{(m)} & x_2^{(m)} \\ \end{bmatrix} \]

  • 如果已经构建出了矩阵 A,接下来的y的构建是非常简单的,就是安装y给出的顺序构建一个列向量即可
  • 带入公式就可以直接求出 \(\theta\)

  • 正规方程的优点
    • 不需要像梯度下降法一样麻烦,需要换出\(minimize_{\theta_0\theta_1}J(\theta_0, \theta_1)\)和迭代次数的图像来确定迭代的次数,除此之外还要确定出\(\alpha\)学习率的大小
  • 正规方程的缺点
    • 在公式中发现这个A矩阵包含了所有的输入,如果输入量非常的大,则A矩阵就会非常大,在计算\({(A^{T}A)}^{-1}\)矩阵的维度就会增大,并且求矩阵的逆在大数据的情况下是非常消耗计算机的性能的
    • 使用的范围小,只适用于线性回归,而梯度下降使用的范围要广很多

房价的Size和Price的预测-多变量

  • 在上两节中我们只考虑到了房子的大小和房子的关系,当然这个是不包括我们计自己添加上去的第0个特征,它们的值都为1。下面我们再添加一些特征,下面就添加 Age。

  • 此时我们的假设函数为\(h(x^{(i)}) = \theta_0 + \theta_1x_1^{(i)} + \theta_2x_2^{(i)}\),其中\(x_1^{(i)}\)为size输入,\(x_2^{(i)}\)为age的输入,构建目标函数(cost function)\[J(\theta_0, \theta_1, \theta_2) = {1 \over 2m}\sum_{i = 0}^{m}(h(x^{(i)}) - y^{(i)})\],为了方便起见,通常我们会将向量输入到函数中而不是一个实数,因为在编程中我们就是输入向量或者矩阵的\[J(\theta) = {1 \over 2m}\sum_{i = 0}^{m}(h(x^{(i)}) - y^{(i)})\]其中,\(\theta\)是一个向量,它的值为\[ \begin{bmatrix} \theta_0 \\ \theta_1 \\ \theta_2 \end{bmatrix} \]

  • 接下来就是我们熟悉的步骤了通过画出\(minimize_{\theta_0, \theta_1, \theta_2}J(\theta_0, \theta_1, \theta_2)\)和迭代次数的图求出应该迭代几次,关于\(minimize_{\theta_0, \theta_1, \theta_2}J(\theta_0, \theta_1, \theta_2)\)$的值已经在前几节讲过了,使用梯度下降的方法

\[ tmp0 := \theta_0 - \alpha \times {\partial\over\partial\theta_0}J(\theta) \]
\[ tmp1 := \theta_1 - \alpha \times{\partial\over\partial\theta_1}J(\theta) \]
\[ tmp2 := \theta_2 - \alpha \times{\partial\over\partial\theta_2}J(\theta) \]
\[ \theta_0 := tmp0 \theta_1 := tmp1 \theta_2 := tmp2 \]
在最后同步更新\(\theta_0\), \(\theta_1\)\(\theta_2\)的值,道理都是一样的

另外的思考-房子的宽(width)和长(length)对房价进行预测

  • 根据标题知道,题目给出了两个特征width和length,我们当然可以和上一节那样构建假设函数,上一节的假设函数绝对是首选,但是如果拟合的不好呢?这就意味着我们需要重新构建假设函数,现在我们构建一个新的假设函数\(h(x^{(i)}) = \theta_0 + \theta_1{x_1^{(i)}} + \theta_2{(x^{(i)})}^{2}\),我们发现这与我们之前的假设函数不一样的地方在于有2阶,这个地方就有技巧了,\({x_1^{(i)}}\)看成一个新的特征\(xnew_1^{(i)}\)\({(x_2^{(i)})}^{2}\)看成另外一个新的特征\(xnew_2^{(i)}\),这样子我们的假设函数就又成为了一阶了的,操作步骤就和之前的一样了

对数据的处理

在获取到需要训练的数据的时候,我们需要对数据进行去均值化

  • 什么是去均值化
    • 去均值化就是将我们的一列数据的范围固定到\(-1 \to 1\)$这个范围之间,但是这个范围不是硬性要求,可以在这个区间内波动
    • 公式:
      \[ v = {{x - avg} \over {max - min}} \]

      • v 为去均值之后的数据样本列向量
      • x 为待去均值的数据样本列向量
      • avg 为 x 的均值
      • max 为 x 的最大值
      • min 为 x 的最小值
      • 还是要提的是x是一个列向量,就是我们数据表中的一列,就是\(x_j^{(i)}\)中的第j个特征的所有的值
    • 举例:
      • 假设我们的房价中size的范围是在(0, 3000)区间内,可想而知有10,有200, 有3000,这样数据之间的差异太大了,对我们的拟合时候影响的,如果我们使用梯度下降发进行最小化,因为数据差异大,会导致最小化的速度变慢

      • 使用公式
        \[ v = {{x - avg} \over {max - min}} \]
        得到的v,它所有元素的大小都在\(-1 \to 1\)区间内

  • 为什么要去均值

    • 很简单,为了在使用梯度下降的方法进行最小化的时候加快速度
  • 执行去均值之后,我们应该保存mean和std,因为我们使用的是去均值之后的数据拟合的模型,在使用这个模型的时候,我们也要对输入进行去均值,这样拟合出来的数据才是我们需要的。

所有在之前的案例中,我们应该加上去均值这一步

目录
相关文章
|
8月前
|
机器学习/深度学习 算法
【RLchina第四讲】Model-Based Reinforcement Learning(下)
【RLchina第四讲】Model-Based Reinforcement Learning(下)
108 0
|
8月前
|
机器学习/深度学习 资源调度 算法
【RLchina第四讲】Model-Based Reinforcement Learning(上)
【RLchina第四讲】Model-Based Reinforcement Learning(上)
213 0
|
8月前
|
机器学习/深度学习 编解码 自然语言处理
DeIT:Training data-efficient image transformers & distillation through attention论文解读
最近,基于注意力的神经网络被证明可以解决图像理解任务,如图像分类。这些高性能的vision transformer使用大量的计算资源来预训练了数亿张图像,从而限制了它们的应用。
232 0
|
8月前
|
机器学习/深度学习 编解码 数据可视化
Speech Emotion Recognition With Local-Global aware Deep Representation Learning论文解读
语音情感识别(SER)通过从语音信号中推断人的情绪和情感状态,在改善人与机器之间的交互方面发挥着至关重要的作用。尽管最近的工作主要集中于从手工制作的特征中挖掘时空信息,但我们探索如何从动态时间尺度中建模语音情绪的时间模式。
79 0
|
机器学习/深度学习 搜索推荐 大数据
DIVIDEMIX: LEARNING WITH NOISY LABELS AS SEMI-SUPERVISED LEARNING
DIVIDEMIX: LEARNING WITH NOISY LABELS AS SEMI-SUPERVISED LEARNING
125 0
DIVIDEMIX: LEARNING WITH NOISY LABELS AS SEMI-SUPERVISED LEARNING
|
机器学习/深度学习 资源调度 算法框架/工具
翻译:Deep Residual Learning for Image Recognition
翻译:Deep Residual Learning for Image Recognition
100 0
|
机器学习/深度学习 人工智能 搜索推荐
【推荐系统论文精读系列】(十五)--Examples-Rules Guided Deep Neural Network for Makeup Recommendation
在本文中,我们考虑了一个全自动补妆推荐系统,并提出了一种新的例子-规则引导的深度神经网络方法。该框架由三个阶段组成。首先,将与化妆相关的面部特征进行结构化编码。其次,这些面部特征被输入到示例中——规则引导的深度神经推荐模型,该模型将Before-After图像和化妆师知识两两结合使用。
117 0
【推荐系统论文精读系列】(十五)--Examples-Rules Guided Deep Neural Network for Makeup Recommendation
|
机器学习/深度学习 自然语言处理 数据挖掘
A Survey on Contrastive Self-Supervised Learning(对比式自监督学习研究)-----pretext tasks、Downstream task解释
A Survey on Contrastive Self-Supervised Learning(对比式自监督学习研究)-----pretext tasks、Downstream task解释
263 0
|
TensorFlow 算法框架/工具 Python
Building deep retrieval models
In the featurization tutorial we incorporated multiple features into our models, but the models consist of only an embedding layer. We can add more dense layers to our models to increase their expressive power.
229 0
|
机器学习/深度学习 算法框架/工具 PyTorch
跟着指南学PyTorch—迁移学习教程(Transfer Learning tutorial)
在这个教程,你将学习如何通过迁移学习训练神经网络。你可以在 cs231n notes 了解更多关于迁移学习的内容。
1793 0

热门文章

最新文章