自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

白马负金羁

数据挖掘 | 统计分析 | 图像处理 | 程序设计

原创 欢迎订阅我的专栏,好文章一网打尽

博主当前围绕人工智能这个主题开设了三个专栏:【机器学习之术】、【机器学习之道】、【自然语言处理】,这些文章皆为以往博客中精华内容的汇总,已经收录的文章超过70篇(日后笔者还会适时更新),总计有近160万次点阅。希望这些内容可以帮助读者解开学习过程中的一些疑惑,使得订阅者能最大程度地从中收获新知

2020-04-15 05:55:17 10991 9

原创 图像处理中的数学修炼(第2版)上市:新旧版同时在售

自《图像处理中的数学修炼》原书第一版于2017年2月上市以来,加印重印多次,在京东和当当等主流在线购书网站上已经累计有超过3200个有效购买评论,并且在这两个网站上的好评度都超过99%。结合第一版书籍读者给出的反馈,同时为了适应相关技术的快速发展,在首版发行三年之后的2020年,笔者再度与清华大学...

2020-04-06 08:38:37 9967 1

原创 逆向工具angr的快捷教程(1):安装、排雷、CFG范例

Angr是一个基于Python开发的二进制程序分析(Binary analysis)框架,可以用于开展动态符号执行(Symbolic Execution)和多种静态分析。作为系列文章的第一篇,本文将介绍安装angr的基本步骤,尤其是其中可能遇到的各种坑。然后,我们会利用angr对程序进行静态分析,...

2020-05-26 15:22:36 7484 141

原创 在LLVM中编写Backend Pass的详细教程(2)

本质上,LLVM毕竟是围绕编译器展开的一个工具集,或者说编译器本身就是它的核心。因此,在编译原理课程上学到的很多知识在了解或研究LLVM时都能派上用场。在这篇文章中,我们就来演示如何对基本块(Basic Block)的边际加标注。我们还会调用LLVM中的函数来对每个基本块产生一个描述名

2020-05-26 15:22:12 5524 28

原创 Linux系统监控与分析工具Sysdig:安装与使用

Sysdig是一个超级有用的系统工具,运行在Linux环境上,比 strace、tcpdump、lsof 加起来还强大。Sysdig可用来捕获系统状态信息,保存数据并进行过滤和分析。本文主要介绍在Linux上安装Sysdig的基本步骤,然后以监控某个特定程序的系统调用(system call)为例...

2020-05-19 10:16:44 5510 3

原创 在Python中使用贝叶斯网络的实例

我们在之前的文章中已经介绍了贝叶斯网络的基本原理,以及基于贝叶斯网络进行概率推断(Exact Inference)的消去法。本文将结合一个具体的例子来演示在Python中构建贝叶斯网络和概率推断的步骤与方法,最后还会介绍一个带有图形用户界面的贝叶斯网络分析工具

2020-05-17 03:08:17 6943 5

原创 梯度提升树(GBDT)详解之三:原理推导
原力计划

本文是GBDT系列文章的最后一弹,它将侧重梯度提升树的原理及其中的数学推导。梯度提升是一种用于回归和分类问题的机器学习技术,其产生的预测模型是弱预测模型的集成,如采用典型的决策树作为弱预测模型,这时则得到了所谓的梯度提升树(GBDT)。GBDT是在传统机器学习算法里面是对真实分布拟合的最好的几种算...

2020-04-02 03:48:57 3420 18

原创 梯度提升树(GBDT)详解之二:分类举例

梯度提升是一种用于回归和分类问题的机器学习技术,其产生的预测模型是弱预测模型的集成,如采用典型的决策树作为弱预测模型,这时则得到了所谓的梯度提升树(GBDT)。GBDT是在传统机器学习算法里面是对真实分布拟合的最好的几种算法之一,它与AdaBoost一起都是提升算法的代表,也是集成学习里的经典算法

2020-03-24 08:57:58 455 0

原创 孪生神经网络(Siamese)比较两个句子语义相似性

深度学习在自然语言处理(NLP)领域已经被广泛应用,在传统领域过去看似复杂的挑战,也都已经取得了非常显著的进步。本文从一道Kaggle实战题目说起,并借此为例,展现深度学习技术在NLP上的一个应用。该实际问题可以被认为是语义理解或神经翻译的一个典型例子,在解决这个问题的过程中,我们将具体用到包括L...

2020-03-24 08:50:12 6039 0

原创 PRAM模型与Amdahl定律

