Life sucks, but you're gonna love it.

0%

Machine-Learning-2020 | Lecture#3 Deep Learning 预备知识

对Deep Learning的简介

简单来说,Deep Learning的发展从最早的Perceptron开始一直到现在的蓬勃发展也是经历了很多。

就像之前说的,在做Machine Learning的时候,分为3步,Deep Learning也是一样。

  1. Define Function sets 这里的function sets就是neural network,因为neural network中参数不同,所以这些是一系列的方程集。
  2. Goodness of function 在寻找比较适合模型的参数的时候,我们找到的评价模型的是损失函数。根绝不同的任务,会有不同的损失函数
  3. Minimize loss function 无论我们最终应用的损失函数是什么,我们最终的目的都是最小化损失函数。在最小化的过程中我们可以用到一些优化的方法。

在之前的分类和回归的任务中,我们所做的基本上都是一层网络。在regression任务中,是输入数据经过一个参数方程然后得到输出;在classfication任务中,是输入经过一个参数方程,再经过一个sigmoid方程进行分类。

但有时候,只通过一个参数方程无法满足我们复杂的需求,所以神经网络就是让这些参数方程横向变多,纵向变厚。我们通过计算不同的参数方程,再结合不同参数方程的结果得到我们最终想要的分类或回归结果。

这些中间不断生成和组合的层就叫做Hidden Layers,结合了很多隐藏层的网络就被称为深度网络。

目前我我们可以用很多框架(tensorflow,pytorch等)来实现深度神经网络的搭建和计算。

BackPropagation

其实在之前我们提到的梯度下降和Backpropagation差不多, 差别是BackPropagation所涉及的参数和流程更为复杂, 因为在Neural Network中存在的参数更多。

在linear regression和logistic regression中,我们更新参数的步骤很简单,因为预测的结果很简单,可以可以直接用feature $\bf x$ 乘以各自的权重 $\bf w$ 得到预测值 $\bf y = xw$,所以我们在更新参数 $\bf w$ 的时候只用一步计算$\bf w = w - \frac{\part L(w)}{\part w}$参数对结果的导数,然后就可以更新了,但是Neural Network的参数有很多,而且有很多层。

我们先来看一下NeuralNetwork的结构: