神经网络学习笔记 - 激活函数的作用、定义和微分证明

神经网络学习笔记 - 激活函数的作用、定义和微分证明

看到知乎上对激活函数(Activation Function)的解释。 我一下子迷失了。 因此,匆匆写下我对激活函数的理解。

激活函数被用到了什么地方

目前为止,我见到使用激活函数的地方有两个。

  • 逻辑回归(Logistic Regression)
  • 神经网络(Neural Network) 这两处,激活函数都用于计算一个线性函数的结果。

了解激活函数

激活函数的作用:就是将权值结果转化成分类结果

2类的线性分类器

先说一个简单的情况 - 一个2类的线性分类器。 了解激活函数,先要明确我们的问题是:"计算一个(矢量)数据的标签(分类)"。 以下图为例:

训练

训练的结果,是一组(w,b),和一个线性函数f(x) = wx + b

预测

我们现在仔细考虑一下,如何在预测函数中使用这个线性函数f(x)。 先从几何方面理解一下,如果预测的点在分割线wx + b = 0上,那么f(x) = wx + b = 0。 如果,在分割线的上方某处,f(x) = wx + b = 8(假设是8)。 8可以认为是偏移量。

注:取决于(w, b),在分割线上方的点可以是正的,也可能是负的。 例如: y - x =0,和 x - y = 0,这两条线实际上是一样的。 但是,应用点(1, 9)的结果, 第一个是8, 第二个是 -8。

问题

然后,你该怎么办??? 如何用这个偏移量来得到数据的标签

激活函数

激活函数的作用是:将8变成红色。 怎么变的呢?比如:我们使用sigmoid函数,sigmoid(8) = 0.99966464987。 sigmoid函数的结果在区间(0, 1)上。如果大于0.5,就可以认为满足条件,即是红色。

3类分类器的情况

我们再看看在一个多类分类器中,激活函数的作用。 以下图为例:

训练

3类{a, b, c}分类器的训练结果是3个(w, b),三个f(x),三条分割线。 每个f(x),可以认为是针对一个分类的model。因此: f_a(x) = w_ax + b_a \\ f_b(x) = w_bx + b_b \\ f_c(x) = w_cx + b_c

预测

对于预测的点x,会得到三个偏移量[f_a(x), f_b(x), f_c(x)]。 使用激活函数sigmoid: sigmoid([f_a(x), f_b(x), f_c(x)]) 会得到一个向量, 记为:[S_a, S_b, S_c] 这时的处理方法是:再次使用激活函数(没想到吧) 一般会使用激活函数softmax。 激活函数,在这里的作用是:计算每个类别的可能性。 最后使用argmax函数得到:最大可能性的类。

注:上面差不多是Logistic Regression算法的一部分。 注:softmax也经常被使用于神经网络的输出层。

激活函数的来源

在学习神经网络的过程中,激活函数的灵感来自于生物神经网络,被认为是神经元对输入的激活程度。 最简单的输出形式是:一个开关,{0, 1}。 要么0,要么1 也就是一个单位阶跃函数(Heaviside step function)。

这种思想主要是一种灵感来源,并不是严格的推理。

常用的激活函数有哪些

激活函数的意义

名称

含义

sigmoid - S型

sigmoid的区间是[0, 1]。因此,可以用于表示Yes/No这样的信息。比如:不要(0)/要(1)。多用于过滤数据。比如:门。

tanh(hyperbolic tangent) - 双曲正切

tanh的区间是[-1, 1]。同样可以表示Yes/No的信息,而且加上了程度。比如:非常不可能(-1)/一般般(0)/非常可能(1)。非常不喜欢(-1)/一般般(0)/非常喜欢(1)。因此,tanh多用于输出数据。输出数据最终会使用softmax来计算可能性。

softmax

softmax用于输出层,计算每个分类的可能性。

Rectified linear unit - ReLU - 修正线性单元

