激活函数

把线性函数 转换成非线性,最终目标是找出系数 w 和 b
神经网络

x1和y1(输入层) 经过一次线性变换,再经过一次激活函数,就变成了隐藏层a, 隐藏层a经过一次线性变换,再经过一次激活函数,就变成输出层b,
前向传播
从左到右计算出值
残差
真实值与预测值的差值
损失函数
表示真实值与预测值的差值的函数

线性函数:就求偏导,求最小值
非线性:一点点试 w以及 b的值,看看L(w,b) 有什么变化,让参数向着让 L变小的方向去调整
梯度

L对w的偏导,就是w变化对L的影响,其中的 参数n 是学习率 ,这些偏导数构成的向量就叫梯度,不断变化w和b,让损失函数逐渐变小的过程,求出w和b,就是梯度下降
从后往前逐渐层求偏导,就能得到L对w的偏导, 通过链式法则 (微积分中复合函数求导)从后往前更新参数的过程叫 反向传播

梯度消失
网络越深,梯度反向传播时越来越小,参数更新困难
梯度爆炸
梯度数值越来越大,参数数值调整失去控制
泛化能力
就是在没见过的数据上的表现能力
过拟合
就是训练数据表现好,新数据表现糟糕。
为什么会出现过拟合? 问题很简单,但是用的模型太复杂,把噪声和随机波动也学会了。
解决办法:
- 简化模型,
- 增加数据量,或者对原有的数据进行裁剪,旋转,加噪声,编程更多数据。 这叫 数据增强 还能增强模型 鲁棒性(让模型不因为输入的小变化而造成很大的改变)
- 正则化
- Dropout
正则化
构建新的损失函数来 抑制w的持续增长, 如在在损失函数上加上参数w绝对值 这个过程就叫正则化

Dropout
训练过程中,每次随机丢弃一些参数,让模型依赖普通参数,避免关键参数的过度依赖
CNN(卷积神经网络)
主要用于静态数据,比如图片
把其中一个全连接层 替换成卷积层
池化层 作用是对卷积层后的特征图像进行降维,保留主要特征
卷积运算
用卷积核(一个含有特定值的方阵)逐行扫过并计算(对应位置相乘) 求和 得出的数值形成一个新的图象 这就叫卷积运算
RNN(循环神经网络)
one hot
准备一个超级大向量,每个字仅仅一个1,其余维度都为0
embedding
文本->token 是tokenizer
token->向量是embedding
嵌入矩阵 每个词的向量 构成的矩阵
针对于语言文本,让x1的计算,不着急输出y1,而是输出h隐藏状态 (因为传统的神经网络没有办法传递词和词之间的关系),然后 h 再经过线性变换成y; 然后再让h参与到x2的计算中,如此循环往复
encoder
句子被拆分为向量之后,加上一组位置编码,分别和Wq,Wk,Wv(现实中,这个W权重矩阵是通过训练得到的)向量相乘,得到每个词对应的qkv向量,q就是query,k就是key 目录, v就是值 value
注意力机制
给每个词向量增加上下文信息
q1与k2相乘,表示第一个词和第二词的相似度,依此类推
上一步的结果再与v相乘就得到a1. a1就表示,在一个词视角来看,其他词的相似度以及权重是多少,也就是其他词上下文信息
多头注意力
选用两种 Wqkv 矩阵 分别计算a1 a2 a3 a4 然后拼接起来,然后再经过一次线性变换(权重矩阵的乘法),就是多头注意力
Transformer
左边是编码器,右边为解码器
softmax
把一堆数字变成「概率」,让它们加起来等于 1,而且会「放大差距」—— 大的数字变得更大,小的变得更小
归一化
L1 归一化:把向量长度变成 1,用的是绝对值之和
L2 归一化:把向量长度变成 1,用的是平方和开根号