月度归档:2018年01月

神经网络中的激活函数

本文主要介绍神经网络中几种常见的激活函数:Sigmoid, Tanh, ReLUSoftmax

Sigmoid

这个应该是我们最熟悉的激活函数了,在处理二元分类任务时经常用到,它的公式是:

$$
f(x)=\frac{1}{1+e^{-x}}
$$

它的函数图像如下:
image

TanH

在Sigmoid的基础上做一个变形,把曲线整体下拉0.5个单位(经过原点)就得到TanH,它的公式是:

$$
{\displaystyle f(x)=\tanh(x)={\frac {2}{1+e^{-2x}}}-1}
$$

它的函数图像如下:
Imgur

ReLU

我们知道Sigmoid在早期的机器学习中使用非常多,但是在深度神经网络中却被舍弃了,主要有两个原因:

  • 容易出现梯度消失问题
    因为它越远离原点处,曲线越平缓,导数也就会接近于0。这样在进行反向传播时,由于连乘效应很可能会导致梯度消失。
  • 激活函数计算量略大,涉及到除法和幂计算

后来一种新的激活函数ReLU在AlexNet中被提出,解决了上述问题,也就此成为了深度学习中最常用的激活函数。ReLU,即线性整流函数(Rectifie[……]

继续阅读

机器学习-损失函数

一般来说,我们在进行机器学习任务时,使用的每一个算法都有一个目标函数,算法便是对这个目标函数进行优化。在机器学习中,这种函数被称为损失函数(loss function)、代价函数(cost function)或者目标函数(objective function)。本文主要介绍以下三种最常见的loss function。

Square Loss

全称应该是Mean Squared Error,也就是最小二乘法,这个是最简单的,它公式如下:

$$
\ell = \frac{1}{m} \sum_{i=1}^{m}(y_i – \hat{y_i})^2
$$

TensorFlow函数:tf.losses.mean_squared_error

Hinge loss

主要用于SVM,它的公式如下:

$$
\ell= \max(0, 1- \hat{y} \cdot y)
$$
其中,\(y\)是label,\(\hat{y}\)是预测值,两者的取值范围都是\(y,\hat{y} \in \{-1,1\}\)。观察上述公式[……]

继续阅读

深度学习-调参和优化(二)

本文介绍Coursera-Deep Learning-Course2-Week2:Optimization algorithms的内容:深度学习的优化,主要是如何加速梯度下降。

梯度下降的优化

这部分主要介绍了三种梯度下降方法:Batch Gradient Descent, Mini-batch Gradient Descent和Stochastic Gradient Descent,这些内容已经在之前的文章(大规模机器学习)中已经解释的很清楚了,本文不再具体阐述。
先回顾下之前的梯度下降公式:
$$
\theta_{j} := \theta_{j} – \alpha \frac{1}{m}\sum_{i=1}^{m}\left ( h_{\theta}\left ( x^{(i)}\right )- y ^{(i)}\right ) x_{j}^{(i)}
$$

上面这个公式代表的是全批量的梯度下降(batch gradient descent),是梯度下降最原始的形式,也就是说梯度每下降一步都要把所有的样本数据算一遍,这个代价是非常昂贵的,如果m是百万级别的话(实际工程中很常[……]

继续阅读

深度学习-调参和优化(一)

从今天开始,我们总结Coursera深度学习第二课:Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization,主要是调参和优化,这一块儿的内容是非常重要的,里面讲解了很多深度学习应用的经验法则,非常有参考价值。今天我们主要覆盖week1的内容:Week1 Practical aspects of Deep Learning。

Setting up your Machine Learning Application

数据集的划分(Train/Dev/Test)

一般来说,完整地训练一个ML应用需要把数据集划分三块:

  • 训练集(train)
  • 交叉验证集(cross validation)
    Cross Validation又被称为Dev Set,这部分数据集用于确定最终的模型。在实际场景中,我们往往会去尝试多种不同的hyperparameters,那么如何评判这些不同hyperparameters配置的模型的性能优劣呢?我们把不同的模型放到CV上跑一边,选择性能最好的那个[……]

    继续阅读

神经网络和深度学习

引言

2017年8月8日,吴恩达正式发布了Deepleanring.ai,一个发布在Coursera上的深度学习系列课程Deep Learning Specialization,希望将人工智能时代的基础知识传播到更多人身边。网上对这门课的评价很高,算是深度学习的必备课程了,所以想入门深度学习的同学千万不要错过。但在enroll这门课之前,个人强烈建议先学完同样由Andrew Ng教的Machine Learning,这门课才是最基础的机器学习课程,里面包含了很多最基本,最重要的思想和概念。学完了这门课再来上这门深度学习会感觉比较轻松吧,整体难度并不大,所以在课程发布的前几周我就全部学完了(那时候只发布了前三课),主要是因为课程开放的前一周是免费的,所以学的非常快。但同时也很仓促,也因此没有做笔记。导致的结果就是现在你再问我这些课程到底讲了什么,我已经忘得差不多了。现在又得重新花时间去学习,这是很浪费时间的。所以在学习新知识的过程中,适当地记录和梳理是非常有必要的。从今天开始,我会把这门深度学习课程的学习笔记整理到博客里,并不会面面俱到,只会记录于我而言很重要的知识点。

Deep L[……]

继续阅读