Neural Networks for Machine Learning Lecture 4
课程地址:https://www.coursera.org/learn/neural-networks
老师主页:http://www.cs.toronto.edu/~hinton
备注:笔记内容和图片均参考老师课件。
这一章的内容其实没怎么看懂,这里就把课件中没证明的公式简单证明一下。
首先是Softmax的公式
y_i = \frac{e^{z_i}}{∑_{j∈group }e^{z_j}}\\
\frac{∂y_i}{∂z_i}= \frac{e^{z_i}∑_{j∈group }e^{z_j}-e^{z_i}e^{z_i}}{(∑_{j∈group }e^{z_j})^2}
=\frac{e^{z_i}}{∑_{j∈group }e^{z_j}}\frac{∑_{j∈group }e^{z_j} -e^{z_i}}{∑_{j∈group }e^{z_j}}=y_i(1-y_i)\\
\frac{∂y_i}{∂z_j}=\frac{e^{z_i}}{(∑_{j∈group }e^{z_j})^2}(-e^{z_j})=-\frac{e^{z_i}e^{z_j}}{(∑_{j ...
利用sklearn计算SVM的一些参数
之前在做learning from data支持向量机一章习题的时候,需要计算SVM的一些参数,例如超平面的方程,截距等等,这里简单总结一下。
我们知道,SVM算法最后是求解如下二次规划问题
\min_{w,b,\xi}\quad \frac 1 2 w^Tw+C\sum_{n=1}^{N}\xi_n \\
\text{subject to} \quad y_n (w^Tz_n+b) \ge1-\xi_n \\
\xi_n\ge0其中$z_n=\phi(x_n)$
这里我把问题统一起来,如果是Hard Margin,那么取$\xi_n=0$即可,如果没有没有特征转换,那么$z_n=x_n$。现在的问题是通过sklearn求解$w,b$,下面分别介绍原始数据以及进行特征转换的情形下如何求解这两个参数。
原始数据import numpy as np
import matplotlib.pyplot as plt
N = 20
x1 = np.random.uniform(0, 1, N)
x2 = np.random.uniform(-1, 1, N)
x = []
for i in ...
奇异值分解(1)——奇异值分解的证明
在学习机器学习的过程中经常碰到奇异值分解,之前对这个知识点不太熟悉,花了一点时间去学习了相关知识,准备写三篇博客,分别为奇异值分解的证明,奇异值分解的性质,奇异值分解的应用,这一篇是有关奇异值分解的证明,话不多说,进入正题。
首先来看定义
奇异值分解(Singular Value Decomposition)设$A$是一个$m\times n$矩阵, 则存在$m$阶正交矩阵$U$和$n$阶正交矩阵$V$, 满足
A=U \left[
\begin{matrix}
\sigma_1 && & \\
& \ddots && \\
&&\sigma_r& \\
&&&0
\end{matrix}
\right] V^T=U\sum V^T 其中$\text{r = rank A},\sum\in R^{m\times n}$. 习惯上,设 $\sigma_1\ge\sigma_2\ge…\ge\sigma_r>0$,称$\sigma_1,…,\sigma_r$为奇异值(singular value). 称$U$和$V$的前$r$ ...
利用matplotlib库中pcolormesh作彩图
在做Learning from data课本习题4.4的时候,需要作彩图,对matplotlib中pcolormesh专门研究了下,这里详细记录一波,其实这部分作图和之前隐函数作图的流程非常相似,可以从后面看到。
首先看个最简单的图。
import matplotlib.pyplot as plt
import numpy as np
#定义点的数量
n=500
#作点
x=np.linspace(-10,10,500)
y=np.linspace(-10,10,500)
#构造点
X,Y=np.meshgrid(x,y)
Z=np.sin(X+Y)
#作图
plt.pcolormesh(X,Y,Z)
plt.show()
整个流程和隐函数是基本一致的,接下来看一些参数,参数还是非常多的,这里主要介绍cmap,vmin,vmax,除此之外,还会介绍colorbar方法,下面分别看下。
cmap参数cmap参数是设置颜色,设置方法是首先利用plt.cm.get_cmap设置样式,然后将这个样式传递给pcolormesh,具体的颜色类型可以参考官网
https://matplot ...
Python隐函数作图
在使用Python作图的过程中,碰到了几次需要隐函数作图的问题,目前我暂时只知道两种方法,一种是使用sympy库,另一种是使用matplotlib中等高线的方法,这里分别总结下。
Sympy库隐函数作图Sympy库隐函数作图主要使用了plot_implicit函数以及parse_expr函数,首先来简单看下该plot_implicit函数的参数说明。def plot_implicit(expr, x_var=None, y_var=None, **kwargs):
"""A plot function to plot implicit equations / inequalities.
Arguments
=========
- ``expr`` : The equation / inequality that is to be plotted.
- ``x_var`` (optional) : symbol to plot on x-axis or tuple giving symbol
and range as ``(sym ...
机器学习中的数学知识总结
这篇应该算个flag以及目录帖,两周前就打算开始写这个方面,但是总是一拖再拖,所以干脆先把flag立了,也算给自己一个动力吧。
之所以要总结机器学习中的数学知识,是因为发现学习的过程中有些部分不太扎实,有的知识点也是完全不了解,所以想干脆记录下学习的过程中遇到的难点重点。简单来说,机器学习中数学的知识点也就三个方面,分别是高等数学,线性代数以及概率论,目前我高等数学还没碰到比较大的问题,所以这部分可能暂时没有。现在打算整理的线代知识有奇异值分解(SVD),矩阵的微分性质,概率论的问题有hoeffding不等式以及VC bound。这篇文章应该会给出总结的知识的目录,方便查阅。
Neural Networks for Machine Learning Lecture 3
课程地址:https://www.coursera.org/learn/neural-networks
老师主页:http://www.cs.toronto.edu/~hinton
备注:笔记内容和图片均参考老师课件。
Lecture3主要介绍了反向传播算法,这里简单回顾下。
先回顾下公式,首先是linear neuron
z=b+\sum_{i}x_iw_i但是线性神经元还是很弱的,所以老师这里引入了logistic neuron
y=\frac {1}{1+e^{-z}},\frac {dy}{dz}=y(1-y)我们现在有损失函数$E=\frac {1}{2}(t-y)^2$,关于$w_i$求偏导可得
\frac {\partial y}{\partial w_i}=\frac {\partial z}{\partial w_i}\frac {\partial y}{\partial z}=x_iy(1-y)\\
\frac {\partial E}{\partial w_i}=\sum_{n}\frac {\partial y^n}{\partial w_i}\frac ...
北理Python爬虫课程总结
总算断断续续把北理这门爬虫课程学完了,也做了一些笔记,强烈推荐这门课,非常适合新手入门,个人后续打算找一本爬虫的书看一下,学习一些进阶知识,也会多实践下。
斯坦福CS106A作业6
这次的作业是做一个姓名使用趋势的展示作业,综合了很多知识,收获很大。
NameSurfer
/*
* File: NameSurfer.java
* ---------------------
* When it is finished, this program will implements the viewer for
* the baby-name database described in the assignment handout.
*/
import acm.program.*;
import java.awt.event.*;
import javax.swing.*;
public class NameSurfer extends Program implements NameSurferConstants {
/* Method: init() */
/**
* This method has the responsibility for reading in the data base
* and initializing the ...
Neural Networks for Machine Learning Lecture 2
课程地址:https://www.coursera.org/learn/neural-networks
老师主页:http://www.cs.toronto.edu/~hinton
备注:笔记内容和图片均参考老师课件。
Lecture2主要介绍了神经网络的几种主流类型以及感知机,下面回顾一下。
几种常见的神经网络前馈神经网络(Feed-forward neural networks)
循环神经网络(Recurrent networks )
循环神经网络最大的特点是会返回之前访问过的节点。
对称连接神经网络(Symmetrically connected networks)这种神经网络和循环神经网络类似,但是单元之间的连接是对称的(它们在两个方向上具有相同的重量),这种循环网络的优势在于训练起来相对容易,但是也有一定的能力限制,例如不能循环建模。没有隐藏层的对称连接神经网络称为”Hopfield nets”,有隐藏层的对称连接神经网络称为”Boltzmann machines”。
下面看下感知机
感知机首先看下什么是感知机
z=b+\sum_{i}x_iw_i=w^Tx\\
z=\b ...
Neural Networks for Machine Learning Lecture 1
这门课其实观望了很久,之前比较忙没时间学,几天前看了下,发现每周视频量不是很多,所以打算暑假把这门课跟完,做一些简单的笔记。
课程地址:https://www.coursera.org/learn/neural-networks
老师主页:http://www.cs.toronto.edu/~hinton
备注:笔记内容和图片均参考老师课件。
下面进入Lecture1的内容,Lecture1的内容比较简单,介绍了机器学习以及神经网络一些基本概念,这里比较重要的概念是神经元,为了模仿大脑的神经元,在神经网络中也有一些神经元的模型,可以简单理解为一种处理函数,这里介绍了几个常用的。
Linear Neurons
y=b+\sum_{i}x_iw_i图像如下
Binary Threshold Neurons
z=b+\sum_{i}x_iw_i\\
z=\begin{cases}
1, & \text{ $z\ge 0$}\\
0, & \text{其余情况}
\end{cases}图像如下
Rectified Linear Neurons(Linear Thres ...
Scipy linprog报错整理
最近在做Learning from data的习题,要解决一个线性优化问题,但是碰到一个坑,这里记录一下,具体题目可以参考Learning from data的第三章的Problem3.6,题目的大概意思是从线性规划角度解决分类问题,我先产生1000组数据。
import numpy as np
import matplotlib.pyplot as plt
#参数
rad=10
thk=5
sep=5
#n为产生点的个数,x1,y1为上半个圆环的坐标
def generatedata(rad,thk,sep,n,x1=0,y1=0):
#上半个圆的圆心
X1=x1
Y1=y1
#下半个圆的圆心
X2=X1+rad+thk/2
Y2=Y1-sep
#上半个圆环的点
top=[]
#下半个圆环的点
bottom=[]
#后面要用到的参数
r1=rad+thk
r2=rad
cnt=1
while(cnt<=n):
...