论计算机加密算法的原理与实践

Submitted by donghonglin on Fri, 04/27/2018 - 16:06

签名算法

签名算法不是领工资的时候把自己的名字写到“签名”一栏里。这里的签名是对消息内容做个计算,得到一个特征码,用这个特征码作为签名。

搞个签名有啥用?

我们来看发生在教室里的一个真实故事。

小明(性别:男)对女神小红仰慕已久,终于在上课的时候鼓足勇气在数学书背面写了几句话,举起来希望女神能看见。无奈女神坐得离他比较远

于是小明委托死党老王(老王坐在小明和女神中间位置)复制一下自己的消息,这样小明就表白成功了:

1

然而老王有个特点就是特别不靠谱,加上眼神不好,结果把“xiao ming”抄成了“xiao ning”,让女神误以为是班长小宁对自己表白了:

Word2Vec介绍:训练Skip-gram模型的python实现

Submitted by donghonglin on Fri, 04/27/2018 - 14:32

1. 获取数据

首先获取训练集“Stanford V1.0”和使用Glove模型训练好的词向量矩阵。

我们使用shell命令获取以上文档,脚本如下:

DATASETS_DIR="utils/datasets"
mkdir -p $DATASETS_DIR

cd $DATASETS_DIR

# Get Stanford Sentiment Treebank
if hash wget 2>/dev/null; then
  wget http://nlp.stanford.edu/~socherr/stanfordSentimentTreebank.zip
else
  curl -L http://nlp.stanford.edu/~socherr/stanfordSentimentTreebank.zip -o stanfordSentimentTreebank.zip
fi
unzip stanfordSentimentTreebank.zip
rm stanfordSentimentTreebank.zip

浅显易懂的word2vec总结

Submitted by donghonglin on Fri, 04/27/2018 - 11:43

1.什么是Word2vec

举个简单例子,判断一个词的词性,是动词还是名词。用机器学习的思路,我们有一系列样本(x,y),这里 x 是词语,y 是它们的词性,我们要构建 f(x)->y 的映射,但这里的数学模型 f(比如神经网络、SVM)只接受数值型输入,而 NLP 里的词语,是人类的抽象总结,是符号形式的(比如中文、英文、拉丁文等等),所以需要把他们转换成数值形式,或者说——嵌入到一个数学空间里,这种嵌入方式,就叫词嵌入(word embedding),而 Word2vec,就是词嵌入( word embedding) 的一种。

在 NLP 中,把 x 看做一个句子里的一个词语,y 是这个词语的上下文词语,那么这里的 f,便是 NLP 中经常出现的『语言模型』(language model),这个模型的目的,就是判断 (x,y) 这个样本,是否符合自然语言的法则,更通俗点说就是:词语x和词语y放在一起,是不是人话。

Word2vec 正是来源于这个思想,但它的最终目的,不是要把 f 训练得多么完美,而是只关心模型训练完后的副产物——模型参数(这里特指神经网络的权重),并将这些参数,作为输入 x 的某种向量化的表示,这个向量便叫做——词向量

Tags

竞技游戏的匹配系统如何做到双方实力相近

Submitted by donghonglin on Tue, 04/24/2018 - 15:54

其实现在竞技游戏的实时匹配算法已经很成熟了,大到 DotA 2,小到 Clash Royale,基本都是在用一个叫 ELO(因为作者叫 Arpad Elo)的算法。

这个算法来源于 1960 年,美国国际象棋协会采纳使用的,最初的目的呢就是用来提升象棋比赛中匹配的合理性。

那么怎么样的匹配才能被认为是合理的呢?首先我们有如下几条假设:

  • 某个玩家,在某一分段区间内的波动属于正常现象。

  • 在某一分段区间内的玩家,水平大致相同,胜出的期望也大致相同。

优化方向(合理性):

场景文字检测—CTPN原理与实现

Submitted by donghonglin on Tue, 04/24/2018 - 11:14
对于复杂场景的文字识别,首先要定位文字的位置,即文字检测。这一直是一个研究热点。 Detecting Text in Natural Image with Connectionist Text Proposal Network 是在ECCV 2016中提出的一种场景文本算法,作者Zhi Tian等。 CTPN结合CNN与LSTM深度网络,能有效的检测出复杂场景的横向分布的文字,效果如图1,是目前比较好的文字检测算法。

树回归

Submitted by donghonglin on Tue, 04/24/2018 - 10:15

CART

CART是一种二分递归分割的技术,分割方法采用基于最小距离的基尼指数估计函数,将当前的样本集分为两个子样本集,使得生成的的每个非叶子节点都有两个分支。因此,CART算法生成的决策树是结构简洁的二叉树。

分类树是针对目标变量是离散型变量,通过二叉树将数据进行分割成离散类的方法。而回归树则是针对目标变量是连续性的变量,通过选取最优分割特征的某个值,然后数据根据大于或者小于这个值进行划分进行树分裂最终生成回归树。

特征和最佳分割点的选取

在使用决策树解决回归问题中我们需要不断的选取某一特征的一个值作为分割点来生成子树。选取的标准就是使得被分割的两部分数据能有最好的纯度。

  • 对于离散型数据我们可以通过计算分割两部分数据的基尼不纯度的变化来判定最佳分割点;
  • 对于连续性变量我们通过计算最小平方残差,也就是选择使得分割后数据方差变得最小的特征和分割点。直观的理解就是使得分割的两部分数据能够有最相近的值。

树分裂的终止条件

有了选取分割特征和最佳分割点的方法,树便可以依此进行分裂,但是分裂的终止条件是什么呢?

Tags

深度学习也可以取悦女友

Submitted by donghonglin on Mon, 04/23/2018 - 10:49

深度学习目前在图像处理领域有着非常好的应用和研究,在医学领域可以用它在极早期判断癌症;在安防领域,可以用它来快速检索目标任务,进行可疑或危险人物的检测与抓捕;在金融领域,可以较好的分析风险风控等。

但是今天不说这么深奥的知识,我们今天来说的是一个能有程序取悦我们女朋友的“黑科技”!这一招叫艺术风格变换,就是你点击一下,就可以把你女朋友的大头照换成一个毕加索的后现代艺术作品(当然是取代还是找打要看你的艺术品位)。

艺术风格迁移是一个古老而现代的主题 ,多少艺术家为了描摹他人作品而竞折腰。在出现了深度学习之后,通过简单的训练就可以完成这个简单的任务,接下来,说说何玩转基于神经网络的风格迁移。

其实风格迁移就是把一张图片的内容和另一个图片的风格进行合成的一个方法,比如说你给出一个猫的图片和一个梵高的自画像,就可以生成一只梵高画像版本的猫。

在深度学习没有应用在该领域之前,机器视觉的工程师就尝试用各种滤镜提取图像的纹理信息或者用传统的机器学习方法提取,得到的纹理特征再经过某些变换放回到原始图片中,就得到了一个新的风格图片。

深度学习所作的事情,是把整个过程自动化智能化了。我们利用卷积网络的深层结构去提取图片的信息,来替代之前的各种滤镜或机器学习方法。