然而并没有什么东西┑( ̄Д  ̄)┍

0%

[GDG]Google Northeast Asia community summit

“NO ERROR in my CODE”

本次Google Northeast Asia community summit由Developer Relations组织,来自中国大陆、香港、台湾、韩国和日本的GDG组织者、GDE还有Googler进行了面对面的交流。

暑假折腾(被学校教做人)了两个月的我,又回来啦!

峰会是8月24日到26日在上海举办,比较皮的我又是提前两天到达,一下飞机就马不停蹄地去了杭州2333

Day 1

24号下午回到上海后,去取了给其他GDG准备的纪念品(重庆限定!)后,便赶往大本营海神诺富特酒店,经历无限的磨练(日常迷路、在修路被迫改道、前台实习生对业务不熟、房卡被消磁用不了)后已经是晚上快8点了,怕收餐的我又只有马不停蹄地去餐厅就餐。

一到餐厅就发现有一大群人在大厅中央愉快地交流,而饥肠辘辘的我果断找了一个角落的位置。不知道是不是巴西烤肉小哥觉得我太可怜(或者太能吃)而一直给我加肉,我也就随遇而安地闷头大吃。

过了一会一个韩国小哥过来问我你是GDG的组织者吗,然后就聊了起来,顺便给我点了瓶啤酒(?)并带我去见韩国的GDG组织者们。过去后一个韩国小姐姐她一直认为我不知是组织者,因为我一直在那吃。。。似乎给韩国友人留下了不好的印象。。。双方在尬聊中互相介绍了自己的城市,然而都不懂对方说的是哪(重庆,他们说的大概是仁川吧),接着GDE林老师来了我就赶紧溜走了。

Day 2

日常睡过头后(来之前3天只睡了9个小时),赶在最后时刻冲进了餐厅,结果再次偶遇昨晚的韩国小哥,结果小哥还不知道日程安排,给他一看发现已经迟到了。跑到会场来不急领取礼品就进会场了,非常有幸位置在第一排。。。的最左边,还被柱子挡住了。除此之外我名牌上的名字还被打反了。。。

活动开始的Keynote是来自Google Northeast Asia DevRel Ecosystem的问候,紧接着便是《Artificial Intelligence: A Modern Approach》的作者、AI大牛、Google研究总监Peter Norvig为我们讲解了Machine Learning的相关内容。

之后听的最认真的便是“Session #1 - Large Scale Recommendation Systems”和下午的“Session #3 - Machine Learning Options”。因为去年到今年刚刚好做过基于潜在因子的推荐系统,所以对这个也非常感兴趣:

和潜在因子推荐算法一样,系统中涉及到用户(User)和物品(Entity),都有各自的属性。通过构建的推荐模型,将用户的属性和幸位转化为用户特征,根据特征生成候选对象,再通过排名选出Top-N。用户和物品的操作关系也是通过矩阵保持。但不同的是,在我折腾的潜在因子推荐中,是通过小数表示用户对物品的兴趣程度,再对矩阵进行SVD分解,获得用户-因子矩阵和因子-物品矩阵;而Google是通过One-Hot对其进行简单编码,然后输入到深度神经网络中进行训练。

SVD相较于DNN,有很多问题:

  1. 针对新的个体很难处理(冷启动问题);
  2. 如果新增特征也很麻烦(需要重新训练);
  3. 矩阵非常大且非常稀疏;

相比之下,DNN则是:

  1. 能够应对各种数据特征;
  2. 能轻松实现数据特征泛化;
  3. 输出推荐结果更方便

