Task1-Task2 - 学习笔记

  • Task02:文本预处理;语言模型;循环神经网络基础(1天)

线性回归的基本要素:

模型(学习模型参数 权重weight,偏差bias)

训练数据

损失函数(需要对比模型的输出和真实值之间的误差。损失函数可以衡量输出结果对比真实数据的好坏。)

优化算法(需要算法来通盘考虑模型本身和损失函数,对参数进行搜索,从而逐渐最小化损失。最常见的神经网络优化使用梯度下降法作为优化算法。简单地说,轻微地改动参数,观察训练集的损失将如何移动。然后将参数向减小损失的方向调整。)

线性回归的表示方法:

神经网络图

输⼊分别为 x1 和 x2,因此输⼊层的输⼊个数为 2。输⼊个数也叫特征数或特征向量维度。由于⽹络的输出为 o,输出层的输出个数为 1。图 中神经⽹络的输出 o 作为线性回归的输出,即 yˆ = o。由于输⼊层并不涉及计算,神经⽹络的层数为 1。所以,线性回归是⼀个单层神经⽹络。输出层中负责计算 o 的单元⼜叫神经元。在线性回归中,o 的计算依赖于 x1 和 x2。也就是说,输出层中的神经元和输⼊层中各个输⼊完全连接。因此,这⾥的输出层⼜叫全连接层或稠密层(fully-connectedlayer 或 dense layer)。

矢量计算表达式

  1. 向量相加的一种方法是,将这两个向量按元素逐一做标量加法。
  2. 向量相加的另一种方法是,将这两个向量直接做矢量加法。

#在深度学习中要尽可能使用矢量计算,以提升计算效率

Softmax

线性回归适用于输出为连续值的情景,对于输出离散值的分类问题,需要使用分类模型,例如softmax,与线性回归不同的是softmax输出单元从一个变为多个。和线性回归相同的是,softmax也是一个单层神经网络。和线性回归不同的是,softmax输出层的个数等于类别个数。

softmax 每个输出的计算都要依赖于上一层的每个元素,所以softmax输出层是一个全连接层

模型预测及评价

在训练好 softmax 回归模型后,给定任一样本特征,我们可以预测每个输出类别的概率。通常,我们把预测概率最大的类别作为输出类别。如果它与真实类别(标签)一致,说明这次预测是正确的。

多层感知机

多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network),除了输入输出层,它中间可以有多个隐层,最简单的MLP只含一个隐层,即三层的结构,如下图:

Image Name

  • 为什么要使用激活函数?
  1. 不使用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。
  2. 使用激活函数,能够给神经元引入非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以利用到更多的非线性模型中。
  • 激活函数需要具备以下几点性质:
  1. 连续并可导(允许少数点上不可导)的非线性函数。可导的激活函数可以直接利用数值优化的方法来学习网络参                    数。
  2. 激活函数及其导函数要尽可能的简单,有利于提高网络计算效率。
  3. 激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小,否则会影响训练的效率和稳定性。

关于激活函数的选择

ReLu函数是一个通用的激活函数,目前在大多数情况下使用。但是,ReLU函数只能在隐藏层中使用。

用于分类器时,sigmoid函数及其组合通常效果更好。由于梯度消失问题,有时要避免使用sigmoid和tanh函数。

在神经网络层数较多的时候,最好使用ReLu函数,ReLu函数比较简单计算量少,而sigmoid和tanh函数计算量大很多。

在选择激活函数的时候可以先选用ReLu函数如果效果不理想可以尝试其他激活函数。

 

文本预处理

文本是一类序列数据,一篇文章可以看作是字符或单词的序列,文本数据的常见预处理步骤,预处理通常包括四个步骤:

  1. 读入文本
  2. 分词
  3. 建立字典,将每个词映射到一个唯一的索引(index)
  4. 将文本从词的序列转换为索引的序列,方便输入模型

语言模型

idx_to_char = list(set(corpus_chars)) # 去重,得到索引到字符的映射
char_to_idx = {char: i for i, char in enumerate(idx_to_char)} # 字符到索引的映射
vocab_size = len(char_to_idx)
print(vocab_size)

corpus_indices = [char_to_idx[char] for char in corpus_chars]  # 将每个字符转化为索引,得到一个索引的序列
sample = corpus_indices[: 20]
print('chars:', ''.join([idx_to_char[idx] for idx in sample]))
print('indices:', sample)

循环神经网络基础

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值