Transformer
Transformer
Transformer本质上是一个Sequence-to-sequence模型,他与self-attention和BERF都有很大的关联。
Sequence-to-sequence (Seq2seq)
要了解Transfermer,首先需要对Seq2seq有一些了解。
Sequence-to-sequence字如其名,就是输入是一个sequence,输出也是一个sequence的模型。且输出sequence的长度是未知的,需要机器学习的。
举例来说,Seq2seq一个很好的应用就是 语音识别,输入跟输出的长度,当然是有一些关係,但是却没有绝对的关係,输出的长度由机器自己决定。
除此之外,Seq2seq还有很多应用场景。
Seq2seq的应用语音翻译
机器把他听到的英文的声音讯号翻译成中文文字。
TTS语音合成
我们如果是一个模型,输入语音 ,输出中文的文字,那就是语音识别,反过来 输入文字 输出声音讯号,就是语音合成。
Chatbot聊天机器人聊天机器人就是你对它说一句话,它要给你一个回应,输入输出都是文字,文字就是一个vector Sequence。
在 ...
Self-attention
Self-attention
针对输入是多个向量,且输入的向量数目可以改变的情况。
向量集作为输入
在介绍算法之前,我们先讨论一下有多个向量输入的情况处理。
文字处理假设我们今天要Network的输入是一个句子,每一个句子的长度都不一样,每个句子裡面词汇的数目都不一样
如果我们把一个句子裡面的每一个词汇,都描述成一个向量,那我们的Model的输入,就会是一个Vector Set,而且这个Vector Set的大小,每次都不一样,句子的长度不一样,那你的Vector Set的大小就不一样。
那怎麼把一个词汇表示成一个向量,最简单的做法是
One-Hot编码
你就开一个很长很长的向量,这个向量的长度跟世界上存在的词汇的数目是一样多的,每一个维度对应到一个词汇,Apple就是100,Bag就是010,Cat就是001,以此类推
但是这样子的表示方法有一个非常严重的问题,它假设所有的词汇彼此之间都是没有关係的,从这个向量裡面你看不到:Cat跟Dog都是动物所以他们比较接近,Cat跟Apple一个动物一个植物,所以他们比较不相像。这个向量裡面,没有任何语义的资讯
Word Embeddi ...
Optimization的一些优化方案
Optimization的一些优化方案
如果你发现你深的model,跟浅的model比起来,深的model明明弹性比较大,但loss却没有办法比浅的model压得更低,那就代表说你的optimization有问题,你的gradient descent不给力
Saddle Point 与 Local Minima
那么怎么把gradient descent做得更好,那为什么Optimization会失败呢?
随著你的参数不断的update,你的training的loss不会再下降,但是你对这个loss仍然不满意。如果通过与linear model 或者deep model进行对比,发现确实没有发挥出他完整的力量。
那我们可以怀疑现在走到了一个地方,这个地方参数对loss的微分為零。
但不是只有local minima的gradient是零,saddle point(鞍点)的gradient也为0。
这种gradient為零的点,统称為critical point。
卡在local minima,那可能就没有路可以走了,但卡在saddle point的话,saddle point ...
类神经网络的训练技巧
类神经网络的训练技巧一般指南
训练完的第一件事就是检测training data的loss。如果training data的loss都很大,显然就是在训练集上没有训练好,有两个可能:一是model bias,或者是optimization做得不好。
Model bias
model bias的意思是说,假设你的model太过简单。
大海裡面捞针,这个针指的是一个loss低的function,结果针根本就不在海裡。
重新设计一个model,给你的model更大的弹性
输入特征不够多,增加特征输入。如前一天的数据不够使,加上前两个月的数据。
特征够多了,但是模型太简单。换用deep learning 或者增加层数。
Optimization Issue
大海捞针,针确实在海裡,但是我们却没有办法把针捞起来。
training data的loss不够低的时候,到底是model bias,还是optimization的问题呢?
找不到一个loss低的function,到底是因為我们的model的弹性不够,我们的海裡面没有针
还是说,我们的model的弹性已经够了,只是optimiza ...
人工神经网络
人工神经网络
其本质是基于上世纪五十年代的理论,即模拟生物神经元的工作流程。
其发展是由于计算机性能的飞速提升。
感知器算法(PLA)
1957年的古老算法,只是简单的希望从一些输入输出对(X,Y)中通过学习算法获得权重W和b。
算法流程
随机选择W和b
去一个训练样本(X,y)
若 W^T X + b > 0 且 y = -1 , 则: w = W - X , b = b - 1
若 W^T X + b < 0 且 y = +1 , 则: w = W + X , b = b + 1
再取另一个(X,y),循环步骤2
直到所有输入输出对都不满足2中的两个条件,退出循环。
可以证明,在若干步后,通过改变W和b总会将两组数据给分开。
线性代数优化
核心就是用增广矩阵相乘 还是等于原来的 W^T X + b ,由此简化计算,只求增广W。
定义一个增广向量 X‘ ,
1. 若 y = -1,则 X' = [X,1]
2. 若 y = +1,则 X' = [X,-1]
定义一个增广 W’ = [w,b]
输入 X’
随机取 W‘
挑一个 X’ , ...
CNN卷积神经网络
CNN卷积神经网络
深度学习其实源于多层神经网络,最近几年的飞速发展让其逐渐演变出自己的特点。
以CNN卷积神经网络为代表。
常用数据集
MNIST 手写数字
ImageNet
自编码器
部分解决部分神经网络参数初始化的问题。
输入X,第一层的输出也为X,由此算出第一层的参数W,b。往后固定第一层参数不变,第二层输入为X1,假设第二层输出为X1,由此算出第二层的参数W,b。以此类推,求出每一层的参数。这样子算出来的参数保留了输入的特征,相当于是对特征在每一层进行特征压缩。
卷积神经网络CNN
由手工设计卷积核,到自动设计卷积核。
做各种变换时,本质是找一个卷积核对图像乘起来再加起来。
卷积神经网络中“卷积”,是为了提取图像的特征,其实只借鉴了“加权求和”的特点
CNN框架整体架构
大体包含两个部分,卷积层和全连接层。全连接层就是原来普通的多层神经网络,但是卷积层包含两个部分的嵌套(卷积、池化)。卷积是对元数据进行加权求和,池化是对卷积的结果进行特征选择,降低特征数量,并从而减少参数数量。
卷积核
通过设置一个卷积核区域,通常比输入空间小。
通过移动卷积核的位置,与特 ...
机器学习模型评价指标
机器学习模型评价指标混淆矩阵
实际\预测
正样本
负样本
正样本
True Positive (TP)
False Negative(FN)
负样本
False Positive(FP)
True Negative(TN)
true/false : 预测对否
Positive/Negative:样本正负情况
如:True Positive 猜对了,是正样本。True Negative 猜对了,是负样本。
对一个系统来说,若TP增加,则FP也增加。
对于混淆矩阵,我们有四个度量标准准确度(Accuracy) = (TP+TN) / (TP+TN+FN+TN)
猜对的次数占总的比例,适用: binary, multi-class
精度(precision, 或者PPV, positive predictive value) = TP / (TP + FP)
猜对正样本的占预正样本的比例,适用:二分类模型
召回(recall, 或者敏感度,sensitivity,真阳性率,TPR,True Positive Rate) = TP / (TP + FN)
猜 ...
SVM支持向量机
SVM支持向量机
SVM (Support Vector Machine)。通常在样本数很少的情况下,使用支持向量机得到的结果都是很不错的。
设计思路
我们选想办法在线性可分样本集上找一条直线划分样本集,再想办法推广到非线性可分样本集上。
硬间隔支持向量机
如何在线性可分样本集上划分样本集?
首先,如果是存在一条直线可以划分样本集,那么在空间中就存在无数条直线可以划分。
那么哪一条直线是最好的?(划分标准)
首先我们希望划分线,对误差数据有更强的容忍度,如图中,2号线所示:
那么我们如果定义这条线呢?
定义一个性能指标
在这个性能指标下,2号线的性能最好
首先我们定义一条线,做其两条平行线,使两条平行线各自刚好接触到样本点,且这条线更好处于两条平行线中间。我们的性能指标就是希望这两条平行线的距离尽可能的大。
其中我们定义:
间隔:两条平行线直接的距离
支持向量:将平行线插到的向量叫做支持向量 support vector
如何推导到这条线?(数学描述)定义
训练数据和标签:(x1,y1),(x2,y2),(x3,y3)…(xn, ...
机器学习入门导论
机器学习入门导论机器学习的分类按标签分类:
有监督学习:SVM,神经网络
无监督学习:聚类、EM、PCA
半监督学习
强化学习:不关注具体的标签,而是关注最后预测的结果,强调对结果的满足。
按标签的类别分类:
回归问题:标签为连续的值
分类问题:标签为离散的点
需要注意的是,两者并无大的区别,通常两者的算法可以通用。只是对最后标签的处理方法不同而已。
除了以上两大类,还有Structured Learning,让机器画一张图 写一篇文章,这种叫机器產生有结构的东西的问题。
课程内容概述
以红、白细胞图片的识别为例。
给定训练集
求对红白细胞图片的分类。
特征提取
特征提取是所有步骤中最关键的一步,好的特征决定了好的结果、但是由于特征提取并非一成不变而是与具体的问题息息相关。所以得具体问题具体分析。
根据观察、想象特征、筛选特征。
对特征提取结果进行分析,比对
面积、周长呈线性相关,所以我们只取其中一个即可。
圆形度,如图可见,圆形度对细胞的划分比较明显。
图像分析
机器学习的任务根据特征的分布,找到一条线,划分类别。
难点:
维度,通常特征的维度不止上述的2维,而是上 ...
Gossip协议理解
Gossip协议理解
Gossip protocol 也叫 Epidemic Protocol (流行病协议),实际上它还有很多别名,比如:“流言算法”、“疫情传播算法”等。
Gossip协议是基于六度分隔理论(Six Degrees of Separation)哲学的体现,简单的来说,一个人通过6个中间人可以认识世界任何人。
Gossip protocol 最早是在 1987 年发表在 ACM 上的论文 。主要用在分布式数据库系统中各个副本节点同步数据之用,这种场景的一个最大特点就是组成的网络的节点都是对等节点,是非结构化网络,这区别与之前介绍的用于结构化网络中的 DHT 算法 Kadmelia。
很多知名的 P2P 网络或区块链项目,比如 IPFS,Ethereum 等,都使用了 Kadmelia 算法,而Bitcoin 、Fabric则是使用了 Gossip 协议来传播交易和区块信息。
这里先简单介绍一下 Gossip 协议的执行过程:Gossip 过程是由种子节点发起,当一个种子节点有状态需要更新到网络中的其他节点时,它会随机的选择周围几个节点散播消息,收到消息的节点也会重 ...