神经网络入门学习-一些基本的概念+不含隐层

文章目录

  • 1 学习资源参考及个人评价
  • 2 要解决的疑惑
  • 3 M-P神经元模型
  • 4 感知机 与 逻辑斯蒂回归
  • 5 两层神经元模型(无隐层)
    • 5.1 网络结构
    • 5.2 参数调整
      • 5.2.1 损失函数
      • 5.2.2 梯度下降
  • 6 基于简单逻辑回归模型的NN实现

1 学习资源参考及个人评价

神经网络简介:
非常简单,会粗略讲一些名词概念、网络结构、模型的运行流程。
机器学习-实现简单神经网络:
只看了理论基础,感觉还好,但是个人感觉没有 西瓜书+南瓜书 讲的清楚吧。主要是对 感知器 和 适应性的线性神经元 做了区分。没有跟着它一起码代码,看见评论区说代码错误有点多。
深度学习之神经网络入门最佳路径:
挺好的,了解了一下网络结构相关的,并利用CIFAR10的数据集实战,通过搭建了简单单个神经元网络及多个分别实现二分类和多分类。其中,还了解了一些tensorflow的搭建,写法流程等。
西瓜书+南瓜书:主要看了5.1&5.2,了解了感知机网络结构和学习算法,为后面多层网络的进阶学习打下了基础。
李航的统计学习方法
浅析感知机(一)–模型与学习策略

本篇博客旨在记录自己的学习轨迹,若有错误,希望希望各位看官批评指正,共同进步。

2 要解决的疑惑

  1. 神经元的网络结构
  2. 什么是激活函数?为什么需要?
  3. 什么是损失函数?为什么需要?
  4. 什么是梯度下降?为什么需要?
  5. 什么是感知机逻辑斯蒂回归?两者有什么区别?

3 M-P神经元模型

NN实际上是一个仿生学的产物,它模仿了生物学神经网络的结构功能,从而抽象成了最经典的最简单的M-P神经元模型
神经网络入门学习-一些基本的概念+不含隐层_第1张图片
它收到来自n个其他神经元传递过来的输入信号,通过带权重的连接进行传递。
然后,神经元接收到的总输入值(求和)与其阈值进行比较,最后通过一个函数(图中为f)处理来产生神经元的输出。
说到这里,就顺便结合图解释一下名词变量:

  • w:连接权重
  • x:输入的值,即问题中具体抽取出来的特征
  • θ {\theta} θ:偏置,阈值
  • f(*):激活函数

这里,为什么需要激活函数呢?
=》激活函数是用来处理产生神经元的输出的,提供规模化的非线性化能力,即将线性组合变成非线性的结果。

4 感知机 与 逻辑斯蒂回归

神经网络入门学习-一些基本的概念+不含隐层_第2张图片
因此,感知机模型与逻辑斯蒂回归模型本质上是对使用的激活函数的区分。

这里补上逻辑斯蒂回归模型使用的函数:
s i g m o i d ( x ) = 1 1 + e − x {sigmoid(x)=\frac{1}{1+e^{-x}}} sigmoid(x)=1+ex1
感知机的阶跃函数显然具有不连续、不光滑的特点,所以通常用sigmoid函数作为激活函数。
而sigmoid函数可以把江大范围内变化的输入值挤压到0-1区间的输出值范围。
同时,sigmoid函数还有一个很好的性质:
f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) {f^{'}(x)=f(x)(1-f(x))} f(x)=f(x)(1f(x))
这个性质在后续的BP算法推导中占据很重要的地位。

5 两层神经元模型(无隐层)

5.1 网络结构

无论是感知机模型还是逻辑斯蒂回归模型,都能使用两层的神经元模型(一层为输入层,一层为输出层,且仅有输出层的神经元进行激活函数处理,即只拥有一层功能神经元)来进行描述:(以二输入的为例)
神经网络入门学习-一些基本的概念+不含隐层_第3张图片
再观察,原始的激活函数处理公式:
y = f ( ∑ i = 1 n w i x i − θ ) {y=f(\sum_{i=1}^nw_ix_i-\theta)} y=f(i=1nwixiθ)
这里的阈值 θ {\theta} θ其实可以进一步处理,从而提高模型的泛化能力,即看成 − 1 ∗ θ {-1*\theta} 1θ,这样 θ {\theta} θ可以作为一个新的输入,而其连接权重则固定为-1.如此,权重和阈值的学习可以统一为权重的学习。
神经网络入门学习-一些基本的概念+不含隐层_第4张图片

5.2 参数调整

最终目的是得到一个好的泛化模型,即得到一组合适的权重参数,因此就需要根据每次的结果对当前的参数进行调整,从而得到最优。

那,如何评价最优呢?=》损失函数
如何求解损失函数的最优解?=》梯度下降

5.2.1 损失函数

根据南瓜书的相关推导并基于我们之前说的泛化模型,最终构造下面一个损失函数并简化为仅有权重参数:
min ⁡ w L ( w ) = min ⁡ w ∑ x i ∈ M ( y ^ i − y i ) w T x i {\min_w L(w) = \min_w \sum_{x_i \in M }(\hat{y}_i -y_i )w^T x_i} wminL(w)=wminxiM(y^iyi)wTxi

补:这里西瓜书和南瓜书中引入了一个“**线性超平面”**的概念。因此,可以知道后续为什么要引入多层网络(含隐层)了。

5.2.2 梯度下降

梯度下降通过调整参数来使得目标函数(损失函数)最小。
而普通的想法会有几个:

  • 解方程,解出最小参数
    • 参数太多
    • 仅对当前数据集上有效
  • 设置固定step模拟
    • 容易错过最小值点
    • step难以固定设置
  • 类比“下山算法”
    • 找到一个方向
    • 适当的走一步

这里的梯度下降就是类比“下山算法”。
当然,从这个名字就可以看出,通过求梯度,以目标的负梯度方向对参数进行调整:(以感知机为例)
∇ w L ( w ) = ∑ x i ∈ M ( y ^ i − y i ) x i {\nabla _wL(w)=\sum_{x_i \in M}(\hat{y}_i-y_i)x_i} wL(w)=xiM(y^iyi)xi
w ← w + Δ w {w\leftarrow w+\Delta w } ww+Δw
Δ w = − η ( y ^ i − y i ) x i {\Delta w = - \eta (\hat{y}_i-y_i)x_i} Δw=η(y^iyi)xi
这里是采用随机梯度下降算法,极小化过程中不是一次使 M 中所有误分类点的
梯度下降,而是一次随机选取一个误分类点使其梯度下降。
其中,这里的 ′ e t a {'eta} eta是学习率,是可以人为设定的(当然这个设定肯定也有一定技巧,等后续自己熟练了再讲一讲):
神经网络入门学习-一些基本的概念+不含隐层_第5张图片

6 基于简单逻辑回归模型的NN实现

这个是根据 深度学习之神经网络入门最佳路径 这门课程来进行学习的,跑了跑代码,理解了一下流程等。因为这个课程是免费,且可以跟着码代码,所以具体代码这里就不放了。
从二分类到多分类的简单实现,仅需要对网络结构的输出层的神经元个数进行相应的添加即可。同时,权重W从向量变成矩阵,同时输出的结果也从单个值变为向量格式。

你可能感兴趣的:(#,深度学习,神经网络,机器学习,人工智能,深度学习,python)