Tag: 机器学习

使用Python和numpy的渐变下降

def gradient(X_norm,y,theta,alpha,m,n,num_it): temp=np.array(np.zeros_like(theta,float)) for i in range(0,num_it): h=np.dot(X_norm,theta) #temp[j]=theta[j]-(alpha/m)*( np.sum( (hy)*X_norm[:,j][np.newaxis,:] ) ) temp[0]=theta[0]-(alpha/m)*(np.sum(hy)) temp[1]=theta[1]-(alpha/m)*(np.sum((hy)*X_norm[:,1])) theta=temp return theta X_norm,mean,std=featureScale(X) #length of X (number of rows) m=len(X) X_norm=np.array([np.ones(m),X_norm]) n,m=np.shape(X_norm) num_it=1500 alpha=0.01 theta=np.zeros(n,float)[:,np.newaxis] X_norm=X_norm.transpose() theta=gradient(X_norm,y,theta,alpha,m,n,num_it) print theta 我的theta从上面的代码是100.2 100.2 ,但它应该是100.2 61.09在matlab中是正确的。

如何更新neural network反向传播的偏见?

有人可以向我解释如何更新反向传播中的偏见吗? 我读过不less书,但是找不到更新! 我明白,偏见是一个额外的input1附加一个权重(每个神经元)。 必须有一个公式。 谢谢, @msw 最有趣的。 谢谢,我认为有两点好处:1.“如果你省略偏置项,那么具有最常用的隐层激活函数的多层感知器的”通用逼近“属性并不成立,但是Hornik(1993)没有偏差的通用逼近性质的充分条件是没有激发函数的导数在原点处消失,这意味着在通常的S形激活函数中,可以使用固定的非零偏差项而不是可训练的偏差。 2.可以像其他权重一样学习偏差项。“所以我要么join一个”恒定的权重“,要么像使用梯度下降一样训练这个权重。 我理解对吗?

有标签和无标签数据有什么区别?

在Sebastian Thrum的这段video中,他表示,监督学习与“标记”数据一起工作,无监督学习与“未标记”数据一起工作。 这是什么意思? 谷歌search“标签与未标记的数据”返回一堆关于这个话题的学术论文。 我只是想知道基本的区别。

Porter和Lancaster干扰algorithm的主要区别和优点是什么?

我正在处理java中的文档分类任务。 两种algorithm都被高度推荐,每种方法的优点和缺点是什么,哪些在自然语言处理任务的文献中更常用?

培训期间的常见原因

我注意到训练中频繁发生的是NAN s的引入。 通常情况下,似乎是通过内部产品/完全连接或卷积层吹起来的重量来引入的。 这是否发生,因为梯度计算正在炸毁? 或者是因为重量初始化(如果是的话,为什么重量初始化有这个效果)? 或者这可能是由input数据的性质造成的? 这里最重要的问题是: 在训练期间发生NAN的最常见原因是什么? 其次,有什么方法来打击这个(为什么他们工作)?

build议用户可以购买什么,如果他已经有东西在购物车

我正在开发出售食物的电子商店。 我想要一个build议框,在那里我会build议我的用户可以购买什么,基于他已经有什么购物车。 如果他有啤酒,我希望他可以通过降低他可能购买的概率来推荐筹码和其他东西。 但是我希望我的algorithm能够学习根据所有用户以前的购买build议杂货。 我应该从哪里开始? 我有食品杂货表user_id , item_id , date和类似的。 我怎样才能build立一个没有蛮力的build议,这是不可能的。

Tensorflow一个热门编码器?

tensorflow是否有类似scikit学习处理分类数据的一个热门编码器 ? 将使用tf.string的占位符行为作为分类数据? 我意识到我可以在将数据发送到tensorflow之前手动预处理数据,但是内置它非常方便。

真实世界的错字统计?

