上节说到题库有两类,一是以学霸君为代表的拍题产品,一是以猿题库为代表的组题产品。组题产品给我的感觉是在做一个“活”的练习册,“可以根据你对考点的掌握情况智能出题”。因为我自己过去也搞过一点点大数据,然后我自己用了用这个产品,觉得这个事情不太对。主要的问题有两个,第一个是“先有鸡还是先有蛋”。你要有大量的数据才可能训练出精准的推送模型,可是你要足够“智能”才可能有大量的学生使用你的产品。冷启动问题怎么破?
在回答问题前我吐个槽。去年6月份的时候我参加了一个小沙龙,听猿题库的朋友说用户量已经接近300万了,每天最活跃的时候是晚上十点多。我特别想吐槽的是,这个app有个选项默认是打开的,叫做“每日答题提醒”(最新版本在“发现”里面)。它的作用是每天晚上十点半准时打开app并用最大音量提醒你来做题吧,不管你当时在什么别的app里面或者哪怕你手机调的是静音……囧rz。到了7月份我听说猿题库拿了1500万刀的C轮,10月份的时候我看到新闻说用户数突破500万,每周新增30万。于是我明白了,冷启动怎么破?有钱啊!嗯,有钱真的可以的,数据量这一局暂时你赢了。然后就是第二个问题了,数据质量,给大家看两张截图。
注意图中的“考点”和“标签”,机器是不认识“题目”的,机器学习的数据就是这些人工打上的“标签”。现在的题库动辄号称千万题量,其实哪怕是百万,生产一个上图这样标准化的题库的唯一办法就是雇佣大量的廉价劳动力,比如大学生兼职团队。在这种情况下,你打出来的标只能是“粗粒度”的。“粗粒度”怎么理解?大家都学过中学数学的,我们尝试估计一下这种标签的种类数量。整个高中数学约30个单元,如数列、立体几何、函数、不等式等。按照“等差数列、等比数列”、“定义法”、“空间几何体”、“图解法”这样的用词,每个单元平均十几个标签吧,总数我猜在300个左右。好,我们来感受一下这样一个场景,智能题库给你推送了5道题,都带有“直线方程”这个标签,结果你全做错了。这时不管背后的机器怎么学习,它一定要再给你推一道带“直线方程”标签的题吧。这有用吗?你刚才犯的错误是“用点斜式设直线方程时忘记考虑斜率K不存在的情况”,或者是忘记了“与直线Ax+By+C=0垂直的直线是Bx-Ay+C1=0 (C1≠C)”,再或者是在“用方法四求直线关于某定点对称的直线”时用错了“中点坐标公式”,blablabla……然后这次给你推的题是“求两条直线的交点坐标”。嗯,它们都是“直线方程”。
感谢数学不好的小伙伴坚持看完上面这一段,我想表达的观点是——粗粒度的个性化是伪个性化。用俄罗斯方块做个比喻,如图,下面那些坑就是学生的薄弱点或者叫做用户的需求,五花八门。现在你要消掉它,如果落下来的全是4×4甚至6×6的方块,那你永远也别想成功。
回到上面题库的第二个问题就是,任何数据所训练出来的模型的颗粒度不可能超过数据本身的颗粒度。所以,在数据质量(颗粒度)达到某个阈值之前,再多的数据可能都是“废的”,数据的质量决定了个性化的有效性。
实际上,数据颗粒度这件事还间接影响了前一篇中我们提到的“学习主动性”问题。这里先卖个关子,回头一并在学习主动性一节阐述。