从入门到精通,循环神经网络(RNN)这一篇彻底讲透!(建议收藏)

网上看了很多RNN的博文和教程,感觉千篇一律,会让你有一个模糊的理解,但又不能完全地解释清楚,而RNN是很多复杂模型的基础,即使在transformer中也有RNN的影子,所以RNN是绕不开的,一定要建立对这个模型的清晰理解。

1、为什么需要RNN

这就要说下CNN的问题,首先CNN的特征是****单向传播的,也就是同一层的特征之间是独立的。还有就是CNN的输入层需要定长的特征,比如输入层的单元个数是100个,那么送入模型的特征就必须是100个,增加输入信息,是很难处理的。

CNN一般来说比较善于处理2维的图片数据,抽象并概括出图像的隐含特征。但是现实世界中会有很多随时间变化的量,比如一年的气温变化,比如人体的生理信号,比如陀螺仪输出的数据,这些数据属于时序数据,时序数据的最大特点是时间相关性,数据之间前后有关联,所以我们就希望有一种模型能够兼顾(记忆)过往数据的特征,这就用到了RNN。

2、最简单的RNN模型

相信大家一定在网上见过很多下面的图片,真的是高度概括和抽象的简图,左面的图真的很简单,但是我看完真的是懵的,再看右面的随时间展开图,会看到一个初始状态h0,然后4个输入x1到x4,时间序列的4个时间步,x1-x4是输入的特征,这个特征一般是一个向量或者矩阵,当然也可以就是一个单一的数值,但是这个h到底怎么回事,还是不理解,再往下看。

pytorch官网给出的公式:

从公式中看出,输入特征Xt经过神经网络后的输出是

上一个时刻xt-1的输出ht-1,也要经过神经网络,输出为,把这2项进行求和,再经过tanh()进行激活,就得到了此刻的ht,这个循环周而复始地进行下去,就是循环神经网络了。

看下面这个图,表达的就很清楚了,Wih就是输入到神经网络的权重参数,与输入有关,所以用i。Whh是隐藏层到神经网络的权重参数,所以用h标记,b就是偏置了。ht-1和xt都是神经网络的输入,与各自的权重系数相乘,再加上偏置,就是标准的神经元运算过程,只不过后面加了一步求和再激活,h的数值和过去有关,相当于一个记忆。

为了能够更直观的理解,下面这个图就把细节体现出来了,**需要注意的是,下图中绘制了2个隐藏层,实际上只有一个,它在不同时间步被反复使用,**但是各自的权重矩阵是不同的,所以经过隐藏层运算的结果也不一样。下面这个图是RNN单步的运算过程,把这个图看懂,RNN肯定就理解了。

输入的特征x维数是由输入的数据决定的,比如气候的变化,可以用风力,气温,湿度等作为特征进行输入;如果是心电信号,那么输入的就是采集到的体表电位一个值。如下面这个图,心电信号的序列长度为300,就是有300个时间步,每个时间步就只有1个值,所以输入的特征维度为1。

隐藏层里面神经元的个数就是hidden_size来定义的,当然了,神经元数量越多,计算量也就越大。

现在就可以解释为什么RNN可以处理变长输入了。

仔细看下面的动图,对于自然语言来说,每一个词相当于一个输入特征,依次输入就可以了,而对于这个句子有多长,就没有太大关系了,无非是多送几次数据的问题。

但是,RNN的计算复杂度是和序列长度(时间步长度)呈线性关系的。

RNN的隐藏层可以不只1层,但是一般不超过3层。

3、双向RNN

上面的RNN结构模型能够观察到的都是以前的信息,但是未来的数据没有参与进来,所以就有了双向的RNN结构,实际上就是将输入的特征序列倒序排列一下,然后在模型中加入反向传播层(隐藏层),将运算的结果与前向的输出组合作为最终的输出。举个例子,如果我们隐藏层的神经元数量是25,那么每一个时间步的输出结果都有25+25=50个数据。

当我们把最后一个时间步的输出取出来时,这里面的特征应该与所有输入的特征都有相关性,这就解决了时序数据时间相关的问题。如果我们需要进行分类的话,那么后面再加入全连接层就可以了。

4、重要参数

先看pytorch官网对于RNN的模型定义

CLASStorch.nn.RNN(self, input_size, hidden_size, num_layers=1,
nonlinearity='tanh', bias=True,
batch_first=False, dropout=0.0,
bidirectional=False, device=None, dtype=None)

这里面有几个重要的参数:

input_size – 输入特征的维度
hidden_size – 隐藏层神经元的数量
num_layers – 隐藏层的层数,默认是1
nonlinearity – 激活函数 'tanh' or 'relu'. 默认: 'tanh'
bias – 偏置,默认: True
dropout – 这个用于防止过拟合,默认:0,代表没有dropout
bidirectional – 是否使用双向RNN

下面结合实例来看一下,这个RNN模型接收上面的心电信号,共300个采样数据,也就是300个时间步,每次输入的特征只有一个:

class RnnModel(nn.Module):
def __init__(self):
super(RnnModel, self).__init__()
'''
参数解释:(输入维度,隐藏层维度,网络层数)
输入维度(input_size):每个x的输入大小,也就是每个x的特征数
隐藏层(hidden_size):隐藏层的神经元数
网络层数(num_layers):隐藏层的层数
'''
self.rnn = nn.RNN(1, 50, 1, nonlinearity='tanh',batch_first=True)
self.linear = nn.Linear(50, 5)
def forward(self, x):
r_out, h_state = self.rnn(x)
output = self.linear(r_out[:,-1,:])
return output

这个RNN模型,一次喂给模型的数据是1个,300个采样值,所以在RNN内部会循环300次进行运算,每一步运算都会有一个输出,因为是50个神经元,所以输出结果也是50维的,但是我们只把最后一个时间步的输出值取出来,送入全连接层进行5分类输出。按照下图就是把Y300取出来,里面有50个特征,建立一个50到5的神经网络映射,实现5分类输出。

5、结语

有了上面的RNN模型基础,针对RNN模型的很多变种,如LSTM、GRU等,就可以很快理解并使用了。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值