1.1 课程介绍
问题的提出、数据、训练模型、部署模型、监控模型(迭代)
1.2 数据获取
常见的公开数据集(爬虫/收集)
MNIST:手写数字
ImageNet:来自搜索引擎的图片类型的数据集,百万级别,猫之类
AudioSet:来自YouTube的数据集,声音切片
Kinetics:来自YouTube的数据集,视频切片
KITTI:无人驾驶的数据集,sensor
Amazon Review:来自Amazon的评论
SQuAD:Wikipedia的问题和答案
LibriSpeech:1000h的有声读物
找数据集的方式
Paperwithcodes:来自论文
Kaggle:数据科学家提交的数据集
Google Dataset Search
工具包:TensorFlow、huggingface
会议/公司机器学习竞赛
Open Data on AWS
Data Lakes
数据融合
通过keys连接表
存在的问题:确定IDs、缺失的行、冗余的列、值的冲突
生成合成数据
GANs
数据增强(data augmentation)
1.3 网页数据抓取
爬虫:全部网页
数据抓取:某个特定的网页
网页爬虫工具
①使用没有头的浏览器 ②使用大量的IP(AWS、Azure、GCP开实例)
from selenium import webdriver
chrome_options = webdriver.Chromeoptions()
chrome_options.headless = True
chrome = webdriver.Chrome(
chrome_options = chrome_options)
page = chrome.get(url)
1.4 数据标注
半监督学习(semi-Supervised Learning SSL)
聚焦于只有少量标注数据、大量未标注数据的应用场景
通常会对数据分布有以下假设:
①连续性假设:有相同特征的实例更可能有相同的标签
②类假设:对于有内在类结构的数据,在同一类里的实例可能有相同的标签
③流型假设:数据真正的维度可能远小于输入的维度,可以通过降维降低复杂度
- 自学习(self-training)(SSL)
使用标注好的数据训练一个模型,使用训练好的模型进行数据标注,得到伪标注,只保留高置信的数据标注,将其加入标注数据中,继续训练模型,反复此步骤
众包(Label through Crowdsourcing)
eg: ImageNet
需要考虑的问题
①简化用户交互:设计简单的任务、清晰的指令、简便的用户接口
②费用:用active learning降低
③质量控制:把任务发给多人标注,投票制决定结果(只选择困难的或不确定的任务)
主动学习(Active learning):focus on same scenario as SSL but with human intervention
不确信的采样 把不确定的给标注工标注
Active leaning + Self-training
使用标注好的数据训练一个模型,使用训练好的模型进行数据标注,得到伪标注,保留高置信的数据标注,低置信的数据标注交给标注工标注,把标注好后的数据加入标注数据中,继续训练模型,反复此步骤
弱监督学习(Weak Supervision):半自动生成标签
数据编程data programming:用于分配标签的启发式工程