前言

要想讲清楚深度学习的本质,就要先从显示编程和隐式编程开始讲起。

显示编程

所谓显示编程,顾名思义,就是咱们让计算机干什么,计算机就干什么,比如让计算机走迷宫,我们就是让它上下左右都试探一边。

1
2
3
4
5
6
def solve(maze):
while not at_end(maze):
for direction in ['up', 'down', 'left', 'right']:
if can_move(maze, direction):
move(maze, direction)
break

隐式编程

隐式编程其实就是指人工智能中的那些学习方法,它就是由机器学习之父提出来的,旨在不通过显示的告诉计算机怎么做,就能让计算机自己学会怎么做。

机器学习

为了方便理解,所以我这里只讨论线性回归的方案,线性回归从本质上来说就是只有输入层和输出层的神经网络。

深度学习

深度学习的提出其实就是为了让机器学习在特征提取时也能做到隐式编程,也就是说那些中间层就是用来提取特征的。

而正如当时机器学习被评价的一样,要想获得好结果,最重要的是特征提取而不是最后的拟合算法,所以深度学习的研究也正是在构建更好的模型提取出更重要的特征。

而怎么样才能让模型提取出更好的特征呢?或者说什么样的模型可以提取出来什么样的特征呢?

由于模型是黑盒,所以需要可视化的辅助,至于怎么可视化权重,其实现在已经有挺多方案了,具体就留以后再讲了。