添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

(一)线性回归

损失函数
在模型训练中,我们需要衡量价格预测值与真实值之间的误差。通常我们会选取一个非负数作为误差,且数值越小表示误差越小。
优化函数 - 随机梯度下降
当模型和损失函数形式较为简单时,上面的误差最小化问题的解可以直接用公式表达出来。这类解叫作解析解。本节使用的线性回归和平方误差刚好属于这个范畴。然而,大多数深度学习模型并没有解析解,只能通过优化算法有限次迭代模型参数来尽可能降低损失函数的值。这类解叫作数值解。
矢量计算
在模型训练或预测时,我们常常会同时处理多个数据样本并用到矢量计算。

(二)softmax和分类模型

  • 分类问题
  • 权重矢量
  • 神经网络图
  • 输出问题
  • 计算效率
  • 小批量矢量计算表达式

损失函数越大,说明该分类器在真实标签上的分类概率越小,性能也就越差。

X = torch.tensor([[1, 2, 3], [4, 5, 6]])
print(X.sum(dim=0, keepdim=True))  # dim为0,按照相同的列求和,并在结果中保留列特征
print(X.sum(dim=1, keepdim=True))  # dim为1,按照相同的行求和,并在结果中保留行特征
print(X.sum(dim=0, keepdim=False)) # dim为0,按照相同的列求和,不在结果中保留列特征
print(X.sum(dim=1, keepdim=False)) # dim为1,按照相同的行求和,不在结果中保留行特征
tensor([[5, 7, 9]])
tensor([[ 6],
        [15]])
tensor([5, 7, 9])
tensor([ 6, 15])

(三)多层感知机

ReLU函数
ReLU(rectified linear unit)函数提供了一个很简单的非线性变换。ReLU函数只保留正数元素,并将负数元素清零。
Sigmoid函数
sigmoid函数可以将元素的值变换到0和1之间。
tanh函数
tanh(双曲正切)函数可以将元素的值变换到-1和1之间
关于激活函数的选择
ReLu函数是一个通用的激活函数,目前在大多数情况下使用。但是,ReLU函数只能在隐藏层中使用。用于分类器时,sigmoid函数及其组合通常效果更好。由于梯度消失问题,有时要避免使用sigmoid和tanh函数。在神经网络层数较多的时候,最好使用ReLu函数,ReLu函数比较简单计算量少,而sigmoid和tanh函数计算量大很多。在选择激活函数的时候可以先选用ReLu函数如果效果不理想可以尝试其他激活函数。
多层感知机
多层感知机就是含有至少一个隐藏层的由全连接层组成的神经网络,且每个隐藏层的输出通过激活函数进行变换。多层感知机的层数和各隐藏层中隐藏单元个数都是超参数。

(四)文本预处理

我们可以通过引入更复杂的规则来解决这些问题,但是事实上,有一些现有的工具可以很好地进行分词,我们在这里简单介绍其中的两个:spaCyNLTK

text = "Mr. Chen doesn't agree with my suggestion."
import spacy
nlp = spacy.load('en_core_web_sm')
doc = nlp(text)
print([token.text for token in doc])
from nltk.tokenize import word_tokenize
from nltk import data
data.path.append('/home/kesci/input/nltk_data3784/nltk_data')
print(word_tokenize(text))

以上两个用法均输出:
[‘Mr.’, ‘Chen’, ‘does’, “n’t”, ‘agree’, ‘with’, ‘my’, ‘suggestion’, ‘.’]

(五) 语言模型

n元语法
序列长度增加,计算和存储多个词共同出现的概率的复杂度会呈指数级增加。元语法通过马尔可夫假设简化模型,马尔科夫假设是指一个词的出现只与前面n个词相关,即n阶马尔可夫链(Markov chain of order )。当n较小时,n元语法往往并不准确。
时序数据的采样
在训练中我们需要每次随机读取小批量样本和标签。
1.随机采样
在随机采样中,每个样本是原始序列上任意截取的一段序列,相邻的两个随机小批量在原始序列上的位置不一定相毗邻。
2.相邻采样
在相邻采样中,相邻的两个随机小批量在原始序列上的位置相毗邻。

(六)循环神经网络

使用循环计算的网络即循环神经网络(recurrent neural network)。
初始化模型参数
定义模型
裁剪梯度
循环神经网络中较容易出现梯度衰减或梯度爆炸,这会导致网络几乎无法训练。裁剪梯度(clip gradient)是一种应对梯度爆炸的方法。
定义预测函数
基于前缀prefix(含有数个字符的字符串)来预测接下来的num_chars个字符。
困惑度
我们通常使用困惑度(perplexity)来评价语言模型的好坏。回忆一下“softmax回归”一节中交叉熵损失函数的定义。困惑度是对交叉熵损失函数做指数运算后得到的值。

  • 最佳情况下,模型总是把标签类别的概率预测为1,此时困惑度为1;
  • 最坏情况下,模型总是把标签类别的概率预测为0,此时困惑度为正无穷;
  • 基线情况下,模型总是预测所有类别的概率都相同,此时困惑度为类别个数。
显然,任何一个有效模型的困惑度必须小于类别个数。

定义模型训练函数
训练模型

以上即为深度学习学习笔记(一)的内容

1.困惑是什么意思? 对于个语言模型,般用困惑来衡量它的好坏。公式为句话中每个词在这个位置上出现的概率分之1,然后累乘,再开N次方根,N是这句话的长(或者分词后词的个数)。困惑越低,说明语言模型面对句话感到困惑的程越低,语言模型就越好。 lda topic model需要确定从每篇文章中提取多少个关键词,最简单的就是折肘法+困惑的方法。 补充:还是懒得说背景!以后想起来再补充!还是电脑硬盘坏过,代码忘参考谁的了!原作者发现可以联系我!立马改参考! LDA模型中需要评估的选项般是主题数量,而主题数量需要根据具体任务进行调整,即通过评估不同主题数模型的困惑来选择最优的模型主题数。本课题中,通过计算困惑perplexity来衡量主题数量: 其中,M是测试
利用较少的标记数据来进步利用大规模的无标记数据进行半监督/自监督学习 用teacher模型生成伪标签训练studen模型,并通过加入噪声使student模型由于teacher模型,迭代此过程以得到更优的模型 基于self-training的teacher-student框架 用标记数据训练teacher模型 用teacher模型对大规模的无标记数据生成伪标签 用labelled data和具有伪标签的unlabelled data共同训练student模型 新的stu 在文本挖掘中,我们经常收集些文档集合,例如博客文章或新闻文章,我们希望将其分成自然组,以便我们可以分别理解它们。主题建模是对这些文档进行无监督分类的种方法,类似于对数字数据进行聚类,即使我们不确定要查找什么,也可以找到自然的项目组。 潜在狄利克雷分配(LDA)是拟合主题模型特别流行的方法。它将每个文档视为主题的混... yolov3 ./src/image_opencv.cpp:5:10: fatal error: opencv2/opencv.hpp: No such file or directory