深度学习简易入门

导语 一篇不严肃的深度学习入门文章。

深度学习是机器学习中的一个重要的方向,深度学习其实就是神经网络学习,这里“深度”就是说神经网络中众多的层。

那么深度学习是用来干嘛的呢?简单说,那就是

分类

关于什么是机器学习的解释,Quora上有一个买菜大妈都能看的懂的回答。翻译一下就是,吃遍南山区所有芒果的大妈,自己总结出个大颜色黄的比较好吃,所以买芒果的时候,直接挑选了这种。那什么是机器学习呢,就是你告诉机器每一个芒果的特征(颜色,大小,软硬等),并且告诉机器其输出(好不好吃),剩下的就等机器去学习出一套规则,这些芒果就是你的训练集。而当你再丢芒果进去的时候,已然熟悉基本法的机器就会直接告诉你这个芒果好不好吃,这种能自动对输入的东西进行分类的机器,就叫做分类器。

分类器的目标就是让正确分类的比例尽可能高。一般我们需要首先收集一些样本,人为标记上正确分类结果,然后用这些标记好的数据训练分类器,训练好的分类器就可以在新来的特征向量上工作了。

神经元

我们再来看看神经网络是怎么工作的。

最简单地把这两组特征向量分开的方法是什么呢?当然是在两组数据中间画一条竖直线,直线左边是-,右边是+,分类器就完成了。以后来了新的向量只要代入公式,h = ax + b ,凡是落在直线左边的都是-,落在右边的都是+。这是二维空间的分类,而当特征有很多种时,我们就要在n维空间做分类,大家可以想象一下 ,就是用一个n- 1维超平面把n维空间一分为二,两边分属不同的两类,

,这种分类器就叫做神经元,a是权值,a0是偏移。

这么一画是不是就很像人脑的神经元呀,我们就用这些神经元组成网络去学习训练集的数据,求出最优的权值(weights)和偏置(biases)以便最终正确地分类。

神经网络

上图就是一个简单神经网络的架构,网络中最左边的一层被称作输入层,其中的神经元被称为输入神经元(input neurons)。最右边的一层是输出层(output layer),包含的神经元被称为输出神经元(output neurons)。网络中间的一层被称作隐层(hidden layer),在一些网络中往往有多个隐层。我们可以看到,输入向量连到许多神经元上,这些神经元的输出又连到一堆神经元上,这一过程可以重复很多次。数值向量在不同神经元之间传导。

但是,我们刚刚分析了神经元,神经元的变换是完全的线形的,如果神经网络的每层都只是做线性变换,多层输入叠加后也还是线性变换。因为线性模型的表达能力不够,所以需要激活函数来引入非线性因素。举个栗子,常用的激活函数sigmoid函数

,可以将实数压缩到[0,1]之间。激活函数是神经网络强大的基础,好的激活函数(根据任务来选择)还可以加速训练。

接下来,确定了神经网络的连接方式、网络的层数、每层的节点数,建好网络模型之后,我们要开始学习这个神经网络的每个连接上的权值了。

训练网络(training)

训练过程就是用训练数据的input经过网络计算出output,再和label计算出loss,再计算出gradients来更新weights的过程。label就是训练集里预先加上的分类标记,loss就是你算出的结果与正确结果(正确为1,错误为0)的误差,或者叫损失。

那么training其实就是通过梯度下降法尽可能缩小loss的过程。如下图所示,我们希望loss值可以降低到右侧深蓝色的最低点。

具体步骤如下:

  • 正向传递:算当前网络的预测值

                    (Relu是一种激活函数,Wh1、Wh2、W0是权重,b是偏移量)

  • 计算loss:
  • 计算梯度:从loss开始反向传播计算每个参数(parameters)对应的梯度(gradients)。这里用Stochastic Gradient Descent (SGD) 来计算梯度,即每次更新所计算的梯度都是从一个样本计算出来的。
  • 更新权重:这里用最简单的方法来更新,即所有参数都  
  • 预测新值:训练过所有样本后,打乱样本顺序再次训练若干次。训练完毕后,当再来新的数据input,就可以利用训练的网络来预测了。这时的output就是效果很好的预测值了。

