定向写作模型CTRL
定向写作模型 CTRL
介绍
CTRL 全称为 Conditional Transformer Language
有条件的文本生成模型,它始于 Salesforce 在 2019 年发布的论文《A
Conditional Transformer Language Model for Controllable
Generation》,该模型用于定向写作。论文地址如下:https://arxiv.org/pdf/1909.05858.pdf
这两年非常流行的 BERT 和 GPT-2 都基于 Transformer
模型,虽然代码量不大,逻辑也并不复杂,但是极大规模的数据量、训练强度和模型容量,以及利用无监督文本建模,使模型的能力空前强大,在一些领域已超过人类水平。
GPT-2
使用各种类型的文章训练模型,包括散文、小说、新闻、科技文章,用它写作的文章也综合了各种风格。如果想生成“金庸风格”的小说,则需要用所有金庸先生的小说重新训练模型;或者从原模型中提取特征构造新模型;也可以在原有模型基础上
fine-tuning。如需撰写新闻稿,则需要另行训练。
GPT-2
模型根据文章开头的内容,继 ...
Transformer框架
123name_ch: 注意力就是你所需要的name_en: Attention is All you Needpaper_addr: https://proceedings.neurips.cc/paper_files/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf
Transformer 框架
1 读后感
应该是本世纪最重要的论文之一,提出 Transformer
模型,基于注意力机制,避免了递归和卷积,相比之前模型,训练速度快,模型效果好。
2 摘要
Transformer 是 Google 团队在 2017
年提出的自然语言处理(NLP)框架,也是截至目前,最主流的 NLP
框架。BERT、GPT-2 都是基于该模型的变形和扩展。
Transformer 的具体算法在论文《Attention Is All You
Need》中描述。论文中展示了该模型的训练准确性高于之前所有模型,训练时间明显低于之前的模型,在训练集内容较少时训练效果也很好。它使用8
个 P100 的 GPU 训练 12 小时即可生成基本翻译模 ...
Seq2Seq与Attention
Seq2Seq 与 Attention
自然语言处理是典型的序列问题,其底层算法在最近几年迅速发展,比如去年年底发布的
BERT 在 11 项自然语言处理任务中表现卓越,今年 GPT-2
生成文本(写作)的水平也有了显著提高。
目前这些最先进的技术都基于 Transformer 模型,该模型从
RNN,LSTM,Seq2Seq,Attention,ConvS2S,Transformer
一步步进化而来,还涉及自然语言处理的相关知识,包含的知识点太多,无法一次说清。笔者将其分成几篇,从其进化过程逐步引入。之前已经介绍过
RNN 及 LSTM,本篇将介绍 Seq2Seq 和 Attention 算法。
翻译功能
深度学习中的自然语言处理常用于自动翻译、语言识别、问答系统、提取概要、写作等等领域。
其中自动翻译是一项非常典型的应用,在翻译过程中,输入和输出的词汇个数可长可短,不能一一对应,不同语言词汇顺序又可能不同,并且还有一词多义,一义多词,词在不同位置含义不同的情况……是相对复杂的自然语言处理问题。
先来看看人怎么解决翻译问题,面对一种完全不认识的语言,人把句子分解成词,通过查字典的方式 ...
Pytorch_LSTM与GRU
Pytorch_LSTM 与 GRU
RNN 循环网络在序列问题处理中得到了广泛的应用。但使用标准版本的 RNN
模型时,常遇到梯度消失 gradient vanishing 和梯度爆炸 gradient explosion
问题。
RNN 的缺点
RNN
的梯度消失和梯度爆炸不同于其它网络,全连接网络和卷积网络每一层有不同参数,而
RNN 的每个处理单元 Cell(处理单个序列元素的操作称为处理单元
Cell)共用同一组权重矩阵 W。在上一篇介绍 RNN
网络算法时可以看到,处理单元之间是全连接关系,序列向前传播的过程中将不断乘以权重矩阵
W,从而构成了连乘 Wn,当 W<1 时,如果序列很长,则结果趋近
0;当 w>1
时,经过多次迭代,数值将迅速增长。反向传播也有同样问题。
梯度爆炸问题一般通过“梯度裁剪”方法改善,而梯度消失则使得序列前面的数据无法起到应有的作用,造成“长距离依赖”(Long-Term
Dependencies)问题,也就是说 RNN 只能处理短距离的依赖关系。
这类似于卷积神经网络在处理图像问题时加深网络层数,无法改进效果。尽管理论上可以通过调参改 ...
Pytorch_循环神经网络RNN
Pytorch_ 循环神经网络 RNN
RNN 是 Recurrent Neural Networks
的缩写,即循环神经网络,它常用于解决序列问题。RNN
有记忆功能,除了当前输入,还把上下文环境作为预测的依据。它常用于语音识别、翻译等场景之中。
RNN 是序列模型的基础,尽管能够直接调用现成的 RNN
算法,但后续的复杂网络很多构建在 RNN 网络的基础之上,如 Attention
方法需要使用 RNN 的隐藏层数据。RNN
的原理并不复杂,但由于其中包括循环,很难用语言或者画图来描述,最好的方法是自己手动编写一个
RNN 网络。本篇将介绍 RNN 网络的原理及具体实现。
序列
在学习循环神经网络之前,先看看什么是序列。序列 sequence 简称
seq,是有先后顺序的一组数据。自然语言处理是最为典型的序列问题,比如将一句话翻译成另一句话时,其中某个词汇的含义不仅取决于它本身,还与它前后的多个单词相关。类似的,如果想预测电影的情节发展,不仅与当前的画面有关,还与当前的一系列前情有关。在使用序列模型预测的过程中,输入是序列,而输出是一个或多个预测值。
在使用深度学习模型解决序列问题 ...
Pytorch全连接网络
Pytorch 全连接网络
#Pytorch
本篇开始学习搭建真正的神经网络,前一部分讨论深度学习中预处理数据的基本流程;后一部分构建了两种全连接网络,用三种不同方案拟合时序数据;并在例程中详细分析误差函数,优化器,网络调参,以及数据反向求导的过程。
数据预处理
本篇使用航空乘客数据 AirPassengers.csv,其中包括从 1949-1960
年每月旅客的数量,程序则用于预测未来几年中每月的旅客数量,数据可从以下
Git 项目中下载。
https://github.com/aarshayj/analytics_vidhya/blob/master/Articles/Time_Series_Analysis/AirPassengers.csv
1.读取数据
首先,引入必要的头文件,并从文件中读入数据:
123456789101112import pandas as pdimport numpy as npimport matplotlib.pyplot as plt%matplotlib inlineimport torchimport torch.nn as nnfrom to ...
Pytorch_数据基础
Pytorch_ 数据基础
#Pytorch
机器学习需要掌握数据处理工具
Pandas、Numpy,同理,深度学习也需要掌握相应的数据处理工具,在 Pytorch
中数据存储在张量 Tensor 和变量 Variable
之中,本篇将介绍它们的基本用法以及与之相关的常用函数。
掌握必要的基础知识,让后期看代码更加流畅,避免陷入太多细节。
Tensor 张量
Tensor 用于表示矩阵(多维数据),类似 Numpy 的
ndarray,不同的是,可以使用 GPU 加速。
1.生成张量
1import torch
用 Tensor 方法将其它格式数据转换成张量:
12345678a = torch.Tensor([[1,2],[3,4],[5,6]])print(a)print(a.size())# 输出结果:# tensor([[1., 2.],# [3., 4.],# [5., 6.]])# torch.Size([3, 2])
另外,也可以使用 torch.zeros(),torch.randn() 生成张量。
2.修改张量
用赋值的方法即可修改张量 ...
残差网络ResNet代码解读
残差网络 ResNet 代码解读
#深度学习 #图形图像
残差网络效果
卷积神经网络 CNN 的发展历史如图所示:
从起初 AlexNet 的的 8 层网络,到 ResNet 的 152
层网络,层数逐步增加。当网络层数增加到一定程度之后,错误率反而上升,其原因是层数太多梯度下降变得越发困难。而
ResNet 解决了这一问题。
目前 ResNet
是应用最广的图像相关深度学习网络,图像分类,目标检测,图片分割都使用该网络结构作为基础,另外,一些迁移学习也使用
ResNet 训练好的模型来提取图像特征。
残差网络原理
首先,来看看比较官方的残差网络原理说明:
“若将输入设为 X,将某一有参网络层设为 H,那么以 X
为输入的此层的输出将为 H(X)。一般的 CNN 网络如 Alexnet/VGG
等会直接通过训练学习出参数函数 H 的表达,从而直接学习 X ->
H(X)。而残差学习则是致力于使用多个有参网络层来学习输入、输出之间的残差即
H(X) - X 即学习 X -> (H(X) - X) + X。其中 X 这一部分为直接的 identity
mapping,而 H( ...
华为手机开启adb调试模式
华为手机开启 adb 调试模式
手机 Honor 6x,界面版本 EMUI 8.0.0
1. 在设置 ->系统 ->关于手机,连续按几次 " 版本号 " (注意:
在学生模式下不能使用)
2. 退到上一层,出现“开发人员选项”(与“关于手机”并列)
3. 选中“开发者选项”,选中“仅充电模式下允许 ADB 调式”,选中”USB
调试“(注意先后顺序不能变)
4. 在 Ubuntu 16.04 中安装 adb 工具:
sudo apt-get install android-tools-adb
5. 连接:
$ sudo adb shell
6. 如果还不成功,请参考:
Ubuntu16.04 配置 ADB 调试环境
https://blog.csdn.net/u012351661/article/details/78201040
华为手机安装英文TTS
华为手机安装英文 TTS
想读个英文文档,用讯飞读英文,效果实在是……
在应用汇下载安装 Google
TTS(华为软件商店里没有),软件被安装到系统中,位置在:
设置 ->智能辅助 ->无障碍 ->文字转语言 (TTS) 输出 ->Google
文字转语音引擎。
就可以正常使用了。