李宏毅机器学习笔记3——CNN(卷积神经网络)和RNN(循环神经网络)

一、什么是CNN

1.什么是卷积

        卷积本质上是加权求和,信号处理过程中是时间上的加权求和,图像中是空间上的加权求和。

2.为什么用CNN

        机器识图的过程中,将一个完整的图片切割成许多个小部分,把每个小部分里具有的特征提取出来(识别每个小部分),再将小部分具体的特征汇总到一起,完成机器识别图像的过程。

        CNN参数比全连接神经网络少得多,为什么CNN用较少参数就可以处理图像呢?

        (1)一些特征比整张图片小得多,不用CNN的话需要分析完整幅图片才能确认一个特征,CNN可以进行局部分析。

        (2)同样的特征可能出现在图像的不同区域,不用CNN的话会认为两个不同位置的特征是不同的特征,用CNN会认为是同一个特征。

        (3)CNN对图像降采样不会改变图像中的物体。

        在CNN中,卷积层的设计对应着前两条,池化层的设计对应着第三条。

二、实现CNN的步骤

        输入->卷积->最大池化->……->展平->完全连接前馈网络->输出

1.卷积

        

        假设我们输入的是6*6的图像,如果是黑白的,一个像素只需要一个值去描述几个,1代表此处有颜色,0代表此处无颜色。在卷积层中,它是由一组过滤器组成的(其中每个过滤器其实就接着依次连接层里面的一个神经元),每个过滤器是一个3*3的矩阵,每个过滤器里的参数就是网络的参数。

        过滤器如果是3*3的大小意味着检测图案的范围是3*3,只看该范围内是否有某种模式 的出现。

        经过第一次卷积,将6*6的矩阵转化为4*4的矩阵。过滤器1检测出的是同一个图案出现在左上角的位置和左下角的位置。

        在一个卷积层中会有很多过滤器,不同的过滤器有不同的参数,得到不同的矩阵。矩阵合起来称为特征图。

        当黑白图像换成彩色图像时,彩色图像是由RGB组成的,一个彩色图像就是好几个矩阵叠在一起,立方体,处理彩色图像的过滤器不是一个矩阵而是立方体。对于过滤器中的每个元素和输入图像的每个通道的对应位置,计算内积。将每个通道上的内积结果相加,得到最终的输出值。考虑不同颜色通道之间的相互影响,提高卷积性能。

        卷积与全连接之间的关系

        卷积就是全连接去掉部分权重,经过卷积的输出就是一个隐藏层神经的输出。

        当过滤器1放在左上角时,相当于该神经元的输出只考虑了9个像素。而在全连接中,一个神经元应该连接在所有的输入上,现只用了9个,降低了参数。

        2.最大池化

        经过卷积过程中,不同的过滤器得到了不同的输出矩阵,将该输出中四个为一组,每组选择他们平均值或最大值保留,四个值合成一个值,从而缩小图像。

        假如我们选择每组里的最大价值保留,将该值放入到神经元中。

        经过一次卷积和一次最大池化,将6*6的图像变成2*2的图像,这个2*2的像素深度取决于你有几个过滤器,得到的结果是一个新图像,一个过滤器代表了一个通道。

        这件事可以重复很多次,通过一个卷积+最大池化就得到新的图像。它是一个比较小的图像,可以把这个小图像,做同样的事情,再次通过卷积+最大池化,将得到一个更小的图像。

        3.展平

        

        展平就是特征图拉直,拉直之后可以丢到全连接的前馈网络中,然后结束。

三、如何用Keras搭建一个CNN

        改变的是网络结构和输入格式,输入一个张量(高维的向量)

        输入形状:28,28,1 输入是28 *28的图像,每个像素都是单一颜色。

        最大池化2D:2,2 表示把2*2的特征图里的像素拿出来选择最大值

        通过两次卷积,两次Max Pooling,原来是1 *28 *28变成50 *5 *5。展平的目的就是把50 *5 *5拉直,拉直之后就成了1250维的向量,然后把1250维的向量丢到全连接。

四、文本CNN

1.如何将每个单词表示为向量?

1-of-N encoding

向量是词典的大小,每个维度对应词典中的一个单词,属于该单词的维度为1,其余为0.

示例:输入一个词,输出输入该词的概率

但如果只用1-of-N编码来描述词汇,每遇到新词汇都需要增加维度。因此可以用每一个字母来表示向量,比如词汇是apple,apple中出现了app、ppl、ple,向量中,app、ppl和ple的维度则为1,其余则为0。

