首页 > 技术文章 > 深度学习杂谈

dzqdzq 2020-11-26 22:17 原文

经过一段时间的学习,谈一下对深度学习的理解, 还望各位大佬,不喜随便喷!

 

搞深度学习,内心一万个MMP, 各种框架,各种库五花八门,参数都不一样。 经过实际开发的一些经验,信sklearn得永生,可以快速建模,实现自己想要的。

深度学习里一切都是以模型为基础的,线性(直线)模型,非线性(曲线)模型,  树形模型。 每种模型细分回归模型和分类模型。

 

回归模型就是根据输入和输出找出一种关系,  类似 (x1,x2,x3,x4, x5)约等于 y6。  训练的目的就是找出一种输入数据到目标值间的关系。 

如果是线性关系和曲线关系,一定要对输入数据和输出数据进行处理, 处理异常值(去噪), 归一化或者标准化。  异常值去燥的目的防止一颗老鼠屎坏了一锅粥。 归一化的目的是让其不同特征用一同一种单位来衡量。

比如成绩预测,里面有学习多长时间,家庭地址,爸妈是否是老师等特征的单位不统一, 标准化和归一化就是为了统一单位,方便计算。

 

分类模型就是根据一些输入特征判定属于某个标记(标签)。   类似 (x1,x2,x3,x4, x5 )属于 y6。 训练的目的就是找出输入数据到输出标签间的映射(或者说关联性又或者说组合性)

比如学生考分评级, 90分以上优秀, 80分以上良好,60分以上合格, 低于60分不及格。   输入分数,输出评级。 从分类模型角度看属于多分类

还是这个分数例子,60以上为合格,60分以下为不及格, 一个输入,输出只有两种可能(合格,和不及格)。从分类模型角度看属于二分类

 

========================华丽分割线=================================

既然模型这么重要, 那么如何选择模型就是重中之中了?

第一步先确定是分类还是回归。

这个确定比较简单, 问自己想要的是什么样的结果。 

比如数字手写识别,给一张图片给模型,给我一个数字(0-9)。 这个明显就是分类问题。

比如动物识别,猫狗兔子等这个明显就是分类问题。

比如植物识别,桃花,樱花等这个明显就是分类问题。

所有识别问题都是分类问题。

如果要的是给定一些输入,判断输出值属于什么的东西, 就是分类问题。

如果要的是给定一些输入,然后输出值,这个值是多少就是多少     就是回归问题。

典型的预测问题就是回归问题。 比如股价预测, 未来涨多少,跌多少。 房价预测,给一些建筑数据,城市数据,预测房子价格

另外要强调的是股价的趋势预测属于分类问题, 未来多长时间是涨还是跌。 

从股价预测例子说明分类问题包含回归问题。  比如先回归处理计算未来涨跌多少, 然后再根据涨跌多少, 预测是涨还是跌。 涨的越多,说明属于涨趋势越强烈。

当然趋势预测也可以完全不用先回归。 直接用分类模型处理。

 

第二步选择什么模型? 线性,非线性, 树形(lightgbm, xgboost)

首先如果解决实际生活中的问题,纯线性和纯非线性基本上是不太可能出现, 如果出现了,直接用精确的算法不香么?   

输入和输出之间的关系很单纯,不是不可以用模型,而是这种精确度不高。 这种一般用来学习 深度学习相关知识。什么线性层,什么全连接层, 什么反向传播,什么随机梯度下降,什么激活函数,什么损失函数等等。

深度学习肯定是解决复杂问题去的,基本上出现的是有的特征和结果线性相关,有的非线性相关。  这种一般卷积网络模型,循环神经网络模型就OK了。

注意这里一定要是特征和结果直接的关系。 特征和特征间没有互斥或者组合特征。 如果有最好用树形模型。 

 

说真的,自己研究太他妈费老细胞了, 搞清楚研究特征和结果间的关系,还不如多写几行代码, 把两个模型跑一跑, 看哪个模型的结果好,就用哪个。  

 

第三步:

模型调优工具

from sklearn.model_selection import GridSearchCV, 
ParameterGrid, 
RandomizedSearchCV

 

推荐阅读