机器学习(ML)六之RNN基础

循环神经网络

下图展示了如何基于循环神经网络实现语言模型。目的是基于当前的输入与过去的输入序列,预测序列的下一个字符。循环神经网络引入一个隐藏变量??,用????表示??在时间步??的值。????的计算基于????和????−1,可以认为????记录了到当前字符为止的序列信息,利用????对序列的下一个字符进行预测。

循环神经网络的构造

先看循环神经网络的具体构造。假????∈???×??是时间步??的小批量输入,????∈???×?是该时间步的隐藏变量,则:

????=??(?????????+????1????+???).

实现循环神经网络

one-hot向量

需要将字符表示成向量,这里采用one-hot向量。假设词典大小是??,每次字符对应一个从0到??−1的唯一的索引,则该字符的向量是一个长度为??的向量,若字符的索引是??,则该向量的第??个位置为1,其他位置为0。下面分别展示了索引为0和2的one-hot向量,向量长度等于词典大小。

裁剪梯度

循环神经网络中较容易出现梯度衰减或梯度爆炸,这会导致网络几乎无法训练。裁剪梯度(clip gradient)是一种应对梯度爆炸的方法。假设我们把所有模型参数的梯度拼接成一个向量 ??,并设裁剪的阈值是??。裁剪后的梯度

的??2范数不超过??。

定义预测函数

以下函数基于前缀prefix(含有数个字符的字符串)来预测接下来的num_chars个字符。这个函数稍显复杂,其中我们将循环神经单元rnn设置成了函数参数,这样在后面小节介绍其他循环神经网络时能重复使用这个函数。

困惑度

我们通常使用困惑度(perplexity)来评价语言模型的好坏。回忆一下“softmax回归”一节中交叉熵损失函数的定义。困惑度是对交叉熵损失函数做指数运算后得到的值。特别地,

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

显然,任何一个有效模型的困惑度必须小于类别个数。在本例中,困惑度必须小于词典大小vocab_size

定义模型训练函数

跟之前章节的模型训练函数相比,这里的模型训练函数有以下几点不同:

  1. 使用困惑度评价模型。
  2. 在迭代模型参数前裁剪梯度。
  3. 对时序数据采用不同采样方法将导致隐藏状态初始化的不同。

原文地址:https://www.cnblogs.com/jaww/p/12308158.html

时间: 2024-10-24 09:01:07

机器学习(ML)六之RNN基础的相关文章

机器学习(ML)中文视频教程

本节是李政軒Cheng-Hsuan Li的关于机器学习一些算法的中文视频教程.讲得很好不错,这里非常感谢他的分享:http://www.powercam.cc/chli.也贴到这里,和大家共同学习. Clustering Fuzzy C-Means 基本概念(第1部分) Fuzzy C-Means 基本概念(第2部分) Fuzzy C-Means 基本概念(第3部分) Fuzzy C-Means 迭代公式推導 Regression Linear Regression Models-1 Linea

Coursera机器学习-第六周-Advice for Applying Machine Learning

Evaluating a Learning Algorithm Desciding What to Try Next 先来看一个有正则的线性回归例子: 当在预测时,有很大的误差,该如何处理? 1.得到更多的训练样本 2.选取少量的特征 3.得到更多的特征项 4.加入特征多项式 5.减少正则项系数λ 6.增加正则项系数λ 很多人,在遇到预测结果并不理想的时候,会凭着感觉在上面的6个方案中选取一个进行,但是往往花费了大量时间却得不到改进. 于是引入了机器学习诊断,在后面会详细阐述, Evaluati

android-exploitme(六):基础加密

这次我们看看程序在设备上存储了什么敏感信息 (server-env)sartre:AndroidLabs2 maxim$ adb shell # cd /data/data/com.securitycompass.androidlabs.base # ls lib shared_prefs # cd shared_prefs # ls preferences.xml com.securitycompass.androidlabs.base_preferences.xml 查看preference

第六篇 模块基础

目录 第六篇 模块基础 一 模块的四种形式 二 import和from...import 三 循环导入问题 四 模块的搜索路径 五 python文件的两种用途 六 包 第六篇 模块基础 一 模块的四种形式 啥是模块 模块是一系列功能的集合体,而函数是某一功能的集合体,因此模块可以看成是一堆函数的集合体.一个py文件内部就可以放一堆函数,因此一个py文件就可以看成一个模块.如果这个py文件的文件名为module.py,模块名则是module. 模块的四种形式 2.1 自定义模块:如果你自己写一个P

【WPF学习】第三十六章 样式基础

原文:[WPF学习]第三十六章 样式基础 前面三章介绍了WPF资源系统,使用资源可在一个地方定义对象而在整个标记中重用他们.尽管可使用资源存储各种对象,但使用资源最常见的原因之一是通过他们的保存样式. 样式是可应用于元素的属性值集合.WPF样式系统与HTML标记中的层叠样式表(Cascading Style Sheet,CSS)标准担当类似的角色.与CSS类似,通过WPF样式可定义通用的格式化特性集合,并且为了保证一致性,在整个应用程序中应用他们.与CSS一样,WPF样式也能够自动工作,指定具体

Stanford机器学习---第六讲. 怎样选择机器学习方法、系统

原文见http://blog.csdn.net/abcjennifer/article/details/7797502  添加了一些自己的注释和笔记 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学习系统设计.SVM(Support Vector Machines 支持向量机).聚类.降维.异常检测.大规模机器学习等章节.所有内容均来自Stand

机器学习 - ML

CNCC - 2016 | 机器学习(原文链接) Machine Learning - ML,机器学习是人工智能AI的一个分支. 参考: :

机器学习知识体系 - 神经网络(基础)

转载:http://www.jianshu.com/p/a3b89d79f325 引言本系列是本人第一次在简书写东西,想将手头上正在学的神经网络归纳整理,尽量详细地介绍神经网络的结构.计算公式与C语言实现.文中内容基本参考消化了计算机的潜意识的博文,文中图片基本来自他的博文和Ng老师的课件,所用的符号和上下标与Ng老师的一致,在此感谢. 神经网络结构 说到神经网络,对神经网络有概念的人第一个冒出来的肯定是下面这幅图,这是最基本的3层神经网络,图中圆圈标识神经元,有输入层.1层隐藏层.输出层.输入

机器学习ML策略

1.为什么是ML策略 例如:识别cat分类器的识别率是90%,怎么进一步提高识别率呢? 想法: (1)收集更多数据 (2)收集更多的多样性训练样本 (3)使用梯度下降训练更长时间 (4)尝试Adam代替梯度下降 (5)尝试更大的网络 (6)尝试更小的网络 (7)尝试dropout (8)尝试L2正则化 (9)修改网络架构(激励函数,隐含层单元数目) 2.正交化 正交化(正交性)是一种系统设计属性,它可以确保修改算法的一个指令或者组成部分将不会对系统的其他组成部分产生或者传播副作用.使得核查算法变