诸君有没有把场景需求抽象成算法的能力或者实际经历?

2017-09-06 12:13:25 +08:00
 Morriaty

程序员间常见的一个话题是『反正工作中又碰不到,我要这算法有何用?』,因而有标题所问。

本帖的讨论范围暂时不包括那些过于典型的场景,这里的“典型”是指:当我需要做一个功能,百度或 Google 之后,大家都在用这个算法,那我就使用这个算法吧。比如垃圾词过滤的 AC 自动机(包括其他改进版)、爬虫 URL 判重的 BloomFilter (包括其他改进版)。

我举两个我见过的例子:

  1. word2vec本身是做Word Embedding的,进而可以用来判断同义(同位)词。一个有趣的应用场景是,训练用户的商品浏览记录,用户同一个 session 内连贯的浏览,相当于一个句子,每个商品相当于一个 word,进而发现相似的商品。
  2. 话题模型和 LDA 本身也算一个“典型场景”,但我想强调的是其“抽象”的过程,有读过《 LDA 数学八卦》的朋友应该知道,从 n 的阶乘和抛硬币讲起,到最后得出文本聚类模型,无知的楼主只能表示:惊为天人
2079 次点击
所在节点    程序员
6 条回复
codermagefox
2017-09-06 12:15:57 +08:00
翻译一下就是:我曹踏马的还可以这么写?好踏马牛逼啊!

这就是为什么我一个狗前端还买了一本算法导论垫桌子....梦想着有一天能够有能力把它读下去.哭.
takato
2017-09-06 12:18:19 +08:00
万物皆图...
Morriaty
2017-09-06 14:23:40 +08:00
@codermagefox 事实上,前端也是可以业务场景算法话的啊,比如分类列表,分组可以调换位置,移动。分组里边的元素也可以移动到不同分组。还有删除,增加分组;删除,增加元素…这么多操作,想高效率进行,算法绝对少不了。
ma125125t
2017-09-06 18:28:22 +08:00
@Morriaty 不觉得。难道有这种场景:一万个列表,每个列表里有一万个二级列表?
winglight2016
2017-09-06 21:11:21 +08:00
所谓场景大概指的是用户的使用场景吧?这种情况下,仅仅是应用级需求,跟抽象成算法基本没什么关系了,反过来说,需要使用算法或者优化算法的场景都是非常少见和特殊的,而且也是成熟的。至于你举的例子,都是深度学习相关吧,这一领域的确有大量算法实践,不过我也不熟
Morriaty
2017-09-07 10:03:33 +08:00
@ma125125t # 4 电商品类树或者 QQ 好友表,我举的例子可能更偏向与数据结构了,不过我想强调的是前端也不是完全原理算法的。

@winglight2016 # 5 我依然觉得算法用的少,一是因为很多情况下 for 循环能解决的问题,我们懒得去想的更深入,也就是继续抽象;二是现在服务器和代码的性能做足够好,我们都感受不到时间、空间复杂度的问题。

然后我举得例子都算不上深度学习,第一个例子里你甚至不需要理解原算法基础,只要能够意识到同义词和相似商品的对等关系就行,这个应用场景再具体一点,可以是假货识别,比如找到和 Nike 相似的商品是 Noke ;第二个 LDA 是传统一点的统计学习。

当然,本帖想强调是第一个例子里的对等意识,和第二个例子里的从零开始的抽象意识。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/388577

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX