Kernel Logistic Regression
这一节主要介绍如何将Kernel Trick引入到Logistic Regression,以及LR与SVM的结合
这一节主要介绍如何将Kernel Trick引入到Logistic Regression,以及LR与SVM的结合
2017.3.3更新: TensorFlow版本KMeans与RBFNet
2017.2.28更新:Python实现RBFNet
这一节利用上节SVM中的高斯核(RBF Kernel)来介绍一个新的模型,RBF Network,属于神经网络(Neural Network)的一种,可以以任意精度来逼近任意的连续函数。
上节介绍的Kernel SVM的结尾,提到了overfit的问题,那是因为SVM要找到的分类面是必须把所有的训练数据分开,即使有一些噪音数据,或者说是错误标注的数据,也要"坚持"分开,这可能就会形成很复杂的边界,很容易形成overfit,如下:
接着上一节的Dual SVM,我们解决了非线性转换维度变高导致求解困难的问题,但是仍然有问题,那就是在求Q矩阵的时候,由于涉及到了高维的内积,计算量仍然很大,这一节引入核机制(Kernel Trick)来高效的求解这一过程,完全不再依赖高维空间。
对偶SVM主要解决在非线性转换之后维度变高二次规划问题求解困难的问题。
接着练习TensorFlow, 这一节开始实现RNNs(循环神经网络), 同样使用mnist数据集,测试正确率也基本可以到99%。 同CNNs, RNNs的结构以及训练方式这里不加赘述,重心放在实现上。
提到循环神经网络(Recurrent Neural Networks),下面这张图就不得不说:
上一次主要是使用最简单的前馈神经网络,来对mnist数据进行了分类,测试正确率可以达到94-95%,这一节主要使用TensorFlow来实现卷积神经网络(CNN), 正确率可以到99%了,这已经接近最高了。 另外这一篇不记录CNN的原理以及训练方式,等段时间在整理。
同前一篇NN,首先定义几个参数:
开始学习TensorFlow, 看了一些文档以及教学视频,主要是周莫烦的TensorFlow入门视频 ,之前自己手写过BPNN,各种debug,费了很多事情,而且还有很多地方需要优化,想到自己还要用CNN, RNN等DNN,自己写的话, 可能性不大了,于是就打算使用深度学习框架了,准备多写几个例子加深印象。
2017.12.5 CUDA 与 cuDNN的最新版本均已经有所变化,不过安装方式相同。
当前环境如下:
前段时间看完了机器学习基石课程,不过还有regularzation和 validation 没有整理,由于需要,先看了技法课程中的神经网络(Neural Network)。林老师讲的依然很好,将神经网络笔记记录于此。
前面介绍了PLA,Linear Regression 和 Logistic Regression 这三种线性分类(回归)模型,已经知道可以很好地用来处理线性可分的数据集或者说大概可以线性可分,然而现实世界中很多数据并不是线性可分的,起码很难找到一个超平面去分开两类数据,而Linean Model的限制也就是无法很好地处理无法用超平面区分的数据,这种数据很常见,如下图的一个2维数据集:
课程到此为止,一共介绍了PLA(感知机),Linear Regression(线性回归),Logistic Regression(逻辑回归)三种很相近的线性模型。这一节主要从error function分析介绍三种模型的联系,一些优化方法,最后如何延伸到多分类的情况。