DataCastle[验证码识别竞赛]冠军——李超专访

李超在DataCastle验证码大赛中独揽冠军,分享了他的学习经历、参赛感悟及对大数据未来的看法。他认为兴趣是最好的老师,竞赛是很好的学习途径。

DataCastle验证码大赛落下帷幕,10万元的奖金被选手们收入囊中。验证码的识别冠军李超不仅是个人单独参赛,而且是参赛者中唯一把六类验证码题全部计算出结果的人,但这个目前研究生在读的大男孩接触深度学习才不过两年多时间。

半路出家的他是如何走上大数据道路,又是如何学习的呢?DataCastle联合数据客共同对本次大赛冠军李超进行了深度专访,撒花!~围观!~


Q:李超你是怎么接触到大数据的呢?

虽然本科学的专业不相关,但是我一直对计算机方面很有兴趣,所以研究生转到这个方向。我目前在西北工大就读模式识别专业,主要研究方向图像处理、机器学习,专注于深度学习在计算机视觉方向的应用。另外我看好大数据的应用前景,对大数据领域的发展也保持高度关注,之前对于hadoop/spark技术都有过不同程度的研究,后来觉得还是集中注意力,做图像比较好。


Q:你已经两度参加DataCastle的竞赛了,当初为什么会来参赛呢?

我最初看到DC在举行新闻推荐算法大赛的消息,那时候感觉自己水平不行,所以只是默默关注。后来上线了图像算法类的竞赛,这个和我的研究方向相匹配,于是就参加了。

我认为DC的竞赛有一定的难度,但工作量不是非常大,三个月的赛期完全够用,很适合我这样并没有太多精力的人来锻炼。同时我喜欢通过比如竞赛、考取证书之类的方法来创造学习的动力,因为单纯的学习过程是比较枯燥,通过这些方式会让学习充满乐趣,进步得很快。能够拿到竞赛荣誉和奖金,也是极好的。另外找工作的时候我发现面试官们对比赛成果还是很认可的。


Q:能拿到冠军当然是极好的,但是好多团队都是几个人组队来攻克难题,你是一个人,当时会觉得有压力吗?觉得一个人参赛会影响最终发挥吗?

至于个人参赛还是团队参赛,首先考虑能不能找到合适的队友,坦白来说,我认识的大牛们都没有时间。其次从工作量上考虑,这次竞赛工作量并不大,关键是需要一个好的idea,而这不是组队就能很好解决的。

一般来说,我认为个人参赛不会影响最终发挥,除非是那种难度极大,工作量也很大的竞赛,这时候团队参加更合适。


Q:那需要掌握哪些基本的技能呢?

一方面是机器学习和模式识别的基础算法,这次竞赛还涉及到计算机视觉领域的一些专业算法,这些是参加大数据算法竞赛的理论基础。另一方面是动手能力,主要指编程能力,有好的想法之后能不能快速去实现、验证很重要。

语言方面,我觉得Python或R是很好的选择,都具有较完备的科学计算生态,另外语言本身也很高效,适合用来研究算法。


Q:本次大赛一共提供了6类验证码让大家进行识别,其中第6类验证码难度很大,而且最终只有你一个人算出了结果。据了解,很多参赛者是因为看到验证码的难度很大,就放弃了尝试,而且时间也比较紧张,你当时是怎么想的?

第6类验证码是带噪声的扭曲汉字,而且每个验证码的汉字是随机的、没有任何语义信息,是所有类别中最难的一类。开始我也搁置了很久,但是在某一天偶然得到灵感:就是先预测验证码中包含的字符数,这样一来除了字符识别起来更难一些之外,第6类和其他类并没有什么其区别了,所以我在做第5类和第6类时使用了完全相同的思路和算法。我认为思路比较重要,只要想到了技术实现是没有困难的。而思路是要通过平时的积累。


Q:通过比赛,你认为自己在哪些方面得到了锻炼和提高?

首先,竞赛其实是个很好的学习过程,通过实际的数据,加深了对算法本质的理解,也通过算法进一步理解了数据的内涵,从理论到实践都得到了很好的提高;其次,动手实践能力也得到了锻炼;最后,通过竞赛认识了不少线下的朋友,他们都是大神般的存在,有很多值得学习的地方,我觉得这是很大的收获。


Q:除了比赛,你认为怎样才能学好大数据相关知识,有没有可以推荐给大家的课程或者书籍?

我认为兴趣很重要,做比赛时我看着实验结果蹭蹭的上升,有次到半夜了都没睡意,做数据分析挖掘有时比较枯燥,没有兴趣是干不下去的。

我们学校的课程主要都是数学类的基础课,所以主要还是靠自学了。我学习的方法是以算法为主线的,针对某一个算法,阅读书籍相关章节、论文甚至源代码,这样从不同渠道参考不同作者从不同角度对同一个问题的讲解,直到完全弄懂这个算法为止,我认为这样以算法为主线而不是书籍或课程为主的方法是比较高效的,因为常用算法就那么多,而书是永远看不完的。

