机器学习周报(6.24-6.30)

摘要

本周学习了李宏毅老师的机器学习基础,通过一个入门案例认识机器学习的本质,函数的输入以及函数的类别有哪些,学习了training的三个步骤,包括简版和复杂版。以及神经网络的结构,深度学习正向传播计算模型的误差值、反向传播可以帮助我们有效的进行渐变迭代计算(帮助计算梯度)。

一、入门案例

机器学习的本质是找一个Function,比如,做一个语音识别文字这个函数的输入就是一段语言,其输出是对这段语音内容的识别;做一个图像识别,如识别图片内容;就是要基于人类的想法实现人类想要的输入、输出的结果。

在这里插入图片描述

找的Function不同,机器学习也有不同的类别

  • 回归(Regression),函数的输出是一个数值。
    例如根据今天的PM2.5,气温以及臭氧的含量预测明天的PM2.5。
    在这里插入图片描述

  • 分类(Classification),人类先准备一些选项(称为类别,class),函数的输出为从前面的选项中选择正确的输出。
    例如:用户在收到邮件时,判断这一封邮件是否为垃圾邮件,给出Yes/No,Classification可以又多个类别。
    在这里插入图片描述

  • 结构化学习(Structured Learning) 让机器来创造

二、How to find a function

通过YouTube视频后台用户点击次数的预测为例子简单学习如何找到这个函数

1.Function with Unknown Parameters

首先要找一个带有未知参数的参式,这个Function称为Model,X(特征,feature)是从领域知识(domain knowledge)获取的已知数据,w即weight权重,b为bias.

Model

2.Define Loss from Training Data

Loss也是一个function,输入是上面Model中的w和b,记作L(b,w);该函数的输出的意义是这一组b和w的数值到底好不好。

Traning Data

  • step1 选取参数b=500,w=1;
  • step2 利用该参数和Model y=b+wx计算出某一天的视频点击量的预测值,计算出预测值跟那一天的实际值(label)做差取绝对值记作e;
    在这里插入图片描述
  • step3 计算出Loss值,Loss的值越小,即预测误差越小,代表当前取的(b,w)参数值越好;Loss的值越大代表当前取的(b,w)参数值越不好

根据需求和对任务的理解决定e的计算方式不同

在这里插入图片描述

3.Optimization(最佳化)

寻找最佳的参数值w*,b*使得L的值最小,即最优解
梯度下降(Gradient descent是常用的优化方法

  • 单参L(w)
    在这里插入图片描述

  • 双参L(w,b),
    在这里插入图片描述
    这三步称为Training
    在这里插入图片描述
    可以根据观察的数据进行合适的调整,如图所示数据呈现周期性规律,七天为一个周期。

修改一下model,分别考虑前七天,前二十八天的数据,考虑的天数越多,L的值越小,当考虑的天数达到一个极限值时,L的值不变了。
在这里插入图片描述
这些模型都是把输入的x(feature)乘上一个weight加上bias,这样的模型有一个共同的名字叫作Linear Models。

三、Linear Models

Model Bias

上面的model y=b+wx; 不管怎么改变w和b都是一条直线
在这里插入图片描述

如何找一个复杂的Function

红色这个复杂的线可以由一个常数加上若干个蓝色的Function组成,红线=0+1+2+3;
在这里插入图片描述

  • 所有的piecewise Linear curves(分段线性曲线)都可以由一个常数加上若干的蓝色Function组成
    越复杂的piecewise Linear curves需要越多的蓝色的Function
  • 任何连续曲线,你只要取足够多的转折点,你都能用piecewise linear curve去逼近他

1.Function with Unknown Parameters

用Sigmoid函数来逼近Hard Sigmoid
在这里插入图片描述

在这里插入图片描述

对于Sigmoid函数
不同的w,改变斜率
不同的b,改变偏移量
不同的c,改变高度

在这里插入图片描述
每一个蓝色的Function都可以由一个Sigmoid函数来表示
在这里插入图片描述
更有弹性的含有未知参数的Function,可以通过带入不同的w、b、c,就可以变成不同的Function。通过Sigmoid函数可以一步一步进行扩展。
在这里插入图片描述
x为表示特征,j是特征的编号,如:要考虑28天,j就是从1到28;i表示每一个由Sigmoid函数表示的蓝色Function;

在这里插入图片描述
将上述蓝框内公式用向量的形式表示,r为x的线性组合
在这里插入图片描述
整个过程可以由下图表示

  1. 先有x的线性组合得到 r;
  2. r作为Sigmoid的输入得到a;
  3. 再将a进行线性组合得到y;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.Define Loss from Training Data

在这里插入图片描述

3.Optimization of New Model

寻找最佳的参数值组θ*使得L的值最小,即最优解在这里插入图片描述

在这里插入图片描述
以此类推,直到不想做或计算出梯度为0,不过几乎不太可能梯度为0

在实际使用的时,会把N笔数据随机分成一个一个的批量(Batch),拿每个Batch里的数据计算各自的Loss;
第一个batch的数据使用θ0计算出L1和g1,利用g1更新参数θ0->θ1;
第二个batch的数据使用θ1计算出L2和g2,利用g2更新参数θ1->θ2;
以此类推,直到最后一个batch优化最后一次θ,该θ即为最优θ。

把所有的batch看过一遍,称为一个epoch。例如,N=10000,B=10,那么一个epoch包含1000次update。
在这里插入图片描述

ReLU


Hard Sigmoid 可以看作是两个修正线性单元(Rectified Linear Unit,ReLU)的加和
2 个 ReLU 才能够合成一个 Hard Sigmoid。要合成 i 个 Hard Sigmoid,需要 i 个 Sigmoid,如果 ReLU 要做到一样的事情,则需要 2i 个 ReLU
在这里插入图片描述
Sigmoid 或 ReLU 称为激活函数(activation function)

神经网络

x*w+b再通过激活函数得到a称为一层layer,将输出a继续这个步骤第二次进入激活函数后输出称为第二层layer
Sigmoid 或 ReLU 称为神经元(neuron),很多的神经元称为神经网络(neural network)

在这里插入图片描述

在这里插入图片描述

layer越多越好吗?
在这里插入图片描述
随着层数的增加在训练数据和测试数据上Loss值都越来越小,但到第四层的时候训练时的Loss更小了,但是测试时的Loss比第三层大;
在训练数据和测试数据上的结果是不一致的,这种情况称为过拟合(overfitting)

四、深度学习

1.正向传播

每一层有多个neuron,Layer1中的每个neuron输出为Layer2中的每个neuron的输入,以此类推,所以叫Fully Connect(全连接)。传递的方向是从前往后,所以是Feedforward(正向传递)

在这里插入图片描述

在这里插入图片描述
通过矩阵进行运算
在这里插入图片描述

2.Backpropagation(反向传播)

在一个神经网络中,可能参数数目成千上万,那么这么庞大的计算量我们就需要一些可以辅助我们的工具。backpropagation(反向传播)可以帮助我们有效的进行渐变迭代计算(帮助计算梯度)。

在这里插入图片描述

在这里插入图片描述
总结-Backpropagation
为了简化对神经网络做梯度下降时带来的运算量巨大的问题。Backpropagation主要分为反向传播和前向传播。

前向传播很容易,主要传播的就是神经网络的输入。这个每一级的输入都会作为我们的偏导数来供我们去做梯度下降。

反向传播传播的是损失函数对z的偏导(z是每一级线性方程的输出),这个偏导数可以通过,从输出层到输入层的反向求解,使得运算达到进一步的简化。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值