04如何让机器学习模型更加强大
目录
如何让模型更加强大
概念术语
-
规则法
-
判例法
-
线性与非线性
-
正则化
-
svm
-
核函数
-
基尼系数
-
LR(逻辑回归,广义上的线性回归)
-
阶跃函数
线性模型
-
如何确认美女
人:光学信号
机器:0、1矩阵
线性模型转换到高级语义:是个美女
-
非线性理解
线性关系:吸烟越多,伤害1比1的越大
非线性关系:吸烟越多,伤害的
加速度
变大组合关系:抽烟和酗酒的并发症
用线性关系模型去描述拟合非线性关系,相当于缘木求鱼
-
监督学习
从假设空间中确定具体函数(如果假设空间错了,找到合适函数也是最接近实际情况的错误的函数)
-
非线性变化
使用表达能力更强的数学函数进行模拟
-
多项式
非线性变换
分类可以如何做
-
规则法
感知机与逻辑回归
机器从训练数据中学习,就是学习规则,通过规则去预测未知数据
大陆法系,通过很多实际案例,总结出法律条文。新增的样本,需要重新训练,也就是需要时时训练,才能保证规则保持最新。
-
判例法(检索模型)
最近邻模型不同于规则法,没有明确的规则,参考与新例相近的历史案例得出判决
海洋法系,很重要在于参考历史上的案例。
两种方法各有千秋。
什么样边界是好的
-
存在多个可以拟合训练数据的分类边界
分类边界上的样本数据是波动,所以边界上的样本数据离边界越远,对误差的波动容忍度更好,也就是说边界越宽越好
-
新的优化目标
在错误较少的情况下,追求更宽的分类边界
-
svm分类模型
Support Vector
优化:更宽的分类界面,减少假设空间,也就是在减小空间模型
约束:分类错误较少
较少模型复杂度 = 追求更宽的分类界面
非线性关系如何解决
-
位置穿越
二维空间,线性不可分:分类直线;三维空间,线性可分:分类界面
世界变现的很复杂,是因为没有从合适的角度去观察它。
模型效果不好,可能是因为观察维度不够?考虑转换到高维空间观察。
-
实现方案
原非线性空间X(x1,x2),z1=x1(2),z2=x2(2),转换到新的线性空间Z(z1,z2)
通过一个核函数=》映射=》线性求解=》反映射,模型能力增强。将非线性关系变换为线性关系。
-
非线性变换
通过核函数,重新构造空间
-
常见的核函数
核函数:是一种表达框架,常用高斯核表达丰富的关系可能
核函数:模型输出是参数和特征的函数,参数是训练数据的函数。比如高斯核(正态分布)。
线性核函数、多项式核函数、高斯核函数(正态分布)
-
核函数
模型输出是参数和特征的函数,参数是训练数据的函数
-
回归
原空间 映射到 新空间 线性求解后,回归到原空间
-
低纬到高纬
增强模型能力:高纬空间的线性模型在原空间具备非线性能力
高维转变为低维的场景:样本少,维度多;存在太多无效维度(对于结果无效或多于的维度)
-
高纬到低纬
- 样本量过少时,过多的特征会加剧过拟合
- 维度爆炸
- 性能的考虑
案例:PCA说明高纬度到低纬度的本质
模型组合和树形模型
模型组合的好处
组合:比如横线模型与竖线模型,投票组合成折线模型
- 更强大更准确的表示,更小的bias(偏差)
- 更稳健的结果,更小的variance(方差)
模型组合设计
-
原理:投票
选出优秀的代表,代表尽量优秀,背景与能力尽量不一样。
由于优秀程度的存在,通过加权方式,组织代表进行投票。
将投票数据进行非线性(比如:决策树)的组合。
每个投票人尽量的优秀尽量不同的背景,每次投票得到的决策方向都是对的概率更大。(/马哲@认识论,民主集中制/)
-
最可怕的模型
准确率50%。如果你的模型是10%的准确率,我们也可以说是还不错,不是也可以反过来用,就是90%的准确率了。(/马哲@物极必反/)
-
如何得到一堆不同的小模型
- 不同模型算法:LR、SVM、DNN等
- 不同数据样本
- 不同的特征选择
- 不同样本构成(bagging、boosting、spliting)
- bagging思路
- 将样本分成N分
- 有放回的抽样
- boosting思路
- 追求差异最大化(背景差异最大化)
- 专注前一个模型中没有分对的样本(弥补前一个模型)
- spliting思路
- 追求差异最大化,追求模型的纯度
- 场景情况类似的样本放在一起训练,训练一个模型
- 衡量纯度:分类问题:基尼系数;回归问题:均方误差
- bagging思路
-
如何组合这些模型,让预测更有效
-
非线性组合:决策树
迭代递归、分裂目标(2分裂、纯粹)
叶子点是非常纯粹的样本集合,是一个简单的小模型。
最简机器学习工具:LR、决策树、深度学习
决策树更多的价值在于协助人解读与分析问题,而不是真的用于解决问题。
-
更多组合
线性模型+bagging+平均加和 = Bagging
线性模型+boosting+权重加和 = Adaboost
线性模型+Spliting+条件组合 = 决策树
决策树+bagging+平均加和 = 随机森林
决策树+boosting+权重加和 = GBDT
只要了解这些模型的来龙去脉,只要应用即可。
-
神经网络与深度学习
之前介绍的都是传统的机器学习过程
神经网络
假设
模拟人脑,可以放大假设空间
一种可以模拟任何表示的函数
神经元结构:非常多触角可以接受外部信号,神经元内部信息处理,再通过尾巴传出。
非线性变换支持更好更丰富的拟合能力
神经网络的本质:多层嵌套的大公式f(f(f(f(…)…)…)…)
目标
与传统网络的目标相同
前向计算、后向学习
loss
优化
-
导数链式法则
-
前向计算
第一层为输入特征,从前到后
递推计算:加和与非线性变换
-
后向学习
最后一层直接求导,其余层往前迭代计算求导
递归计算:链式法则,对当前层的求导可拆分成三层
导数 = 后一层导数(递归)* 权重加和函数的导数(=参数)*非线性变换函数的导数(因情况而定)
非线性函数的设计
线性表达能力是苍白的。线性函数的组合仍然还是线性的。
非线性的必要
-
阶跃函数
部分不连续,求导不方便
-
Sigmoid函数
-
Tanh
-
Relu
- 饱和值缩放
- 导数缩放
- Relu:训练步长不宜过大,容易陷入网络瘫痪状态
网络结构设计
让网络更深还是更宽?
异或函数的设计:至少要两层输入输出
基本网络结构:输入层、隐含层、输出层
-
输入层
输入层要匹配原始输入的个数,比如图片的像素
-
隐含层
隐含层特征提取的过程,像素的边界等
-
输出层
体现最后高层特征和真实任务之间的关系(判断、分类、概率)
例子:人脸识别:像素=》边界=》轮廓=》人脸
深度学习
DL:deep learning
为什么是deep而不是wide?
wide的设计是参数相加的关系
deep的设计是参数相乘的关系
相乘的能力比相加的能力更强大
所以我们考虑更深的网络,其支持表示的能力更强
-
深度学习的优势
-
一种几乎可以拟合任何关系的假设(如从图像到语义)
-
端到端的解决方案,较少领域知识的依赖
比如图片分类,之前只有长期研究图片领域的研究人员才能有所建树,但有了深度学习后,只要有大量的数据及模型,就可以完成图片分类等类似的问题,普通的工程师不需要再去关心图片领域的专业知识
-
-
深度学习优势的前提
- 大数据是可行的前提,否则不准确不稳定,也容易过拟合
- 依靠优化算法和硬件的成熟,比如GPU
-
深度学习缺点
-
不可解释
中医是很多经验的总结,但他的理论体系没有像西医那么的完备。
没有理论可以证明哪个模型是最优的模型,大家都是实践去证明自己的模型是更优的
-
过于依赖数据,需要大量的标记数据
-
如何解决深度学习的计算难题
反向传播计算量过大
串行计算导致低效
Auto-encoder:预训练
更压缩=更本质(/马哲@客观、本质/)
表示学习
计算机理解世界的方式:向量
迁移学习:将有大量数据的任务1 迁移到 无数据的任务2
比如识别图片中的猫
-
Topic Model
词语与文章的领域分类
-
Word Embedding
判别一句话是否通顺(一个词在某个语境中出现的频率)
同位词:医生和护士,中国和美国,奔驰与宝马
-
Pair-Wise Ranking
基于查询词和标题的相关度,对多个标题进行排序
高层次的语义相关:
-
知识图谱
实体与实体之间的关系
-
产出表示特征的方法
小结
-
核函数变换
通过非线性函数变换到高维空间解决
高斯函数
-
模型融合
董事会决策投票原理
决策树
-
神经网络
假设框架
目标
优化
深度学习而不是宽度学习
表示学习
模型可以是业务优化到极致,但不会改革模型,改革需要人的设计及人对问题的进一步深度认识。
最简机器学习工具包:LR、决策树、深度学习
决策树更多的是去分析数据,认识问题,而不是去建设模型或解决问题
毕老师,更多的是分享机器学习的认知、思想,而不是分享具体的模型算法知识,这些认知和思想更像是大楼的基石和架构,只有基石和架构牢固,大楼的建造更快速更稳。
建议视频:https://aistudio.baidu.com/aistudio/education/lessonvideo/287505