我在哪里可以find一些现实世界的错字统计? 我试图将人们的input文本与内部对象相匹配,而且人们往往会犯拼写错误。 有两种错误: typos – “Helllo”,而不是“星期六”,而不是“你好”/“Satudray”等。 Spelling – “芝加哥”而不是“芝加哥” 我使用Damerau-Levenshtein距离作为拼写错误( 双倍的Metaphone拼写)(Python实现在这里和这里 )。 我想关注Damerau-Levenshtein(或简单的edit-distance )。 教科书的实现总是使用“1”来表示删除,插入replace和换位的权重。 虽然这很简单并且考虑到很好的algorithm,但它不符合“现实”/“真实世界的概率”。 例子: 我确定“Helllo”(“Hello”)的可能性大于“Helzlo”,但它们都距离编辑距离。 在QWERTY键盘上,“Gello”比“Qello”更接近“Hello”。 Unicode音译:“慕尼黑”和“慕尼黑”之间的“真实”距离是多less? “现实世界”权重应该是删除,插入,replace和换位? 即使Norvig非常酷的拼写纠正器使用非加权编辑距离。 顺便说一句,我敢肯定,重量需要是function,而不是简单的浮动(按照上面的例子)… 我可以调整algorithm,但是我可以在哪里“学习”这些权重? 我无法访问Google规模的数据 … 我应该猜他们吗? 编辑 – 试图回答用户的问题: 由于上述原因,我目前的非加权algorithm在遇到错字时经常失败。 “星期四回归”:每个“真实的人”都可以很容易地告诉周四比周二更有可能,但它们都是一个编辑距离! (是的,我做logging和衡量我的performance)。 我正在开发一个NLP旅游search引擎,所以我的字典包含25K目的地(预计将增长到100K),时间expression〜200(预期1K),人物expression〜100(预计300),货币expression〜100(预期500 ),“胶合逻辑词”(“from”,“beautiful”,“apartment”)〜2K(预计10K)等等… 编辑距离的使用对于每个上述单词组是不同的。 我试图“明显的时候自动校正”,例如,距离字典中的另外一个单词只有1个编辑距离。 我还有许多其他的手工调整的规则,例如,距离长度大于4的字典单词距离不超过2个编辑距离的双倍音位修正…当我从现实世界的input中学习时,规则列表不断增加。 “有多less对词典在你的门槛内?”:那么,这取决于“花哨的权重系统”和现实世界(未来)的input,不是吗? 无论如何,我有广泛的unit testing,以便我对系统做出的每一个改变只会使它变得更好(当然基于过去的input)。 大多数小于6个字母的单词距离距离另一个字典条目1个编辑距离的单词的编辑距离在1个编辑距离内。 今天当有两个字典条目与input距离相同时,我尝试应用各种统计数据来更好地猜测用户的意思(例如,法国巴黎更有可能出现在我的search中,而不是伊朗的帕里兹)。 select一个错误的单词的成本是向最终用户返回半随机(通常是荒谬的)结果,并可能失去一个客户。 不理解的代价稍微便宜一些:用户会被要求重新修改。 复杂性的代价是否值得呢? 是的,我确定它是。 你不会相信大量的错别字的人扔在系统,并期望它的理解,我可以肯定使用精确度和召回提高。

最快的通用机器学习库?

Weka可能是最受欢迎的通用机器学习库。 但是我的经验可能会很慢。 我一直在寻找鲨鱼 , 华夫饼 , dlib , Plearn和MLC ++作为替代品。 其中,Shark和dlib看起来最有希望。 有没有人有任何经验,这些库的性能testing?

机器学习和自然语言处理

假设你知道一个想学习机器学习和自然语言处理的学生。 你会推荐哪些入门科目? 例如 :我猜测,知道Prolog和Matlab可能会帮助他。 他也可能想学习离散结构*,微积分和统计。 *图和树木。 函数:属性,recursion定义,解决重复。 关系:属性,等价,部分秩序。 certificate技巧,归纳certificate。 计数技术和离散概率。 逻辑:命题演算,一阶谓词演算。 正式推理:自然演绎,parsing。 应用程序正确性和自动推理。 计算中的代数结构介绍。