12_19《深度学习500问》训练部署

第十二章 网络搭建及训练

框架对比:Tensorflow VS Pytorch VS Caffe

第十三章 优化算法

没有免费午餐定理(No Free Lunch,简称NFL):

  • 在所有可能的问题上,没有一个算法的平均性能可以超过任何其他算法
  • 没有“免费的午餐”,不可能有一个万能的算法可以在所有问题上都表现最好
  • 优化算法本质:寻找和探索更符合数据集和问题的算法,数据集是算法的驱动力

第十四章 超参数调整

超参数的重要性顺序:

  • 第一梯度:学习速率、损失函数上的可调参数
  • 第二梯度:batch_size(4~1024)、动量优化器的动量参数(0.9)
  • 第三梯度(不是不重要,而是不建议过多尝试):Adam 优化器的普通参数、权重衰减系数(0.0005)、Dropout(0.2~0.5)和网络参数(奇数卷积核 1/3/5/7)

奇数卷积核的好处:

  • 保证像素点中心位置,避免位置信息偏移
  • 填充边缘时能保证两边都能填充,原矩阵依然对称

第十五章 GPU和框架选型

内容受到时效性限制,部分内容存在缺失(略)

第十六章 自然语言处理

NLP 发展史简述(略),其他内容存在缺失

第十七章 模型压缩及移动端部署

前端压缩 VS 后端压缩

对比项目 前端压缩 后端压缩
含义 不会改变原始网络结构的压缩技术 会大程度上改变原始网络结构的压缩技术
主要方法 知识蒸馏、紧凑的模型结构设计、滤波器层面的剪枝 低秩近似、未加限制的剪枝、参数量化、二值网络
实现难度 较简单 较难
是否可逆 可逆 不可逆
成熟应用 剪枝 低秩近似、参数量化
待发展应用 知识蒸馏 二值网络

剪枝的颗粒度划分(从粗到细,图源

TensorRT:NVIDIA推出的面向GPU应用部署的深度学习优化加速工具

影响神经网络速度的4个因素:

  1. FLOPs(FLOPs就是网络执行了多少multiply-adds操作)
  2. MAC(内存访问成本)
  3. 并行度(如果网络并行度高,速度明显提升)
  4. 计算平台(GPU,ARM)

常见的轻量级网络:

  • SqueezeNet 在保证精度不损失的同时,将原始AlexNet从 240M 压缩至 4.8M
  • MobileNet 使用深度可分离卷积(准确率降低1%,但是参数量减少了6/7)
  • MobileNet-v2、Xception、ShuffleNet-v1、ShuffleNet-v2

移动端开源框架(好多互联网烂尾楼):

  • NCNN:为手机端极致优化的高性能神经网络前向计算框架(腾讯)
  • QNNPACK:量化神经网络包(Facebook,已停止维护)
  • Prestissimo:移动端的轻量级高性能神经网络前向计算框架(已停止维护)
  • MDL:免费开源的移动深度学习框架(百度,已停止维护)
  • Paddle-Lite:飞桨高性能深度学习端侧推理引擎(百度)
  • MACE:移动端深度学习前向预测框架(小米,已停更1年)
  • FeatherCNN:基于 ARM 架构的高效 CNN 推理库(腾讯,已停止维护)
  • TensorFlow Lite:TensorFlow Mobile 的一个延伸版本(谷歌,链接已失效)
  • PocketFlow:面向移动端AI的自动模型压缩框架(腾讯,已停止维护)

第十八章 后端架构选型、离线及实时计算

深度学习分布式计算框架:

  • Paddle:百度开源的一个深度学习平台
  • deeplearning4j:基于Java语言的神经网络工具包,可以构建、定型和部署神经网络(与Hadoop和Spark集成,支持分布式CPU和GPU)
  • Mahout:基于Hadoop的机器学习和数据挖掘的一个分布式框架
  • Spark MLllib、Ray、Spark Streaming、Horovod、BigDL、Petastorm、TensorFlowOnSpark

实时流计算;离线计算;其他内容存在缺失(略)

第十九章 软件(算法)专利申请及权利保护

一般来说,有对方法以及使用步骤进行保护的软件专利以及对代码进行保护的软件著作权,但是少数情况下,也可以对自己的软件界面进行外观专利的保护(中国范围内)

根据专利法第二条的规定,专利法的保护客体为

  1. 对产品、方法或者其改进所提出的新的技术方案 (发明)
  2. 对产品的形状、构造或者其结合所提出的适于实用的新的技术方案 (实用新型)
  3. 智力活动的规则和方法不属于可授予专利权的客体范围(专利法第二十五条)

智力活动的规则和方法是指导人们进行思维、表述、判断和记忆的规则和方法。智力活动在计算机领域常指的就是算法,例如红黑树算法、蚁群算法等;或者在论文中常出现的数学公式

软件专利(发明专利)的申请流程:

  • 专利申请(中国专利电子申请网
  • 国知局进行受理回复
  • 初审(会有补正意见通知书在这期间寄出)
  • 公布(会有审查意见通知书或者补正意见通知书在这期间寄出)
  • 实质审查请求(会有审查意见通知书或者补正意见通知书在这期间寄出)
  • 实质审查(会有审查意见通知书或者补正意见通知书在这期间寄出)
  • 授权

年收入为五万以下,或者企业年收入一百万以下,可以在专利事务服务系统申请费减备案(可以减免大部分的专利申请费用)

如何保护自己的代码:

  • 申请软件著作权,可以用来保护实现某个软件/系统的部分代码
  • 已经开源的算法代码,需要采取必要的源代码商业授权许可证,例如 GPLv2.0
  • 商业价值高的代码,建议先进行软著申请,在考虑许可证开源
  • 原则上,不推荐对仅仅实现了一个算法的代码进行软著的申请

软件著作权的申请流程为:

  • 申报流程著作权申请(中国版权保护中心
  • 查看著作权登记注意事项(软件登记指南
  • 整理、提交材料至软件协会(所需文件
  • 版权中心反馈受理通知书(网上公布,此时可申请软件产品登记);
  • 版权中心发放著作权证书(网上公布);
  • 企业(个人)到软件协会领取证书。

往年同期文章