五、循环神经网络RNN

        有记忆的神经网络称为循环神经网络。在循环神经网络中,每一次隐藏层的神经元产生输出时候,该输出会被存到内存中,当下次有输入时,这些神经元不仅考虑输入值,也考虑内存中的值。

        上图的神经网络中,所有权重都是1,即所有神经元没有任何偏差。假设所有激活函数都是线性的。现输入【1,1】,第一个隐藏层左右两边除了接受输入,也要考虑内存,输出的【2,2】,即第二个隐藏层输出【4,4】。

        接下来循环神经网络将绿色神经元存入到内存中,内存中的数据为【2,2】,接下来再次输入【1,1】,第一个隐藏层考虑内存中数据输出【6,6】,第二个隐藏层输出【12,12】。

        所以,对于循环神经网络而言,即使输入的内容一样,输出结果可能不同。

分析RNN的架构

        同一个网络在三个不同的时间点使用了三次。

        其他RNN

        深层循环神经网络

        循环神经网络的架构可以是任意设计的,当然可以是深层的(可以有多个隐藏层),深层循环神经网络。

        双向神经网络

        你可以同时训练一个正向的循环神经网络,又可以训练一个逆向的循环神经网络,然后把这两个循环神经网络的隐藏层导出来,都接给一个输出层得到最后的y。

六、LSTM长短期记忆网络

        LSTM有三个门,当第一个神经元的输出想要被写入到记忆单元里面时候,必须通过一个输入们,只有输入门打开时,才能把值写入到记忆细胞里面,输入门的打开取决于神经元的自我学习。输出的地方也有一个输出门,输出门会决定其他的神经能否从该内存中读取值,类似于输入门,输出门也是自我学习的。第三个门是遗忘门,该门决定了什么时候记忆细胞会把过去记得的东西网络,什么时候遗忘也是门自己学习的。

        LSTM可以看做,有四个输入一个输出,四个输入中一个是想要存在内存单元的至,还有控制三个门的讯号。

LSTM:传送带

LSTM:遗忘门

LSTM:输入门

LSTM:更新传送带

LSTM:输出门

LSTM:参数数量

七、用于文本分类的RNN

八、LSTM vs Naïve RNN

        Long Short-Term Memory (LSTM) 和 Naïve RNN(也称为基本循环神经网络)都是递归神经网络(RNN)的不同变种,用于处理序列数据。然而,它们之间存在显著的区别,主要涉及到处理长期依赖性和梯度消失问题。

  1. 处理长期依赖性:

    • LSTM:LSTM 是一种设计用来解决梯度消失问题和处理长期依赖性的 RNN 变种。它包括特殊的存储单元(称为细胞状态),能够保留和传递信息,从而使网络能够处理长序列上的依赖性。LSTM 使用门控机制,如遗忘门、输入门和输出门,以控制信息流动和存储。
    • Naïve RNN:传统的 RNN 存在梯度消失问题,这意味着它们难以处理长序列上的依赖性。它们通常不能捕捉长期的序列关系,因为梯度消失会导致无法有效地传播远距离的信息。
  2. 学习能力:

    • LSTM:由于其门控机制和长期依赖性处理能力,LSTM 在学习序列数据中的长期模式和依赖性方面更强大。因此,LSTM 更适合处理具有长序列依赖性的任务,如文本生成、语音识别等。
    • Naïve RNN:传统 RNN 存在梯度消失问题,因此在处理长序列数据时,它们的性能通常较差。它们可能更适合处理短序列和具有近距离依赖性的任务。

        总的来说,LSTM 是对 Naïve RNN 的改进,特别适合处理长序列数据和长期依赖性。然而,需要注意的是,现代深度学习中还有其他更高级的序列模型,如 Gated Recurrent Unit(GRU)和 Transformer,它们在某些任务上的性能可能比 LSTM 更好。选择哪种模型应该基于具体任务的需求和性能评估来决定。

