深度学习笔记(一)

(一)线性回归

关于线性回归,我们这里了解到的主要内容是它的基本要素:

线性回归的基本要素

1.模型

为了简单起见,这里我们假设价格只取决于房屋状况的两个因素,即面积(平方米)和房龄(年),接下来我们希望探讨房价和这两个因素的具体关系,所以线性回归假设输出与各个输入之间是线性关系:
price=W areaarea+W ageage+b

2.数据集

我们通常收集一系列的真实的数据,例如多栋房屋的真实售出价格和它们对应的面积和房龄。我们希望在这个数据上面寻找模型参数来使模型的预测价格与真实价格的误差最小。在机器学习术语里,该数据集被称为训练数据集(training data set)或训练集(training set),一栋房屋被称为一个样本(sample),其真实售出价格叫作标签(label),用来预测标签的两个因素叫作特征(feature)。特征用来表征样本的特点。

3.损失函数

在模型训练中,我们需要衡量价格预测值与真实值之间的误差。通常我们会选取一个非负数作为误差,且数值越小表示误差越小,一个常用的选择就是平方函数。

4.优化函数-随机梯度下降

当模型和损失函数形式较为简单时,上面的误差最小化问题的解可以直接用公式表达出来。这类解叫作解析解(analytical solution)。本节使用的线性回归和平方误差刚好属于这个范畴。然而,大多数深度学习模型并没有解析解,只能通过优化算法有限次迭代模型参数来尽可能降低损失函数的值。这类解叫作数值解(numerical solution)。

在求数值解的优化算法中,小批量随机梯度下降(mini-batch stochastic gradient descent)在深度学习中被广泛使用。它的算法很简单:先选取一组模型参数的初始值,如随机选取;接下来对参数进行多次迭代,使每次迭代都可能降低损失函数的值。在每次迭代中,先随机均匀采样一个由固定数目训练数据样本所组成的小批量(mini-batch),然后求小批量中数据样本的平均损失有关模型参数的导数(梯度),最后用此结果与预先设定的一个正数的乘积作为模型参数在本次迭代的减小量。

总结以下,优化函数主要有以下两个步骤

  • (1)初始化模型参数,一般来说使用随机初始化;
  • (2)我们在数据上迭代多次,通过在负梯度方向移动参数来更新每个参数

5.矢量计算

在模型训练或预测时,我们常常会同时处理多个数据样本并用到矢量运算,这里介绍了两个向量相加的两种方法:
1.向量相加的一种方法是,将这两个向量按元素逐一做标量加法。
2.向量相加的另一种方法是,将这两个向量直接做矢量加法。

(二)softmax和分类模型

主要包含如下内容:

  • softmax的基本概念
  • 对softmax网络的理解

1.softmax的基本概念

  • 分类问题
    这里我们用到的例子是一个简单的图像分类的问题,输入图像的高和宽都是2像素,色彩为灰度。图像中的4像素分别记为x_1,x_2,x_3,x_4,假设真实标签为狗、猫或者鸡,这些标签对应的离散值为y1,y2,y3,我们通常使用离散的数值来表示类别,例如y1=1,y2=2,y3=3

  • 权重矢量

  • 神经网路图

  • 输出问题

  • 计算效率

  • 小批量矢量计算表达式

2.对softmax和分类模型的理解

同样也是一个单层网络,采用了交叉熵损失函数,虽然其中的精度不如线性回归使用的平方函数,但依旧也可以得到正确的结果,而且它的计算十分便捷,在这个问题当中,模块和方法基本都与线性回归相同,只是训练的数据变成了图片,并且引入了torchvision模板来进行对图片的处理以及准确度的提高。

(三)多层感知机

我们都知道,深度学习主要关注多层模型,在这里,我们将使用多层感知机来介绍多层神经网络的概念:

  • 隐藏层
    在输出层和输入层之间,含有隐藏层,假设多层感知机里面只有一个隐藏层,也就是说输入层的输出给隐藏层,然后再将隐藏层的输出直接作为输出层的输入,但这样,虽然神经网络引入了隐藏层,却依然等价于一个单层神经网路,所以不难发现,即便再添加更多的隐藏层,以上的设计依然只能与仅含输出层的单层神经网络等价。

  • 激活函数
    上述问题的根源在于全连接层只是对数据做仿射变换(affine transformation),而多个仿射变换的叠加仍然是一个仿射变换。解决问题的一个方法是引入非线性变换,例如对隐藏变量使用按元素运算的非线性函数进行变换,然后再作为下一个全连接层的输入。这个非线性函数被称为激活函数(activation function)。

    下面介绍以下几个常用的激活函数:
    (1)ReLU函数:
    ReLU函数的优点在于可以实现网络的深层训练,在参数值小于0的时候梯度为0,大于0的时候梯度为1,它就不会存在梯度消失的问题,也就是ReLU函数只保留正数元素,并将负数元素清0,所以也就是神经网络比较多的时候用的较多。
    (2)Sigmoid函数
    可以把元素的值变换到0和1之间;当x大于4的时候会出现梯度小时的情况,不利于深层网络的训练。
    (3)tanh(双曲正切)
    tan通过反三角函数得到的一部分函数,输出值在0到1之间,但其在x的绝对值大于2的时候会出现梯度消失的问题,也不利于深层网络的训练。

四.文本预处理

文本是一类序列数据,一篇文章可以看作是字符或单词的序列,本节将介绍文本数据的常见预处理步骤,预处理通常包括四个步骤:

1.读入文本
2.分词
3.建立字典,将每个词映射到一个唯一的索引(index)
4.将文本从词的序列转换为索引的序列,方便输入模型

首先利用open()函数打开文本,然后用.read()函数或者re.sub()函数将文本内容按行提取,并利用分割函数.spilt()或者直接用space模块将文本内容分割成一个个的单词,用set保存所分割的单词进行去重操作,然后设定一个阈值,当词频大于阈值的时候,将单词保存并赋予相对应的索引,最后将原文本内容用对应的索引表示为矩阵的形式。

五.语言模型

包含三类内容:语言概率模型、n元语法和数据的采集。

  • 语言概率模型:利用在前m项出现的情况下出现该字母的概率来表示该文本出现的概率,然后进行文本语言的预测。
  • n元语法:基于N-1阶的马尔可夫链的概率模型,具体表现为在前n-1个数据出现的情况下第n个元素出现的概率(用词频表示的概率)。
  • 数据采集:分为两类采集方式,第一类随机采样,按照相邻的时序步长采取相邻的batch_size个批量,每个批量含有步长个数据,
    第二类相邻采样,先按照时序步长采取相邻的样本,然后再从每个步长起始的位置取批量,相对应位置上为同一个批量,不同批量相邻。两种取样方式对应不同的预测方式。

六.循环神经网络

循环神经网络模型就是基于当前的输入和过去的输入序列,预测序列的下一个字符,循环神经网络引入一个隐藏变量H,记录了到当前字符位置的序列信息,对序列的下一个字符进行预测。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值