主页

使用 Keras 搭建模型识别验证码:通过 Web API 提供识别服务

最近因为项目上的需求,需要开发一个识别 4 位数字字母验证码的接口。想到自己虽然在科研上使用 Keras 已经有很长时间,但从来没有真正地将这些模型运用起来,或者说以 Web API 的形式对外提供过服务。因此借着这次机会,我正好完整地进行了一次从训练模型到最终包装成网络服务的开发。 准备工作 获取标注数据 无论什么类型的任务,只要希望通过机器学习方法来解决,那么必不可少的就是数据,可以说数据是烹饪“机器学习模型”这道菜必不可少的原料。我们项目的实际需求是识别一个网站上查询数据时需要输入的验证码,因此任务本身非常地简单,只是爬虫的一个中间环节。 虽然每一次刷新网页都可以获得新的验证码,但这些获得的图片都是没有标注的数据,因此无法直接用于我们的监督学习任务,而如果人工标注,则需要...

阅读更多

Seq2Seq 模型入门

转载自《玩转Keras之seq2seq自动生成标题》和《seq2seq之双向解码》,作者:苏剑林,部分内容有修改。 所谓 seq2seq,就是指一般的序列到序列的转换任务,比如机器翻译、自动文摘等等,这种任务的特点是输入序列和输出序列是不对齐的,如果对齐的话,那么我们称之为序列标注,这就比 seq2seq 简单很多了。所以尽管序列标注任务也可以理解为序列到序列的转换,但我们在谈到 seq2seq 时,一般不包含序列标注。 要自己实现 seq2seq,关键是搞懂 seq2seq 的原理和架构,一旦弄清楚了,其实不管哪个框架实现起来都不复杂。早期有一个第三方实现的Keras的seq2seq库,现在作者也已经放弃更新了,也许就是觉得这么简单的事情没必要再建一个库了吧。可以参考的资料还有...

阅读更多

基于 DGCNN 和概率图的轻量级信息抽取模型

转载自《基于DGCNN和概率图的轻量级信息抽取模型》,作者:苏剑林,部分内容有删改。 背景:前几个月,百度举办了“2019 语言与智能技术竞赛”,其中有三个赛道,而我对其中的“信息抽取”赛道颇感兴趣,于是报名参加。经过两个多月的煎熬,比赛终于结束,并且最终结果已经公布。笔者从最初的对信息抽取的一无所知,经过这次比赛的学习和研究,最终探索出在监督学习下做信息抽取的一些经验,遂在此与大家分享。 笔者在最终的测试集上排名第七,指标 F1 为 0.8807(Precision 是 0.8939,Recall 是 0.8679),跟第一名相差 0.01 左右。从比赛角度这个成绩不算突出,但自认为模型有若干创新之处,比如自行设计的抽取结构、CNN+Attention(所以足够快速)、没有...

阅读更多

基于CNN的阅读理解式问答模型:DGCNN

DGCNN 是苏剑林提出的一个基于 CNN 和简单的 Attention 的模型,由于没有用到 RNN 结构,因此速度相当快,而且是专门为 WebQA 式的任务定制的,因此也相当轻量级。 DGCNN (Dilate Gated Convolutional Neural Network) 即“膨胀门卷积神经网络”,它融合了两个比较新的卷积用法:膨胀卷积、门卷积,并增加了一些人工特征和 trick,最终使得模型在轻、快的基础上达到最佳的效果。 背景 DGCNN 模型是作者苏剑林参加 CIPS-SOGOU 问答比赛的产物,比赛数据基本上是跟百度之前开放的 WebQA 语料集一样的,即“一个问题+多段材料”的格式,希望从多段材料中共同决策出问题的精准答案(一般是一个实体片段)。 问题...

阅读更多

Windows 10 系统上的 Python 开发环境配置

前言 在 Linux 环境上进行 Python 开发是很多用户的选择,但在很多情况下我们还是离不开 Windows 系统。因此过去只能通过安装双系统或者虚拟机的方式来完成,但无论哪一种方式都不是很方便。 幸运的是从 Win10 开始,系统已经自带了一个 Linux 子系统 (WSL),并且可以与 Windows 环境无缝连接,这大大简化了在 Windows 上搭建 Linux 开发环境的难度。 准备工作 首先说明一下,因为 Windows 子系统 (WSL) 不支持 GUI 桌面或应用程序(如 PyGame、Gnome、KDE 等),因此本文仅适用于不需要图形化界面的 Python 开发。如果你需要开发包含图形化界面的 Python 程序,请直接在 Linux 系统上进行,或者...

阅读更多

边缘化的六四论述:八九春夏,其实发生的是“两场运动”

转载自端傳媒《边缘化的六四论述:八九春夏,其实发生的是“两场运动”》,作者:吉汉 对于六四运动的深入理解,需要我们同时跳出这两种叙事:既告别“知识分子中心论”、重视工人和市民的参与,同时承认“民主”的确是工人和市民参与运动的核心诉求。最关键的是,工人与市民所理解的“民主”,和学生、知识分子所拥抱的民主观念有很大不同。 1989年5月18日,工人在北京街道以电单车游行声援天安门广场绝食的学生。摄:Catherine Henriette/AFP/Getty Images 关于六四运动的历史叙事,比较常见的是两种版本。其中最为主流的版本,当然是把运动放在“民主vs威权”的框架下来理解。这一叙事中的“民主”,往往指的是自由主义意义上的民主。80年代,中共逐渐告别“阶级斗争”...

阅读更多

Vue.js 快速入门

该文为慕课网《3小时速成 Vue2.x 核心技术》的学习笔记,讲师 wayearn 前言 Vue.js 是一个用于创建用户界面的开源 JavaScript 框架,也是一个创建单页面应用的Web应用框架。Vue 所关注的核心是 MVC 模式中的视图层,同时,它也能方便地获取数据更新,并通过组件内部特定的方法实现视图与模型的交互。 俗话说“工欲善其事,必先利其器”,我们首先配置一下 Vue 的开发环境: 开发环境 (IDE):WebStorm 或 VS Code Node 开发环境:Node.js 和 包管理工具npm 推荐通过 nvm 来安装和管理 Node 环境。安装好 NVM 后,通过 nvm ls 和 nvm ls-remot...

阅读更多

Keras 深度学习笔记(四)机器学习基础:模型评估与正则化

机器学习的四个分支 在《Keras深度学习笔记(三):神经网络入门》的例子中,我们已经介绍了三种类型的机器学习问题:二分类问题、多分类问题和标量回归问题。这三者都是监督学习 (supervised learning) 的例子,其目标是学习训练输入与训练目标之间的关系。 机器学习算法大致可分为四大类,将在接下来的四小节中依次介绍。 监督学习 监督学习是最常见的机器学习类型。给定一组样本,它可以学会将输入数据映射到已知目标。 监督学习主要包括分类和回归,但还有许多变体,比如: 序列生成 (sequence generation)。给定一张图像,预测描述图像的文字。 语法树预测 (syntax tree prediction)。给定一个句子,预测其分解生成的语法树。 ...

阅读更多