SELECT data_key, data_value
FROM xf_data_registry
WHERE data_key IN ('options', 'languages', 'contentTypes', 'codeEventListeners', 'deferredRun', 'simpleCache', 'addOns', 'defaultStyleProperties', 'routeFiltersIn', 'routeFiltersOut', 'routesPublic', 'nodeTypes', 'bannedIps', 'discouragedIps', 'styles', 'displayStyles', 'userBanners', 'smilies', 'bbCode', 'threadPrefixes', 'userTitleLadder', 'reportCounts', 'moderationCounts', 'userModerationCounts', 'notices', 'userFieldsInfo')
Run Time: 0.000542
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_data_registry | range | PRIMARY | PRIMARY | 27 | | 26 | Using where |
SELECT data_key, data_value
FROM xf_data_registry
WHERE data_key IN ('brListenerClasses', 'brBriviumAddOns')
Run Time: 0.000143
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_data_registry | range | PRIMARY | PRIMARY | 27 | | 2 | Using where |
SELECT *
FROM xf_brivium_addon
ORDER BY addon_id
Run Time: 0.000140
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_brivium_addon | index | | PRIMARY | 77 | | 1 | |
INSERT INTO xf_data_registry
(data_key, data_value)
VALUES
(?, ?)
ON DUPLICATE KEY UPDATE
data_value = VALUES(data_value)
Params: brBriviumAddOns, a:0:{}
Run Time: 0.000122
SELECT cache_value
FROM xf_permission_combination
WHERE permission_combination_id = ?
Params: 1
Run Time: 0.000220
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_permission_combination | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SELECT thread.*
,
user.gender, user.avatar_date, user.gravatar,
NULL AS thread_read_date,
0 AS thread_reply_banned,
0 AS thread_is_watched,
'' AS draft_message, NULL AS draft_extra
FROM xf_thread AS thread
LEFT JOIN xf_user AS user ON
(user.user_id = thread.user_id)
WHERE thread.thread_id = ?
Params: 271786
Run Time: 0.000405
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | thread | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | user | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SELECT node.*, forum.*
,
permission.cache_value AS node_permission_cache,
NULL AS forum_read_date
FROM xf_forum AS forum
INNER JOIN xf_node AS node ON (node.node_id = forum.node_id)
LEFT JOIN xf_permission_cache_content AS permission
ON (permission.permission_combination_id = 1
AND permission.content_type = 'node'
AND permission.content_id = forum.node_id)
WHERE node.node_id = ?
Params: 38
Run Time: 0.000435
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | forum | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | node | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | permission | const | PRIMARY | PRIMARY | 35 | const,const,const | 1 | |
SELECT post.*
,
thread.*, thread.user_id AS thread_user_id, thread.username AS thread_username,
thread.post_date AS thread_post_date,
post.user_id, post.username, post.post_date,
bb_code_parse_cache.parse_tree AS message_parsed, bb_code_parse_cache.cache_version AS message_cache_version,
user.*, IF(user.username IS NULL, post.username, user.username) AS username,
user_profile.*,
user_privacy.*,
signature_parse_cache.parse_tree AS signature_parsed, bb_code_parse_cache.cache_version AS signature_cache_version,
session_activity.view_date AS last_view_date,
0 AS like_date
FROM xf_post AS post
INNER JOIN xf_thread AS thread ON
(thread.thread_id = post.thread_id)
LEFT JOIN xf_bb_code_parse_cache AS bb_code_parse_cache ON
(bb_code_parse_cache.content_type = 'post' AND bb_code_parse_cache.content_id = post.post_id)
LEFT JOIN xf_user AS user ON
(user.user_id = post.user_id)
LEFT JOIN xf_user_profile AS user_profile ON
(user_profile.user_id = post.user_id)
LEFT JOIN xf_user_privacy AS user_privacy ON
(user_privacy.user_id = post.user_id)
LEFT JOIN xf_bb_code_parse_cache AS signature_parse_cache ON
(signature_parse_cache.content_type = 'signature' AND signature_parse_cache.content_id = post.user_id)
LEFT JOIN xf_session_activity AS session_activity ON
(post.user_id > 0 AND session_activity.user_id = post.user_id AND session_activity.unique_key = CAST(post.user_id AS BINARY))
WHERE (
(post.thread_id = ? AND (post.position >= 0 AND post.position < 10) )
)
AND (post.message_state IN ('visible'))
ORDER BY post.position ASC, post.post_date ASC
Params: 271786
Run Time: 0.002492
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | thread | const | PRIMARY | PRIMARY | 4 | const | 1 | Using filesort |
SIMPLE | post | ref | thread_id_post_date,thread_id_position | thread_id_post_date | 4 | const | 1 | Using index condition; Using where |
SIMPLE | bb_code_parse_cache | eq_ref | content_type_id | content_type_id | 31 | const,xenforo.cc.post.post_id | 1 | Using where |
SIMPLE | user | eq_ref | PRIMARY | PRIMARY | 4 | xenforo.cc.post.user_id | 1 | |
SIMPLE | user_profile | eq_ref | PRIMARY | PRIMARY | 4 | xenforo.cc.post.user_id | 1 | |
SIMPLE | user_privacy | eq_ref | PRIMARY | PRIMARY | 4 | xenforo.cc.post.user_id | 1 | |
SIMPLE | signature_parse_cache | eq_ref | content_type_id | content_type_id | 31 | const,xenforo.cc.post.user_id | 1 | Using where |
SIMPLE | session_activity | eq_ref | PRIMARY | PRIMARY | 22 | xenforo.cc.post.user_id,func | 1 | Using where |
INSERT INTO xf_thread_view
(thread_id)
VALUES
(?)
Params: 271786
Run Time: 0.000087
INSERT INTO `xf_session` (`session_id`, `session_data`, `expiry_date`) VALUES (?, ?, ?)
Params: 0cfd7c873ae83c0a7cb58753861a6dc3, , 1714334113
Run Time: 0.000743
INSERT INTO xf_session_activity
(user_id, unique_key, ip, controller_name, controller_action, view_state, params, view_date, robot_key)
VALUES
(?, ?, ?, ?, ?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE
ip = VALUES(ip),
controller_name = VALUES(controller_name),
controller_action = VALUES(controller_action),
view_state = VALUES(view_state),
params = VALUES(params),
view_date = VALUES(view_date),
robot_key = VALUES(robot_key)
Params: 0, , , XenForo_ControllerPublic_Thread, Index, valid, thread_id=271786, 1714330513,
Run Time: 0.000103
INSERT INTO xf_bb_code_parse_cache
(content_type, content_id, parse_tree, cache_version, cache_date)
VALUES (?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE parse_tree = VALUES(parse_tree),
cache_version = VALUES(cache_version),
cache_date = VALUES(cache_date)
Params: post, 277823, a:29:{i:0;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:61:"http://pic4.zhimg.com/85dc86b7441300fdb1fd8a087f66557f_is.jpg";}}i:1;s:755:" 北冥乘海生,大数据仁波切
幸运而又不幸,笔者从事人工智能研究时,正是此领域最低潮的那几年,当时大家看我们的眼神,像是看一群 AV 男演员——费力不讨好。今天的人工智能不仅鸟枪换炮,还在严肃地讨论统治全人类的问题。学术界和工业界诸仁波切们认为人工智能要接管世界,拢共分三步:第一步,是感知智能;第二步,是认知智能;而第三步,也是决定性的一步,是通用智能。就是关于这第三步,我有话要说。
先讨论一下,机器与智能的未来方向到底是为了替代人类,还是帮助人类。我个人的观点,一半是海水,一半是火焰,这两个方向是并存的。
";i:2;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:87:"宏观上来看,机器替代人类不但不是科幻,而且早就进展多年了。";}}i:3;s:341:"替代人类,不是说机器拿起弹弓,把人类一个个都崩了,而是说工业革命以来机器生产效率的提升,已经使得人类的出生率自适应地下降了很多——没办法,没那么多事儿可干了啊。这个趋势还将继续发展,人类作为一个群体在数量上的萎缩是不可逆转的。
";i:4;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:64:"https://pic3.zhimg.com/v2-d335070a8956bf6dc2bf1a64b45737ea_b.jpg";}}i:5;s:2:"
";i:6;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:162:"微观上来看,机器则实实在在地帮助着人类,你开的车、用的手机,都在帮助人类朝着好吃懒做的共产主义终极理想前进。";}}i:7;s:613:"在“更快、更高、更强”这类物理能力上,机器早已甩开人类几个数量级了。所以每次奥运会的时候我都纳闷:为啥大家还在为饱餐各种兴奋剂的伪人类的新纪录而激动呢?这还不如去工地上看吊车举重更加有趣。
先声明一下,我不是人奸(康熙字典解释:机器人带路党,人类的叛徒),所以也希望机器帮助而不是干掉人。人工智能的发展,就是希望机器在“更聪明”这个点上也能超过人类、帮助人类。从这个点出发点来看,人工智能要跨过几个大的关隘。
";i:8;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:150:"从五十年前人工智能学科诞生起,研究者们就希望机器能够替代人的五官,像人一样去听去看,这就是感知智能。";}}i:9;s:1156:"机器像人耳一样把音波变成音素,就是语音识别任务;机器像眼睛一样辨识图像中的物体,就是计算机视觉任务。当然,感知智能不一定是简单地模仿人,在某些人类束手无策的问题上,比方说指纹识别和虹膜识别,机器轻松就能弯道超车。
深度学习技术成熟之前,感知智能里只有人脸检测、虹膜识别等一些局部的小问题,解决得比较彻底。更多的泛场景问题,特别是语音识别、计算机视觉等,始终停留在实验室的研究阶段。直到本世纪,深度学习技术的突破,使得机器能够用复杂的模型从海量的数据里充分攫取信息。这与小孩子看一次狗就能认识狗,从原理上大不相同。
关于“人类看一次狗就能认出狗”这一观点,有人是不服的,他们对我说:“小孩子与狗的那一回眸,已经从各个角度采了无数采样,积累了很多的样本。”这并不符合事实:我特意观察过我的两个孩子,他们在图画书上以平面方式见过一次的动物,到了动物园还是轻松就认出来了。所以啊,";i:10;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:159:"不要以为机器智能的进化是把人类走出非洲的大片儿回放一遍,他们走的根本就是不同的路,而且是我们无法预测的路。";}}i:11;s:319:"
感知智能解决了,机器就具备了节肢动物门的一般能力。想起某公司声称自己的人工智能已经达到了几岁儿童的水平,再看看相关的研究内容,我认为还是说达到更年期蟑螂的水准更加公允。你见过哪个智力测验是以海量找狗为任务的啊?
";i:12;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:64:"https://pic1.zhimg.com/v2-397b825cf454d3c1b40b38ac50e45f1c_b.jpg";}}i:13;s:247:"
感知智能只是实现了一些动物本能,为了象一名真正的灵长目战士那样去战斗,机器就要完成一些简单的智力劳动,比如自然语言理解、翻译、对话等。这类问题,就是认知智能问题。
";i:14;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:75:"认知智能要解决的是让机器掌握初级理解和思考的能力。";}}i:15;s:899:"其中的挑战比感知智能要大得多了,主要原因就是语言、知识等理解过程中需要建模的对象,复杂程度或状态空间的规模非常庞大,你算算,中文的音素就 46 个,而常用词恐怕也有几千个,建模复杂度不在一个数量级上。
具备了感知和认知智能的机器,基本上就达到了高级灵长目动物的水准,当然在记忆和计算能力上则早已秒杀人类。回到文章开头的问题,下一个阶段就可以追求“通用智能”,接管全人类智力活动了么?所谓通用智能,就是说同一个人工智能体不仅能下棋或翻译,而是个无不知百行通的多面手。以目前人工智能的阶段直接追求通用智能,好比刚小学毕业就填写院士评选的报名表,志向虽然可嘉,步子则跨的有点儿大了,总要找出更加具体的路径才是。
";i:16;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:64:"https://pic2.zhimg.com/v2-fc3ab1fbb47d395117e8c19c6b782f91_b.jpg";}}i:17;s:344:"
我的观点是,在通用智能之前,先要解决“决策智能”这类问题。什么是决策智能呢?大家可以想象每部评书里都离不开的角色——军师。与大量仅仅具备感知智能的赳赳武夫和少量具备了认知智能的文书、中军是不同,军师的 Job Description,往往是这样的:
";i:18;a:4:{s:3:"tag";s:4:"list";s:6:"option";s:1:"1";s:8:"original";a:2:{i:0;s:8:"[LIST=1]";i:1;s:7:"[/LIST]";}s:8:"children";a:1:{i:0;s:472:"
[*]熟练掌握琴棋书画等一项以上奇技淫巧。
[*]善听人言,能闻兽语。
[*]进士以上学历,有三年以上算命或其他相关行骗经验。
[*]有极腹黑的心理素质,和泰山压顶腰不直的抗辱骂能力。
[*]能设计和推进公司内犬牙交错、互相制衡的人事制度。
[*]全面掌握对外与天斗、与地斗、与人斗的工作,精通瞒天过海、借刀杀人、走为上等多项计谋的制定和实施。
";}}i:19;s:537:"
机器如果达到了这些要求,就可以顺利入职成为军师,主持“草船借箭”、“智取生辰纲”这样的 Project 了。逐一审视这些要求,我们发现具备了感知智能和认知智能,1、2、3 都不是问题;4 更是机器的天然优势;而 5、6 两条,就不那么简单了。愚见认为,这才是人工智能未来最需要向人类伸出援手之处,姑且称其为决策智能——毕竟用机器做速记或翻译,不过是效率的提高,更加会加速人类的灭亡。";i:20;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:81:"区别于机器蟑螂和智能猿猴,决策智能有哪些不一样挑战呢?";}}i:21;s:2:"
";i:22;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:27:"一、博弈性的场景。";}}i:23;s:314:"当你的环境本身受到你的决策影响时,这就是一个博弈性的问题。往小了说是打牌、下棋,往大了说是战争、谈判等,仅仅靠静态的建模方法是无法处理这些博弈性问题的。博弈问题里,又以像德州扑克这类不完全信息博弈,更为复杂。
";i:24;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:27:"二、非明确的反馈。";}}i:25;s:1493:"这里面有两种场景:一种是很多次决策才能对应一次明确的结果,比方说炸金花,十几轮的出牌以后才有一个确定的输赢;另一种是结果本身就是概率性的,比方说广告的决策,即使是确定了同一个用户,同一个素材,同一个场景,用户点击还是不点击仍然是随机的,只能从概率意义上判断准确性。
熟悉机器学习的朋友可以打坐思考一番,在上面两个条件下,解决建模的问题实在不是简单的事。决策智能有个典型的问题,就是围棋(围棋庞大的决策空间使得其解决方案与肉搏式蛮力搜索的国际象棋是完全不同的,而后者其实不太需要智能,基本只需要计算)。虽然 AlphaGo 战胜李世石的只是达到了一个小小的目标,其过程却相当令人兴奋(汗,似乎暴露了我人奸的本质):这次比赛中采用的 Deep Reinforcement Learning 这一框架,确实似乎让我们看到了探索决策智能问题的曙光。
下棋虽然本身没什么卵用,实用的决策智能问题其实比比皆是。例如,互联网商业化中常见的广告决策问题,就同时具有上面的两个特点,而实际上机器在此应用中已经远远超过了人,而且还有巨大的发展潜力。再比如,反羊毛党、非人类流量过滤这类让人挠头的反作弊问题,也都有巨大的商业价值,但决不是简单的感知智能和认知智能问题。
";i:26;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:102:"有人的地方就有江湖。只要人与人之间发生交互,就有决策智能的用武之地。";}}i:27;s:628:"互联网的大发展,为我们带来了大量鲜活的这类问题。目前的深度学习框架,在解决这类问题上效果并没有十分突出,这里面有些深层次的原因,篇幅所限就不展开了,以后有机会专门写文章说说我的观点。
当然,我是站着说话时不腰疼的,趁着腰还不疼,我要恳请人工智能界诸仁波切们在接管全人类之前赏下眼神来,认真思考下在博弈场景和非明确反馈情形下的决策智能问题该用什么新框架解决,因为这太有意义了,也太有意思了。
欢迎关注微信公众号:计算广告
";i:28;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:36:"http://zhuanlan.zhihu.com/p/24240099";s:8:"original";a:2:{i:0;s:44:"[URL='http://zhuanlan.zhihu.com/p/24240099']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:12:"阅读原文";}}}, 1621686945, 1714330513
Run Time: 0.000671