阿姆达尔定律(Amdahl’s Law)是一条用以阐释并行计算所能达到之基本极限的法则,it is formulated by 美国计算机科学家 Gene Amdahl in 1967。或者说,Amdahl’s Law是一种给定问题规模的前提下,用以预测(或估计)最大可达的加速因子(或称加速比)的...

2020-03-24 08:32:09 4584 8

原创 深度学习之Autoencoder及其在图像去噪上的应用

自编码器(Autoencoder)是一种无监督的学习方法(更准确地用语应该是自监督),主要用于数据的降维或者特征的抽取。在作用上有点类似于PCA、字典学习,或者压缩感知。这里的数据降维,也可以理解为数据压缩,总之就是给高维的原始数据产生一个低维的表达,并要求这个低维表达最大程度地保持原始数据中的重...

2020-03-21 13:19:48 3101 2

原创 高级数据结构之R树(R-tree)

R树(R-tree)是一种将B树扩展到多维情况下得到的数据结构,它最初由Antonin Guttman于1984年提出。B树的结点中会存储一个键的集合,这些键把线分成片段,沿着那条线的点仅属于一个片段。因此,B树使得我们可以很容易地找到点。如果把沿线各处的点表示成B树结点,我们就能够确定点所属唯一...

2020-01-22 09:42:33 3267 0

原创 2019年总结:始不垂翅,终能奋翼

2019年是忙碌的一年,也是收获的一年。上半年在加州San Diego参加第26届NDSS(系统安全国际顶级会议)。 七月,在查尔斯顿(Charleston)参加国际信息处理联合会11.3工作组年度会议(IFIP WG 11.3)暨第33届DBSec国际会议,顺便拜见了一下祖师。十月,在墨西...

2020-01-08 09:13:52 2733 1

原创 深度学习中的Adversarial Examples(基于Python实现)

随着深度学习研究的深入,相关应用已经在许多领域展现出惊人的表现。一方面,深度学习的强大能力着实吸引着学术界和产业界的眼球。另外一方面,深度学习的安全问题也开始引起广泛地关注。对于一个给定的深度神经网络,经过训练,它可能在具体任务上(例如图像识别)表现出较高的准确率。但是在原本能够被正确分类的图像中...

2019-08-21 08:41:42 1914 1

原创 数学传奇3——神话的破灭

如果要从人类漫长的历史星河中选出三位最伟大的数学家,那么卡尔·弗里德里希·高斯(Carl Friedrich Gauss)这个名字必然位列其中。作为近代数学的奠基者之一,高斯一生成就极为丰硕,以他的名字来命名的成果多达110个,属数学家中之最。 1777年4月30日,后来被称为“数学王子”的高斯...

2019-06-27 14:27:50 4695 13

原创 数学传奇2——格林的风车

