机器学习笔记(十)机器学习(神经网络基本知识)

主要来源:视频学习网站Google机器学习教程

机器学习笔记(十)机器学习(神经网络基本知识)_第1张图片
遇到这类非线性问题,可以用前面学过的特征组合来建立模型;

机器学习笔记(十)机器学习(神经网络基本知识)_第2张图片
但若是遇到这类复杂的非线性问题,我们很难手动创建模型,我们需要利用神经网络让计算机自主创建模型;

神经网络

神经网络 (neural network):一种模型,灵感来源于脑部结构,由多个层构成(至少有一个是隐藏层),每个层都包含简单相连的单元或神经元(具有非线性关系)。
神经元 (neuron):神经网络中的节点,通常会接收多个输入值并生成一个输出值。神经元通过将激活函数(非线性转换)应用于输入值的加权和来计算输出值。

为了了解神经网络可以如何帮助解决非线性问题,我们首先用图表呈现一个线性模型:
机器学习笔记(十)机器学习(神经网络基本知识)_第3张图片
每个蓝色圆圈均表示一个输入特征,绿色圆圈表示各个输入的加权和。

要提高此模型处理非线性问题的能力,我们可以如何更改它?

1.隐藏层

在下图所示的模型中,我们添加了一个表示中间值的“隐藏层”。隐藏层中的每个黄色节点均是蓝色输入节点值的加权和。输出是黄色节点的加权和。
机器学习笔记(十)机器学习(神经网络基本知识)_第4张图片
此模型是线性的吗?是的,其输出仍是其输入的线性组合。
在下图所示的模型中,我们又添加了一个表示加权和的“隐藏层”。
机器学习笔记(十)机器学习(神经网络基本知识)_第5张图片
此模型仍是线性的吗?是的,没错。当您将输出表示为输入的函数并进行简化时,您只是获得输入的另一个加权和而已。该加权和无法对非线性问题进行有效建模。

2.激活函数

要对非线性问题进行建模,我们可以直接引入非线性函数。我们可以用非线性函数将每个隐藏层节点像管道一样连接起来。
在下图所示的模型中,在隐藏层 1 中的各个节点的值传递到下一层进行加权求和之前,我们采用一个非线性函数对其进行了转换。这种非线性函数称为激活函数。
机器学习笔记(十)机器学习(神经网络基本知识)_第6张图片
现在,我们已经添加了激活函数,如果添加层,将会产生更多影响。通过在非线性上堆叠非线性,我们能够对输入和预测输出之间极其复杂的关系进行建模。简而言之,每一层均可通过原始输入有效学习更复杂、更高级别的函数。

常见激活函数
以下 S 型激活函数将加权和转换为介于 0 和 1 之间的值:
在这里插入图片描述
曲线图如下:
机器学习笔记(十)机器学习(神经网络基本知识)_第7张图片
相较于 S 型函数等平滑函数,以下修正线性单元激活函数(简称为 ReLU)的效果通常要好一点,同时还非常易于计算。
在这里插入图片描述
ReLU 的优势在于它基于实证发现(可能由 ReLU 驱动),拥有更实用的响应范围。S 型函数的响应性在两端相对较快地减少。
机器学习笔记(十)机器学习(神经网络基本知识)_第8张图片
实际上,所有数学函数均可作为激活函数。假设 σ 表示我们的激活函数(ReLU、S 型函数等等)。因此,网络中节点的值由以下公式指定:
在这里插入图片描述
TensorFlow 为各种激活函数提供开箱即用型支持。但是,我们仍建议从 ReLU 着手。

3.总结

现在,我们的模型拥有了人们通常所说的“神经网络”的所有标准组件:

一组节点,类似于神经元,位于层中。
一组权重,表示每个神经网络层与其下方的层之间的关系。下方的层可能是另一个神经网络层,也可能是其他类型的层。
一组偏差,每个节点一个偏差。
一个激活函数,对层中每个节点的输出进行转换。不同的层可能拥有不同的激活函数。
(警告:神经网络不一定始终比特征组合好,但它确实可以提供适用于很多情形的灵活替代方案。)

4.神经网络螺旋实验

1.仅仅加入x1,x2特征,并添加很多隐藏层和很多神经元;
效果:迭代速度特别慢,曲线波动剧烈,效果一般
机器学习笔记(十)机器学习(神经网络基本知识)_第9张图片
2.特征中加入其他特征工程,并适当减少一些隐藏层和神经元;
效果:迭代速度加快,曲线波动依旧剧烈;
机器学习笔记(十)机器学习(神经网络基本知识)_第10张图片
3.继续减少隐藏层和神经元,并且开启L2正则化;
效果:迭代速度再加快,曲线和图像边缘变得平缓;
机器学习笔记(十)机器学习(神经网络基本知识)_第11张图片
结论:
过多的节点会拖慢训练作用,并且不一定可以起到作用;
适当的加入特征工程可能会把一味地增加隐藏层和神经元的效果更好;
正则化可也降低复杂度,平缓曲线,适当地使用正则化会使训练效果更好;

你可能感兴趣的:(机器学习基础)