![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
机器学习
hello_pig1995
日有所进
展开
-
Why does the method of Lagrange multipliers work for optimization in multivariable calculus?
Ref: [1]https://www.quora.com/Why-does-the-method-of-Lagrange-multipliers-work-for-optimization-in-multivariable-calculus今天看到拉格朗日乘子,kkt算法的时候,突然想起来,为什么拉格朗日算法可以呢?直观上怎么理解呢?发现还是quora上面的答案比较清晰直观。拉格朗日算法其实相当原创 2016-09-18 20:20:09 · 922 阅读 · 0 评论 -
CS231n Optimization: Stochastic Gradient Descent
loss functionloss function是优化的源泉,不同的loss function会有不同的效果,比如说svm的loss和softmax,svm相当于就是点到为止,经过映射之后,只要两者的差距要比delta大,那么其实就满足了,而softmax永不满足,一个概率分布,只要错误的概率有一点概率的话,其实都是有可能的。optimization第一个是在所有的参数空间随机搜索,俗话说,女人原创 2016-08-19 13:30:16 · 459 阅读 · 0 评论 -
Machine Learning All the exercises
https://github.com/zhaohui-yang/Machine-Learning-Ng原创 2016-08-07 19:26:25 · 565 阅读 · 4 评论 -
CS231n A Few Useful Things to Know about Machine Learning
CS231n的第一个module的第一个further reading是这篇文章,这篇文章写了一些机器学习中容易被忽视的点或者说是“妖术“(black art)。1.LEARNING = REPRESENTATION + EVALUATION + OPTIMIZATION 要明白如何去表示,如何去评价,如何去优化。 作者列举了一些不同的Representation Evaluation Opti原创 2016-08-13 11:51:53 · 858 阅读 · 0 评论 -
Machine Learning Week5
F-score原创 2016-08-02 09:55:55 · 434 阅读 · 0 评论 -
Machine Learning Week8 findClosestCentroids.m
增加一个临时变量dist记录当前最短的距离 loop over centroids计算属于哪一个聚类中心。function idx = findClosestCentroids(X, centroids)%FINDCLOSESTCENTROIDS computes the centroid memberships for every example% idx = FINDCLOSESTCE原创 2016-08-05 11:15:40 · 1961 阅读 · 0 评论 -
Machine Learning runkMeans plotProgresskMeans plotDataPoints
runkMeans就是调用findClosestCentroids和computeCentroids这两个函数,通过这两个函数能够计算出来对应的类别和聚类中心。但是在画图的时候是这样画的,首先在画图的时候要画出两样东西,第一个是点,第二个是centroids的变化曲线。对于点来说,由于idx是对应其属于哪一个类别,所以plotDataPoints就是根据idx和点的二维坐标来进行绘制,不同的idx的原创 2016-08-05 11:37:58 · 817 阅读 · 0 评论 -
Machine Learning Week8 computeCentroids.m
loop over centroids 对于每一个centroid计算属于这一类的均值。function centroids = computeCentroids(X, idx, K)%COMPUTECENTROIDS returs the new centroids by computing the means of the %data points assigned to each cen原创 2016-08-05 11:14:05 · 1884 阅读 · 0 评论 -
Machine Learning displayData.m
displayData相对来说还比较简单。主要功能就是显示X矩阵中的一个一个的样本。 主要是计算display_rows,display_cols,example_width,example_height. 图片与图片之间放上pad进行填充,然后使用imagesc进行展示。function [h, display_array] = displayData(X, example_width)%D原创 2016-08-05 10:32:03 · 1436 阅读 · 0 评论 -
neural-networks-and-deep-learning multiple_eta.py
其实这个文件也相对简单,首先就是确定不同的三个eta,也就是三个不同的学习率,然后训练不同的网络,权重初始化的方式为默认方式,然后进行训练,经过30个epoch的训练后的结果纪录在result中。在plot的函数中只画出validation_cost。可以看出来eta大了,学不会。eta小了学的慢。"""multiple_eta~~~~~~~~~~~~~~~This program shows h原创 2016-07-21 23:31:26 · 308 阅读 · 0 评论 -
neural-networks-and-deep-learning weight_initialization.py
weight_initialization主要是通过不同的网络权重的初始化方式来进行网络的测试。会发现,使用默认方式,也就是方差相对较小的方式更能够有比较好的结果。看两者的曲线图很容易就能够看出。第一个函数就是训练网络,然后存储,第二个函数就是画出accuracy的曲线图。"""weight_initialization ~~~~~~~~~~~~~~~~~~~~~~~~This program s原创 2016-07-21 22:47:18 · 384 阅读 · 0 评论 -
neural-networks-and-deep-learning valley2.py
又一个山沟沟"""valley2.py~~~~~~~~~~~~~Plots a function of two variables to minimize. The function is afairly generic valley function.Note that this is a duplicate of valley.py, but omits labels on theaxi原创 2016-07-21 22:25:19 · 304 阅读 · 0 评论 -
neural-networks-and-deep-learning valley.py
一个山沟沟"""valley~~~~~~Plots a function of two variables to minimize. The function is afairly generic valley function."""#### Libraries# Third party librariesfrom matplotlib.ticker import LinearLoca原创 2016-07-21 22:24:04 · 312 阅读 · 0 评论 -
贝叶斯估计 极大似然
这两者的差别我认为最核心的在于先验概率上。真实的世界有客观规律,我们可以用θ\theta们来进行刻画,在这个规律指导之下有着种种现象,就好象F = ma通过这个公式能够衍生出种种物理现象,所谓”一生二,二生三,三生万物“,但是我们并不知道真实的规律,所以通过现象来估计背后的公式和参数。极大似然就是所有的规律都是根据所观察到的现象来进行推断的。贝叶斯估计,就是根据有一些先验假设。有一种类似于加权的感原创 2016-08-19 13:38:52 · 376 阅读 · 0 评论 -
A Review on Multi-Label Learning Algorithms - KNN
在多标签分类中,有一种方法就是按照KNN的类似算法去求出每一个维度的结果。也是看周志华老师的review突然就想实现以下,然后实现了一个相当简单的。首先我们需要进行计算的是在近邻数目为k的情况下的贝叶斯分布的可能。也就是,首先对于每一个样本求其近邻,然后按照近邻在这一维度上的分类进行朴素贝叶斯的统计,遇到一个新样本,首先按照最近邻来计算近邻的集合,然后在每一个维度上根据其朴素贝叶斯的统计来进行计算。原创 2016-08-29 20:52:04 · 1229 阅读 · 0 评论 -
CS231n Neural Networks Part 1: Setting up the Architecture
有这么几个有意思的知识1.sigmoid,tanh,relu,prelu以及maxout,不同的激活函数2.the deeper the better? 更深层次意味着更好的抽象。假设这个世界是可以用参数刻画的,我们能够做的是需要从数据中提取出来参数是什么,但是参数的数量和层级我们是不清楚的,就好象我们不能假设存在一组参数能够一次性的产生所有数据,还是参数也产生参数,所以从这个角度出发,我们估计的原创 2016-08-19 21:39:08 · 527 阅读 · 0 评论 -
CS231n Image Classification: Data-driven Approach, k-Nearest Neighbor, train/val/test splits
知识性的内容主要的增加: 1.对于knn算法有FLANN - Fast Library for Approximate Nearest Neighbors 等开源的高效函数库可以使用。可以读读源代码,应该很有意思。 http://www.cs.ubc.ca/research/flann/ 2.对于高维数据的可视化t-SNE,能够将高维图片根据L2距离在二维平面上进行展示。 http://l原创 2016-08-12 23:42:49 · 578 阅读 · 0 评论 -
UFLDL selfTaughtLearning[待更]
There are two common unsupervised feature learning settings, depending on what type of unlabeled data you have. The more general and powerful setting is the self-taught learning setting, which does not原创 2016-08-12 14:06:17 · 395 阅读 · 0 评论 -
UFLDL sparse coding ICA RICA[待更]
Reference: 目前先不打算看sparse coding,所以留待以后再看原创 2016-08-11 23:40:16 · 535 阅读 · 0 评论 -
CS231n Putting it together: Minimal Neural Network Case Study —— nn with softmax loss
加一层非线性,相比于单纯的softmax,效果立马就好了啊。import numpy as npimport matplotlib.pyplot as pltN = 100;D = 2;K = 3;X = np.zeros((N*K,D))y = np.zeros(N*K,dtype = 'uint8')for j in xrange(K): ix = range(N*j,N*(j+原创 2016-08-23 23:39:29 · 939 阅读 · 0 评论 -
CS231n Putting it together: Minimal Neural Network Case Study —— softmax
模型不够复杂在这个例子中,首先先来看一下比较简单的线性softmax。 首先按照原来的数据进行测试,基本上是50%的正确率左右,但是稍微动一动数据有以下的变化,关键在于点集合的生成。首先点集合的生成是由r和t来控制的,X的生成是控制三角函数的位置,如果r调整合适的话,其实X是可以成为一个很规矩的圆的。r则是半径。对于最后的结果由集中不同的调整方式,后面的softmax的bp过程自己推一下差不多了。原创 2016-08-23 20:37:39 · 707 阅读 · 0 评论 -
UFLDL Sparse Autoencoder
Reference: [1]http://www.stanford.edu/class/cs294a/cs294a_2011-assignment.pdf [2]http://nlp.stanford.edu/~socherr/sparseAutoencoder_2011new.pdf [3]http://www.cnblogs.com/tornadomeet/archive/2013/03/原创 2016-08-11 15:55:18 · 581 阅读 · 0 评论 -
CS231n Neural Networks Part 3: Learning and Evaluation Babysitting the learning process
1.Loss function 如果是mini-batch,那么loss一般是抖动下降的,对于不同的lr有着不同的loss下降的曲线。2.Train/Val accuracy 不同的acc曲线对应着不同的含义,比如说一般来说epoch上升,acc也会上升,但是如果过拟合了,acc在val会下降。3.Ratio of weights:updates 如果将grad和weights变成向量,那么两原创 2016-08-22 23:41:22 · 807 阅读 · 0 评论 -
CS231n Neural Networks Part 3: Learning and Evaluation sanity checks Tips/Tricks
1.loss without regularization 首先一个样本输入网络,最开始基本上概率或者激活是平均分的,我们可以预测loss,那么就根据loss来判断是否网络在不加上正则化的时候是正常的2.loss with regularization 增加regularization,我们也可以根据网络的参数的多少和均值等估计出来正则化项的大小。3.subset of data 使用一个小数原创 2016-08-22 17:03:22 · 527 阅读 · 0 评论 -
CS231n Neural Networks Part 3: Learning and Evaluation Gradient Checks
本来我觉得Gradient Check应该没什么内容,但是后来发现其实还是有些东西的。首先先来看看CS229的梯度检查,对于梯度检查其实有这么几点是需要注意的,首先就是精度问题,最好使用double来进行计算,而且其实有很多坑。1.参数数量太多 比如说,计算梯度的时候,参数数量太大,之前有一次计算梯度的时候,首先向量化所有的梯度,然后单独计算,但是这样的计算方式效率太低,比如说一个参数矩阵中,可能原创 2016-08-22 16:48:15 · 634 阅读 · 0 评论 -
CS231n Neural Networks Part 2: Setting up the Data and the Loss
Data preprocessingPCA的前几个主要成分是低频的,全局性的。 pitfall:在subtraction mean的时候,是要计算training data的mean,而不是所有数据的mean PCA可能的一个问题,是在wighten的过程中,可能会放大其noise,比如说某一个维度本来就很小,而且std也很小,那么wighten之后,其实就会扩大这一维度的scale。Weigh原创 2016-08-21 23:35:54 · 620 阅读 · 0 评论 -
ConvNetJs
发现一个很神奇的网站:http://cs.stanford.edu/people/karpathy/convnetjs/index.html使用浏览器的js来直接训练网络,excited! 代码在:https://github.com/karpathy/convnetjs1.intro页intro页的几个实验都很有意思,发现几个神奇的地方比如说在1d的回归上,有时候添加一个点,那么分界线就有可能有原创 2016-08-21 22:15:55 · 2379 阅读 · 0 评论 -
Momentum和lr关系
Reference: [1]https://zhuanlan.zhihu.com/p/21475880其是主要的因素我认为其实是历史因素综合对于现在的因素产生影响,那么可能有这样的优点: 如ref[1],就是由于在某个方向波动过大,因此可以通过这样的方式来综合历史因素,然后使得其相对平稳。那么对于当前的梯度来说,就受其影响相当小。可以说是之前的训练样本阴魂不散。或者可以说是batch GD的一个原创 2016-08-09 23:05:16 · 1317 阅读 · 0 评论 -
neural-networks-and-deep-learning false_minimum.py
局部最优解很多很多"""false_minimum~~~~~~~~~~~~~Plots a function of two variables with many false minima."""#### Libraries# Third party librariesfrom matplotlib.ticker import LinearLocator# Note that axes3d原创 2016-07-21 16:35:23 · 323 阅读 · 0 评论 -
neural-networks-and-deep-learning backprop_magnitude_nabla.py
似乎是为了表达梯度扩散的问题"""backprop_magnitude_nabla~~~~~~~~~~~~~~~~~~~~~~~~Using backprop2 I constructed a 784-30-30-30-30-30-10 network to classifyMNIST data. I ran ten mini-batches of size 100, with eta =原创 2016-07-21 16:33:50 · 602 阅读 · 0 评论 -
neural-networks-and-deep-learning misleading_gradient_contours.py
其实是康托图,和之前的misleading_gradient没有什么太大的本质区别。 contour的level就是选择哪些值画线。"""misleading_gradient_contours~~~~~~~~~~~~~~~~~~~~~~~~~~~~Plots the contours of the function from misleading_gradient.py"""#### Lib原创 2016-07-21 16:24:32 · 430 阅读 · 0 评论 -
Machine Learning Week4 oneVsAll.m
根据传入的参数们进行训练。fmincg和fminunc很类似的。function [all_theta] = oneVsAll(X, y, num_labels, lambda)%ONEVSALL trains multiple logistic regression classifiers and returns all%the classifiers in a matrix all_thet原创 2016-07-29 01:41:48 · 1869 阅读 · 0 评论 -
Machine Learning Week4 predictOneVsAll.m
predictOneVsAll.m这个函数相对来说比较简单,就是根据不同的oneVsAll训练出来的theta参数来进行分类,分类的结果是根据某一个类的概率最大来判断的。max函数刚好能返回最大值和下标,很方便。最后,由于label是列向量,所以最后确定的X的类也应该是列向量的。function p = predictOneVsAll(all_theta, X)%PREDICT Predict t原创 2016-07-29 01:39:47 · 2702 阅读 · 0 评论 -
Machine Learning Week4 lrCostFunction.m
其实虽然说换了个名字,但是和上一个week的cost的计算是一样的。、 先算unregularized loss/grad,然后计算正则化项。function [J, grad] = lrCostFunction(theta, X, y, lambda)%LRCOSTFUNCTION Compute cost and gradient for logistic regression with原创 2016-07-29 01:35:47 · 1631 阅读 · 0 评论 -
Machine Learning Week3
week3的主要内容并不算很多,其实相对于week2,主要是修改了h函数,变成了sigmoid,而不是原来的向量乘法。不过我觉得有两点需要注意,第一点就是fminunc函数,这个函数接受options作为设置,然后结构initial_theta作为优化的theta参数,之后是一个句柄(不知道是不是这么叫),会通过这个函数计算loss和梯度grad。返回值的loss,grad,我想grad用来更新了,原创 2016-07-28 14:44:24 · 664 阅读 · 0 评论 -
Machile Learning submit & submitWithConfiguration
其中有如下几个函数:function submitWithConfiguration(conf)function [email token] = promptToken(email, existingToken, tokenFile)function isValid = isValidPartOptionIndex(partOptions, i)function response = subm原创 2016-07-27 19:37:25 · 3685 阅读 · 0 评论 -
Comparison of LDA and PCA 2D projection of Iris dataset
Reference: [1]http://scikit-learn.org/stable/auto_examples/decomposition/plot_pca_vs_lda.html#example-decomposition-plot-pca-vs-lda-pyIRIS数据集合是一个很简单的对于鸢尾花的分类,每一朵花儿的花瓣和萼片的长款数据,也就是四个维度,2d pca和lda两种方法实现了原创 2016-07-16 12:25:40 · 709 阅读 · 0 评论 -
Machine Learning Week2 files
2016/07/26 18:01 <DIR> .2016/07/26 18:01 <DIR> ..2016/07/26 16:07 680 computeCost.m2016/07/26 18:11 723 computeCostMulti.m2016/07/26 16:17原创 2016-07-26 18:33:59 · 342 阅读 · 0 评论 -
Machine Learning Week2 ex1_multi
multi相对来说并不是非常难,主要就是将单变量回归变成了多变量回归,如果之前编写的程序都能够通用的话,那么其实不用怎么修改代码。第二个就是通过normalEqn来进行最佳theta的计算。%% Machine Learning Online Class% Exercise 1: Linear regression with multiple variables%% Instruction原创 2016-07-26 18:29:50 · 1096 阅读 · 0 评论 -
Machine Learning Week 2 ex1
ex1部分是很简单的单变量的回归。 首先是计算loss,loss的计算注意其结果要进行sum,然后除以2m即可。 然后是plot,plot也相对简单,不过要加入’rx’使得标志点打x,并且红色显示。 之后是梯度下降算法,进行1500次迭代,绘制迭代后的结果进行绘制。 最后画出两个参数theta0和theta1在不同的取值时在本数据集上的损失函数J的surf和contour图。%% Machi原创 2016-07-26 16:42:40 · 595 阅读 · 0 评论