然后Google的DNN模型叫“Wide and Deep Model”,DNN越宽越能保存特征,越深越易于生成内容。。。(有钱就是任性。。。只有一颗GTX1060 3G的我泣不成声
大概的代码是:

1
2
3
4
5
6
7
8
9
10
11
12
# Define wide model features and crosses.
query = sparse_column_with_hash_bucket("query", num_buckets)
docid = sparse_column_with_hash_bucket("docid", num_buckets)
query_x_docid = crossed_column([query, docid], num_buckets)
wide_cols = [query_x_docid, ...]
# Define deep model features and embeddings.
query_emb = embedding_column(query, dimension=32)
docid_emb = embedding_column(docid, dimension=32)
deep_cols = [query_emb, docid_emb, ...]
# Define model structure and start training.
m = DNNLinearCombinedClassifier(wide_cols, deep_cols, dnn_hidden_units=[500, 200, 100])
m.fit(train_data, labels, ...)

然后通过“Wide and Deep Model”生成候选对象进行rank。

分享完已经是中午了,趁着大牛还没走,赶紧去请教了一下:之前做潜在因子的时候发现反复迭代会产生“趋势集中现象”➡推荐的内容范围越来越窄,最后固定不变。但同样的东西太久了还是会厌倦(比如天天听某易云音乐的个性电台,翻来覆去就那几首歌),实际用户感知到的推荐结果的质量会越来越差。然而当年直接对矩阵添加拉普拉斯噪音的方法,简单粗暴地通过随机噪声产生误差,实现对

Googler崔老师超级nice地听了我讲完,给的建议是引入衰减函数,在某一兴趣点刚出现的时候具有极大的权重,但随着时间的推移而迅速衰减,来模拟人对兴趣点的淡忘(感觉Google内部也不一定只是简单的使用one-hot,还是有很多其他的权重在里面)

下午吃了饭就继续回到会场,没睡午觉整个下午都不在状态,(买杯咖啡还把卡弄掉了),Android部分讲了下Android P的适配,Machine Learning Options则是讲了下TensorFlow那些新的特征、TPU Edge之类的,Cloud则是目前用不了(坐等GDD官宣

下午还有一个略坑的活动就是头脑风暴,每组选个主题然后头脑风暴,最后派个代表上台总结,因为需要英语发言,队友便一致要求我去(钦定):“我们都决定啦,你来上台发言”,然后大家(包括我)都一起聊TensorFlow Day的事情去了,直到最后五分钟才想着赶稿子,不过我们的题目“What is ‘Community’ meaning for you?”倒是值得单独写一篇日志作为记录。

结束之后便是欢乐的“Swag Exchange”,其他地区GDG都是准备的毛巾、贴纸等,而国内GDG都是吃的!吃的!吃的!而作为一股泥石流的我,当然准备的是火锅(特辣),还一下就被抢完了2333

然后合照的时候本来抢到了C位,结果挤着挤着就被挤成后排了。。。

Google准备的晚宴是在海神诺富特50楼的旋转餐厅,人太多且空间很小,不过最欢乐的还是和韩国友人们喝酒:大Boss和韩国GDG的小伙伴挨桌敬酒,然后带着我们从啤酒喝到白酒、还有韩国的清酒。我们这桌去敬酒,到韩国那一桌又被哄着喝了韩国的黄酒。。。之后韩国朋友们还过来玩游戏喝酒,最后成功把大Boss喝翻(第二天一位GDE说当晚看见大Boss瘫倒在了酒店大堂的沙发上2333),而我则功成名退,趁着还有意识溜回了房间,(并在躺了几个小时后突然感觉还很有精力回光返照,打了个车去新天地南里的猜画小歌快闪店,结果9点40保安就不让进了。。。

Day 3

最后一天是参观上海环球金融中心,可惜乌云密布还下着下雨,进了云层啥也看不到,不过在100楼恐高症发作的我还是吓得瑟瑟发抖,然后赶紧退回到94楼,自己抛弃参观了“天空之城-吉卜力的飞行梦想”(本来正常情况参观半小时就下去了,我们活生生在上面耗到了11点半deadline才准时下到2楼LOL

紧接着便是去咕果上海(Google Shanghai)办公室吃午饭,至此获得成就在国内所有Google办公室蹭饭2333

从Google出来后,和小伙伴们道别,便直接去浦东机场旁边订的旅馆,进门倒头就睡,第二天也顺顺利利地回到重庆(顺便吐槽,川航把3小时的航班只用了2小时整就飞到了

至此本次上海之行便告一段落,又回到学校每天忙碌的生活。流水账一般简单地记录一下,期待一个月后GDD的再会吧。