ReLU的好处:ReLU对正值较少的数据,处理能力更强。由于,其导数为{0, 1},可以避免梯度消失问题。

激活函数的微分的证明

sigmoid

sigmoid函数 \sigma(x) = \frac{1}{1 + e^{-x}} \\ \sigma'(x) = (1 - \sigma(x))\sigma(x)

证明 \begin{align} \frac{\partial \sigma(x)}{\partial x} & = \frac{e^{-x}}{(1 + e^{-x})^2} \\ & = {\left ( \frac{1 + e^{-x} - 1}{1 + e^{-x}} \right ) }{\left ( \frac{1}{1 + e^{-x}} \right )} \\ & = (1 - \sigma(x))\sigma(x) \end{align}

tanh

tanh函数 \tanh(x) = \frac{e^{2x} - 1}{e^{2x} + 1} \\ tanh'(x) = 1 - tanh(x)^2

证明 \begin{align} \frac{\partial tanh(x)}{\partial x} & = \left (1 - \frac{2}{e^{2x} + 1} \right )' \\ & = 2 \cdot \frac{2e^{2x}}{(e^{2x} + 1)^2} \\ & = \frac{4e^{2x}}{(e^{2x} + 1)^2} \\ & = \frac{(e^{2x} + 1)^2 - (e^{2x} - 1)^2}{(e^{2x} + 1)^2} \\ & = 1 - \left (\frac{e^{2x} - 1}{e^{2x} + 1} \right )^2 \\ & = 1 - tanh(x)^2 \end{align}

softmax

激活函数softmax和损失函数会一起使用。 激活函数会根据输入的参数(一个矢量,表示每个分类的可能性),计算每个分类的概率(0, 1)。 损失函数根据softmax的计算结果\hat{y}和期望结果y,根据交叉熵方法(cross entropy loss) 可得到损失L。

softmax函数

\text{softmax:} \\ \hat{y_{t_i}} = softmax(o_{t_i}) = \frac{e^{o_{t_i}}}{\sum_{k}e^{o_{t_k}}} \\ \hat{y_t} = softmax(z_t) = \begin{bmatrix} \cdots & \frac{e^{o_{t_i}}}{\sum_{k}e^{o_{t_k}}} & \cdots \end{bmatrix} \\ \\ softmax'(z_t) = \frac{\partial{y_t}}{\partial{z_t}} = \begin{cases} \hat{y_{t_i}}(1 - \hat{y_{t_i}}), & \text{if } i = j \\ -\hat{y_{t_i}} \hat{y_{t_j}}, & \text{if } i \ne j \end{cases}

证明

