超人汪小建(seaboat)
公众号:【远洋号】,笔名seaboat,擅长工程算法、人工智能算法、自然语言处理、计算机视觉、架构、分布式、高并发、大数据和搜索引擎等方面的技术,大多数编程语言都会使用,但更擅长Java、Python和C++。平时喜欢编程、绘画、看书、写作和运动,擅长素描、篮球、跑步、游泳、健身和羽毛球等运动项目。崇尚技术自由,崇尚思想自由。出版书籍:《Tomcat内核设计剖析》、《图解数据结构与算法》、《图解Java并发原理》、《人工智能原理科普》。
展开
-
神经网络的交叉熵损失函数
常见损失函数0-1损失函数 L(Y,f(X))={1,0Y != f(X)Y = f(X)L(Y,f(X))=\begin{cases}1,& \text{Y != f(X)}\\0& \text{Y = f(X)}\end{cases}平方损失函数 L(Y,f(X))=(Y−f(X))2L(Y,f(X))=(Y-f(X))^{2}绝对损失函数L(Y,f(X))=|(Y−f(X))|L(Y原创 2017-07-04 18:07:16 · 7709 阅读 · 2 评论 -
softmax的多分类
关于多分类我们常见的逻辑回归、SVM等常用于解决二分类问题,对于多分类问题,比如识别手写数字,它就需要10个分类,同样也可以用逻辑回归或SVM,只是需要多个二分类来组成多分类,但这里讨论另外一种方式来解决多分类——softmax。关于softmaxsoftmax的函数为P(i)=exp(θTix)∑Kk=1exp(θTkx)P(i)=\dfrac{exp(\theta_i^Tx)}{\sum_{k=原创 2017-07-13 17:38:37 · 36344 阅读 · 0 评论 -
隐马尔可夫模型的Viterbi解码算法
前言前面在做自然语言处理时涉及到一些词性标注的工作,一般会使用隐马尔科夫模型(HMM)来实现词性标注,而HMM模型的解码实现算法一般就会使用Viterbi算法。关于穷举法HMM模型有多种应用,这里说的是其中一个常见应用,即根据观察序列找到最可能的隐含状态序列。最朴素的想法就是直接穷举所有可能的隐含状态序列,并计算出每个组合成的状态序列的概率,概率最大的那个组合序列即是最可能的隐含状态序列。举个水藻和原创 2017-09-21 08:42:04 · 2836 阅读 · 1 评论 -
强化学习
前言机器学习可以大致分为四类:监督学习无监督学习半监督学习强化学习监督学习是利用标记了的样本进行学习,无监督学习则是使用未标记的样本进行学习,这两个是我们最常见的。半监督学习则是样本中只有少量带标记的样本,多数样本都未标记,利用这些样本进行学习。强化学习则是很不同的一种学习方式,它没有规则的训练样本和标签,主要通过奖励和惩罚达到学习的目的。什么是强化学习《最强大脑》曾经有个挑战项目叫蜂巢迷原创 2017-10-19 10:23:01 · 4276 阅读 · 0 评论 -
主成分分析(PCA)
前言主成分分析是一种统计学方法,它主要通过降维来简化数据结构,将多个变量转化成少数的几个综合变量,而综合变量能很好地表达原来多个变量的大部分信息,变量之间需要要具备相关性,而经过分析后的变量之间没有相关性。基本原理简单从感性角度来了解它的原理就是,比如有两个变量,如下图,看起来它俩的信息量差不多,这时不能忽略某个变量进行降维。创建一个新的坐标体系PC1和PC2,此时PC1包含的信息量远远大于PC2的原创 2017-11-23 08:57:11 · 12246 阅读 · 1 评论 -
智能算法之马尔可夫模型
前言可能大家更常见到隐马尔科夫模型(HMM),马尔科夫模型可以看成是一个更基础的模型,它是对能直接观察到的事件进行建模,所以与HMM相对应,有时也叫它为显马尔科夫(VMM)。马尔科夫模型要处理的是序列问题,核心思想就是统计所有样本的过程,得到系统中状态之间的转移概率。马尔可夫过程马尔可夫过程是一个随机过程,系统从一个状态到另外一个状态存在转移概率,而转移概率仅通过前一状态来计算出来...原创 2018-02-10 09:25:01 · 1173 阅读 · 0 评论 -
智能算法之隐马尔可夫模型(HMM)
前言前面的《马尔科夫模型》主要是研究能直接观察到的序列的概率问题,通过马尔科夫假设能建立起马尔科夫链,从而解决一些序列问题。但有时候观察的对象并不是我们待处理的目标对象,它的规律隐含在观察对象中,观察的事件和隐含事件存在一定的相关关系,这时候就要用到隐马尔科夫模型(HMM)。比如nlp中常见的词性标注任务就经常用HMM,其中显状态就是单词,而隐状态为词性,通过我们观察到的单词序列去标出隐含...原创 2018-02-27 08:31:53 · 805 阅读 · 0 评论 -
智能算法之提升方法
提升方法提升方法的核心思想是通过将多个效果很一般的分类器(弱分类器)组合起来综合考虑,以实现一个效果较好的分类器,这就像“三个臭皮匠赛过诸葛亮”。弱学习者学习出来的效果可能只比随机分类器效果好一点,于是有人提出用一个弱分类器集合生成一个强分类器。因为是将弱分类器提升为强分类器,所以叫提升方法。AdaBoost提升方法有很多算法,最具代表性的是 AdaBoost 。AdaBo...原创 2018-04-19 09:57:13 · 555 阅读 · 0 评论 -
神经网络原理的可视化
前言神经网络具有很强的学习能力和自适应自组织能力,而且随着隐含层的数量增大学习能力也将变得更强,因此目前很多场景都使用神经网络,比如深度学习,我们更熟悉的就是阿法狗。关于神经网络神经网络已经有很多变种,比如卷积神经网络、循环神经网络等等。感知器是一种最基础的神经网络,他只有输入层和输出层,感知器只能处理线性可分问题,而对于非线性问题就需要多层神经网络。一般如下图所示,有多个层,...原创 2018-05-09 09:45:32 · 2223 阅读 · 0 评论 -
图论深度优先搜索
前言推出一个新系列,《看图轻松理解数据结构和算法》,主要使用图片来描述常见的数据结构和算法,轻松阅读并理解掌握。本系列包括各种堆、各种队列、各种列表、各种树、各种图、各种排序等等几十篇的样子。关于图遍历图遍历即图的遍历,指从图中任一顶点出发,对图中的所有顶点访问一次。图的遍历与树的遍历相似,但图的结构更加复杂,比如要考虑回路的情况。图的遍历操作是一种基本操作,很多其他操作都建立在图遍历基础之...原创 2018-11-26 09:17:10 · 359 阅读 · 0 评论 -
聊聊从脑神经到神经网络
前言神经网络能解决非线性的复杂的模型问题,而且通过增加网络的层数将具备更加强大的学习能力,另外如果再改造改造层的结构则变成各类深度学习模型,例如CNN RNN之类的。神经网络一般被用来捕捉复杂情况下的特征,比如说视频图像中的动物类别、一名作家的写作风格等等。大脑神经元人脑可能有1000多亿个神经元,每个神经元都可能在几个方向上互相连接着,这么大量的神经元及连接就形成了一个超级大型的网络。我...原创 2018-11-29 08:32:22 · 1660 阅读 · 0 评论 -
让机器玩游戏的强化学习(附github)
强化学习强化学习是代理面临的学习问题,它通过与动态环境反复交互试验从而学习到某种行为。它是机器学习的主要学习方法之一,智能体从环境到行为的学习,也就是如何在环境中采取一些...原创 2018-12-20 08:00:00 · 308 阅读 · 0 评论 -
图像的卷积和池化操作
离散域卷积分为连续函数卷积及离散函数卷积,因为我们实际工作中多数情况下是数字化的场景,所以我们需要离散域的卷积操作。对于两个离散函数f和g,卷积运算是将连续函数的积分操作...原创 2018-12-27 08:00:00 · 736 阅读 · 0 评论 -
业务系统如何引入神经网络
切入点目前的AI其实更多就是仅仅用来从历史数据中学习到一些规律而已,在业务上,更多的只是减少人为介入工作,所以要在业务系统中引入神经网络,其实主要就是在要找到切入点。简单来说,可以走访一线用户看他们花最多的时间在系统哪些地方,经常重复了哪些工作,也可以通过统计日志找到合适的切入点。理解问题业务上要解决的问题:预测某个分类。问题涉及到的信息管道:xx。数据源及采集方式:数据源在xx业务...原创 2019-02-20 11:23:52 · 346 阅读 · 0 评论 -
业务系统如何引入神经网络
切入点目前的AI其实更多就是仅仅用来从历史数据中学习到一些规律而已,在业务上,更多的只是减少人为介入工作,所以要在业务系统中引入神经网络,其实主要就是在要找到切入点。简单...转载 2019-01-24 08:00:00 · 179 阅读 · 0 评论 -
2018汇总机器学习篇
聊聊从脑神经到神经网络聊聊机器学习的套路让机器玩游戏的强化学习(附github)AIOps核心技术和算法要点如何从大量数据中找出异常值一图简看智能聊天机器人的设计机器学习之支持向量机(SVM)机器学习之决策树智能算法之马尔可夫模型智能算法之隐马尔可夫模型(HMM)近期的爬虫工作杂谈智能算法之提升方法如何生成指定分布的随机数 强化学习...原创 2019-01-05 09:37:37 · 447 阅读 · 1 评论 -
机器学习之层次聚类
层次聚类聚类是将样本进行归类形成K个簇,层次聚类是其中的一种方法。它将数据组成一棵聚类树,过程可以是凝聚形式或分裂形式。核心思想凝聚是一开始将每个样本当做一个聚类,接着通过计算将距离最近的两个聚类合并,成为新聚类,每次合并聚类总数减少一个,不断循环合并操作,直到所有聚类合并成一个聚类或当聚类数量到达某预定值或当聚类直接距离达到某阀值后停止合并。而分裂则与凝聚相反,一开始将所有样本当做一个聚类,每次分原创 2017-03-12 20:12:15 · 2597 阅读 · 0 评论 -
机器学习的监督学习在研究什么
什么是监督学习简单来说,监督学习是对给定的输入输出样本进行学习并建立一个模型,该模型能对任意输入做出好的输出预测。 监督学习核心思想所有可能的模型函数的集合称为假设空间,$H=\left \{ f|Y=f(X) \right \}$。对于所有的模型函数集合,可能不知道是该用用逻辑回归模型、或贝叶斯模型、或神经网络模型还是用支持向量机模型。这个过程通常是一个不断迭代的过程,只有在不断地尝试比较才原创 2017-03-17 20:05:08 · 3126 阅读 · 0 评论 -
机器学习之支持向量机(SVM)
SVMSVM 即支持向量机,常用于二分类模型。它主要的思想是: 1. 它是特征空间上间隔最大的线性分类器。 2. 对于线性不可分的情况,通过非线性映射算法将低维空间的线性不可分的样本映射到高维特征空间,高维特征空间能够进行线性分析。结构风险对于指定的损失函数,根据一定的样本集就能根据这些样本来计算经验风险,而经验风险最小化就是根据样本集来最小化经验风险。假如我们能获取到所有原创 2018-01-20 10:06:01 · 756 阅读 · 0 评论 -
机器学习之梯度下降法
方向导数如图,对于函数f(x,y),函数的增量与pp’两点距离之比在p’沿l趋于p时,则为函数在点p沿l方向的方向导数。记为$\frac{\partial f}{\partial l} = \lim_{\rho \rightarrow 0} \frac{f(x+\Delta x,y+\Delta y)-f(x,y)}{\rho } $,其中$\rho=\sqrt{(\Delta x)^{2} + (原创 2017-03-26 20:40:40 · 1844 阅读 · 0 评论 -
机器学习之牛顿法
泰勒公式首先看泰勒公式,对于函数,如果函数平滑且某点存在各阶导数,则可以用一个多项式来描述该点邻域的近似值。公式如下:牛顿法牛顿法一般用来求解方程的根和求解极值。数值优化算法除了梯度下降法外还有比较常用的一种方法是牛顿法。对于非线性方程,可以用牛顿迭代法进行求解,它收敛速度快。基本思想是:对于非线性函数f(x),根据泰勒公式得到x附近某个点xkx_{k}展开的多项式可用来近似函数f(x)的值,该多项原创 2017-11-16 09:49:34 · 2834 阅读 · 0 评论 -
机器学习之感知器
感知器在讲神经网络前先说说感知器,感知器是一种二分类的线性分类模型,输出值取-1或1。感知器是最基础的神经网络,理解好感知器对后面的各种神经网络模型是很有帮助的。如下图, 它可以有多个输入$(x_1,x_2,...x_n)$,每个输入对应有一个权重$(w_1,w_2...w_n)$,除此之外还有一个偏置项$w_0$。则输出为o(x) = \left\{\begin{matrix}1, & if原创 2017-05-04 14:37:48 · 2263 阅读 · 0 评论 -
机器学习之条件随机场(CRF)
什么是CRFCRF即条件随机场(Conditional Random Fields),是在给定一组输入随机变量条件下另外一组输出随机变量的条件概率分布模型,它是一种判别式的概率无向图模型,既然是判别式,那就是对条件概率分布建模。CRF较多用在自然语言处理和图像处理领域,在NLP中,它是用于标注和划分序列数据的概率化模型,根据CRF的定义,相对序列就是给定观测序列X和输出序列Y,然后通过定义条件概率P原创 2017-11-09 14:46:13 · 31757 阅读 · 5 评论 -
2017文章汇总——机器学习篇
2018,你跟自己做了约定了吗?为了遇见更好的自己。 近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“N...原创 2017-12-31 09:51:42 · 140 阅读 · 0 评论 -
机器学习之神经网络
多层神经网络前面说到的感知器是一种最基础的神经网络,他只有输入层和输出层,感知器只能处理线性可分问题,而对于非线性问题就需要多层神经网络。一般如下图所示,有多个层,比如左边的包含输入层、隐层和输出层,而右边的则包含了两个隐层。每层的神经元与下一神经元全互连,同层之间的神经元不会相连,输入层用于接收输入,经过隐层加工后再到输出层加工并输出。如何训练多层网络对于多层网络我们常用误差逆传播算法来训练,而我原创 2017-05-18 19:23:22 · 2619 阅读 · 0 评论 -
机器学习之决策树
前言决策树是很常见的机器学习分类算法,竟然叫决策树,那么它的模型其实就像树一样。通过对样本集的学习,挖掘出有用的规则。对于程序员来说或许以条件语句来看就更好理解了,决策树可以看成是多个if then条件语句的集合。这种模型等同于我们写的条件语句,所以它的预测分类速度是很快的。例子来个例子了解下决策树分类过程,以女生相亲挑“高富帅”为例吧,遇到已婚的肯定是不交往了,在未婚的情况下接着原创 2018-01-28 10:03:06 · 1085 阅读 · 1 评论 -
开源一个机器学习文本分析项目
TextAnalyzerA text analyzer which is based on machine learning that can analyze text.So far, it supports hot word extracting, text classification, part of speech tagging, named entity recognition,...原创 2018-06-01 08:22:57 · 2239 阅读 · 0 评论 -
机器学习之朴素贝叶斯分类
朴素贝叶斯分类所有贝叶斯分类都是基于贝叶斯定理,朴素贝叶斯分类是贝叶斯分类中运用广泛简单的一种,另外,它还基于特征条件独立假设。贝叶斯定理贝叶斯定理是计算条件概率的公式,条件概率即是事件B发生的前提下事件A发生的概率,记作$P(A|B)$,叫做事件B发生的情况下A的条件概率。公式为:$P(B|A) = \frac{P(A|B)P(B)}{P(A)}$公式大致推导: 如图,有$P(A|B) = \f原创 2017-04-11 19:59:32 · 2800 阅读 · 0 评论 -
如何用机器学习对文本分类
需求使用监督学习对历史数据训练生成模型,用于预测文本的类别。样本清洗主要将重复的数据删除掉,将错误无效的数据纠正或删除,并检查数据的一致性等。比如我认为长度小于少于13的数据是无效的遂将之删掉。def writeFile(text): file_object = open('result.txt','w') file_object.write(text) file_object.c原创 2017-05-30 20:21:58 · 7976 阅读 · 0 评论 -
我的2017年文章汇总——机器学习篇
2018,你跟自己做了约定了吗?为了遇见更好的自己。近期准备把过去一年写的文章按照分类重新整理推送一遍,包括:“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”。本篇推送机器学习相关文章。强化学习机器学习之条件随机场(CRF)隐马尔可夫模型的Viterbi解码算法线性回归之最小二乘法k-means聚类算法机器学习之层次聚类原创 2017-12-31 13:02:58 · 4124 阅读 · 2 评论 -
2018汇总机器学习篇
聊聊从脑神经到神经网络聊聊机器学习的套路让机器玩游戏的强化学习(附github)AIOps核心技术和算法要点如何从大量数据中找出异常值一图简看智能聊天机器人的设计机器学习...原创 2019-01-05 09:00:00 · 254 阅读 · 0 评论 -
我的开源项目——机器学习实验室
Demo listLeast Square method.Gradient DescentNewton’s methodhierarchy clusterknnmarkovadaboostrandom number generation(all kinds of distributions)原创 2018-07-05 09:42:19 · 809 阅读 · 0 评论 -
机器学习之k近邻
核心思想KNN算法假设给定的训练集中的实例都已经分好类了,对于新的实例,根据离它最近的k个训练实例的类别来预测它的类别。即这k个实例大多数属于某个类别则该实例就属于某个类别。比如k为5,离新实例a最近的5个样本的情况为,3个样本属于A类,1个样本属于B类,一个样本属于C类,那么新实例a属于A类。常用距离欧氏距离 d(x,y)=∑ni=1(xi−yi)2−−−−−−−−−−−−√d(x,y) =原创 2017-04-28 20:36:25 · 1755 阅读 · 0 评论 -
聊聊机器学习的套路
前言这里说说机器学习问题分析的一般性过程,尽管存在各种各样的机器学习问题,但大体上的步骤及最佳实践都有一定的套路。理解问题首先得理解要解决的是什么问题,比如业务上要解决什么问题该问题涉及到的信息管道有哪些如何采集数据,数据源在哪数据是完整的吗,数据刻度最小是多少数据是定期发布的还是实时获取的确定影响模型的有价值因素工作量以上等等等等。ETL处理待收集的数据可能是表格数...原创 2018-11-15 08:34:46 · 414 阅读 · 0 评论 -
机器学习之牛顿法
泰勒公式首先看泰勒公式,对于函数,如果函数平滑且某点存在各阶导数,则可以用一个多项式来描述该点邻域的近似值。公式如下:牛顿法牛顿法一般用来求解方程的根和求解极值。数值优化算法除了梯度下降法外还有比较常用的一种方法是牛顿法。对于非线性方程,可以用牛顿迭代法进行求解,它收敛速度快。基本思想是:对于非线性函数f(x),根据泰勒公式得到x附近某个点x k x_{k}展开的多项式可用来近似函数f(x)的值,原创 2017-12-31 12:53:43 · 1253 阅读 · 0 评论