本文首次发表于公众号-[胡琦],是作者在飞桨深度学习学院和世界冠军团队科老师从零实践深度学习的一些学习感悟。主要整理这7天来的学习笔记,7天 深入一门新技术很难,但仅仅只是稍微了解一下,7天时间远远足够!【文末福利:领取免费算力卡】
↑开局一张图,故事全靠编。我常常会扪心自问,一个连本行工作都干不好的人,还有时间去捣鼓别的领域,去“学习”别的领域的新知识?然鹅,自诩为“Copy攻城狮”的我,膨胀到像 学一波AI,不求结果,为了兴趣愿意去尝试,哪怕到头来竹篮打水一场空。于是,机缘巧合通过齐老师了解到Baidu的AIStuio以及此次飞浆的实战入门课。国际惯例,免费的午餐实际上并非真正的面试,如同HuaweiCloud的AI训练营推广ModelArts,这次的课也是为了推广飞浆。当然,对于AI小白来说,这些 都是非常不错的工具,里面的学习资源也非常丰富,废话不多说,马上开启Copy之路!
几天的课下来,我发现还是啥也不会,除了认识到为啥叫“炼丹”,其他的感觉看电影一样,过了就忘了具体的细节。于是想整理一下这几天的资料,方便日后 再有兴趣的时候来好好查阅学习。当看到前置课程需要掌握大量的数学基础和Python基础,我内心是拒绝的,真的不知道怎么高效地学习,幸好课程作业只要 简单的复制粘贴就能拿80分甚至刚开始就能拿100分,这也许成了我能坚持这几天的唯一原因--没有太大的挫败感。先来看看有哪些前置的知识需要掌握吧!
光数学基础这点,就有好几十个定义、公式、结论,比如导数和微积分的概念、泰勒公式、克莱姆法则……,毕竟无论是深度学习还是机器学习都离不开大量的数学原理和公式推导。记得以前去听一些人工智能相关专题的讲座,台上的大佬都会搬出一些数学公式推导和一些统计数据,台下的我到现在依旧是一愣一愣的,“少壮不努力老大徒伤悲!”。其次,还需掌握一些基础的Python知识,如基础关键字和语法、常用的数据结构、循环、函数、面向对象编程等,尽管我作为资深【Copy攻城狮】,有过一定的编程经历,但是Python还是第一接触,还是花了不少时间跟着教程敲了敲。另外,就是工具的学习,如PaddlePaddle快速入门、Notebook使用。这里还是要重点提下百度AIStudio平台,这是一个学习AI的好地方,之前有参加齐伟老师的《数据准备和特征工程》的课,于是了解到这个集课程、实践、比赛、考试认证于一体的AI学习平台,听说很多高校都在用,用过的都说好。更有AI学习地图,让我的每次努力多有收获--翔实的学习路线,完善的学-赛-用的学习体系,实战应用项目,将所学转化为生产力,真香!接下来看看本次训练营学习的具体内容吧!
首先从概念谈起,强化学习(Reinforcement learning,简称RL)是机器学习(Machine Learning,简称ML)中的一个领域,强调如何基于环境而行动以获取最大化的预期利益。核心思想包括智能体anget在环境environment中学习,根据环境的状态state(或者观测到的observation),执行动作action,并根据环境的反馈reward来指导更好的动作。总结一下就是分为两部分agent、environment和三要素state(observation)、action和reward。以游戏Flappy Bird为例,小鸟就是强化学习的智能体agent,整个游戏背景就是环境environment,当前小鸟的位置就是状态state,小鸟上下移动就是动作action,得分就是反馈reward。
那强化学习有什么用呢?通过课程我了解到强化学习的应用很广泛,如游戏(打过人机吗?)、机器人控制(机械臂、自动驾驶、四驱飞行器等)、用户交互(推荐、广告、自然语言处理NLP等)、交通(拥堵管理等)、资源调度(物流、带宽等)、金融(投资组合、股票买卖等)。对于我而言为什么学习强化学习?一是想简单;了解一下AI,二是想实践一个简单的Demo进行运用。
下面两张图简要说明强化学习与其他机器学习的关系和区别,个人认为强化学习需要在与环境交互中学习和寻找最佳决策方案,相比监督学习处理认知问题而言,强化学习处理决策问题。强化学习通过不断的试错探索,吸取经验和教训,持续不断的优化策略,从环境中拿到更好的反馈,强化学习有两种学习方案:基于价值(value-based)、基于策略(policy-based)。
强化学习中经典的算法有Q-learning、Sarsa、DQN、Policy Gradient、A3C、DDPG、PPO;强化学习环境分为离散控制场景(输出动作可数)、连续控制场景(输出动作值不可数)。这里推荐强化学习的经典环境库GYM和强化学习框架PARL。
具体知识点可查看从零实践强化学习之基于表格型方法求解RL(PARL),讲到了强化学习MDP四元组< S(state状态), A(action动作), P(probability状态转移概率), R(reward奖励) >,讲到了未知环境的强化学习Model-free试错探索(机器学习取代人被狗熊咬死的惨剧),进而提到状态动作价值Q表格、强化概念、Temporal Difference时序差分等。然后就需要接触到Sarsa算法和Q-learning。
具体知识点可查看从零实践强化学习之基于神经网络方法求解RL(PARL),讲到了函数逼近和神经网络。神经网络可以理解为一个黑盒,可以把输入x转为我们预期的输出y,如输入一张手写数字3的图片,输入数字3,输入一张猫的图片输出猫,输入房屋位置、面积等输出房价,然后会学习神经网络方法求解RL——DQN(Deep Q-Learning)。
具体知识点可查看从零实践强化学习之基于策略梯度求解RL(PARL),讲到了随机策略与策略梯度。然后就是策略梯度方法求解RL——Policy Gradient。
具体知识点可查看从零实践强化学习之连续动作空间上求解RL(PARL),个人理解连续动作空间是一些相对复杂的场景,如开车时方向盘的角度、机器人行走的动作,需要更加高级的算法来解决,如DDPG(Deep Deterministic Policy Gradient).
7天下来,我好像做了一场梦,梦醒时分什么都不记得了。虽然视频认真看了,代码认真Copy了,作业认真炼丹了,结果屡屡碰壁,直到放弃。回到最初的问题,我想大概是没有勇气面对现实--6年工作经验,4年前端开发,可只有1年的技术水准。也许,来强化学习并没有强化学习,罢了罢了,方向不对,再怎么训练都无法收敛!
最后,附上免费算力卡: