一、进度概述
1、机器学习常识19-22,以及相关代码复现
二、详情
19、矩阵分解
矩阵分解是一个纯数学问题,但当给矩阵赋予现实意义后,矩阵分解就成为了使用数学应对机器学习问题的一类典型而巧妙的方法。
在线性回归分析中,对奇异值分解有做详细的数学推导,这里举一个稀疏矩阵分解的应用:推荐系统,来感受一下矩阵分解这一数学技巧,是如何在机器学习中使用的。
从数学角度大致感受一下:机器学习常识 19: 矩阵分解-CSDN博客
项目实践参考以及讲解:
【机器学习】推荐系统——矩阵分解_机器学习实验矩阵分解-CSDN博客
推荐系统——矩阵分解_lfm算法netflix-CSDN博客
在当初线性代数的学习中,第一次接触相关现实应用是关于相对论推导,在学习完信号与系统和数字图像处理后,了解到图像这一信息同样能用矩阵表示,矩阵运算同样可以适用于图像处理中。这里又给出了一个新的应用,对于数据的一种整理。
除了推荐系统,矩阵还有这数据压缩的作用:
20、全连接 BP 神经网络
BP 神经网络的特点在于,通过收集误差,来调整原有输入的权重,从而尽可能拟合真实情况(感慨一下,发明这些的人真是天才,怎么想到的)。
对于数学原理上的讲解,可以参考这两篇文章,讲的挺细致的:
BP神经网络(算法整体思路及原理+手写公式推导)-CSDN博客
BP神经网络-CSDN博客
关于神经网络结构的说明,见下图(参考文章:机器学习常识 20: 全连接 BP 神经网络_仅由全连接层构成的神经网络-CSDN博客)
我们可以通过修改其中的隐藏层,从而实现对计算过程的控制。通过这个部分,便能去调节权重,使得最终的输出结果尽可能拟合。
需要注意的是,BP 与 PCA 既有联系又有区别:
联系: 都是进行特征提取.
区别:
- PCA 的特征提取是无监督的, 神经网络一般是有监督的;
- PCA 的特征提取有理论依据, 神经网络的连边使用一些随机的初始权重, 然后不断调整;
- PCA 的特征提取数量有理论依据, 神经网络每层节点数量 (特征数量) 是人为设置的超参数, 连激活函数的选取也是人为的.
这里继续引出一个新的名词,“宽度学习”
如果数据集比较小, 特征比较少, 则应该使用较少的层数, 以及较少的节点数.
如果数据集比较大, 特征比较多, 则应该使用较多的层数, 以及较多的节点数. 所以形成了 深度学习. 换言之, 深度学习特别“吃”数据, 数据量小了就别玩, 去搞搞 机器学习常识 12: SVM之类的小样本学习吧.宽度学习是指隐藏层的节点数非常多, 理论上已经证明, 宽度学习与深度学习是等价的. 我认为原因在于: 由于神经网络初始权重设置的随机性, 宽度学习提取的特征非常多, 总有几个是合适的.
对于实战,参考了以下文章:BP神经网络及python实现(详细)_bp神经网络python代码-CSDN博客
21、卷积神经网络 CNN
典中之典的一种网络,讲解不多做展开,大有讲得好的博客,参考如下:
卷积神经网络(CNN)详细介绍及其原理详解-CSDN博客
CNN笔记:通俗理解卷积神经网络_cnn卷积神经网络-CSDN博客
当然,以上都只是些入门知识,更详细的还是需要回到相关课程中,如 Stanford 机器学习公开课。
【斯坦福大学】CS229 机器学习 · 2018年(完结·中英字幕·机翻)_哔哩哔哩_bilibili
实战参考文章:Python CNN卷积神经网络实例讲解,CNN实战,CNN代码实例,超实用-CSDN博客
22、循环神经网络 RNN
又是一十分典中典的网络结构,这里也不做展开,分享个人学习中细看的博客,如下:
循环神经网络(RNN, Recurrent Neural Networks)介绍-CSDN博客
循环神经网络(Recurrent Neural Network)详解-CSDN博客
神经网络——循环神经网络(RNN)-CSDN博客
实战参考博客:Python手撸机器学习系列(十六):循环神经网络RNN的实现_python实现rnn网络-CSDN博客
后记
传统方法中,多数为统计机器学习,从数学原理上做一定了解对后续学习深度学习还是有一定益处的。在后续的学习中,更细节的知识点可以参考《统计机器学习导论》这一本书。
从 CNN 开始,已经涉及深度学习了,这部分光看常识是远远不够的,除了这里找的几篇博客外,还需要更细的学习。
现在再回过头来看 inversionnet,说不定又有新的了解。