产品经理也能动手实践的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. Convolution & Kernel:类似于PS中的滤镜,通过一个N*N的kernel,将每个小块的图像重新加工成新图像上的点。最上面的这个3*3的就是Kernel,像一个过滤器,针对图像上的3*3的一个块,矩阵乘积后,生成新图像的一个点。http://setosa.io/ev/image-kernels产品经理也能动手实践的AI(七)- 正规化&深入卷积神经网络_第2张图片

  6. 特征点热力图:让ML变得可以解释,通过热力图,显示机器是根据图像上的哪部分的特征点判断属于哪个类别,效果如下

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

2.2机器学习概念

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

    640?wx_fmt=png

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

  •   Weight Decay:L2 regularization 的升级版

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

    • Conv2d

    • BatchNorm2d

    • ReLu

    • Conv2d

    • BatchNorm2d

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

  • 卷积:一个用RGB显示的图片,会存储为一个3阶张量,于是也需要把Kernel变为一个3阶张量产品经理也能动手实践的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 (一)|(二)|(三)|(四)|(五)

人人都能搞懂的AI (一)|(二)|(三)|(四)

640?wx_fmt=png

如果你喜欢思考,别忘记关注+置顶公众号哦!

我是Hawk,8年产品经理,目前专注AI机器学习。

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

好看的人都点了在看 产品经理也能动手实践的AI(七)- 正规化&深入卷积神经网络_第6张图片

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