softmax'(z_t) = \frac{\partial \hat{y_t} }{\partial z_t } \\ \\ \text{if } i = j \\ \begin{align} \frac{\partial \hat{y_{t_i}} } {\partial o_{t_i} } & = \left ( \frac{e^{o_{t_i}}}{\sum_{k}e^{o_{t_k}}} \right )' \\ & = \left ( 1 - \frac{S}{\sum_{k}e^{o_{t_k}}} \right )' \text{ // set } S = \sum_{k \ne i}e^{o_{t_k}} \\ & = \left ( 1 - \frac{S}{S + e^{o_{t_i}}} \right )' \\ & = \frac{S \cdot e^{o_{t_i}}}{(S + e^{o_{t_i}})^2} \\ & = \frac{S}{S + e^{o_{t_i}}} \cdot \frac{e^{o_{t_i}}}{S + e^{o_{t_i}}} \\ & = \frac{S}{S + e^{o_{t_i}}} \cdot \frac{e^{o_{t_i}}}{S + e^{o_{t_i}}} \\ & = \left ( 1 - \frac{e^{o_{t_i}}}{S + e^{o_{t_i}}} \right ) \cdot \frac{e^{o_{t_i}}}{S + e^{o_{t_i}}} \\ & = \left ( 1 - \frac{e^{o_{t_i}}}{\sum_{k}e^{o_{t_k}}} \right ) \cdot \frac{e^{o_{t_i}}}{\sum_{k}e^{o_{t_k}}} \\ & = \left ( 1 - \hat{y_{t_i}} \right ) \cdot \hat{y_{t_i}} \\ \text{if } i \ne j \\ \frac{\partial \hat{y_{t_j}} }{\partial o_{t_i} } & = \left ( \frac{ e^{o_{t_j}} } { \sum_{k}e^{o_{t_k}} } \right )' \\ & = \left ( \frac{e^{o_{t_j}}}{S + e^{o_{t_i}}} \right )' \text{ // set } S = \sum_{k \ne i}e^{o_{t_k}} \\ & = - \frac{ e^{o_{t_j}} \cdot e^{o_{t_i}} }{ (S + e^{o_{t_i}})^2 } \\ & = - \frac{ e^{o_{t_j}} }{ S + e^{o_{t_i}} } \cdot \frac{ e^{o_{t_i}} }{ S + e^{o_{t_i}} } \\ & = - \frac{ e^{o_{t_j}} }{ \sum_{k}e^{o_{t_k}} } \cdot \frac{ e^{o_{t_i}} }{ \sum_{k}e^{o_{t_k}} } \\ & = - \hat{y_{t_j}} \cdot \hat{y_{t_i}} \end{align}

参照

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习算法工程师

绝对不容错过:最完整的检测模型评估指标mAP计算指南(附代码)在这里!

本文翻译自Measuring Object Detection models - mAP - What is Mean Average Precision?(...

95680
来自专栏YoungGy

风格转换简介

风格转换,是把一张图片转化成同内容但包含某风格的新图片。本文将介绍如何让机器学习风格转换,包含两种方法:优化问题求解、转化网络求解。

46550
来自专栏量子位

你真的理解反向传播吗?面试必备

深度学习框架越来越容易上手,训练一个模型也只需简单几行代码。但是,在机器学习面试中,也会考量面试者对机器学习原理的掌握程度。反向传播问题经常出现,不少人碰到时仍...

31740
来自专栏LhWorld哥陪你聊算法

【机器学习】--GBDT算法从初始到应用

提升是一种机器学习技术,可以用于回归和分类的问题,它每一步产生弱预测模型(如决策树),并加权累加到总模型中;如果每一步的弱预测模型的生成都是依据损失函数的梯度方...

28520
来自专栏机器学习算法与Python学习

线性分类(SoftMax) - 下篇

导读 线性分类器-中篇 线性分类器 CS231n课程笔记翻译:图像分类笔记(下) CS231n课程笔记翻译:图像分类笔记(上) SoftMax分类器 SVM是最...

39280
来自专栏书山有路勤为径

卷积神经网络-目标检测

其中,bx、by表示汽车中点,bh、bw分别表示定位框的高和宽。以图片左上角为(0,0),以右下角为(1,1),这些数字均为位置或长度所在图片的比例大小。

14410
来自专栏智能算法

图像金字塔分层算法

一. 图像金字塔概述 1. 图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。 2. 图像金字塔最初用...

54960
来自专栏机器学习算法工程师

目标检测算法之SSD

作者:叶 虎 编辑:祝鑫泉 前言 目标检测近年来已经取得了很重要的进展,主流的算法主要分为两个类型:(1)two-stage方法,如R-CNN系算法,其主...

9.5K80
来自专栏机器之心

徒手实现CNN:综述论文详解卷积网络的数学本质

选自arXiv 机器之心编译 参与:黄小天、路雪、蒋思源 近日南洋理工大学研究者发布了一篇描述卷积网络数学原理的论文,该论文从数学的角度阐述整个卷积网络的运算与...

386110
来自专栏IT派

入门 | 了解神经网络,你需要知道的名词都在这里

近日,Mate Labs 联合创始人兼 CTO 在 Medium 上撰文《Everything you need to know about Neural Ne...

36580

扫码关注云+社区

领取腾讯云代金券