九、基于注意力机制的模型

        自注意力(Self-Attention),也被称为内注意力(Intra-attention),是一种关键的机制,广泛用于自然语言处理和计算机视觉任务中,特别是在变换器(Transformer)架构中。它允许模型同时考虑输入序列中不同位置的元素,并确定它们之间的依赖关系,而不受序列长度的限制。

        以下是关于自注意力的关键概念:

  1. 输入序列: 自注意力通常应用于输入序列,可以是文本、图像、声音或其他数据形式的序列。

  2. Query、Key 和 Value: 在自注意力中,每个输入元素都会被映射为三个向量:Query(查询向量)、Key(键向量)和Value(值向量)。这些向量用于计算注意力权重。

  3. 计算注意力权重: 自注意力机制计算每个元素与其他元素之间的注意力权重,以确定它们之间的关联程度。这是通过将查询向量与键向量的内积计算,然后进行标准化(通常使用softmax函数)来实现的。

  4. 加权求和: 通过使用计算得到的注意力权重,对值向量进行加权求和,以生成最终的输出。这允许模型关注与给定查询相关的输入元素。

  5. 多头自注意力: 在变换器中,自注意力通常是多头的,这意味着它可以同时学习多个不同的注意力表示。这有助于模型捕获不同的关系和特征。

        自注意力机制的主要优势在于它的能力,能够处理长序列数据,并且不会因为序列长度的增加而受到性能下降的限制。这使得它在机器翻译、文本分类、命名实体识别、图像处理和语音识别等各种自然语言处理和计算机视觉任务中非常有用。

十、Transformer的结构模型

Transformer 是一个基于自注意力机制(Self-Attention)的神经网络架构,由Vaswani等人在论文《Attention Is All You Need》中提出。它被广泛应用于自然语言处理领域,特别是在机器翻译任务中取得了显著的成果,但它同样适用于其他序列到序列的任务,如文本摘要、语音识别等。

以下是 Transformer 架构的主要特点:

  1. 自注意力机制(Self-Attention): Transformer 使用了自注意力机制,使得网络能够在输入序列中的不同位置之间建立关系,而不受序列长度的影响。这意味着它可以同时处理长序列数据。

  2. 无需循环或卷积层: 与传统的循环神经网络(RNN)和卷积神经网络(CNN)不同,Transformer 不需要任何循环结构,使得它易于并行化,从而加速了训练过程。

  3. 位置编码(Positional Encoding): 由于 Transformer 没有显式的顺序信息,为了使模型能够处理序列数据,需要添加位置编码,用于表示输入序列中的每个元素的位置信息。

  4. 多头自注意力(Multi-Head Self-Attention): Transformer 中的自注意力机制通常是多头的,这意味着模型可以学习多组不同的注意力权重,从而捕捉输入序列中的不同关系。

  5. 前馈神经网络(Feed-Forward Neural Network): Transformer 中每个位置都有独立的前馈神经网络,用于处理自注意力机制的输出。

  6. 残差连接(Residual Connection)和层归一化(Layer Normalization): Transformer 中的每个子层(自注意力、前馈神经网络)都使用了残差连接和层归一化,有助于更稳定和更快速地训练网络。

Transformer 的结构使得它在处理序列数据时非常高效,适用于各种不同长度的输入。它的成功促使了自注意力机制在深度学习中的广泛应用,不仅限于自然语言处理,还包括计算机视觉等领域。 Transformer 的设计也启发了许多后续的模型和研究。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文本分类可以使用多种模型,其中包括文本分类CNNRNN。文本分类CNN模型使用了一维卷积层和时序最大池化层。首先,定义多个一维卷积核,并使用这些卷积核对输入进行卷积计算,不同宽度的卷积核可以捕捉到不同个数的相邻词的相关性。然后,对输出的所有通道分别进行时序最大池化,得到池化输出值,并将这些通道的池化输出值连结为向量。最后,通过全连接层将连结后的向量变换为关于各类别的输出,可以使用丢弃层来应对过拟合。 而文本分类RNN模型则使用循环神经网络,通过将序列中的每个词依次输入RNN中进行处理。RNN会记住之前的信息,并根据当前输入的词和之前的记忆进行预测和分类。这使得RNN在处理序列数据时具有较好的表现。 总而言之,文本分类CNNRNN模型都是用于处理文本分类任务的模型,其中文本分类CNN使用了卷积层和池化层,而文本分类RNN使用了循环神经网络。它们都可以根据输入的文本序列进行分类预测。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [人工智能-项目实践-文本分类-CNN-RNN中文文本分类,基于TensorFlow](https://download.csdn.net/download/admin_maxin/85357377)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [文本分类(使用RNNCNN)](https://blog.csdn.net/weixin_44696221/article/details/104466421)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [NLP实践 数据探索 CNNRNN训练文本分类器 (转载)](https://blog.csdn.net/weixin_43599067/article/details/90183059)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值