李沐-斯坦福《实用机器学习》-01章
作者:互联网
1.课程介绍
视频链接
首先介绍了机器学习作为技术本身,
它的大致构成以及所面临的一些挑战.
然后讲述学习机器学习,你会变成什么样的角色.
最后讲述了本课程中会涉及到哪些主题.
举例:房价预测问题
工业界中应用机器学习的基本流程
机器学习的应用是一个循环过程.
他从问题表述开始到收集数据建立模型并将模型上线.
上线之后要对模型不停的监测并重复更新模型.
问题—收集处理数据—训练调参—部署到线上/观测模型调整
挑战:
- Problem formulation
首先是将实际问题换一种描述方式,
表述成机器学习可以解答的数学问题. (Problem formulation)
比如房价预测就是一个回归(regression)问题. - Data
缺少高质量的数据/侵犯隐私 - Train Models
模型越来越复杂 - Deploy models
模型完成之后就开始部署上线( Deploy models)
部署成本太高,要求太高(速度) - Monitor
模型并不能一劳永逸, 你需要不停的监控 (Monitor)
比如查看模型是否符合实际情况?
是否需要增加数据?
或者数据是否已经发生了重大的变化,需要调整模型?
在监测过程中, 从收集数据开始的循环可能要重复多次
工业界中机器学习与人
领域专家: 知晓产品的需求,知道模型的价值, 以及在哪用最好.
数据科学家: 可以理解为全栈程序员, 需要负责从处理数据到模型上线的全部过程
机器学习专家: 专注于模型的改进
软件开发工程师(SDE): 就是码农, 他们需要在软件代码运行维护方面出力.
个人成长
领域专家或者软件开发工程师可以慢慢的发展,成为数据科学家.
数据科学家也可以进一步提升自己的技能,变成机器学习这一领域的专家
这门课需要的基础是一些基本的统计知识,一些基础的编程
数据科学家把时间花在哪儿?时间的大头花在数据处理上
课程主题
1.数据:需要学会如何处理实际的数据
2.训练
3.部署
4.监测
2.数据的获取
这一讲主要讲在没有现成的数据情况下,
如何去找到数据集,并对各种现有的数据集有个大致的概念
以及实在找不到数据集的时候, 该用什么方法来生成数据.
什么时候需要考虑数据的获取?
常见的数据集
-维基百科中关于数据集的列表 https://en.wikipedia.org/wiki/List_of_datasets_for_machine-learning_research 其中收录了一系列的数据集
- MNIST: 手写数字数据集 http://yann.lecun.com/exdb/mnist/
- imageNet : 大规模图片数据集 https://www.image-net.org/
- AudioSet: 油管的声音片段数据 https://research.google.com/audioset/
- Kinetic : 油管人类动作视频片段 https://deepmind.com/research/open-source/kinetics
- KITTI : 无人驾驶数据集 http://www.cvlibs.net/datasets/kitti/
- Amazon Review: 亚马逊用户评价数据 https://s3.amazonaws.com/amazon-reviews-pds/readme.html
- SQuAD: 维基百科问答 https://rajpurkar.github.io/SQuAD-explorer/
- LibriSpeech : 有声书数据集 https://www.tensorflow.org/datasets/catalog/librispeech
去哪找数据集
- Paperwithcodes 论文相关数据集 https://paperswithcode.com/
- 提供了学术论文和相关的数据,并且给出了这个论文在数据集上面的运行表现
- Kaggle https://www.kaggle.com/
- 除了竞赛数据集以外,很多用户也上传数据集, 这些用户上传的数据集质量鱼龙混杂.
- google 数据集搜索. https://datasetsearch.research.google.com/
- 这是谷歌的一个搜索入口. 可以搜到其他各种来源的数据.
- 开源工具自带的数据集
- 比如tensow flow深度学习软件, 往往会自带一些数据集
- 各种数据比赛的竞赛数据 往往质量比较高.
- 保存在云盘上的数据集,比如说 open data on AWS
- 公司本身的数据仓库或者数据湖(data lakes)
数据集的分类和比较
数据集和数据集是不一样的, 学术界的数据集(academic datasets)和工业界的原始数据(raw data)是两个极端
- 学术界的数据集是精心挑选且人工处理过的, 数据干净, 拿来就用,方便在上面测试算法.
是这些数据集不仅数量少, 往往和真实数据差别很大
- 比如 UCL 数据集 https://archive.ics.uci.edu/ml/datasets.php
- 工业界的原始数据是最多样, 而且是真实的. 但往往需要消耗非常多的人力才能让这个数据变得"好用"
- 各种数据比赛的竞赛数据介于工业界和学术界之间.
数据融合
-数据融合就是把多个表合并(join)成一个表.
- 数据往往被存放在多个位置, 用的时候需要把他们合起来
- 比如说很多数据, 分属于不同的部门,或者说不同数据更新的频率不同, 分开存储会灵活.
- 为了方便数据融合, 你的数据要有一个 不重复的主键(key)
- 主键(key)往往表现为数据表的一列,往往是某种ID
- 在数据融合的时候,你可能会碰到重复的主键或者数据缺失, 或者不同表上记录相互冲突
生成数据
找不到数据集的时候, 尝试生成数据, 就是自己制造一批数据
- GAN 生成图像
- 数据增强 Data augmentation
- 比如说以一张图片为蓝本, 生成一系列相似,但又有差别的图片
- 另一个例子, 使用翻译引擎,来回翻译一段话
小结
- 找数据很麻烦,而且还要区分这个数据是否合用.
- 学术界使用的数据和工业界使用的数据差异很大
- 很多时候,多个数据表要融合成一张表
- 所以生成数据现在越来越常见, 尤其是数据增强方法
3.网页数据的抓取
以前学过,略
4.数据的标准提升标注是这个小节的关注的重点
足够的标注 —> 半监督模型
足够的预算 —> 找人给你标识
都没有? —> 弱监督学习
半监督学习
解决的问题:有一小部分数据有标注,有很多很多数据是没有标注(如何利用没有标注的数据)
对于是否有标注的数据做了以下假设:
连续性:样本之间的特征是相似的话,则这两个样本很有可能是有相同的标注的
类的聚类假设:数据是按类来分的;数据内在如有好一点的聚类的结构,一个类里面也可能有相同 的标注
流型(manifold)假设:虽然我们收集的数据维度比较高,但是数据有可能是在低维的流型上分布的(可通过降维得到干净点的数据 )
自学习
先用标注好的数据训练一个模型
用训练好的模型对未标注的数据进行预测(得到伪标注数据)
将伪标注数据与已标好数据合并
在合并的数据的基础上再训练模型
不断进行上述过程
P.S. 伪标注数据可能噪音比较大,故将模型比较确信的伪标注数据保留下来。(怎么样选择置信样本)这里的模型是用来标记数据的,不用考虑该模型的成本,这个模型不会上线
找人来标数据
众包
挑战:
1.需要设计相对简单的任务,给他们清晰的指示,用起来比较简单(难度与可以做的人数呈反比)
2.成本:按小时来算,任务所花时间 * 任务数 * 标注工的时间成本 = 成本(预算够可以找专业公司)
3.质量变化可能会比较大
降低成本
主动学习:训练模型预测,将最不确信的数据进行标注/用多个模型来预测哪个样本比较难
主动学习与自学习结合
确信的数据与原数据合并,不确信的发给标注工
数据的质量控制
最简单的做法是,每个任务发给多个标注工,汇总之后,投票判断(贵)
可以把难确信的数据发给多个人(多做几次)
提前先出些题目,判断标注工靠不靠谱
弱监督学习
半自动的生成变化:比人标注差,但也可以用来编程(对数据编程,带引导性的,写相应的规则)
总结
标签:01,com,模型,斯坦福,学习,https,李沐,数据,标注 来源: https://blog.csdn.net/weixin_43996337/article/details/121605471