要说基础书籍,我觉得李航博士的《统计学习方法》挺不错的,里面都是比较经典的算法。如果想跟上学术界的节奏,还得多看最新的论文了。


Q:未来想做什么工作?有些人认为某些特定领域专业知识比统计或者编程知识更重要,你同意吗?

将来当然是想继续视觉算法的研究,计算机视觉是人工智能的主要组成部分,是我的研究兴趣所在,也是近些年发展最快的方向之一。

我觉得特定领域专业知识和算法都很重要。对于大部分数据挖掘任务来讲,特定领域的专业知识、对于业务本身的理解很重要,因为只有深入理解业务本身,才能设计更好的特征,也就是所谓的特征工程,特征的好坏往往直接影响的最终的结果,而识别算法这时候影响就小了。如何从复杂的非结构化数据中自动学习对于特定任务有用的特征,是众多科学家们正在努力的方向。

目前对于图像和语音这种结构化数据深度学习已经可以自动学习特征,而且在效果上远超过人工特征。所以如果将来出现有效的针对非结构数据的特征学习算法,那么特定领域的专业知识才会不再重要。


Q:上次在图像搜索竞赛中获得第二名,这次又来参加获得本次验证码识别竞赛的第一名,取得这么好的成绩,最后和大家分享一下你的感想吧?

我觉得参加竞赛的目的远不仅仅在于获得名次,这其实是一种很有趣的学习方法,可以不同的人交流思想,对于同一个问题,大家都有不同的解决方案,简单交流几句,都会有脑洞大开的感觉。

还有一个感触就是竞赛不仅是知识的竞赛,还是计划和执行力的竞赛,在竞赛之前,不应该急于动手,而应该全面分析问题,考虑所有可能性。在明确了正确的方向之后再按照计划去试验验证想法,这是很重要的。

最后感谢DataCastle提供竞赛平台,祝DC越办越好。


原文链接:http://bbs.pkbigdata.com/static/309_detail.html

### 李超线段树算法实现与应用 #### 什么是李超线段树? 李超线段树是一种特殊的线段树,主要用于解决动态插入直线并查询某一点 \(x = k\) 的情况下,这些直线所对应的 \(y\) 值的最大值或最小值问题[^1]。 #### 数据结构设计 为了高效处理这类问题,李超线段树通过维护每一段区间内的最优直线集合来减少冗余计算。具体来说,在每个节点中存储一条代表当前区间的最佳直线(即对于该区间中的任意 \(x\) 都能给出最大/最小的 \(y\))。当新直线被加入时,会根据其斜率和截距判断是否需要替换现有直线或者进一步细分区间[^2]。 #### 时间复杂度分析 由于每次新增加一条直线最多只会分裂两个子区间,并且整个过程类似于平衡二叉查找树的操作模式,因此单次更新操作的时间复杂度为 O(log n),其中n表示叶子结点数量或者说定义域范围大小。同样地,因为只需要沿着路径访问少数几个节点即可完成询问,所以查询操作也达到了同样的效率级别O(log n)[^3]。 以下是基于Python语言的一个简单版本实现: ```python class LiChaoTree: INF = float('inf') def __init__(self, xmin=-int(1e9), xmax=int(1e9)): self.xmin = xmin self.xmax = xmax self.tree = {} def f(self, line_id, x): a, b = lines[line_id] return a * x + b def add_line(self, id_new): def update(node, l, r): if node not in self.tree or (l != r and self.f(id_new, (l+r)//2) < self.f(self.tree[node], (l+r)//2)): tmp = self.tree.get(node, None) self.tree[node] = id_new if l != r: mid = (l + r) // 2 if self.f(tmp, l) < self.f(id_new, l): update(2*node+1, l, mid) else: update(2*node+2, mid+1, r) update(0, self.xmin, self.xmax) def query_min(self, x): res = LiChaoTree.INF pos = 0 while True: if pos in self.tree: res = min(res, self.f(self.tree[pos], x)) if pos >= len(self.tree)-1 or self.xmin == self.xmax: break mid = (self.xmin+self.xmax)//2 if x <= mid: pos = 2*pos+1 self.xmax = mid else: pos = 2*pos+2 self.xmin = mid+1 return res ``` 此代码片段展示了如何构建一个基本框架用于管理一系列函数\(f(x)=ax+b\). 它允许我们有效地添加新的线条以及找到给定位置上的最低可能结果. #### 应用场景举例 - **几何最优化**: 如寻找覆盖特定区域的最佳传感器布置方案. - **经济模型预测**: 对未来收益曲线进行实时调整的同时保持快速检索能力. - **游戏AI开发**: 计算单位移动成本地图上两点间最快路线等问题也可能涉及此类技术的应用.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值