PS 以上理论知识和公式来自斯坦福大学计算机视觉实验室推出的课程CS231n: Convolutional Neural Networks for Visual Recognition

调戏Tensorflow Playground

接下来,摩拳擦掌想要试一试深度学习的朋友们可以试着调戏一下TensorFlow Playground。TensorFlow游乐场是一个通过网页浏览器就可以训练的简单神经网络,并实现了可视化训练过程的工具。下图就是TensorFlow游乐场默认设置的截图。

左边的每组数据,都是不同形态分布的一群点。每一个点,都与生俱来了2个特征:x1和x2,表示点的位置。数据中的点有2类:橙色和蓝色。我们这个神经网络的目标,就是通过训练,知道哪些位置的点是橙色、哪些位置的点是蓝色。如何确定网络结构呢?到底用不用隐层呢?还是一个隐层?两个隐层或更多?每个层的尺寸该多大?这些都可以在TP上调整,而且立刻就能看到直观的结果。快去试试吧~

TensorFlow 安装(Windows)

最后奉上大杀器,谷歌2015年开源的主流深度学习框架TensorFlow的官方安装指南 https://www.tensorflow.org/install/install_windows,windows上的安装会有一些小小的坑,遇到安装问题可以询问我哦。

Mac上的安装可以参考chaodong大神的深度学习入门实战(二)

以上

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Spark学习技巧

推荐系统系列之隐语义模型

823
来自专栏王照彬的专栏

【 SPA大赛 】腾讯社交广告大赛初赛阶段小结

总结了腾讯高校算法大赛初赛的数据分析与处理心得, 主要包括了时序分析, 训练集选取与处理, 基于树关系的贝叶斯平滑方法等.

7210
来自专栏机器之心

学界 | 哈佛大学提出变分注意力:用VAE重建注意力机制

近年来很多论文将 VAE 应用到文本生成上,通过引入隐变量对不确定性进行建模。不过这会导致一个常见的 KL collapsing 问题,导致的现象就是直接训练的...

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

资料 | 机器学习数学基础教程【PDF下载】

《机器学习数学基础》由Marc Peter Deisenroth、A Aldo Faisal和Cheng Soon Ong撰写,共381页。这本书并没有涵盖前沿...

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

从0到1,这篇深度学习综述送给你!

1357
来自专栏数据科学与人工智能

人工智能、机器学习和深度学习是什么?

人工智能、机器学习与深度学习,每天都有它们的新闻。包括新的技术、新的应用、新的挑战、新的机遇。 人人都在谈,人人都在看,那究竟什么是人工智能、机器学习与深度学习...

3456
来自专栏达观数据

机器学习技术的重要性:达观数据亲身实践

大数据时代里,互联网用户每天都会直接或间接使用到大数据技术的成果,直接面向用户的比如搜索引擎的排序结果,间接影响用户的比如网络游戏的流失用户预测、支付平台的欺诈...

37514
来自专栏人工智能头条

机器学习工程师应当掌握的四大算法,你学会了吗?

832
来自专栏AI派

近邻推荐之 Slope One 算法

使用 Slope One 算法可以避免上面的问题,Slope One 算法专门针对评分矩阵进行计算,不适用于行为矩阵。它不是计算物品之间的相似度,而是计算物品之...

3679
来自专栏专知

【CQA论文笔记】基于异构社交网络学习的社区问答方法,同时建模问题、回答和回答者

【导读】传统的社区的问答(CQA)仅对问题和答案的内容进行编码,为问题准确地匹配高质量的回答。这篇文章提出使用社区中用户的交互信息进行嵌入,借助了异构社交网络中...

3304

扫码关注云+社区