最近正式开始学习深度学习了,本节来记录一下深度学习的应用和发展。
一、软件编程or数据编程
我们常用的计算机程序或Web系统(如ERP,CRM)基本都是软件开发人员用开发语言(如C,Java)编写的,这个过程叫作软件编程。
比如,现在开发人员要编写一个程序来管理网上商城。 开发人员可能提出如下一个解决方案: 首先,用户通过Web浏览器(或移动应用程序)与应用程序进行交互; 紧接着,应用程序与数据库引擎进行交互,以保存交易历史记录并跟踪每个用户的动态; 其中,这个应用程序的核心——“业务逻辑”,详细说明了应用程序在各种情况下进行的操作。
机器学习(machine learning,ML)是一种从经验中学习的技术。 通常采用观测数据或与环境交互的形式来积累更多的经验,其性能也会逐步提高。而深度学习(deep learning,DL)属于机器学习,一般指采用了神经网络的机器学习模型。深度学习的关键就是模型训练,包括以下四个步骤:
-
从一个随机初始化参数的模型开始,这个模型基本没有“智能”;
-
获取一些数据样本(例如,图片及其分类标签);
-
调整参数,使模型在这些样本中表现得更好;
-
重复第(2)步和第(3)步,直到模型在任务中的表现令人满意。
我们不用软件编程实现软件对图片种类的识别,例如:我们不会编写一个计算机程序,这个程序的输入是一个动物的图片,输出是这个动物的分类。(可以想象一下这个程序如何编写)。
我们编写了一个“学习”程序。 如果用一个巨大的带标签的数据集,它很可能可以“学习”图片的种类。 这种“通过用数据集来确定程序行为”的方法可以被看作用数据编程(programming with data)。比如,我们可以通过向机器学习系统,提供许多猫和狗的图片来设计一个“猫图检测器”。 检测器最终可以学会:如果输入是猫的图片就输出一个非常大的正数,如果输入是狗的图片就会输出一个非常小的负数。
二、机器学习关键组件
机器学习关键组件通常有4个:
-
数据(data);
-
模型(model);
-
目标函数(objective