机器学习
文章平均质量分 95
secsilm
NLP 和 Python 开发者,正在学习 C++。GitHub:github.com/secsilm,知乎:zhihu.com/people/lyjwf1216
展开
-
NLP 中的通用数据增强方法及针对 NER 的变种
本文结合 A Visual Survey of Data Augmentation in NLP 和最新的综述论文 A Survey of Data Augmentation Approaches for NLP,大致总结了目前 NLP 领域的通用数据增强方法和几种针对如 NER 的序列标注模型进行适配的变种方法,关于后者,重点介绍了基于 mixup 改进的 SeqMix 方法。此外,本文较长,建议结合目录食用。通用数据增强方法阅读 Tip:每个增强方法最后的有序列表是提出或使用该方法的论文列表。L原创 2021-10-04 10:14:14 · 1633 阅读 · 0 评论 -
理解 PyTorch 中的 gather 函数
好久没更新博客了,最近一直在忙,既有生活上的也有工作上的。道阻且长啊。今天来水一文,说一说最近工作上遇到的一个函数:torch.gather() 。文字理解我遇到的代码是 NLP 相关的,代码中用 torch.gather() 来将一个 tensor 的 shape 从 (batch_size, seq_length, hidden_size) 转为 (batch_size, labels_length, hidden_size) ,其中 seq_length >= labels_length原创 2021-08-29 20:43:41 · 873 阅读 · 0 评论 -
Constituency Parsing with a Self-Attensive Encoder 论文解读
之前没咋涉略过 parsing 部分,最近有用到,遇到一个实现的很不错的库:benepar,无论是速度、代码还是性能上,伯克利出品。而本文要讲的论文就是 benepar 的参考论文,代码和论文作者都是一个人:Nikita Kitaev,论文发表于 ACL 2018。代码还参考了作者的另一篇论文:Multilingual Constituency Parsing with Self-Attention and Pre-Training。看时间,有空了再解读下 benepar 的源代码。写好了我会把链接放在原创 2020-11-16 20:55:56 · 918 阅读 · 0 评论 -
理解编辑距离
顾名思义,编辑距离(Edit distance)是一种距离,用于衡量两个字符串之间的远近程度,方式是一个字符串至少需要多少次基础变换才能变成另一个字符串,可应用在拼写检查、判断 DNA 相似度等场景中。根据可操作的基础变换不同,可分为以下几种:莱文斯坦距离(Levenshtein distance):最常见的编辑距离,基础变换包括插入、删除和替换。但是需要注意一点的是,当每种变换发生时,产生的距离(或者称为代价)并不一定是 1,例如斯坦福大学关于最小编辑距离的课件中,一次替换产生的距离就可能是 2。最原创 2020-10-24 11:47:00 · 966 阅读 · 0 评论 -
如何计算 LSTM 的参数量
理论上的参数量之前翻译了 Christopher Olah 的那篇著名的 Understanding LSTM Networks,这篇文章对于整体理解 LSTM 很有帮助,但是在理解 LSTM 的参数数量这种细节方面,略有不足。本文就来补充一下,讲讲如何计算 LSTM 的参数数量。建议阅读本文前先阅读 Understanding LSTM Networks 的原文或我的译文。首先来回顾下 LSTM。一层 LSTM 如下:这里的 xtx_txt 实际上是一个句子的 embedding(不考虑原创 2020-10-24 09:20:32 · 6330 阅读 · 5 评论 -
BERT 是如何构建模型的
本文于 2020/05/08 首发于我的个人博客,未经允许,不得转载。Good things take time, as they should.前面我写了一篇文章来讲 BERT 是如何分词的,现在,轮到该说说 BERT 模型是如何定义的了。BERT 模型的大致结构可能大家已经很清楚了,实际上核心就是 Transformer encoder。本文主要是结合代码(modeling.py)实现来看下模型的定义,以及相关辅助函数,带你解读整个 modeling.py。modeling.py 共有 .原创 2020-06-23 08:32:50 · 2596 阅读 · 2 评论 -
试用开源标注平台 Label Studio
数据标注是人工智能背后的女人。—— 我说的初探在 reddit 上看到一个人提了一个问题:What is your favourite (free) labelling tool?,你最喜欢的(免费)标注工具是什么。由于我一直关注标注工具,而且没找到好用、漂亮的标注工具(甚至一度计划自己做一个),也认为这块很重要,所以就点进去看了下。收获不少,帖子楼主提到的 Prodigy,我点进去看了看...原创 2020-11-10 16:14:30 · 5779 阅读 · 10 评论 -
BERT 是如何分词的
BERT 是如何进行分词的BERT 表示 Bidirectional Encoder Representations from Transformers,是 Google 于 2018 年发布的一种语言表示模型。该模型一经发布便成为争相效仿的对象,相信大家也都多少听说过研究过了。本文主要聚焦于 BERT 的分词方法,后续再谈模型实现细节。BERT 源码中 tokenization.py 就是预...原创 2020-05-19 10:13:15 · 25140 阅读 · 30 评论 -
理解主成分分析
译者注:本文翻译自 Rishav Kumar 于 2019 年 1 月 2 日发表的文章 Understanding Principal Component Analysis文中括号或者引用块中的 斜体字 为对应的英文原文或者我自己注释的话(会标明「译者注」),否则为原文中本来就有的话文中的「我」均指原作者 Rishav Kumar目录保留英文原文本人水平有限,如有错误欢迎指出能力...翻译 2019-04-20 15:10:38 · 599 阅读 · 0 评论 -
理解神经网络中的目标函数
译者注: - 本文翻译自 Lars Hulstaert 于 2017 年 11 月 4 日发表的文章 Understanding objective functions in neural networks。 - 文中括号或者引用块中的 斜体字 为对应的英文原文或者我自己注释的话(会标明「译者注」),否则为原文中本来就有的话。 - 文中的「我」均指原作者 Lars Huls...翻译 2018-06-04 22:32:50 · 15339 阅读 · 3 评论 -
sklearn 中 Logistics Regression 的 coef_ 和 intercept_ 的具体意义
使用sklearn库可以很方便的实现各种基本的机器学习算法,例如今天说的逻辑斯谛回归(Logistic Regression),我在实现完之后,可能陷入代码太久,忘记基本的算法原理了,突然想不到coef_和intercept_具体是代表什么意思了,就是具体到公式中的哪个字母,虽然总体知道代表的是模型参数。好尴尬,折腾了一会,终于弄明白了,记录下来,以说明自己 too young。正文我...原创 2016-10-26 13:39:10 · 59758 阅读 · 13 评论 -
《机器学习》学习笔记 1 —— 绪论 机器学习概述
在亚马逊上买了Peter Flach教授写的段菲博士翻译的《机器学习》一书,开始机器学习之旅。开始之前,先介绍下Peter Flach教授: 布里斯托尔大学人工智能教授,拥有20多年的机器学习教研经验。在高度结构化的数据挖掘以及通过ROC分析来评估和改进机器学习模型方面,Flach是国际领先的研究人员。他还是Machine Learning期刊总编。曾担任2009年ACM知识发现与数据挖掘...原创 2016-01-11 16:10:31 · 1445 阅读 · 0 评论 -
使用 MATLAB 的 fitlm 函数进行线性回归
今天在做《数理统计》关于线性回归的作业,本来用R已经做出来了,但是由于最近使用matlab很多,所以也想看看用matlab怎么做。matlab中有很多函数可以做各种各样的回归,也有cftool工具箱可以可视化的做回归,很方便。这里选用fitlm做回归,由于多元回归和一元回归基本思想是差不多的,操作也只是参数个数的问题,所以这里用一元线性回归做例子,记录下来以备后用。数据选用R中的自带数据:...原创 2015-12-21 16:56:15 · 42934 阅读 · 19 评论 -
Python NumPy 基础
前言这两天读完《利用Python进行数据分析》 这本书的第4章:NumPy 基础:数组和矢量计算 后,在进行下一步阅读高级应用前,先整理本章内容,做个笔记备查,也好加深印象。在往下看前请确保你已经安装了NumPy 库,并且已经使用 import numpy as np 加载numpy库。如果 还没有安装,那么可以在cmd(windows下)中使用 pip install numpy 命令安装,...原创 2016-04-03 16:50:10 · 5783 阅读 · 2 评论 -
【TensorFlow】TensorFlow 的线性回归
前面 有篇博文 讲了讲Ubuntu环境下安装TensorFlow,今天来说一说在TensorFlow中如何进行线性回归。训练数据本次使用的训练数据是美国房价数据,做了一些预处理,完整数据可从这里下载,原始数据共有1460行81列,其中我选用了LotArea(房屋面积)和SalePrice(售价)两个变量来分别作为自变量和因变量,处理后样本个数为1140个,也就是说全部训练数据是一个...原创 2016-10-22 20:53:57 · 12930 阅读 · 3 评论 -
【TensorFlow】TensorFlow 的卷积神经网络 CNN - 无 TensorBoard 版
前面 有篇博文讲了多层感知器,也就是一般的前馈神经网络,文章里使用 CIFAR10 数据集得到的测试准确率是 46.98%。今天我们使用更适合处理图像的卷积神经网络来处理相同的数据集 - CIFAR10,来看下准确率能达到多少。本文代码基于 TensorFlow 的官方文档 做了些许修改,完整代码及结果图片可从 这里 下载。这篇 文章是对本文的一个升级,增加了 TensorBoard 的实...原创 2016-12-28 12:13:13 · 6341 阅读 · 16 评论 -
【TensorFlow】学习率、迭代次数和初始化方式对准确率的影响
想必学过机器学习的人都知道,学习率、训练迭代次数和模型参数的初始化方式都对模型最后的准确率有一定的影响,那么影响到底有多大呢?我初步做了个实验,在 TensorFlow 框架下使用 Logistics Regression 对经典的 MNIST 数据集进行分类。 本文所说的 准确率 均指 测试准确率。代码from tensorflow.examples.tutorials.mnist impo原创 2016-10-29 16:46:50 · 67697 阅读 · 2 评论 -
【Python | TensorBoard】用 PCA 可视化 MNIST 手写数字识别数据集
Principal component analysis (PCA) is a statistical procedure that uses an orthogonal transformation to convert a set of observations of possibly correlated variables into a set of values of linearly u原创 2016-12-10 19:23:02 · 16359 阅读 · 8 评论 -
【TensorFlow】TensorFlow 的多层感知器(MLP)
前面有几篇博文讲了使用 TensorFlow 实现线性回归和逻辑斯蒂回归,这次来说下多层感知器(Multi-Layer Perceptron)的 TensorFlow 实现。本篇博文的代码及结果图片等可以在这里下载,里面包含TensorFlow的实现和sklearn的实现,以及各自的结果图片。原理 多层感知器(Multilayer Perceptron,缩写MLP)是一种前向结构的人工神经网络,原创 2016-11-19 20:56:14 · 17220 阅读 · 3 评论 -
【TensorFlow | 升级】TensorFlow 1.0 发布
前面写了 TensorFlow 在Windows上的安装教程,当时版本还是 0.12 。NOW首届 TensorFlow 开发者大会(TensorFlow Dev Summit)已于美国时间昨日召开,YouTube 还进行了直播。更重要的是,TensorFlow 1.0 版本发布。Google Research Blog 也于昨天在 博客 中公布了这一消息。改动这一版本的改动还是比较大的,很多旧的原创 2017-02-16 22:46:55 · 12347 阅读 · 3 评论 -
Check failed: stream->parent()->GetConvolveAlgorithms(&algorithms)解决办法
由于我很早就在 GitHub 下载了 TensorFlow 的源码库没有更新,在运行 TensorFlow 官方的 CNN 例子的时候,总是报 ImportError 错误,找不到 cifar10 模块,后来发现是 TensorFlow 的源码库更新了,这些模型实现都被移到了一个新的源码库:models 。但是呢,在我 clone 了 models 到本地后,按照 TensorFlow 官方的例子运原创 2017-02-26 11:45:44 · 16895 阅读 · 0 评论 -
奇异值分解 SVD 的数学解释
奇异值分解(Singular Value Decomposition,SVD)是一种矩阵分解(Matrix Decomposition)的方法。除此之外,矩阵分解还有很多方法,例如特征分解(Eigendecomposition)、LU分解(LU decomposition)、QR分解(QR decomposition)和极分解(Polar decomposition)等。这篇文章主要说下奇异值分解,原创 2017-03-29 12:33:19 · 46628 阅读 · 12 评论 -
【Python】Numpy 中的 shuffle VS permutation
有时候我们会有随机打乱一个数组的需求,例如训练时随机打乱样本,我们可以使用 numpy.random.shuffle() 或者 numpy.random.permutation() 来完成。这两者非常相似,实现的功能是一样的,那么他们到底有什么区别?本文代码及图片可以在 我的GitHub 找到。参数区别以下 numpy.random.shuffle() 简称 shuffle,numpy.random原创 2017-06-17 23:28:21 · 23019 阅读 · 4 评论 -
【TensorFlow】DNNRegressor 的简单使用
tf.contrib.learn.DNNRegressor 是 TensoFlow 中实现的一个神经网络回归器。一般神经网络用于分类问题的比较多,但是同样可以用于回归问题和无监督学习问题。此文的代码和所生成的 TensorBoard 文件可以从 这里 下载。tf.contrib.learntf.contrib.learn 是 TensorFlow 提供的一个机器学习高级 API 模块,让用户可以更方原创 2017-06-02 22:03:42 · 15090 阅读 · 9 评论 -
【TensorFlow | TensorBoard】理解 TensorBoard
TensorBoard 是用于可视化 TensorFlow 模型的训练过程的工具(the flow of tensors),在你安装 TensorFlow 的时候就已经安装了 TensorBoard。我在前面的 【TensorFlow】TensorFlow 的卷积神经网络 CNN - TensorBoard版 和 【Python | TensorBoard】用 PCA 可视化 MNIST 手写数字识原创 2017-08-20 10:01:19 · 39932 阅读 · 19 评论 -
XGBoost 在 Windows 10 和 Ubuntu 上的安装
关于什么是 XGBoost,我在这里不再解释,如果有时间的话再写一篇文章来解释,在数据科学里非常有用。大家可以参考 Tianqi Chen 的论文 XGBoost: A Scalable Tree Boosting System ,本篇文章只是在 Windows 上安装 XGBoost 的 Python 包的方法。官网官网 介绍的方法是从 GitHub 编译安装,但是在我的机器上没有成功,pip 同原创 2017-05-18 10:58:31 · 2339 阅读 · 1 评论 -
使用集成学习提升机器学习算法性能
使用集成学习提升机器学习算法性能 这篇文章是对 PythonWeekly 推荐的一篇讲集成模型的文章的翻译,原文为 Ensemble Learning to Improve Machine Learning Results,由 Vadim Smolyakov 于 2017 年 8 月 22 日发表在 Medium 上,Vadim Smolyakov 是一名 MIT 的研究生,对数据科学和机器学习翻译 2017-08-30 18:47:18 · 8411 阅读 · 1 评论 -
梯度下降优化算法概述
原文作者简介:Sebastian Ruder 是我非常喜欢的一个博客作者,是 NLP 方向的博士生,目前供职于一家做 NLP 相关服务的爱尔兰公司 AYLIEN,博客主要是写机器学习、NLP和深度学习相关的文章。 本文原文是 An overview of gradient descent optimization algorithms,同时作者也在 arXiv 上发了一篇同样内容的翻译 2017-10-08 21:41:19 · 12513 阅读 · 0 评论 -
Ubuntu 14.04 64 位安装 Google 的 TensorFlow
本文首发于我的微信公众号:赛克分享君,未经允许,不得随意转载。文末附有公众号二维码,感兴趣的话可以试着关注一下,关注了不喜欢欢迎随时取消,可以的话取关的时候告诉我原因,以让我改进,谢谢:)。今天来说一下机器学习库 TensorFlow 的在 Ubuntu14.04 64位下的安装。什么是 TensorFlow关于什么是 TensorFlow ,这里引用一下官网的介绍: TensorFlow™原创 2016-08-27 10:23:48 · 31692 阅读 · 0 评论 -
【TensorFlow】理解 Estimators 和 Datasets
Estimators 和 DatasetsGoogle 在 2017 年 9 月 12 号的博文 Introduction to TensorFlow Datasets and Estimators 中介绍了新引入的两个新特性 Datasets 和 Estimators:Datasets:创建一个输入管道(input pipelines)来为你的模型读取数据,在这个 pipelines ...原创 2017-12-10 17:37:24 · 11260 阅读 · 12 评论 -
理解 LSTM 网络
译者注: - 本文原文为 Christopher Olah 于 2015 年发表在自己博客上的经典文章:Understanding LSTM Networks – colah’s blog。 - 没有翻译原文中的 Acknowledgments 部分,此部分为致谢,私以为无关。 - 文中括号或者引用块中的 斜体字 为对应的英文原文或者我自己注释的话(会标明 译者注),否则为原文中本翻译 2017-12-29 18:58:36 · 4508 阅读 · 0 评论 -
【TensorFlow】Windows10 64 位下安装 TensorFlow - 官方原生支持
之前 写过一篇在 ubuntu 下安装 TensorFlow 的教程,那个时候 TensorFlow 官方还不支持 Windows 系统,虽然可以通过其他方法安装,但是终究不是原生的,而且安装过程繁琐易错。好消息是,Google官方在11月29号的开发者博客中宣布新的版本(0.12)将 增加对Windows的支持,我11月30号知道的,立马就安装试了试,安装过程非常简单,不过也有一些需要手动调整。...原创 2016-12-01 09:11:44 · 351471 阅读 · 384 评论 -
【TensorFlow】TensorFlow 的卷积神经网络 CNN - TensorBoard 版
前面 写了一篇用 TensorFlow 实现 CNN 的文章,没有实现 TensorBoard,这篇来加上 TensorBoard 的实现,代码可以从 这里 下载。什么是 TensorBoard To make it easier to understand, debug, and optimize TensorFlow programs, we’ve included a s...原创 2017-03-17 10:57:39 · 6241 阅读 · 4 评论 -
【TensorFlow】TensorFlow 的 Logistic Regression
前面提到了使用 TensorFlow 进行线性回归以及学习率、迭代次数和初始化方式对准确率的影响,这次来谈一下如何使用 TensorFlow 进行 Logistics Regression(以下简称LR)。关于LR的理论内容我就不再赘述了,网上有很多资料讲,这里我就写下LR所用的损失函数:J(θ)=−1m∑i=1m[y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]J(原创 2016-11-06 15:13:49 · 11817 阅读 · 11 评论