天马童鞋的机器学习教程!超级赞哦!
这是一篇帮助你了解和理解机器学习、神经网络、深度学习相关概念的文章,如果你对智能领域感兴趣并且想要未来投身AI方向的话,希望你可以耐下心来理解这些概念,以及我后期会向你讲解的各类有趣的算法,因为学习机器学习最重要的就是能够理解它繁多、复杂的概念与算法,当你理解了一定的基础概念之后,我会带你使用Python实现这些算法,并搭建一个你自己的神经网络,刚开始的时候我不会带你使用sklearn库、TensorFlow框架等(因为这对深入了解这些最基础最重要的算法是无益的,也许机器学习的入门会有一些费时费力,但是你只要坚持下来了,你会发现智能围棋、图像识别、语音识别、无人驾驶等前沿的领域在向你招手)
那好: )
让我们开始这段奇妙之旅吧!
首先:什么是神经网络呢?
我们都知道,人类大脑神经元的数目惊人,而且它们之间是彼此联系的。即,通过突触释放神经递质......你们可以理解为一个神经元通过接收其他神经元的信号,然后整合之后发送给其他的神经元。
而人工神经网络其实就是模拟生物神经网络所抽象出来的模型,并用程序实现它,它的工作原理与生物神经网络十分的相似。
(感兴趣的同学可以看看《连接组》,承现峻在书中讲解了生物神经元之间是如何通过突触进行“交流”的。)
再看看人工神经网络的模型吧,如下图
这是一个简单的具有四层结构的神经网络(不含最右端的y)
最左端为第一层,有两个神经元,它是输入层,每一个神经元存放一个值,等于样本中的其中一个特征值,
(所以有多少特征值你的模型最左端就有几个节点)
第二、三层为隐藏层,(重点)输入层的每一个X与每一个权重分别进行计算得到的值赋值给下一层,以此类推直到输出层得到一个预测值(除了最左端的输入层与最右端的输出层外的都叫做隐藏层)
最最右端的那个是真实值,最右端与其比较得出的差值叫作误差
名词解释:
样本:一组测试数据,可以是一张图片(一张图片其实是由三个矩阵组成的,代表三原色,每个矩阵的每一个值代表它对应位置的色值),一段音频,一组数字,一个点集合等等
权重:每相邻的两层的每两个神经元之间的连线代表着神经突触(它的值便是权重)
它的作用是:与上一层的每一个神经元的值进行逻辑回归的运算得到下一层,比如第一层有x1和x2两个值,第二层有三个隐层神经元,那么这两层之间的权重值有6个,构成一个2x3的矩阵。(限于篇幅,关于逻辑回归的讲解将放在后面)
特征值与输出值:
如图,比如给你一组平面点集作为样本,那么点集的所有x值就可以作为特征值从最左端输入进神经网络,它经过层层运算后,把结果传到输出层。
把点集所有的y值作为这个样本的输出值(真实值),而神经网络的最右端输出层运算得到的则其实是一组预测值)。
这个预测值其实和真实值是有差距的,下面就要对这些误差进行反向传播(就是把这个误差从右向左一层一层的算回去,看看每一层对于最终结果的误差究竟有多大的影响)
所以人工神经网络的工作流程就是:
1.随机初始化每层神经元之间的权重
(如果全部置或同一个值会导致权重之间两两相等,后面学习前向传播的运算之后就可以证明了)
2.最左端的神经元传入样本的特征后,从输入层向着输出层方向,由每两层中的上一层神经元和对应权重进行逻辑回归运算得出下一层的每一个神经元的值(前向传播)
3.然后输出层得到一个预测值,与真实值比较一下误差(代价函数)
4.把这个误差值反向传播,每一层的每一个权重根据反向传播算偏导数,即,自己的值对最后一层与真实值之间的误差会有多大的“影响”,然后更改自己的值(参数更新)
5.返回第2步(这个迭代的次数就是训练次数,由编程人员设置,达到收敛即可,也就是误差的基本不变小了便可以停止训练了)
补充(一个可行的学习规划):
1.想要理解神经元一层层向前的前向传播,你需要了解什么是逻辑回归,在学习逻辑回归前需要掌握线性回归的概念
2.想要理解计算误差你需要学习什么是代价函数
1.想要理解反向传播你需要。。。很好的微分基础(不过也可以直接了解推导结果来使用)
2.想要理解如何让误差收敛,也就是让你的神经网络的预测值尽可能的接近真实值的结果,这个部分非常重要,一种常用的计算误差收敛的方法叫做梯度下降,后面我将向你解释什么叫做梯度下降以及它的使用方法。
简而言之:
Machine Learning(ML)
机器学习是人工智能的一个分支
它主要分为两类:1.监督学习2.无监督学习
Neural Network(NN)
神经网络属于机器学习的监督学习的一个分支
(DNN)(CNN)(RNN)
深度神经网络、卷积神经网络、循环神经网络等等则是神经网络的分支,在不同的应用领域上有着十分出色的表现,可以说它们虽然师出同门,但又自成一派。
至此,你已经基本认识了人工神经网络的模型,以及它的工作流程。现在还不是很能理解这些名词和概念也不要紧,甚至你的微积分、线性代数与概率论的知识薄弱,也并不必太过担心。
后面我将把这个工作流程的更多细节一一讲解,包括公式的推导,算法的运用,以及最为重要的,将你所学习到的这些概念用Python写出来运行构建你自己的神经网络。
想深入了解并实现一个神经网络
你至少需要了解以下基础的知识
1.线性回归
2.逻辑回归
3.代价函数
4.梯度下降
5.前向传播
6.反向传播
7.梯度检验
8.过拟合问题
9.高级优化方法
10.Python
11.TensorFlow框架
下一篇:《线性回归是干啥的》
领取专属 10元无门槛券
私享最新 技术干货