inotifyx验证过程中在最后一个无障碍电梯设置那里,

inotifyx中文版下载|inotifyx汉化版v1.0.6下载_飞翔下载
单机游戏下载单机游戏下载基地
您的位置: →
→ inotifyx汉化版 v1.0.6
inotifyx汉化版
精选排行榜
想让你的安卓手机变成iPhone X吗?今天飞翔小编给大家带来了inotifyx汉化版,可以让你的手机完全变成iPhone X,通过对手机界面、图标等,多方面对手机进行修改,让安卓机看上去就是一台iPhone X,还等什么赶紧下载使用吧。软件介绍inotifyx汉化版是专门为安卓用户打造的主题软件,很多朋友为了装逼都想将自己的安卓手机变成iPhone X,现在inotifyx官方版就可以满足这样的功能,根据iPhone X的桌面风格以及插件内容完全仿制,还原度非常高,让你的安卓手机一秒变身iPhone X。功能特色最新的壁纸和图标集iPhone X库的丰富图标和最新的壁纸给你一个全面的体验。我们还在更新锁定屏幕独特的锁屏和密码解锁界面滑动控制中心快速控制手机WIFI,蓝牙,信号,手电筒,音量,亮度,屏幕旋转等下拉快速搜索快速找到本地应用程序,并获得网络搜索结果智能文件夹和抖动卸载保持你的菜单整齐有序。长按图标晃动3D动画效果由3D动画引擎提供的图形效果,3D主题和小工具,ios的启动器可以实现3D转换,并为您带来神奇的过渡效果体验。动态壁纸动态壁纸定制传统的平面默认菜单界面;让你的android主题时尚。inotifyx用法1、下载并安装完毕后打开软件2、点击界面中的start按钮,进入软件设置界面。3、在读取通知权限中打开iNotifyX的权限。
安卓版PC版IOS版
inotifyx汉化版 v1.0.6
同类最新合集
本类下载排行您的位置:
inotifyx中文版
inotifyx中文版
语言:简体中文
更新: 12:00:26
inotifyx软件免root版 v1.0.6美化主题
inotifyx终极版 v1.0新闻资讯
inotifyx app v1.0.6新闻资讯
iNotifyX安卓仿iPhoneX桌面 v1.0.6新闻资讯
贵州云教育 v7.9.24新闻资讯
抖腿漫画 v1.0.1新闻资讯
棉花果 v1.1.1新闻资讯
午夜搜索影视 v1.0.2新闻资讯
微小宝借贷借钱 v1.1.1新闻资讯
金立花最新版 v2.0新闻资讯
66306人推荐
50178人推荐
48092人推荐
48020人推荐
45378人推荐
44146人推荐
41518人推荐
41047人推荐
39580人推荐
39283人推荐
1861人推荐
12815人推荐
1670人推荐
1396人推荐
1556人推荐
1611人推荐
3064人推荐
1464人推荐
推荐游戏:
推荐软件:
游戏专题:
软件专题:iNotifyX安卓破解版下载|iNotifyX破解版v1.0.3 安卓版_腾牛安卓网
专业的QQ下载站 本站非腾讯QQ官方网站
使用二维码下载到手机
本类热门推荐
分类:主题美化
大小:14.8M
语言:中文
版本:v1.0.3 安卓版
官网:暂无
平台:Android
一起来模仿吧!
iNotifyX安卓破解版下载,inotifyx app是一个非常棒的高仿iphonex的手机软件哦!这款软件可以实现和苹果x一样的界面,功能非常强大哦!是你的装逼必备神器哦!inotifyx设置方法inotifyx需要权限才能使用授权后就可以应用到手机中了特色功能界面支持iphoneX的所有功能iOS桌面为您的安卓手机精心打造苹果风格!安卓一秒变身iPhone点开程序即可开启桌面可通过后台来退出效果相关新闻inotifyx拥有炫酷ios11视觉效果,高仿iPhone X界面,最贴心的功能设计:隐藏程序、快速文件夹、屏幕锁定、屏幕管理,下载点击应用就能即刻拥有!
展开 + 收起 -
手机自带主题太丑想换掉?想让自己的手机有个人特色?那么你需要一款适合的手机主题软件,帮你改造你的手机
手机美化软件可以制作出漂亮炫酷的手机主题,本合集页面提供了各种类型的主题美化工具,包含了丰富的美化资
iNotifyX破解版 v1.0.3 安卓版
本类下载排行
同类最新合集inotifyx安卓版官方下载|inotifyx最新版v1.0 手机版_腾牛安卓网
专业的QQ下载站 本站非腾讯QQ官方网站
使用二维码下载到手机
本类热门推荐
分类:主题美化
大小:14.8M
语言:中文
版本:v1.0 手机版
官网:暂无
平台:Android
inotifyx――超炫酷防iphonex桌面启动器。
最新版是一款在安卓手机上面使用的主题美化工具,使用inotifyx最新版,就能让你的手机桌面变成iphonex的样子,不仅仅是外表一样哦,各种交互方式也完全和iphonex一样,让你在安卓手机上面也能享受到iphonex手机的完美交互。觉得这款软件还不错的朋友快来下载吧!iNotifyX用法下载软件打开设置软件权限设置完成之后就可以显示iphonex的桌面了软件功能超平滑滚动,就像iPhone。图标的圆角和光泽的效果。长按图标进行移动。在主屏幕卸载应用。按返回按钮退出编辑模式。可以改变每个应用程序的名称和图标,通过触摸的应用程序,在短期内轻摇模式。Spotlight搜索文件夹快捷方式支持平板电脑(iPad模式)可以改变的图标。软件特色扁平、美观,您想要您的手机看起来就像iPhone吗?iOS桌面为您的安卓手机精心打造苹果风格!安卓一秒变身iPhone点开程序即可开启桌面可通过后台来退出效果界面支持iphoneX的所有功能相关新闻一款安卓手机专用的iPhoneX桌面设置软件,该软件可支持iPhoneX模式桌面视觉效果,还有一些快捷小功能同步,让你不用花钱买iPhoneX也可以感受苹果手机的触感,专门为安卓手机准备的一款模拟iPhoneX桌面的软件,它可以真实的模拟iPhoneX桌面,让你的安卓机秒变iPhoneX,并且支持所有的功能和应用,使用后不会对你的手机造成影响!
展开 + 收起 -
inotifyx最新版 v1.0 手机版
本类下载排行
同类最新合集&p&谢 &a class=&member_mention& href=&//www.zhihu.com/people/e37963dbb4dad2d20825fc4& data-hash=&e37963dbb4dad2d20825fc4& data-hovercard=&p$b$e37963dbb4dad2d20825fc4&&@刘柯&/a& 邀,收藏是赞的3倍,说实话没赞啊。所以大家还是喜欢听:我们遇到的问题都不是自己的问题,只要跳槽问题就神奇消失了。对吗?&/p&&p&&b&一:自己内在的问题(除去知识技能外),跳槽解决不了&/b&&/p&&p&先介绍一个备受人力资源行业,尤其是招聘行业非常关注的素质冰山模型:&/p&&blockquote&由美国著名心理学家麦克利兰提出。麦克利兰把不同类型的素质划分为表面的“冰山以上部分”和深藏的“冰山以下部分”。&b&冰山以上部分——知识和技能,这是外人容易了解与测量的部分,相对而言也比较容易通过培训来改善提高&/b&。而&b&冰山以下部分——包括角色定位、自我认知、性格特质和动机,是人内在的、难以测量的部分。不太容易通过外界的影响而得到改变,但却对人员的行为与表现起着关键性的作用&/b&。&/blockquote&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/50/132dbd0afbef488beb55e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&369& data-rawheight=&331& class=&content_image& width=&369&&&/figure&&p&看不懂上图的专业词汇,下表的举例比较好懂&br&&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-38a61b15ffb02f80c16ff9a17cfe4b01_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&486& data-rawheight=&249& class=&origin_image zh-lightbox-thumb& width=&486& data-original=&https://pic3.zhimg.com/50/v2-38a61b15ffb02f80c16ff9a17cfe4b01_r.jpg&&&/figure&&p&我给大家翻译一下&/p&&ol&&li&人在职场,外部问题少,自身问题多。也就是说,&b&职场上大部分问题都不能通过跳槽来解决&/b&;&/li&&li&冰山下的问题,说句通俗的,性格决定命运,很难通过跳槽解决。&/li&&li&内部问题更具决定性,攘外必先安内。个人问题没解决,跳槽再成功,也是坑新东家而已;&/li&&/ol&&p&&br&&/p&&p&&b&二:跳槽,是为了更好的外部环境&/b&&/p&&p&前些年常会看到一个短语:政府搭台,企业唱戏。政府为了吸引企业入驻,提供了各种优惠激励政策……但是,最后能不能盈利,还要看企业自身。&/p&&p&&br&&/p&&p&跳槽也是如此,它能&b&一定程度上&/b&解决的是人才发展的外部问题:&/p&&ul&&li&薪资福利&/li&&li&职业发展资源(技能知识的提升、靠谱的上司、合适的发展路径、培训机会……)&/li&&li&职业平台资源(人手、经费、平台规模、品牌……)&/li&&li&家庭诉求(工作生活平衡,离家近……)&/li&&/ul&&p&&br&&/p&&p&跳到更好的公司,我们就可以愉快滴奔上社会主义康庄大道吗?&/p&&p&很遗憾,不能。就算你跳槽再成功,你的个人问题,尤其是制约你在职场上发展的个人问题,依然会祝你一臂之力,浪费掉大好的外部资源。&/p&&p&举个例子,果粉应该都认识的&/p&&blockquote&约翰·斯卡利。这位苹果前CEO、“敢把乔布斯赶出苹果的男人”,在苹果最值得称道的成绩,也就是10年间把苹果的销售额提升10倍,放在普通公司,应该也算是个不错的成绩。在乔布斯的成就面前,那真是没法比。&br&他这次跳槽很成功,跳到了当时炙手可热,如今更是高居全球市值第一的科技公司,与天才企业家乔布斯共事,完全有机会来实现自己“改变世界”的梦想。然而,他更像是“一位兢兢业业,紧盯着财务报表的职业经理人”。&/blockquote&&p&斯卡利之所以不能成为乔布斯,问题不出在他的技能和知识方面,而出在他的动力(让董事会满意,而非改变世界)和角色定位(职业经理人,而非企业家)。&u&即使跳到了好公司,即使搞掉了创始人,自己的问题没解决,他依然无法成功&/u&。&/p&&p&补充说明:&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-bcecacc8e40e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&521& data-rawheight=&253& class=&origin_image zh-lightbox-thumb& width=&521& data-original=&https://pic3.zhimg.com/50/v2-bcecacc8e40e_r.jpg&&&/figure&&p&&br&&/p&&p&&b&三:跳槽,而不是用来逃避问题&/b&&/p&&p&关于不要逃避问题的鸡汤谚语网上满天飞,原因无他:逃避问题,是深藏在我们的基因里,在遇到猛兽时,逃避是最好的生存选择,他们存活下来把逃避的基因传给我们。如今在职场上遇到问题和压力时,我们自然会如同祖先一样,第一反应深吸一口气,看看哪里可以逃。&br&&/p&&p&但是,如果你选择用跳槽来逃避问题,那么很遗憾,问题依然会如穆托姆博的大帽飞来——越躲越吃帽。&/p&&p&接下来如何是好?接着跳槽?我在&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&我不稳定,跳槽多,但我知道我是好员工 - 瞎说职场 - 知乎专栏&/a&专门分析了频繁跳槽给年轻人带来的问题。&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-5a669da0f7_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&300& data-rawheight=&168& class=&content_image& width=&300&&&/figure&&p&有小伙伴当我是树洞,私信我抱怨同事待他不好,老板待他不公,所以要跳槽。我回问了一句是不是你自己的问题。说:“对啊,我太软弱太好欺负,生命以痛吻我,我报以歌之。回想大学时候,同学也和我撕逼,没有朋友……”&br&&/p&&p&孩子,你自带绝交属性尚不自知,吟诗再棒,跳槽再多,也没用啊……&/p&&p&好了我们回头看素质模型里冰山下的部分:&/p&&blockquote&角色定位:你的职场目标规划是什么?你要成为某个领域的专家?还是带团队的Leader?&br&价值观:你如何与其他人合作?你的团队精神如何?&br&自我认知:你有足够的自信吗?在遇到困难时你会保持乐观吗?&br&性格特质:你的责任心如何?自己手里的项目无论如何都要做到最好吗?&br&动机:驱动你引导你努力的因素是什么?&/blockquote&&p&自我审视一下,哪些是你的弱点,哪些你可以接受,为了更好的职业发展,哪些问题你必须解决?例如, &a class=&member_mention& href=&//www.zhihu.com/people/fabeccacd1c8d6d& data-hash=&fabeccacd1c8d6d& data-hovercard=&p$b$fabeccacd1c8d6d&&@小红拖拉机&/a& 在&a href=&https://www.zhihu.com/question/& class=&internal&&休假或跳槽有助于解决工作的倦怠感吗? - 心理学 - 知乎&/a&提到的不能靠跳槽解决的&b&职场懈怠感&/b&,实际上就是与个人的角色定位、个人性格特质以及职场动机紧密相连的。&br&&/p&&p&&b&四:跳槽,会带来新的问题&/b&&/p&&p&我在第二点中提到:“跳槽,&b&在一定程度上&/b&能解决外部环境问题”,还特意把”一定程度上“加粗,为什么呢?&/p&&p&因为不同的企业都有自己的问题。&/p&&p&英语中有句谚语叫做:the grass appears greener on the other side。翻译成中文就是:老婆,都是别人家的性感。&/p&&p&我也曾在各种平台分享时都鼓励小伙伴们找到真爱的工作,这样每天起床时才会有动力。&/p&&p&但是,&/p&&p&真爱的工作不代表没有问题;&/p&&p&就算是与你一生挚爱过日子,也会有争执和不快的时候;&/p&&p&就算是信仰了耶稣、真主、释迦摩尼甚至是马克思,你的那些问题不会神奇的消失。&/p&&p&跳槽也是如此。&/p&&blockquote&08年次贷危机后,中国市场上沸沸扬扬的外企人才回归民企潮流,民企蓬勃发展,无论是薪资还是职场天花板都要比外企高。但最近也没啥趋势可言了。去年宝洁的第一华人女高管,写了一封轰动业内的辞职信后,加盟京东,然后一年就被调职……&br&身在外企,我们能看到很多外企的问题,缺乏灵活性,屁股决定脑袋,行动太慢……我在和阿里、腾讯等互联网公司合作时,也深深感受到他们的高效,尤其在把握趋势风口方面。但真正当互联网企业找到我时,我犹豫了。如同&a href=&https://www.zhihu.com/question//answer/& class=&internal&&在考虑是否要「跳槽」前,至少应该考虑清楚哪些问题? - Sean Ye 的回答 - 知乎提到的,&/a&我列出表格,找出我最看重的因素之一:&b&工作生活平衡&/b&,又看到一整个会议室的床(加班用),我意识到想要保持工作生活平衡简直是不可能的。&br&&br&除此以外,不少民企并没有成熟的流程和制度,在很多问题和资源的分配上,还保持着弱肉强食的丛林生态,这对外企人来说,融入其文化需要耗费太多的精力。&/blockquote&&p&我们从企业的角度想一想:企业都有各种各样的问题,招Talent是去解决问题的。比较一下,一个逃避问题而跳槽的你,一个勇敢面对问题帮助企业解决问题的你,哪一种更招企业欢迎?&/p&&p&最后送给各位小伙伴几句话:&/p&&p&&b&跳槽不是你成功逃避问题的终点,而是你解决新问题的起点。&/b&&/p&&p&&b&逃避问题人人都会,但只有面对问题,解决问题才能成就我们的职业前途。&/b&&/p&&p&&br&&/p&&p&(&a href=&//link.zhihu.com/?target=https%3A//render.alipay.com/p/f/fd-j6lzqrgm/guiderofmklvtvw.html%3FshareId%3D0125%26campStr%3Dp1j%252BdzkZl018zOczaHT4Z5CLdPVCgrEXq89JsWOx1gdt05SIDMPg3PTxZbdPw9dL%26sign%3DehBzUF2wdly4Qp6Lo9mRNlbtf2VkIbzH1tFrZn0xr64%253D%26scene%3DofflinePaymentNewSns& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&吃我一记红包&/a&)&/p&&p&公众号:瞎说职场&/p&&p&我的职场live:&/p&&a href=&https://www.zhihu.com/lives/877632& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic3.zhimg.com/b113bc885de21f79b6da3e_ipico.jpg& data-image-width=&1239& data-image-height=&1242& class=&internal&&掌握这十招面试技巧 成为面试达人&/a&&a href=&https://www.zhihu.com/lives/081856& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic3.zhimg.com/b113bc885de21f79b6da3e_ipico.jpg& data-image-width=&1239& data-image-height=&1242& class=&internal&&听说你想进入咨询行业?&/a&&p&更多内容:&/p&&p&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&简历&/a&丨&a href=&https://www.zhihu.com/question//answer/& class=&internal&&薪酬&/a&丨&a href=&https://zhuanlan.zhihu.com/p//& class=&internal&&跳槽&/a&丨&a href=&https://www.zhihu.com/question//answer/& class=&internal&&面试&/a&丨&a href=&https://www.zhihu.com/question//answer/& class=&internal&&性骚扰&/a&丨&/p&&p&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&职场女性&/a& | &a href=&https://www.zhihu.com/question//answer/& class=&internal&&职场选择&/a&丨&a href=&https://www.zhihu.com/question//answer/& class=&internal&&职业规划&/a& | &a href=&https://www.zhihu.com/question//answer/& class=&internal&&职场潜规则&/a&&/p&
邀,收藏是赞的3倍,说实话没赞啊。所以大家还是喜欢听:我们遇到的问题都不是自己的问题,只要跳槽问题就神奇消失了。对吗?一:自己内在的问题(除去知识技能外),跳槽解决不了先介绍一个备受人力资源行业,尤其是招聘行业非常关注的素质冰山模…
&p&近年来整体数字营销行业的发展呈现出三大趋势:&/p&&p&第一个趋势:广告主越来越重视数据资产,他们将自己的大数据沉淀下来,然后建立大数据系统。其实在两年前,很多广告主就想做大数据资产沉淀,但直到现在才有可能真正落实,开始基于数据资产,优化数字营销能力。&/p&&p&第二个趋势:很多企业开始发展自己的大数据技术,结合原有的数据沉淀,自己建设数字营销DSP平台投放广告。&/p&&p&第三个趋势:广告主在打通线上和线下大数据,构建闭环生态方面,也有很大诉求。&/p&&p&可见大家越来越重视数据,大数据越来越成为数字营销、程序化广告的重要基础。大数据就是通过各种数据采集手段采集到线上线下的用户行为数据,经过清洗、分析、管理并结合营销业务,从基础业务运行支撑、报表分析、人群画像、销售自动化、营销精准化、决策支持等等各个方面发挥巨大价值。而大数据是跨学科的领域,会涉及到技术、业务等等很多方面的内容。本章会花较大的篇幅从必备的一些基础知识进行阐述,后续实战的很多内容都是基于这些基础概念和知识的。所以建议大家认真学习。&/p&&br&&h2&人的唯一性标识&/h2&&p&大数据营销首要的就是分析目标受众,并针对目标受众的特点及其当时的场景进行有效地营销活动。收集的海量数据也是基于人为核心的。所以追踪个体用户行为、对人的唯一性标识是营销大数据的关键。&/p&&br&&h3&1.人唯一性标识的方式&/h3&&p&标识一个人的方式可谓是丰富多样:&/p&&ul&&li&&p&对于真实世界中,日常工作生活中常用身份证件号(身份证、护照等各种证件)来标识一个人;&/p&&/li&&li&&p&在医学上常用DNA鉴定的方式类标识一个人;&/p&&/li&&li&&p&CRM系统中常常以手机号来标识一个人;&/p&&/li&&li&&p&PC端的Web网站对于用户的浏览行为常常使用CooikeID来标识;&/p&&/li&&li&&p&很多网站及服务常用会各种会员ID来标识一个人, 社交中我们常用QQ号、微信号等等;其他各种服务也会存在着各种会员ID。为了避免遗忘这些会员ID我们可能都经常需要一个小软件来帮我们管理这些ID;&/p&&/li&&li&&p&手机设备App端常用设备ID来标识一个人。&/p&&/li&&/ul&&p&等等等等,可见对人的唯一性标识极其的复杂且重要。&/p&&br&&h4&2.数据互通的核心–ID Mapping&/h4&&p&我们可以发现标识一个人的方式实在是花样繁多。大量的用户数据由于其产生和采集的场景区隔性的特点,造成了大量的数据花园围墙。单独的数据孤岛能创造的价值十分有限。所以ID mapping成为数据互通的核心,只有ID首先能打通才有可能联通各个数据孤岛,促进数据流动创造数据价值:&/p&&br&&h3&3.PC端识别技术&/h3&&p&PC端,用户在互联网上主要是通过浏览器浏览内容,及完成相应的业务操作的,所以Cookie是PC端标识用户的重要技术。相关内容详情请阅读文章&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&《什么是CookieMapping》&/a&&/p&&br&&h3&4.移动端识别技术&/h3&&p&&strong&详情请阅读历史文章《移动数据关键ID系列》:&/strong&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&移动设备ID烦恼知多少?【技术类】&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&IOS体系ID知多少?【技术类】&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Android体系ID知多少?【技术类】&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&媒体注意:Android设备ID大洗牌【行业动向】&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&蓝瘦香菇的ADX移动ID【技术类】&/a&&/p&&p&(转载请注明出处:微信订阅号:ad_automation)&/p&&p&文字表现力有限,欢迎参加&strong&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&《4.15线下大课堂》&/a&&/strong&面对面为您答疑解惑讲透您关心的问题。&/p&
近年来整体数字营销行业的发展呈现出三大趋势:第一个趋势:广告主越来越重视数据资产,他们将自己的大数据沉淀下来,然后建立大数据系统。其实在两年前,很多广告主就想做大数据资产沉淀,但直到现在才有可能真正落实,开始基于数据资产,优化数字营销能力…
&figure&&img src=&https://pic3.zhimg.com/v2-c163ca45bf1c854ee98ddd_b.jpg& data-rawwidth=&690& data-rawheight=&823& class=&origin_image zh-lightbox-thumb& width=&690& data-original=&https://pic3.zhimg.com/v2-c163ca45bf1c854ee98ddd_r.jpg&&&/figure&知乎上除了有大神还有很多老板,前两天就遇到一位老板和我聊起企业文化的事。&p&他谈起他希望建立起一个自由的、充满创造力、向心力的组织,我当时听了以后没有接话,毕竟我对别人的组织也不了解,我能给出的建议就是重视各Team Leader的作用。&/p&&p&恰逢其会,前天又参加了一个人力资源论坛,论坛上有几位朋友提出了这么几个问题。&/p&&p&1. 如何有效提升中层管理人员的管理能力,进而做好目标末端的监督和落地?&/p&&p&2. 企业发展太迅速,导致企业的管理水平跟不上发展速度,怎么进行变革?&/p&&p&3. 绩效管理工作怎么才能收到一个好的效果?&/p&&p&4. 中小企业如何留住现有人才并减少市场人员的流失,不至于长期处于招聘之中?&/p&&p&我觉得这几个问题都有共同之处,就是管理水平不行导致问题出现。&/p&&p&那么问题来了,&b&要怎么样提升管理水平?&/b&抱歉,这个问题太大答不了,我得换个小点的问题才不会翻车。&/p&&p&&b&
问题的提出&/b&&/p&&p&首先,要提出一个小的问题,管理水平是有基础的,一个公司所有的管理行为都是由管理链条传递的,一般来说管理链条的最前端就是我们每个企业的管理干部,就是所谓的中层或者基层干部,人的主观能动性是管理理念和制度这种思想层面能够转化为实际行为和物理结果的关键节点,说简单点:&b&企业的干部队伍就是管理水平的基础,有什么样的干部队伍就有什么样的管理水平。&/b&下面举一个例子。&/p&&p&&a href=&http://link.zhihu.com/?target=http%3A//t.cn/R6xQnct& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微博视频&/a&&br&&/p&&p&我们就说完成一个任务到底是有多难?&/p&&p&国防部长说:要实现伊拉克自由民主,就必须铲除城市里的恐怖分子。&b&这叫战略层设置愿景使命;&/b&&/p&&p&战区司令说:我们要帮助伊拉克人民夺回费卢杰,肃清城市里的罪犯和恐怖分子。&b&这叫决策层确定目标;&/b&&/p&&p&现场指挥官说:我们肩并肩进入费卢杰,各队长注意观察手下动向随时支援。&b&这叫执行层确定计划;&/b&指挥官还说:这事我不怂,大家也不要,一路冲杀,看见敌人一拥而上,此城必破。&b&这叫确定方法。&/b&&/p&&p&士官长带领连队在作战之前做祈祷,跟大家说我们同在,这叫做&b&战前思想动员。&/b&&/p&&p&&b&设置愿景使命 &/b&→&b& 确定目标&/b&→&b&确定计划和方法&/b&→&b&战前思想动员&/b&→&b&战斗&/b&&/p&&p&多么简单的一个管理链条,但事实上是越简单的东西反而越不容易得到。&/p&&p&比如咱们一个普通的企业,能不能做到&b&只通过三个层级、&/b&&b&两次传递,战略思想就能直达火线&/b&?&/p&&p&恐怕是难,通常的路径是老板和业务负责的VP说一遍,VP和总监些说一遍,总监和经理们说一遍,经理和带班的再说一遍,带班的和最小的虾米们最后说一遍。大概的路径就是至少过5张嘴才能贯彻一个想法。&/p&&p&这就是扁平化组织的来源,一个信息每转述一遍,假设每一次传播信息的准确率是80%,那么到最下层信息的准确率≈30%。环节少了,事情自然就快。&/p&&p&但是环节少的坏处也很明显,一个理论在执行过程中参考的意见太少,设计的就不够精密。为了避免这种不精密,我们需要每个环节有更高深的管理能力和足够丰富的管理经验。简单来说,&b&就是我们需要更强大的干部队伍!&/b&&/p&&p&大家可以观测,一个干部队伍比较容易出现的问题有以下这么几种。&/p&&p&&b&一、难以脱离舒适区&/b&&/p&&p&两层意思,&b&一是老板难以脱离舒适区,他觉得我现在这些手下已经足够好了,事干的足够漂亮了。&/b&什么表现?&/p&&p&典型表现 1:老板对于绩效考核的推进决心不够大,有马谡的时候舍不得挥泪。&/p&&p&典型表现 2:老板对于推进干部队伍管理能力提升的欲望不够强烈,要么舍不得给机会培养,要么舍不得给钱挖人,要么舍不得给钱做激励。&/p&&p&&b&二是各中层干部难以脱离舒适区,他觉得他已经足够好了,求稳不图变。&/b&&/p&&p&典型表现 1:一次成功经验用十年也舍不得变,而且拒绝学习新经验、新方法,也不愿肯定下属的创新思维。&/p&&p&典型表现 2:不愿意花时间培养新人,舍不得开除老员工。&/p&&p&&b&二、不知道问题在哪里&/b&&/p&&p&管理也是一个黑箱,很多时候我们关注了事业产出的结果,却没对产出的过程进行观察。&/p&&p&有句谚语讲潮退了才知道谁在裸泳,有大牛说风口上猪都能飞。话是没错,但实际上也有可能是过去的浪潮和大风的推力过于放大了个人的能力,一次机缘巧合下,一个人起飞升高了,现在潮退风去,才发现他只凭自己确实飞不起来,狐假虎威耳。&/p&&p&一个企业也是这样,潮退了以后,利润掩盖的问题层层凸显,但又因为头发胡子一把抓理不出头绪,到底哪里出了问题?槽点太多的时候不好吐槽,漏洞太多的时候也不好抓主要矛盾。&/p&&br&&p&三、&b&不知道怎么提升管理能力&/b&&/p&&p&有些朋友也有可能是苦于没有学习提高的好方法,一来不确定从什么渠道和方式来获取知识和案例,二来不确定哪些知识和案例确实有效,三是没有魄力去实践。&/p&&p&所以我们第一章提出的一个问题:怎样提升中层干部队伍的管理能力?&/p&&p&&b& 第二章
解决问题的一点思路&/b&&/p&&p&现在我们面临的问题是人不行,但凡人不行就只有两种方法来解决问题:&/p&&p&1.提升他的能力&/p&&p&2.换人&/p&&p&&b&一、提升管理能力有什么好办法?&/b&&/p&&p&&b&1. 找出问题所在&/b&&/p&&p&第一,绩效考核的记录是找问题的最好方法,一个业务单元在绩效考核中暴露出的所有问题都可以视为是干部的问题。&/p&&p&第二,来自相同层级干部的建议和意见是第二好的方法,他们因为业务对接的关系,对一个干部的能力和行为是最敏感的个人。&/p&&p&第三,来自同业务上下线两端的意见是第三好的方法,但是问题在于他们业务线有可能上下沆瀣一气,找不出问题。&br&&br&&/p&&p&&b&2. 学习内容的来源&/b&&/p&&p&第一,内部的对标。本企业内部存在的好的方法论、好的思想、好的做法都应该固化成为本企业的管理亮点进行学习,对标明细最准确,对标流程最无缝。&/p&&p&第二,同业者间的经验交流。说实话,大部分企业在流程上是没有机密的,存在机密的只是具体的配方。同业者之间也不必吝啬分享一下流程。&/p&&p&第三,行业翘楚的经验。我发现个特点,TO C业务领域的好些个成功企业是不吝于分享经验的,比如华为自从卖手机以后,基本是有点干货都会漏出来;而TO B领域的企业往往不是特别在乎这些。&/p&&p&&b&3. 提升成果的检验&/b&&/p&&p&企业要生存,个人要发展,总不能无限制的学习下去。&/p&&p&第一,没有成果的学习是没有必要的,对于企业和个人双方都是。&/p&&p&第二,知识要能转化成行为,变成物理意义上的存在了,才能叫成果。&/p&&p&第三,一直都没有学习出成果的人也是没有必要的。&/p&&p&简单来说,所谓提升就是要有显性的成果,每一次学习都要多增加一个考核指标或者环节。考核的结果需要应用,考核结果最根本的应用就是要开除人。没有开除过人的考核不是好考核。&/p&&p&&b&二、干部队伍的换血&/b&&/p&&p&山无百日晴,人无处处好。一个组织总是会有那么几个人跟不上脚步被甩下。所以周期性的换换血非常有必要,要换血就需要解决这么几个问题。&/p&&p&&b&1. 新鲜血液的来源&/b&&/p&&p&第一,最好的来源是内部的培养,美国谚语:果不远树。与企业气味最相投的人一般来源于自己培养出来的人。武侠小说里讲最毒的蛊虫是让1000只蛊虫互相争斗蚕食,最后活下来的就是最毒的。我不是鼓励大家养蛊,而是人才的诞生总是有个转化率,最起码也十里挑一,20%的转化率,一个基层管理就至少要求我们每年至少有10个基层人员来挑选转化,那就需要企业整体保持一个新鲜血液的基数,每年至少10%的人是新来的,10年后才能挑出占总比10%的新干部来。这个过程中,还需要设计筛选、转化、培养的通道,是个大工程,却也是一个利在千秋的好工程。&/p&&p&第二,舍得花钱挖人。碧桂园壮举,花30亿招300人,每年增长1000亿的销售额。对于我们的启示就是,&b&已经被证明是不可行的方案就不要继续做,事实已经告诉你现在的人不行了就不要强行要猪上树。&/b&&/p&&p&第三,勇敢一点挖掘潜力。一来是要勇敢的改进体制,把事务性的工作整合打包,要么外包要么成立共享中心,把人力集中到开拓、奋进、创新这些需要人的创造力的地方去;第二是解放利润分配模式,打算每月花个几千块钱就要让别人给你创造几千万利润的老板也不要想太多,现在经济信息还是相对透明的,行市也早已被一众互联网企业抬高了。行业限制利润抬不起来,支付能力跟不上的企业,就请考虑下中专生或者高中生把,老板多费点心也是可以很好用的,也能出顶尖人才,而且起价也低的多。&/p&&p&&b&2. 旧血液的废弃机制&/b&&/p&&p&前两天有HR问我,绩效考核过程中,人力资源部的影响力不够,规则的共识不够,如何来有效调整。&/p&&p&原因很简答,就一句话:你这个绩效考核是不是没设计淘汰人的环节?还是设计了又从没执行过?&/p&&p&解决方案更简单就几个字:想办法先开几个人试试。&/p&&p&没有终极武器的HR是没法开展工作的,这是实话,当然如果老板实在劝不通,那不如就把自己开了吧~~~换个省心点的地方,老板也舒服你也舒心多好啊。&/p&&br&&p&最后,再总结一下:强将出强兵,快刀斩乱麻;巨树从根起,新人换旧颜。&/p&
知乎上除了有大神还有很多老板,前两天就遇到一位老板和我聊起企业文化的事。他谈起他希望建立起一个自由的、充满创造力、向心力的组织,我当时听了以后没有接话,毕竟我对别人的组织也不了解,我能给出的建议就是重视各Team Leader的作用。恰逢其会,前天…
&figure&&img src=&https://pic2.zhimg.com/v2-b747a4a986fe3e078a06ccb_b.jpg& data-rawwidth=&940& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&940& data-original=&https://pic2.zhimg.com/v2-b747a4a986fe3e078a06ccb_r.jpg&&&/figure&&h2&导语&/h2&&p& 2016年,继虚拟现实(VR)之后,人工智能(AI)的概念全面进入大众的视野。谷歌,微软,IBM等科技巨头纷纷重点布局,AI 貌似将成为互联网的下一个风口。&/p&&p& 很多开发同学,对人工智能非常感兴趣,确不知从何入手进行学习,精神哥也同样被这个问题困扰。直至看见汉彬同学的这篇文章,豁然开朗,让我坚定地迈出了成为“AI 工程师”的第一步!&/p&&blockquote&&p&本文作者:腾讯QQ会员技术团队-徐汉彬&br& 微信公众号:小时光茶社&/p&&/blockquote&&h2&一、人工智能和新科技革命&/h2&&p& 2017年,围棋界发生了一件比较重要的事,Master(AlphaGo)以60连胜横扫天下,击败各路世界冠军,人工智能以气势如虹的姿态出现在我们人类的面前。围棋曾经一度被称为“人类智慧的堡垒”,如今,这座堡垒也随之成为过去。&/p&&p& 从2016年三月份AlphaGo击败李世石开始,AI全面进入我们大众的视野,对于它的讨论变得更为火热起来,整个业界普遍认为,它很可能带来下一次科技革命,并且,在未来可预见的十多年里,深刻的改变我们的生活。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-652dde9f5dec4_b.jpg& data-rawwidth=&297& data-rawheight=&365& class=&content_image& width=&297&&&/figure&&br&&p& 其实,AI除了可以做我们熟知的人脸识别、语音识别之外,还可以做其他蛮多有趣的事情。&/p&&p& 例如,让AI学习大量古诗之后写古诗,并且可以写出质量非常不错的古诗,如下图这两首:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-d2f1dc2a0f52fb98c573a_b.jpg& data-rawwidth=&489& data-rawheight=&191& class=&origin_image zh-lightbox-thumb& width=&489& data-original=&https://pic4.zhimg.com/v2-d2f1dc2a0f52fb98c573a_r.jpg&&&/figure&&br&&p& 又或者,将两部设计造型不同的汽车进行融合,形成全新一种设计风格的汽车造型。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-1cb52ba3b5a5f1ace54a_b.jpg& data-rawwidth=&532& data-rawheight=&128& class=&origin_image zh-lightbox-thumb& width=&532& data-original=&https://pic2.zhimg.com/v2-1cb52ba3b5a5f1ace54a_r.jpg&&&/figure&&br&&p& 还有,之前大家在朋友圈里可能看过的,将相片转换成对应的艺术风格的画作。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-044cf14329a9aba83dac907e_b.jpg& data-rawwidth=&529& data-rawheight=&348& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic4.zhimg.com/v2-044cf14329a9aba83dac907e_r.jpg&&&/figure&&br&&p& 当前,人工智能已经在图像、语音等多个领域的技术上,取得了全面的突破。与此同时,另外一个问题随之而来,如果这一轮的AI浪潮真的将会掀起新的科技革命,那么在可预见的未来,我们整个互联网都将发生翻天覆地的变化,深刻影响我们的生活。&/p&&p&&strong&那么作为普通业务开发工程师的我,又应该以何种态度和方式应对这场时代洪流的冲击呢?&/strong&&/p&&p& 在回答这个问题之前,我们先一起看看上一轮由计算机信息技术引领的科技革命中,过去30多年中国程序员的角色变化:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-5bbe0ce9fae5de2073b18e_b.jpg& data-rawwidth=&576& data-rawheight=&202& class=&origin_image zh-lightbox-thumb& width=&576& data-original=&https://pic3.zhimg.com/v2-5bbe0ce9fae5de2073b18e_r.jpg&&&/figure&&br&&p& 通过上图可以简总结:&strong&编程技术在不断地发展并且走向普及&/strong&,从最开始掌握在科学家和专家学者手中的技能,逐渐发展为一门大众技能。换而言之,我们公司内很多资深的工程师,如果带着今天对编程和计算机的理解和理念回到1980年,那么他无疑就是那个时代的计算机专家。&/p&&p& 如果这一轮AI浪潮真的会带来新的一轮科技革命,那么我们相信,它也会遵循类似的发展轨迹,逐步发展和走向普及。如果基于这个理解,或许,&strong&我们可以通过积极学习,争取成为第一代“AI工程师”。&/strong&&/p&&h2&二、深度学习技术&/h2&&p& 这一轮AI的技术突破,主要源于深度学习技术,而关于AI和深度学习的发展历史我们这里不再重复讲述,大家可自行查阅。&/p&&p& 我用了一个多月的业务时间,去了解和学习了深度学习技术,在这里,&strong&我尝试以一名业务开发工程师的视角,以尽量容易让大家理解的方式一起探讨下深度学习的原理&/strong&,尽管,受限于我个人的技术水平和掌握程度,未必完全准确。&/p&&h4&1. 人类智能和神经元&/h4&&p& 人类智能最重要的部分是大脑,大脑虽然复杂,它的组成单元却是相对简单的,大脑皮层以及整个神经系统,是由神经元细胞组成的。而一个神经元细胞,由树突和轴突组成,它们分别代表输入和输出。连在细胞膜上的分叉结构叫树突,是输入,那根长长的“尾巴”叫轴突,是输出。神经元输出的有电信号和化学信号,最主要的是沿着轴突细胞膜表面传播的一个电脉冲。&/p&&p& 忽略掉各种细节,&strong&神经元,就是一个积累了足够的输入,就产生一次输出(兴奋)的相对简单的装置。&/strong&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-acf58a6ddb6c8b279a53451deec0f818_b.jpg& data-rawwidth=&575& data-rawheight=&457& class=&origin_image zh-lightbox-thumb& width=&575& data-original=&https://pic2.zhimg.com/v2-acf58a6ddb6c8b279a53451deec0f818_r.jpg&&&/figure&&br&&p& 树突和轴突都有大量的分支,轴突的末端通常连接到其他细胞的树突上,连接点上是一个叫“突触”的结构。一个神经元的输出通过突触传递给成千上万个下游的神经元,神经元可以调整突触的结合强度,并且,有的突触是促进下游细胞的兴奋,有的是则是抑制。一个神经元有成千上万个上游神经元,积累它们的输入,产生输出。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-14bd553c3eefbdbdc601b_b.jpg& data-rawwidth=&396& data-rawheight=&278& class=&content_image& width=&396&&&/figure&&br&&p& 人脑有1000亿个神经元,1000万亿个突触,它们组成人脑中庞大的神经网络,最终产生的结果即是人类智能。&/p&&h4&2. 人工神经元和神经网络&/h4&&p& 一个神经元的结构相对来说是比较简单的,于是,科学家们就思考,我们的AI是否可以从中获得借鉴?神经元接受激励,输出一个响应的方式,同计算机中的输入输出非常类似,看起来简直就是量身定做的,刚好可以用一个函数来模拟。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-edc9b869a370ea368f0cb_b.jpg& data-rawwidth=&332& data-rawheight=&250& class=&content_image& width=&332&&&/figure&&br&&p& 通过借鉴和参考神经元的机制,科学家们模拟出了人工神经元和人工神经网络。当然,通过上述这个抽象的描述和图,比较难让大家理解它的机制和原理。我们以“房屋价格测算”作为例子,一起来看看:&/p&&blockquote&&p&一套房子的价格,会受到很多因素的影响,例如地段、朝向、房龄、面积、银行利率等等,这些因素如果细分,可能会有几十个。&strong&一般在深度学习模型里,这些影响结果的因素我们称之为特征&/strong&。我们先假设一种极端的场景,比如影响价格的特征只有一种,就是房子面积。然后我们收集一批相关的数据,例如,50平米50万、93平米95万等一系列样本数据,如果将这些样本数据放到二维坐标里看,则如下图:&/p&&/blockquote&&figure&&img src=&https://pic4.zhimg.com/v2-df1cdfbc7e69_b.jpg& data-rawwidth=&492& data-rawheight=&330& class=&origin_image zh-lightbox-thumb& width=&492& data-original=&https://pic4.zhimg.com/v2-df1cdfbc7e69_r.jpg&&&/figure&&br&&p& 然后,正如我们前面所说的,我们尝试用一个“函数”去拟合这个输入(面积x)和输出(价格y),简而言之,我们就是要通过一条直线或者曲线将这些点“拟合”起来。&/p&&p& 假设情况也比较极端,这些点刚好可以用一条“直线”拟合(真实情况通常不会是直线),如下图:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-9f0bf410e40ef81f9a26c_b.jpg& data-rawwidth=&575& data-rawheight=&403& class=&origin_image zh-lightbox-thumb& width=&575& data-original=&https://pic3.zhimg.com/v2-9f0bf410e40ef81f9a26c_r.jpg&&&/figure&&br&&p& 那么我们的函数是一个一次元方程f(x) = ax +b,当然,如果是曲线的话,我们得到的将是多次元方程。我们获得这个f(x) = ax +b的函数之后,接下来就可以做房价“预测”,例如,我们可以计算一个我们从未看见的面积案例81.5平方米,它究竟是多少钱?&/p&&p& 这个新的样本案例,可以通过直线找到对应的点(黄色的点),如图下:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-2f5c32fcb8dcbf09e3dab3e29df9dc57_b.jpg& data-rawwidth=&575& data-rawheight=&402& class=&origin_image zh-lightbox-thumb& width=&575& data-original=&https://pic3.zhimg.com/v2-2f5c32fcb8dcbf09e3dab3e29df9dc57_r.jpg&&&/figure&&br&&p& 粗略的理解,上面就是AI的概括性的运作方式。这一切似乎显得过于简单了?当然不会,因为,我们前面提到,影响房价其实远不止一个特征,而是有几十个,这样问题就比较复杂了,接下来,这里则要继续介绍深度学习模型的训练方式。&/p&&p&&strong&这部分内容相对复杂一点,我尽量以业务工程师的视角来做一个粗略而简单的阐述。&/strong&&/p&&h4&3. 深度学习模型的训练方式&/h4&&p& 当有好几十个特征共同影响价格的时候,自然就会涉及权重分配的问题,例如有一些对房价是主要正权重的,例如地段、面积等,也有一些是负权重的,例如房龄等。&/p&&p&&strong&(1)初始化权重计算&/strong&&br& 那么,第一个步其实是给这些特征加一个权重值,但是,最开始我们根本不知道这些权重值是多少?怎么办呢?不管那么多了,先给它们随机赋值吧。随机赋值,最终计算出来的估算房价肯定是不准确的,例如,它可能将价值100万的房子,计算成了10万。&/p&&p&&strong&(2)损失函数&/strong&&br& 因为现在模型的估值和实际估值差距比较大,于是,我们需要引入一个评估“不准确”程度的衡量角色,也就是损失(loss)函数,它是衡量模型估算值和真实值差距的标准,损失函数越小,则模型的估算值和真实值的察觉越小,而我们的根本目的,就是降低这个损失函数。让刚刚的房子特征的模型估算值,逼近100万的估算结果。&/p&&p&&strong&(3)模型调整&/strong&&br& 通过梯度下降和反向传播,计算出朝着降低损失函数的方向调整权重参数。举一个不恰当的比喻,我们给面积增加一些权重,然后给房子朝向减少一些权重(实际计算方式,并非针对单个个例特征的调整),然后损失函数就变小了。&/p&&p&&strong&(4)循环迭代&/strong&&br& 调整了模型的权重之后,就可以又重新取一批新的样本数据,重复前面的步骤,经过几十万次甚至更多的训练次数,最终估算模型的估算值逼近了真实值结果,这个模型的则是我们要的“函数”。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-65f7c43f3c64df85183b98e_b.jpg& data-rawwidth=&576& data-rawheight=&517& class=&origin_image zh-lightbox-thumb& width=&576& data-original=&https://pic3.zhimg.com/v2-65f7c43f3c64df85183b98e_r.jpg&&&/figure&&br&&p& 为了让大家更容易理解和直观,采用的例子比较粗略,并且讲述深度学习模型的训练过程,中间省略了比较多的细节。&/p&&p&&strong&讲完了原理,那么我们就开始讲讲如何学习和搭建demo。&/strong&&/p&&h2&三、深度学习环境搭建&/h2&&p& 在2个月前,人工智能对我来说,只是一个高大上的概念。但是,经过一个多月的业余时间的认真学习,我发现还是能够学到一些东西,并且跑一些demo和应用出来的。&/p&&h4&1. 学习的提前准备&/h4&&p&&strong&(1)&/strong&部分数学内容的复习,高中数学、概率、线性代数等部分内容。(累计花费了10个小时,挑了关键的点看了下,其实还是不太够,只能让自己看公式的时候,相对没有那么懵)&br&&strong&(2)&/strong&Python基础语法学习。(花费了3个小时左右,我以前从未写过Python,因为后面Google的TensorFlow框架的使用是基于Python的)&br&&strong&(3)&/strong&Google的TensorFlow深度学习开源框架。(花费了10多个小时去看)&/p&&p& 数学基础好或者前期先不关注原理的同学,数学部分不看也可以开始做,全凭个人选择。&/p&&h4&2. Google的TensorFlow开源深度学习框架&/h4&&p& 深度学习框架,我们可以粗略的理解为是一个“数学函数”集合和AI训练学习的执行框架。通过它,我们能够更好的将AI的模型运行和维护起来。&/p&&p& 深度学习的框架有各种各样的版本(Caffe、Torch、Theano等等),我只接触了Google的TensorFlow,因此,&strong&后面的内容都是基于TensorFlow展开的&/strong&,它的详细介绍这里不展开讲述,建议直接进入官网查看。非常令人庆幸的是TensorFlow比较早就有中文社区了,尽管里面的内容有一点老,搭建环境方面有一些坑,但是已经属于为数不多的中文文档了,大家且看且珍惜。&/p&&blockquote&&p&TensorFlow的中文社区:&br&&a href=&https://link.zhihu.com/?target=http%3A//www.tensorfly.cn/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow中文社区-首页&/a&&br& TensorFlow的英文社区:&br&&a href=&https://link.zhihu.com/?target=https%3A//www.tensorflow.org/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&tensorflow.org/&/span&&span class=&invisible&&&/span&&/a&&/p&&/blockquote&&h4&3. TensorFlow环境搭建&/h4&&p& 环境搭建本身并不复杂,主要解决相关的依赖。但是,基础库的依赖可以带来很多问题,因此,建议尽量一步到位,会简单很多。&/p&&p&&strong&(1)操作系统&/strong&&br& 我搭建环境使用的机器是腾讯云上的机器,软件环境如下:&br& 操作系统:CentOS 7.2 64位(GCC 4.8.5)&/p&&p& 因为这个框架依赖于python2.7和glibc 2.17。比较旧的版本的CentOS一般都是python2.6以及版本比较低的glibc,会产生比较的多基础库依赖问题。而且,glibc作为Linux的底层库,牵一发动全身,直接对它升级是比较复杂,很可能会带来更多的环境异常问题。&/p&&p&&strong&(2)软件环境&/strong&&br& 我目前安装的Python版本是python-2.7.5,建议可以采用yum install python的方式安装相关的原来软件。然后,再安装 python内的组件包管理器pip,安装好pip之后,接下来的其他软件的安装就相对比较简单了。&/p&&p& 例如安装TensorFlow,可通过如下一句命令完成(它会自动帮忙解决一些库依赖问题):&br& pip install -U tensorflow&/p&&p& 这里需要特别注意的是,不要按照TensorFlow的中文社区的指引去安装,因为它会安装一个非常老的版本(0.5.0),用这个版本跑很多demo都会遇到问题的。而实际上,目前通过上述提供的命令安装,是tensorflow (1.0.0)的版本了。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-b79c40baf84f3a36a8f234d9a53dee2c_b.jpg& data-rawwidth=&575& data-rawheight=&68& class=&origin_image zh-lightbox-thumb& width=&575& data-original=&https://pic1.zhimg.com/v2-b79c40baf84f3a36a8f234d9a53dee2c_r.jpg&&&/figure&&br&&p& Python(2.7.5)下的其他需要安装的关键组件:&/p&&ul&&li&tensorflow (0.12.1),深度学习的核心框架&/li&&li&image (1.5.5),图像处理相关,部分例子会用到&/li&&li&PIL (1.1.7),图像处理相关,部分例子会用到&/li&&/ul&&p& 除此之后,当然还有另外的一些依赖组件,通过pip list命令可以查看我们安装的python组件:&/p&&ul&&li&appdirs (1.4.0)&/li&&li&backports.ssl-match-hostname (3.4.0.2)&/li&&li&chardet (2.2.1)&/li&&li&configobj (4.7.2)&/li&&li&decorator (3.4.0)&/li&&li&Django (1.10.4)&/li&&li&funcsigs (1.0.2)&/li&&li&image (1.5.5)&/li&&li&iniparse (0.4)&/li&&li&kitchen (1.1.1)&/li&&li&langtable (0.0.31)&/li&&li&mock (2.0.0)&/li&&li&numpy (1.12.0)&/li&&li&packaging (16.8)&/li&&li&pbr (1.10.0)&/li&&li&perf (0.1)&/li&&li&PIL (1.1.7)&/li&&li&Pillow (3.4.2)&/li&&li&pip (9.0.1)&/li&&li&protobuf (3.2.0)&/li&&li&pycurl (7.19.0)&/li&&li&pygobject (3.14.0)&/li&&li&pygpgme (0.3)&/li&&li&pyliblzma (0.5.3)&/li&&li&pyparsing (2.1.10)&/li&&li&python-augeas (0.5.0)&/li&&li&python-dmidecode (3.10.13)&/li&&li&pyudev (0.15)&/li&&li&pyxattr (0.5.1)&/li&&li&setuptools (34.2.0)&/li&&li&six (1.10.0)&/li&&li&slip (0.4.0)&/li&&li&slip.dbus (0.4.0)&/li&&li&tensorflow (1.0.0)&/li&&li&urlgrabber (3.10)&/li&&li&wheel (0.29.0)&/li&&li&yum-langpacks (0.4.2)&/li&&li&yum-metadata-parser (1.1.4)&/li&&/ul&&p& 按照上述提供的来搭建系统,可以规避不少的环境问题。&/p&&p& 搭建环境的过程中,我遇到不少问题。&/p&&blockquote&&p&例如:在跑官方的例子时的某个报错,AttributeError: ‘module’ object has no attribute ‘gfile’,就是因为安装的TensorFlow的版本比较老,缺少gfile模块导致的。而且,还有各种各样的。(不要问我是怎么知道的,说多了都是泪啊~)&/p&&/blockquote&&p& 更详细的安装说明:&br&&a href=&https://link.zhihu.com/?target=https%3A//www.tensorflow.org/install/install_linux& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&tensorflow.org/install/&/span&&span class=&invisible&&install_linux&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&strong&(3)TensorFlow环境测试运行&/strong&&br& 测试是否安装成功,可以采用官方的提供的一个短小的例子,demo生成了一些三维数据, 然后用一个平面拟合它们(官网的例子采用的初始化变量的函数是initialize_all_variables,该函数在新版本里已经被废弃了):&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span& #!/usr/bin/python
#coding=utf-8
import tensorflow as tf
import numpy as np
# 使用 NumPy 生成假数据(phony data), 总共 100 个点.
x_data = np.float32(np.random.rand(2, 100)) # 随机输入
y_data = np.dot([0.100, 0.200], x_data) + 0.300
# 构造一个线性模型
b = tf.Variable(tf.zeros([1]))
W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0))
y = tf.matmul(W, x_data) + b
# 最小化方差
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
# 初始化变量,旧函数(initialize_all_variables)已经被废弃,替换为新函数
init = tf.global_variables_initializer()
# 启动图 (graph)
sess = tf.Session()
sess.run(init)
# 拟合平面
for step in xrange(0, 201):
sess.run(train)
if step % 20 == 0:
print step, sess.run(W), sess.run(b)
# 得到最佳拟合结果 W: [[0.100
0.200]], b: [0.300]
&/code&&/pre&&/div&&p& 运行的结果类似如下:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-33031decc77b9d3b22f57c50_b.jpg& data-rawwidth=&439& data-rawheight=&185& class=&origin_image zh-lightbox-thumb& width=&439& data-original=&https://pic1.zhimg.com/v2-33031decc77b9d3b22f57c50_r.jpg&&&/figure&&br&&p& 经过200次的训练,模型的参数逐渐逼近最佳拟合的结果(W: [[0.100
0.200]], b: [0.300]),另外,我们也可以从代码的“风格”中,了解到框架样本训练的基本运行方式。虽然,官方的教程后续会涉及越来越多更复杂的例子,但从整体上看,也是类似的模式。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-0cf345fab7068bae49620d_b.jpg& data-rawwidth=&576& data-rawheight=&56& class=&origin_image zh-lightbox-thumb& width=&576& data-original=&https://pic4.zhimg.com/v2-0cf345fab7068bae49620d_r.jpg&&&/figure&&br&&p& 步骤划分:&/p&&ul&&li&&p&&strong&准备数据&/strong&:获得有标签的样本数据(带标签的训练数据称为有监督学习);&/p&&/li&&li&&p&&strong&设置模型&/strong&:先构建好需要使用的训练模型,可供选择的机器学习方法其实也挺多的,换而言之就是一堆数学函数的集合;&/p&&/li&&li&&p&&strong&损失函数和优化方式&/strong&:衡量模型计算结果和真实标签值的差距;&/p&&/li&&li&&p&&strong&真实训练运算&/strong&:训练之前构造好的模型,让程序通过循环训练和学习,获得最终我们需要的结果“参数”;&/p&&/li&&li&&p&&strong&验证结果&/strong&:采用之前模型没有训练过的测试集数据,去验证模型的准确率。&/p&&/li&&/ul&&p& 其中,TensorFlow为了基于python实现高效的数学计算,通常会使用到一些基础的函数库,例如Numpy(采用外部底层语言实现),但是,从外部计算切回到python也是存在开销的,尤其是在几万几十万次的训练过程。因此,Tensorflow不单独地运行单一的函数计算,而是先用图描述一系列可交互的计算操作流程,然后全部一次性提交到外部运行(在其他机器学习的库里,也是类似的实现)。所以,上述流程图中,蓝色部分都只是设置了“计算操作流程”,而绿色部分开始才是真正的提交数据给到底层库进行实际运算,而且,每次训练一般是批量执行一批数据的。&/p&&h2&四、经典入门demo:识别手写数字(MNIST)&/h2&&p& 常规的编程入门有“Hello world”程序,而深度学习的入门程序则是MNIST,一个识别28*28像素的图片中的手写数字的程序。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-19e45fccbbd5320bff03c8_b.jpg& data-rawwidth=&317& data-rawheight=&80& class=&content_image& width=&317&&&/figure&&br&&blockquote&&p&MNIST的数据和官网:&br&&a href=&https://link.zhihu.com/?target=http%3A//yann.lecun.com/exdb/mnist/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges&/a&&/p&&/blockquote&&p& 深度学习的内容,其背后会涉及比较多的数学原理,作为一个初学者,受限于我个人的数学和技术水平,也许并不足以准确讲述相关的数学原理,因此,本文会更多的关注“应用层面”,不对背后的数学原理进行展开,感谢谅解。&/p&&h4&1. 加载数据&/h4&&p& 程序执行的第一步当然是加载数据,根据我们之前获得的数据集主要包括两部分:60000的训练数据集(mnist.train)和10000的测试数据集(mnist.test)。里面每一行,是一个28&em&28=784的数组,数组的本质就是将28&/em&28像素的图片,转化成对应的像素点阵。&/p&&p& 例如手写字1的图片转换出来的对应矩阵表示如下:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-2ecec2df6de0e472a432fb7d3f9a4105_b.jpg& data-rawwidth=&575& data-rawheight=&221& class=&origin_image zh-lightbox-thumb& width=&575& data-original=&https://pic3.zhimg.com/v2-2ecec2df6de0e472a432fb7d3f9a4105_r.jpg&&&/figure&&br&&p& 之前我们经常听说,图片方面的深度学习需要大量的计算能力,甚至需要采用昂贵、专业的GPU(Nvidia的GPU),从上述转化的案例我们就已经可以获得一些答案了。一张784像素的图片,对学习模型来说,就有784个特征,而我们实际的相片和图片动辄几十万、百万级别,则对应的基础特征数也是这个数量级,基于这样数量级的数组进行大规模运算,没有强大的计算能力支持,确实寸步难行。当然,这个入门的MNIST的demo还是可以比较快速的跑完。&/p&&p& Demo中的关键代码(读取并且加载数据到数组对象中,方便后面使用):&/p&&figure&&img src=&https://pic3.zhimg.com/v2-61ec7ff69f4d095a457a85cd6478ebde_b.jpg& data-rawwidth=&575& data-rawheight=&85& class=&origin_image zh-lightbox-thumb& width=&575& data-original=&https://pic3.zhimg.com/v2-61ec7ff69f4d095a457a85cd6478ebde_r.jpg&&&/figure&&br&&h4&2. 构建模型&/h4&&p& MNIST的每一张图片都表示一个数字,从0到9。而模型最终期望获得的是:给定一张图片,获得代表每个数字的概率。比如说,模型可能推测一张数字9的图片代表数字9的概率是80%但是判断它是8的概率是5%(因为8和9都有上半部分的小圆),然后给予它代表其他数字的概率更小的值。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-c901e6cf1_b.jpg& data-rawwidth=&306& data-rawheight=&162& class=&content_image& width=&306&&&/figure&&br&&p& MNIST的入门例子,采用的是softmax回归(softmax regression),softmax模型可以用来给不同的对象分配概率。&/p&&p& 为了得到一张给定图片属于某个特定数字类的证据(evidence),我们对图片的784个特征(点阵里的各个像素值)进行加权求和。如果某个特征(像素值)具有很强的证据说明这张图片不属于该类,那么相应的权重值为负数,相反如果某个特征(像素值)拥有有利的证据支持这张图片属于这个类,那么权重值是正数。类似前面提到的房价估算例子,对每一个像素点作出了一个权重分配。&/p&&p& 假设我们获得一张图片,需要计算它是8的概率,转化成数学公式则如下:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-a77a92f1f5a40de03111_b.jpg& data-rawwidth=&257& data-rawheight=&74& class=&content_image& width=&257&&&/figure&&br&&p& 公式中的i代表需要预测的数字(8),代表预测数字为8的情况下,784个特征的不同权重值,代表8的偏置量(bias),X则是该图片784个特征的值。通过上述计算,我们则可以获得证明该图片是8的证据(evidence)的总和,softmax函数可以把这些证据转换成概率 y。(softmax的数学原理,辛苦各位查询相关资料哈)&/p&&p& 将前面的过程概括成一张图(来自官方)则如下:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-bd8ad3a500b80d4c856286_b.jpg& data-rawwidth=&576& data-rawheight=&230& class=&origin_image zh-lightbox-thumb& width=&576& data-original=&https://pic3.zhimg.com/v2-bd8ad3a500b80d4c856286_r.jpg&&&/figure&&br&&p& 不同的特征x和对应不同数字的权重进行相乘和求和,则获得在各个数字的分布概率,取概率最大的值,则认为是我们的图片预测结果。&/p&&p& 将上述过程写成一个等式,则如下:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-96e5f66d11dbaa1fec6802_b.jpg& data-rawwidth=&1912& data-rawheight=&440& class=&origin_image zh-lightbox-thumb& width=&1912& data-original=&https://pic4.zhimg.com/v2-96e5f66d11dbaa1fec6802_r.jpg&&&/figure&&br&&p& 该等式在矩阵乘法里可以非常简单地表示,则等价为:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-f032f1c225aef190c50c0_b.jpg& data-rawwidth=&576& data-rawheight=&143& class=&origin_image zh-lightbox-thumb& width=&576& data-original=&https://pic3.zhimg.com/v2-f032f1c225aef190c50c0_r.jpg&&&/figure&&br&&p& 不展开里面的具体数值,则可以简化为:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-97e71fb16fdc7b1425023_b.jpg& data-rawwidth=&220& data-rawheight=&48& class=&content_image& width=&220&&&/figure&&br&&p& 如果我们对线性代数中矩阵相关内容有适当学习,其实,就会明白矩阵表达在一些问题上,更易于理解。如果对矩阵内容不太记得了,也没有关系,后面我会附加上线性代数的视频。&/p&&p& 虽然前面讲述了这么多,其实关键代码就四行:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-7fe697f44_b.jpg& data-rawwidth=&458& data-rawheight=&90& class=&origin_image zh-lightbox-thumb& width=&458& data-original=&https://pic3.zhimg.com/v2-7fe697f44_r.jpg&&&/figure&&br&&p& 上述代码都是类似变量占位符,先设置好模型计算方式,在真实训练流程中,需要批量读取源数据,不断给它们填充数据,模型计算才会真实跑起来。tf.zeros则表示,先给它们统一赋值为0占位。X数据是从数据文件中读取的,而w、b是在训练过程中不断变化和更新的,y则是基于前面的数据进行计算得到。&/p&&h4&3. 损失函数和优化设置&/h4&&p& 为了训练我们的模型,我们首先需要定义一个指标来衡量这个模型是好还是坏。这个指标称为成本(cost)或损失(loss),然后尽量最小化这个指标。简单的说,就是我们需要最小化loss的值,loss的值越小,则我们的模型越逼近标签的真实结果。&/p&&p& Demo中使用的损失函数是“交叉熵”(cross-entropy),它的公式如下:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-8ec0b9c0fb6c00d4c6452fb53acd98c2_b.jpg& data-rawwidth=&229& data-rawheight=&73& class=&content_image& width=&229&&&/figure&&br&&p& y 是我们预测的概率分布, y’ 是实际的分布(我们输入的),交叉熵是用来衡量我们的预测结果的不准确性。TensorFlow拥有一张描述各个计算单元的图,也就是整个模型的计算流程,它可以自动地使用反向传播算法(backpropagation algorithm),来确定我们的权重等变量是如何影响我们想要最小化的那个loss值的。然后,TensorFlow会用我们设定好的优化算法来不断修改变量以降低loss值。&/p&&p& 其中,demo采用梯度下降算法(gradient descent algorithm)以0.01的学习速率最小化交叉熵。梯度下降算法是一个简单的学习过程,TensorFlow只需将每个变量一点点地往使loss值不断降低的方向更新。&br& 对应的关键代码如下:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-cfc7b7c8b93e82e44e3a2ed_b.jpg& data-rawwidth=&576& data-rawheight=&58& class=&origin_image zh-lightbox-thumb& width=&576& data-original=&https://pic2.zhimg.com/v2-cfc7b7c8b93e82e44e3a2ed_r.jpg&&&/figure&&br&&blockquote&&p&备注内容:&br& 交叉熵:&a href=&https://link.zhihu.com/?target=http%3A//colah.github.io/posts/2015-09-Visual-Information/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Visual Information Theory&/a&&br& 反向传播:&a href=&https://link.zhihu.com/?target=http%3A//colah.github.io/posts/2015-08-Backprop/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Calculus on Computational Graphs: Backpropagation&/a&&/p&&/blockquote&&p& 在代码中会看见one-hot vector的概念和变量名,其实这个是个非常简单的东西,就是设置一个10个元素的数组,其中只有一个是1,其他都是0,以此表示数字的标签结果。&/p&&p& 例如表示数字3的标签值:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span& [0,0,0,1,0,0,0,0,0,0]
&/code&&/pre&&/div&&h4&4. 训练运算和模型准确度测试&/h4&&p& 通过前面的实现,我们已经设置好了整个模型的计算“流程图”,它们都成为TensorFlow框架的一部分。于是,我们就可以启动我们的训练程序,下面的代码的含义是,循环训练我们的模型500次,每次批量取50个训练样本。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-363ee10f083d9a173db2ab_b.jpg& data-rawwidth=&522& data-rawheight=&85& class=&origin_image zh-lightbox-thumb& width=&522& data-original=&https://pic2.zhimg.com/v2-363ee10f083d9a173db2ab_r.jpg&&&/figure&&br&&p& 其训练过程,其实就是TensorFlow框架的启动训练过程,在这个过程中,python批量地将数据交给底层库进行处理。&/p&&p& 我在官方的demo里追加了两行代码,每隔50次则额外计算一次当前模型的识别准确率。它并非必要的代码,仅仅用于方便观察整个模型的识别准确率逐步变化的过程。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-a071727ebbb20a1d50ff662d0f240324_b.jpg& data-rawwidth=&576& data-rawheight=&26& class=&origin_image zh-lightbox-thumb& width=&576& data-original=&https://pic4.zhimg.com/v2-a071727ebbb20a1d50ff662d0f240324_r.jpg&&&/figure&&br&&p& 当然,里面涉及的accuracy(预测准确率)等变量,需要在前面的地方定义占位:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-3864e72b_b.jpg& data-rawwidth=&576& data-rawheight=&35& class=&origin_image zh-lightbox-thumb& width=&576& data-original=&https://pic4.zhimg.com/v2-3864e72b_r.jpg&&&/figure&&br&&p& 当我们训练完毕,则到了验证我们的模型准确率的时候,和前面相同:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-f55ac497dfd7_b.jpg& data-rawwidth=&575& data-rawheight=&38& class=&origin_image zh-lightbox-thumb& width=&575& data-original=&https://pic4.zhimg.com/v2-f55ac497dfd7_r.jpg&&&/figure&&br&&p& 我的demo跑出来的结果如下(softmax回归的例子运行速度还是比较快的),当前的准确率是0.9252:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-fa9eb32d9395ba8edb6f1b0a_b.jpg& data-rawwidth=&370& data-rawheight=&195& class=&content_image& width=&370&&&/figure&&br&&h4&5. 实时查看参数的数值的方法&/h4&&p& 刚开始跑官方的demo的时候,我们总想将相关变量的值打印出来看看,是怎样一种格式和状态。从demo的代码中,我们可以看见很多的Tensor变量对象,而实际上这些变量对象都是无法直接输出查看,粗略地理解,有些只是占位符,直接输出的话,会获得类似如下的一个对象:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span& Tensor(&Equal:0&, shape=(?,), dtype=bool)
&/code&&/pre&&/div&&p& 既然它是占位符,那么我们就必须喂一些数据给它,它才能将真实内容展示出来。因此,正确的方法是,在打印时通常需要加上当前的输入数据给它。&/p&&p& 例如,查看y的概率数据:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span& print(sess.run(y, feed_dict={x: batch_xs, y_: batch_ys}))
&/code&&/pre&&/div&&p& 部分非占位符的变量还可以这样输出来:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span& print(W.eval())
&/code&&/pre&&/div&&p& 总的来说,92%的识别准确率是比较令人失望,因此,官方的MNIST其实也有多种模型的不同版本,其中比较适合图片处理的CNN(卷积神经网络)的版本,可以获得99%以上的准确率,当然,它的执行耗时也是比较长的。&/p&&p& (备注:cnn_mnist.py就是卷积神经网络版本的,后面有附带微云网盘的下载url)&br& 前馈神经网络(feed-forward neural network)版本的MNIST,可达到97%:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-7d727b00b5c_b.jpg& data-rawwidth=&563& data-rawheight=&173& class=&origin_image zh-lightbox-thumb& width=&563& data-original=&https://pic4.zhimg.com/v2-7d727b00b5c_r.jpg&&&/figure&&br&&blockquote&&p&&strong&分享在微云上的数据和源码:&/strong&&br&&a href=&https://link.zhihu.com/?target=http%3A//url.cn/44aZOpP& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微云文件&/a&&br& (备注:国外网站下载都比较慢,我这份下载相对会快一些,在环境已经搭建完毕的情况下,执行里面的run.py即可)&/p&&/blockquote&&h2&五、和业务场景结合的demo:预测用户是否是超级会员身份&/h2&&p& 根据前面的内容,我们对上述基于softmax只是三层(输入、处理、输出)的神经网络模型已经比较熟悉,那么,这个模型是否可以应用到我们具体的业务场景中,其中的难度大吗?为了验证这一点,我拿了一些现网的数据来做了这个试验。&/p&&h4&1. 数据准备&/h4&&figure&&img src=&https://pic2.zhimg.com/v2-2df93cbed_b.jpg& data-rawwidth=&326& data-rawheight=&610& class=&content_image& width=&326&&&/figure&&br&&p& 我将一个现网的电影票活动的用户参与数据,包括点击过哪些按钮、手机平台、IP地址、参与时间等信息抓取了出来。其实这些数据当中是隐含了用户的身份信息的,例如,某些礼包的必须是超级会员身份才能领取,如果这个按钮用户点击领取成功,则可以证明该用户的身份肯定是超级会员身份。当然,我只是将这些不知道相不相关的数据特征直观的整理出来,作为我们的样本数据,然后对应的标签为超级会员身份。&/p&&p& 用于训练的样本数据格式如下:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-1c82f7bd9bf0cf30ce39d_b.jpg& data-rawwidth=&517& data-rawheight=&69& class=&origin_image zh-lightbox-thumb& width=&517& data-original=&https://pic3.zhimg.com/v2-1c82f7bd9bf0cf30ce39d_r.jpg&&&/figure&&br&&p& 第一列是QQ号码,只做认知标识的,第二列表示是否超级会员身份,作为训练的标签值,后面的就是IP地址,平台标志位以及参与活动的参与记录(0是未成功参与,1表示成功参与)。则获得一个拥有11个特征的数组(经过一些转化和映射,将特别大的数变小):&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span& [0.8, 0.196, 0.9, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0]
&/code&&/pre&&/div&&p& 对应的是否是超级数据格式如下,作为监督学习的标签:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span& 超级会员:[0, 1]
非超级会员:[1, 0]
&/code&&/pre&&/div&&p& 这里需要专门解释下,在实际应用中需要做数据转换的原因。一方面,将这些数据做一个映射转化,有助于简化数据模型。另一方面,是为了规避NaN的问题,当数值过大,在一些数学指数和除法的浮点数运算中,有可能得到一个无穷大的数值,或者其他溢出的情形,在Python里会变为NaN类型,这个类型会破坏掉后续全部计算结果,导致计算异常。&/p&&p& 例如下图,就是特征数值过大,在训练过程中,导致中间某些参数累计越来越大,最终导致产生NaN值,后续的计算结果全部被破坏掉:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-2f763d649c937a50c9bd_b.jpg& data-rawwidth=&576& data-rawheight=&646& class=&origin_image zh-lightbox-thumb& width=&576& data-original=&https://pic2.zhimg.com/v2-2f763d649c937a50c9bd_r.jpg&&&/figure&&br&&p& 而导致NaN的原因在复杂的数学计算里,会产生无穷大或者无穷小。例如,在我们的这个demo中,产生NaN的原因,主要是因为softmax的计算导致。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-eaecaab76df_b.jpg& data-rawwidth=&249& data-rawheight=&85& class=&content_image& width=&249&&&/figure&&br&&blockquote&&p&RuntimeWarning: divide by zero encountered in log&/p&&/blockquote&&p& 刚开始做实际的业务应用,就发现经常跑出极奇怪异的结果(遇到NaN问题,我发现程序也能继续走下去),几经排查才发现是NAN值问题,是非常令人沮丧的。当然,经过仔细分析问题,发现也并非没有排查的方式。因为,NaN值是个奇特的类型,可以采用下述编码方式NaN != NaN来检测自己的训练过程中,是否出现的NaN。&/p&&p& 关键程序代码如下:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-0cd23f3cb_b.jpg& data-rawwidth=&576& data-rawheight=&177& class=&origin_image zh-lightbox-thumb& width=&576& data-original=&https://pic3.zhimg.com/v2-0cd23f3cb_r.jpg&&&/figure&&br&&p& 我采用上述方法,非常顺利地找到自己的深度学习程序,在学习到哪一批数据时产生的NaN。因此,很多原始数据我们都会做一个除以某个值,让数值变小的操作。例如官方的MNIST也是这样做的,将256的像素颜色的数值统一除以255,让它们都变成一个小于1的浮点数。&br& MNIST在处理原始图片像素特征数据时,也对特征数据进行了变小处理:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-bf9d5a9cb36c0f12d0cce7_b.jpg& data-rawwidth=&575& data-rawheight=&137& class=&origin_image zh-lightbox-thumb& width=&575& data-original=&https://pic2.zhimg.com/v2-bf9d5a9cb36c0f12d0cce7_r.jpg&&&/figure&&br&&p& NaN值问题一度深深地困扰着我(往事不堪回首-__-!!),特别放到这里,避免入门的同学踩坑。&/p&&h4&2. 执行结果&/h4&&p& 我准备的训练集(6700)和测试集(1000)数据并不多,不过,超级会员身份的预测准确率最终可以达到87%。虽然,预测准确率是不高,这个可能和我的训练集数据比较少有关系,不过,整个模型也没有花费多少时间,从整理数据、编码、训练到最终跑出结果,只用了2个晚上的时间。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-f45e7a804256fbca6f3ab7_b.jpg& data-rawwidth=&213& data-rawheight=&163& class=&content_image& width=&213&&&/figure&&br&&p& 下图是两个实际的测试例子,例如,该模型预测第一个QQ用户有82%的概率是非超级会员用户,17.9%的概率为超级会员用户(该预测是准确的)。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-cf9559db98dded10e43b81a6_b.jpg& data-rawwidth=&284& data-rawheight=&131& class=&content_image& width=&284&&&/figure&&br&&p& 通过上面的这个例子,我们会发觉其实对于某些比较简单的场景下应用,我们是可以比较容易就实现的。&/p&&h2&六、其他模型&/h2&&h4&1. CIFAR-10识别图片分类的demo(官方)&/h4&&p& CIFAR-10数据集的分类是机器学习中一个公开的基准测试问题,它任务是对一组32x32RGB的图像进行分类,这些图像涵盖了10个类别:飞机, 汽车, 鸟, 猫, 鹿, 狗, 青蛙, 马, 船和卡车。&/p&&p& 这也是官方的重要demo之一。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-b8f54fe38e6ae3f0ce1ca681b02dd91f_b.jpg& data-rawwidth=&479& data-rawheight=&373& class=&origin_image zh-lightbox-thumb& width=&479& data-original=&https://pic3.zhimg.com/v2-b8f54fe38e6ae3f0ce1ca681b02dd91f_r.jpg&&&/figure&&br&&blockquote&&p&更详细的介绍内容:&br&&a href=&https://link.zhihu.com/?target=http%3A//www.cs.toronto.edu/%7Ekriz/cifar.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CIFAR-10 and CIFAR-100 datasets&/a&&br&&a href=&https://link.zhihu.com/?target=http%3A//tensorfly.cn/tfdoc/tutorials/deep_cnn.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TensorFlow 官方文档中文版&/a&&/p&&/blockquote&&p& 该例子执行的过程比较长,需要耐心等待。&/p&&p& 我在机器上的执行过程和结果:&/p&&p& cifar10_train.py用于训练:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-8f10ff7d1fd_b.jpg& data-rawwidth=&575& data-rawheight=&154& class=&origin_image zh-lightbox-thumb& width=&575& data-original=&https://pic4.zhimg.com/v2-8f10ff7d1fd_r.jpg&&&/figure&&br&&p& cifar10_eval.py用于检验结果:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-f25a0df832ac0dc414bd61c0_b.jpg& data-rawwidth=&475& data-rawheight=&54& class=&origin_image zh-lightbox-thumb& width=&475& data-original=&https://pic2.zhimg.com/v2-f25a0df832ac0dc414bd61c0_r.jpg&&&/figure&&br&&p& 识别率不高是因为该官方模型的识别率本来就不高:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-20ae672b4c6c44bbc2f7afaf9e825d8e_b.jpg& data-rawwidth=&575& data-rawheight=&155& class=&origin_image zh-lightbox-thumb& width=&575& data-original=&https://pic1.zhimg.com/v2-20ae672b4c6c44bbc2f7afaf9e825d8e_r.jpg&&&/figure&&br&&p& 另外,官方的例子我首次在1月5日跑的时候,还是有一些小问题的,无法跑起来(最新的官方可能已经修正),建议可以直接使用我放到微云上的版本(代码里面的log和读取文件的路径,需要调整一下)。&/p&&blockquote&&p&源码下载:&a href=&https://link.zhihu.com/?target=http%3A//url.cn/44mRzBh& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微云文件&/a&&/p&&/blockquote&&p& 微云盘里,不含训练集和测试集的图片数据,但是,程序如果检测到这些图片不存在,会自行下载:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-f656f653a72e3a7689a77_b.jpg& data-rawwidth=&575& data-rawheight=&226& class=&origin_image zh-lightbox-thumb& width=&575& data-original=&https://pic4.zhimg.com/v2-f656f653a72e3a7689a77_r.jpg&&&/figure&&br&&h4&2. 是否大于5岁的测试demo&/h4&&p& 为了检验softmax回归模型是否能够学习到一些我自己设定好的规则,我做了一个小demo来测试。我通过随机数生成的方式构造了一系列的数据,让前面的softmax回归模型去学习,最终看看模型能否通过训练集的学习,最终100%预测这个样本数据是否大于5岁。&/p&&blockquote&&p&模型和数据本身都比较简单,构造的数据的方式:&br& 我随机构造一个只有2个特征纬度的样本数据,[year, 1],其中year随机取值0-10,数字1是放进去作为干扰。&br& 如果year大于5岁,则标签设置为:[0, 0, 1];&br& 否则,标签设置为:[0, 1, 0]。&/p&&/blockquote&&p& 生成了6000条假训练集去训练该模型,最终它能做到100%成功预测准确:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-73243ada0f59e5735bb69aca0b7148e9_b.jpg& data-rawwidth=&244& data-rawheight=&179& class=&content_image& width=&244&&&/figure&&br&&blockquote&&p&微云下载(源码下载):&br&&a href=&https://link.zhihu.com/?target=http%3A//url.cn/44mKFNK& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微云文件&/a&&/p&&/blockquote&&h4&3. 基于RNN的古诗学习&/h4&&p& 最开头的AI写古诗,非常令人感到惊艳,那个demo是美国的一个研究者做出来的,能够根据主题生成不能的古诗,而且古诗的质量还比较高。于是,我也尝试在自己的机器上也跑一个能够写古诗的模型,后来我找到的是一个基于RNN的模型。RNN循环神经网络(Recurrent Neural Networks),是非常常用的深度学习模型之一。我基于一个外部的demo,进行一些调整后跑起一个能够学习古诗和写古诗的比较简单的程序。&/p&&p&&strong&执行写诗(让它写了十首):&/strong&&/p&&ul&&li&&p&抑滴留居潋罅斜,二川还羡五侯家。古刘称士身相染,桃李栽林欲称家。回首二毛相喘日,万当仙性尽甘无。如何羽马嘶来泪,不信红峰一寸西。&/p&&/li&&li&&p&废寺松阴月似空,垂杨风起晚光催。乌心不把嫌香径,出定沧洲几好清。兰逐白头邻斧蝶,苍苍归路自清埃。渔樵若欲斜阳羡,桂苑西河碧朔来。&/p&&/li&&li&&p&遥天花落甚巫山,凤珮飞驰不骋庄。翠初才象饮毫势,上月朱炉一重牛。香催戍渚同虚客,石势填楼取蕊红。佳句旧清箱畔意,剪颜相激菊花繁。&/p&&/li&&li&&p&江上萧条第一取,名长经起月还游。数尺温皋云战远,放船乡鬼蘸云多。相逢槛上西风动,莫听风烟认钓鱼。堤费禽雏应昨梦,去朝从此满玄尘。&/p&&/li&&li&&p&避命抛醺背暮时,见川谁哭梦知年。却随筵里腥消极,不遇嘉唐两带春。大岁秘魔窥石税,鹤成应听白云中。朝浮到岸鸱巇恨,不向青青听径长。&/p&&/li&&li&&p&楚田馀绝宇氤氲,细雨洲头万里凉。百叶长看如不尽,水东春夜足残峰。湖头风浪斜暾鼓,北阙别罹初里村。山在四天三顾客,辘轳争养抵丹墀。&/p&&/li&&li&&p&九日重门携手时,吟疑须渴辞金香。钓来犹绕结茶酒,衣上敬亭宁强烧。自明不肯疑恩日,琴馆寒霖急暮霜。划口濡于孤姹末,出谢空卿寄银机。莲龛不足厌丝屦,华骑敷砧出钓矶。&/p&&/li&&li&&p&为到席中逢旧木,容华道路不能休。时闲客后多时石,暗水天边暖人说。风弄霜花嗥明镜,犀成磨逐乍牵肠。何劳相听真行侍,石石班场古政蹄。&/p&&/li&&li&&p&听巾邑外见朱兰,杂时临厢北满香。门外玉坛花府古,香牌风出即升登。陵桥翠黛销仙妙,晓接红楼叠影闻。敢把苦谣金字表,应从科剑独频行。&/p&&/li&&li&&p&昨日荣枯桃李庆,紫骝坚黠自何侵。险知河在皆降月,汉县烟波白发来。仍省封身明月阁,不知吹水洽谁非。更拟惭送风痕去,只怕鲸雏是后仙。&/p&&/li&&/ul&&p& 另外,我抽取其中一些个人认为写得比较好的诗句(以前跑出来的,不在上图中):&/p&&figure&&img src=&https://pic2.zhimg.com/v2-805bcd1ae44df8fe2d8a63ad237c409a_b.jpg& data-rawwidth=&575& data-rawheight=&128& class=&origin_image zh-lightbox-thumb& width=&575& data-original=&https://pic2.zhimg.com/v2-805bcd1ae44df8fe2d8a63ad237c409a_r.jpg&&&/figure&&br&&p& 该模型比较简单,写诗的水平不如最前面我介绍的美国研究者demo,但是,所采用的基本方法应该是类似的,只是他做的更为复杂。&/p&&p& 另外,这是一个通用模型,可以学习不同的内容(古诗、现代诗、宋词或者英文诗等),就可以生成对应的结果。&/p&&h2&七、深度学习入门体会&/h2&&ol&&li&&p&人工智能和深度学习技术并不神秘,更像是一个新型的工具,通过喂数据给它,然后,它能发现这些数据背后的规律,并为我们所用。&/p&&/li&&li&&p&数学基础比较重要,这样有助于理解模型背后的数学原理,不过,从纯应用角度来说,并不一定需要完全掌握数学,也可以提前开始做一些尝试和学习。&/p&&/li&&li&&p&我深深地感到计算资源非常缺乏,每次调整程序的参数或训练数据后,跑完一次训练集经常要很多个小时,部分场景不跑多一些训练集数据,看不出差别,例如写诗的案例。个人感觉,这个是制约AI发展的重要问题,它直接让程序的“调试”效率非常低下。&/p&&/li&&li&&p&中文文档比较少,英文文档也不多,开源社区一直在快速更新,文档的内容过时也比较快。因此,入门学习时遇到的问题会比较多,并且缺乏成型的文档。&/p&&/li&&/ol&&h2&八、小结&/h2&&p& 我不知道人工智能的时代是否真的会来临,也不知道它将要走向何方,但是,毫无疑问,它是一种全新的技术思维模式。更好的探索和学习这种新技术,然后在业务应用场景寻求结合点,最终达到帮助我们的业务获得更好的成果,一直以来,就是我们工程师的核心宗旨。&/p&&p& 另一方面,对发展有重大推动作用的新技术,通常会快速的发展并且走向普及,就如同我们的编程一样。&/p&&p&&strong&因此,人人都可以做深度学习应用,并非只是一句噱头。&/strong&&/p&&blockquote&&p&参考文档:&br&&a }

我要回帖

更多关于 支付宝无障碍辅助验证 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信