一. 经典机器学习算法(基于数学或者统计学,具有很强的可解释性)
1. KNN分类(K-Nearest Neighbors)
判断一个新数据的类别,就看他的邻居是谁。假设分类一个未知的水果,由尺寸和颜色找到其在坐标轴之间的位置。
计算距离:a=直线距离(欧式距离),x与y的绝对值相加=曼哈顿距离
缺点:先计算新样本与所有样本的距离,由近及远排序,再确定K(奇数)进行分类。若样本数量则庞大,则计算量大且效率低。
2. 决策树
叶子结点=样本分类结果,非叶子结点=样本特征。关键在于谁做整棵树的根节点,接下来的子孙结点又是什么。为了构建决策树,人们找到了一个衡量标准S,在热力学的代表混乱度而在决策树中代表样本种类的丰富度。
构造基本思路:随着深度增加,令S都快速降低。S降低的越快则代表决策树分类效率越高。
缺点:任何样本都是有个例的,一棵树不可能将一个新样本完美的分类。如果可以那一定是过拟合的。
措施:剪枝。分为预剪和后剪。预剪则是在实验开始前规定前提条件,分类到达某一深度则停止训练。后箭则是先找到树,再根据一定条件限制叶子结点个数。
3. 朴素贝叶斯
之所以叫做朴素贝叶斯,是基于样本特征X来预测样本属于的类别Y(不同的交通工具)。因为假设X的特征是相互独立的(这种假设太过于简单粗暴,关键词出现的先后顺序并不影响计算结果,哪怕两句话意思天差地别)。 根据贝叶斯定理,可以得到一个条件概率加上全概率公式。最后选择正确度最高的类别作为分类的结果。
二. 经典深度学习算法(是机器学习的子集)
1. 反向传播
也叫梯度回传:(计算梯度)通过反向传播算法,计算损失函数相对于模型参数的梯度。这一步是利用链式法则逐层计算梯度,涉及到每一层的参数(如权重和偏置)。
见下文三.3优化详例
2. 梯度下降
(更新参数)使用计算得到的梯度和优化算法(如随机梯度下降SGD、Adam等)更新模型的参数。这个过程会调整参数,以减少损失函数的值。
综上所述,前向过程之后是进行梯度回传,计算出梯度之后,再进行梯度下降来更新模型参数。
见下文三.3优化详例
3. 激活函数
即使多重神经元串联,最后输入输出的数据化简的依然是线性组合,所以哪怕再多的神经元连接,也与单个神经元无异,纯粹的线性组合不能解决更为复杂的问题。激活函数(能求导)的作用就是令神经网络可以逼近任何非线性函数以满足主体的需要,这使得神经网络应用到更多非线性模型中。最简的例子,一条直线永远也无法与一条抛物线拟合,但是添加的激活函数之后,可以把线性函数掰弯变成非线性的预测函数。
如何用:括号内的加权值经过一个非线性的变化sigmoid() 或者 relu()。
三. 深度学习的任务
// 深度学习就是构建一个很庞大的深度神经网络(Deep neural network),相当于找一个合适的函数F(x)=y。
常见的神经网络常见输入有三种形式:向量、矩阵/张量(照片都是红绿蓝三基色的矩阵)、序列
例如:F(身高,体重,财产)=寿命,F(一张脸照片)= 这个人的名字。F(一句描述)= 图片。
常见的神经网络常见输出有三种形式:回归任务(填空题,给确定的答案,根据昨天气温推测今天)、分类任务(选择题,阿尔法狗)、生成任务(结构化简答题,chatgpt生成一张完整图片)
输入形式 | 向量 | 矩阵 | 序列 |
输出形式 | 回归 | 分类 | 结构化输出 |
往年3月水位推测明年3月水位 | 向量——回归 |
根据视频生成字幕 | 序列——结构化输出 |
编程软件自动填充代码 | 序列——结构化输出 |
判断图片人物是谁 | 矩阵——分类 |
判断两段动漫视频是否为一部 | 序列——分类 |
判断声优是否为同一个人 | 序列——分类 |
判断淘宝商品配图和标题是否一致 | 序列(一段文字加图片=多模态)——分类 |
由蛋白质名字生成其结构 | 序列——结构化输出 |
摄像头的画面标识出人、路、车(语义分割) | 序列——结构化输出 |
总结:分类/回归是结构化学习的基础,分类时用数字表示其类别,有时候需要多模态的数据,比如图片,文字,声音。
四. 如何开始深度学习(即怎么做神经网络,三步走)
1. 定义一个函数F(model)
最简单的深度学习的任务:已知前6s汽车的速度,求第七秒。
解:定义线性模型(Linear Model) Y(预测值)=W(weight权重)X+B(bias偏差),W与B未知。
用数学模拟,模拟和现实即存在偏差,引出loss函数。
2. 定义合适的损失函数loss(衡量自定义的F与实际情况的差异)
Loss function of unknown para(未知参数的函数)
先随机初始化W与B
L (W,B) = | Y - Y |(均绝对值误差,平方则为均方误差)= | WX+B - Y | 。W与B取不同的值则loss也不同。loss的值即可判断W与B的选择的准确与否。
得出loss=4.48,得出W、B取值不太准确的结论。有了loss函数,就可以知道模型和实际的差距,就可以向实际情况靠拢,又引出模型优化概念。
3. 根据损失,对模型进行优化(Optimization梯度下降优化法)
优化公式:(令Loss值为最小时,自变量w与b的值是多少)
过程:引入超参数学习率概念learning rate,值不能太大或者太小,影响每次迭代的跨度步长,可能会导致L的取值直接跨过最小值点。
总结:
注意:梯度回传是一种技术,通过链式法则将损失函数的梯度从输出层传播到输入层,为梯度下降算法提供梯度信息,而梯度下降是为了更新参数。
五. 试玩神经网络
A Neural Network Playground (tensorflow.org)