每个到访诺丁汉市斯内顿地区的游客远远地就会看到一座巨大的砖式结构风车磨坊和它高高耸立的风轮。这座现在被用作科学中心的风车磨坊始建于十九世纪早期,1986年诺丁汉政府将其修复至可以运作,并对公众开放。除了向世人展示十九世纪风车磨坊的实际运作情况之外,更重要的是,作为英国数学家乔治·格林(George...

2019-06-27 14:07:17 2689 5

原创 深度学习的恶意样本实践(Adversarial Example)

〇、深度学习的恶意样本(Adversarial Example) 随着深度学习研究的深入,相关应用已经在许多领域展现出惊人的表现。一方面,深度学习的强大能力着实吸引着学术界和产业界的眼球。另外一方面,深度学习的安全问题也开始引起广泛地关注。对于一个给定的深度神经网络,经过训练,它可能在具体任务上...

2019-05-15 09:40:31 8735 4

原创 高级数据结构之B树(B-tree)

一、B树(B-tree)的定义 B树是二叉树的一种推广,它在以硬盘为主的多级存储结构中常常被用来执行高效搜索。下图是一棵B树的简单示例,其中存储的是英语中的辅音字母。如果B树的一个内部结点x包含有x.n个关键字,那么它就会有x.n+1个孩子。结点x中的关键字是有序排列的,而且这些有序的关键字也把...

2019-05-09 11:53:51 3190 3

原创 订阅图像处理专栏,获取完整代码

博客上关于数字图像处理与机器视觉方面的技术文章已有数百篇之多。笔者打算把个人编写或研究过的一些经典代码逐步整理,并进行系统化地管理及分享。本批代码全部由MATLAB编写,每个项目为一个完整的.zip压缩包,并提供有测试图片,争取做到一步到位、方便上手。这里提供的代码目录,可供索引查询之用...

2019-05-04 08:15:27 3547 11

原创 Ubuntu 18.04安装Docker CE+NVIDIA-Docker+TensorFlow

Docker 是一个开源的应用容器引擎,它让开发者可以打包他们的应用以及依赖,然后放到一个可移植的容器中,并实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。英伟达基于Docker 提供的NVIDIA-Docker可用于容器化 GPU 加速的应用程序

2019-05-04 08:12:42 4160 1

原创 在Ubuntu 18.04中配置GPU环境:安装CUDA 9.0等

近些年来,深度学习才突然变得异常火爆。这其中一个很大的原因正是由于当前硬件设备(尤其是GPU技术)的发展,使得深层神经网络的超大计算量不再是洪水猛兽。本文演示在Ubuntu 18.04系统上配置GPU环境(主要是安装CUDA)的基本过程与注意事项...

2019-04-25 09:14:31 4950 12

原创 走遍美国之大雾山国家公园

美国国家公园(United States National Parks):是美国最宝贵的历史遗产中的一个,它作为美国人的公共财产得到管理,并为让后代享用而得到保护维修。美国利用国家公园保护国家的自然、文化和历史遗产,并让全世界通过这个视窗了解美国的壮丽风貌、自然和历史财富以及国家的荣辱忧欢。 美...

2019-03-18 05:01:59 2001 3

原创 走遍美国之纽约

读万卷书,行万里路。 作为个人游记,最近想写一个系列,谈谈在美国游历过的几个地方。同时作为亲历者,也算是一种推荐,供有兴趣到美国旅行的国人之参考,特别是一些必到的地方、必看的东西。 纽约是美国最大的城市,华尔街、联合国总部均坐落于此。访问纽约的时间,大概是去年的春末夏初。行程为两天,第一日艳阳...

2019-03-16 05:05:20 1725 2

原创 Python图像处理基本操作

在Python中进行图像处理可以使用的库有很多,本文主要介绍下面三个:OpenCV、PIL、 skimage。其中,OpenCV是图像处理中最强大的一个库,它的源代码是由C\C++写成的,所以原版的OpenCV可以与C、C++无缝结合。Python版的OpenCV主要依赖于cv2这个包来实现。Py...

2019-03-14 06:20:12 4254 5

原创 数学传奇1——群星闪耀时

1736年,时年29岁的莱昂哈德·欧拉(Leonhard Euler)向圣彼得堡科学院递交了题为《哥尼斯堡之七桥》的著名论文,长期悬而未决的哥尼斯堡七桥问题被彻底破解,该篇论文也被认为是标志图论创立的代表性文献。 同年,在遥远的亚平宁半岛上,约瑟夫-路易斯·拉格朗日(Joseph-Louis L...

2019-02-19 08:54:12 2222 18

原创

在一篇题为《放弃幻想,搞 AI 必须过数学关》的网文中,作者提出了这样的观点:数学不过关的人在 AI 这个圈子里是无法参与交流的,或者说得直白一点,是被人瞧不起的,根本无法被接纳成为AI 圈子里的人。其次,数学不过关而只能调参数的人,实践当中并不好用。第三,即便是调参这件事情本身,懂不懂数学也是有...

2019-02-10 12:12:54 2202 4

转载 美的同一性和神秘的算法分析

1977 年法国人 Philippe Flajolet 发表了一篇评估计算机展开算术表达式平均所需寄存器数量的论文。同年,普林斯顿的 Rebert Sedgewick 向 SIAM 投递了一篇讨论奇偶归并排序的文章,其中给出了数据在排序过程中平均交换次数的简洁表达式。Sedgewick 通过渐进分...

2018-12-24 11:43:29 1922 47

原创 特惠购书通道

如果你对博主已经出版的图书感兴趣,可以在QQ群(155911675)中联系店小二以优惠价购买(如果你一次性购买两本及以上还可享受更多优惠)。所有图书都是出版社赠送给作者的样书,全新正版。需要入群购书的朋友,入群问题答案请直接填写“购书”。 《图像处理中的数学修炼》 (原定价79,特惠...

2018-11-25 10:21:25 3373 4

原创 图像书籍读者群特别说明

博主时间有限,无暇与万千网友逐一交流。本QQ群仅对《图像处理中的数学修炼》一书之读者开放,供资源共享及读者交流之用。群主保留随时删除任何人的权利。 鉴于很多人妄图趁机浑水摸鱼,为保证真读者群内天朗气清并隔绝吃瓜群主或毫无诚信者围观,特设置一个入口群(155911675),注意这只是通往真群的一个...

2018-10-30 22:40:19 4789 28

原创 基于字典学习的图像去噪研究与实践

机器学习在图像处理中有非常多的应用,运用机器学习(包括现在非常流行的深度学习)技术,很多传统的图像处理问题都会取得相当不错的效果。今天我们就以机器学习中的字典学习(Dictionary Learning)为例,来展示其在图像去噪方面的应用。文中代码采用Python写成,其中使用了Scikit-le...

2018-07-01 15:18:12 7451 6

原创 Keras实例教程(4)之迁移学习

迁移学习(Transfer Learning)是机器学习中的一个重要研究话题,也是在实践中具有重要价值的一类技术。Transfer learning focuses on storing knowledge gained while solving one problem and applying...

2018-06-20 16:20:54 13372 7

原创 Keras实例教程(3)

我们在之前的Keras教程中介绍了用Sequential model的形式来搭建神经网络模型的基本方法。然而,Keras中还提供了另外一种基于函数式编程思想的神经网络组建方法,我们称其为functional API。如果你对类似Haskell这样的函数式编程语言比较熟悉的话,那么上手Keras中的...

2018-06-16 12:12:49 11156 4

原创 在Keras中使用VGG进行物体识别

众所周知,卷积神经网络(CNN,Convolutional neural networks)在计算机视觉领域已经取得了巨大成功,特别是在各种物体识别竞赛上率摘桂冠。 一、Keras中的VGG() Keras 作为当前深度学习框架中的四大天王之一,使用起来是极其简便的,它所提供的各种友好而灵...

2018-06-15 08:00:42 11421 7

原创 LLVM编写Pass对程序进行obfuscate

对程序进行obfuscate在软件安全领域有诸多应用,其直接的目的就是对那些试图进行逆向工程的努力带来一些困扰。本文将介绍如何通过在LLVM中加入相关Pass的方法实现对程序的扰乱

2018-06-03 15:54:30 2584 0

原创 使用Git连接到GitHub并进行版本管理

Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。而GitHub则是一个面向开源及私有软件项目的托管平台,或者说它是一个在线的项目版本管理系统,它为基于git的版本控制和项目托管提供了全面的支持。Git和GitHub可以紧密配合实现高效便捷的版本控制

2018-05-19 13:53:57 7360 0

原创 在Ubuntu 18.04安装NVIDIA GPU驱动

随着深度学习的持续火热,Ubuntu系统得使用变得越来越广泛。为了配合深度学习的需求,现在Ubuntu系统也在持续提升它的方便性。通常,深度学习中需要使用GPU资源进行加速,但安装和配置GPU计算环境往往比较复杂。幸运的是,在最新的18.04版本的Ubuntu系统,环境的配置已经变得越来越简单 ...

2018-03-16 14:01:00 4453 16

原创 详解多维标度法(MDS,Multidimensional scaling)

流形学习(Manifold Learning)是机器学习中一大类算法的统称,而MDS就是其中非常经典的一种方法。多维标度法(Multidimensional Scaling)是一种在低维空间展示“距离”数据结构的多元数据分析技术,简称MDS。 多维标度法解决的问题是:当n个对象(object...

2018-03-04 05:53:04 20435 8

原创 SVD与PCA之间的关系详解

PCA(principal component analysis)和SVD(Singular value decomposition)是两种常用的降维方法,在机器学习等领域有广泛的应用,而且二者之间还有着非常紧密的联系

2018-03-01 11:27:56 8018 2

原创 主成分分析(PCA)与Kernel PCA

本博客在之前的文章【1】中曾经介绍过PCA在图像压缩中的应用。其基本思想就是设法提取数据的主成分(或者说是主要信息),然后摒弃冗余信息(或次要信息),从而达到压缩的目的。本文将从更深的层次上讨论PCA的原理,以及Kernel化的PCA。 首先我们来考察一下,这里的信息冗余是如何体现的。如下图...

2018-03-01 03:21:13 32026 6

原创 机器学习中的核方法(Kernel Method)

说到机器学习中的核方法(Kernel Method),大部分人应该是在学习SVM的时候认识到它或者听说它。它的基本思想是说,普通的SVM分类超平面只能应对线性可分的情况,而对于线性不可分的情况我们则需要引入一个Kernel,这个Kernel可以把数据集从低维映射到高维,使得原来线性不可分的数据集变...

2018-02-26 08:21:22 22156 2

提示
确定要删除当前文章?
取消 删除