产品经理也能动手实践的AI(七)- 正规化&深入卷积神经网络

正文共: 3002字 8图

预计阅读时间: 8分钟

产品经理也能动手实践的AI(七)- 正规化&深入卷积神经网络_第1张图片

好久没更新了,Lesson5是个坎,也不是里面内容有多难,可能是知识点比较杂乱,所以一直没有产出,今天把Lesson6看完了,视频1遍,练习一遍,文字一遍(Transcript),算是基本都理解了,所以上一课的内容之后更新吧。

1.概览

本节主要围绕两个例子:1.根据Rossmann商店运营数据预测未来销量 2.用宠物识别的例子讲解CNN原理

讲解了正则化 Regularization 的 dropout 和卷积神经网络 CNN

2.1核心概念

  1. 连续变量和非连续变量:很多看起来的连续变量作为类别效果更好,比如一周的第N天

  2. Dropout:一种Regularization方法,可以避免过度拟合,原理是类似于随机抽一部分老师来监考,防止内外勾结,通过P值来控制挑选的概率

  3. Batch Normalization:通过小批次的Normalization,加速训练,因为可以把问题简化到每个批次上

  4. Transform:对图片进行亮度、饱和度、灰度、扭曲、翻转等操作,从而提高训练效果,因为相当于多了N倍的训练图像

  5. 产品经理也能动手实践的AI(七)- 正规化&深入卷积神经网络_第2张图片
  6. 特征点热力图:让ML变得可以解释,通过热力图,显示机器是根据图像上的哪部分的特征点判断属于哪个类别,效果如下

产品经理也能动手实践的AI(七)- 正规化&深入卷积神经网络_第3张图片

2.2机器学习概念

  • Normalization:将数据转换到[0,1]区间,如下图公式,还有其他变种

  • Regularization:loss function的惩罚机制,防止overfit

  •   Weight Decay:L2 regularization 的升级版

  • Model 内部结构,一个基础的block,2d就是二阶向量

    • Conv2d

    • BatchNorm2d

    • ReLu

    • Conv2d

    • BatchNorm2d

  • Data argumentation:数据增强,通过transform把图片各种变形,以达到更好的训练效果

  • 产品经理也能动手实践的AI(七)- 正规化&深入卷积神经网络_第4张图片
  • Channel:用了多少个Kernel,就会产生多少channel,近似于feature,如图生成了16个channel,

  • Stride:步伐,为了降低内存占用,如果步伐为2,则每次和Kernel的运算会跳过一个,所以生成的tensor高宽会/2,channel会*2

  • Average pooling:相当于求纵向的平均值,比如最后生成了11*11*512的tensor,那就求11*11平面上每个点的纵向512个值的均值,这样得到的11*11的值就可以用于热力图的显示

  • 2.3 FastAI命令

  • add_datepart:可以将日期转化成每周的第N天,每月每年的第N天,是否是月初或月末等

  • label class (label_cls=FloatList):设置label值为float,因为int会被当成分类任务,本节课是要预测销量

  • procs=[FillMissing, Categorify, Normalize]:数据训练前的一次性处理,process设置的简写

  • data.one_item(x):创建一个mini-batch的数据

  • data.cuda():放到GPU上

  • 2.4 Pandas命令

  • train_df.head().T:可以转置表格数据

  • small_train_df.PromoInterval.cat.categories:查看类别

  • small_train_df['PromoInterval'].cat.codes[:5]:查看类别对应的编号,-1就是不存在的意思

  • 2.5 PyTorch命令

  • hook:可以调取训练过程的任意环节

  • hook.store():存下来

  • t[None]:维度+1

  • 3.1实例详细分析

    根据Rossmann商店数据,还有竞争对手数据,预测销量

    1. 数据有点老,所以专门有个data_clean的文件先把数据处理一遍,主要是把需要的数据提炼出来合成一张表

    2. 先小范围测试下数据

      1. 主要是区分类别变量和连续变量,会把类别变量都映射成数字

      2. 空数据用类别方式标注

      3. 数据归一化Normalization

    3. 在准备完整数据

    4. 然后用tabular_learner跑数据

    data = (TabularList.from_df(df, path=path, cat_names=cat_vars, cont_names=cont_vars, procs=procs,)                .split_by_idx(valid_idx)                .label_from_df(cols=dep_var, label_cls=FloatList, log=True)                .add_test(TabularList.from_df(test_df, path=path, cat_names=cat_vars, cont_names=cont_vars))                .databunch())

    learn = tabular_learner(data, layers=[1000,500], ps=[0.001,0.01], emb_drop=0.04,                        y_range=y_range, metrics=exp_rmspe)

    3.2实例详细分析

    宠物图片增强,找到cnn是通过哪部分的特征,识别了这张图,热力图

    1. 创建databunch

    2. 变形transform

    3. cnn训练模型

    4. 卷积内核

    5. 热力图

    6. grad-cam

    src = ImageList.from_folder(path).split_by_rand_pct(0.2,seed=2)def get_data(size, bs, padding_mode='reflection'):    return (src.label_from_re(r'([^/]+)_\d+.jpg$')           .transform(tfms, size=size, padding_mode=padding_mode)           .databunch(bs=bs).normalize(imagenet_stats))

    learn = cnn_learner(data,models.resnet34,metrics=error_rate,bn_final=True)

    def show_heatmap(hm):
    _,ax = plt.subplots() xb_im.show(ax) ax.imshow(hm, alpha=0.8, extent=(0,352,352,0), interpolation='bilinear', cmap='magma');show_heatmap(avg_acts)

    4.最后

    本课还讲了platform.ai和AI的伦理,platform.ai是一个快速训练未打标签的数据的网站,AI伦理讲的是很多性别偏见,以及过度满足人性的推荐系统,酿成的悲剧,号召从业者用技术将生活变得更好,而不是制造更多冲突。 

    你可能感兴趣的:(产品经理也能动手实践的AI(七)- 正规化&深入卷积神经网络)