摘录:转AI的一些建议

注:本文转自普通程序员如何转向AI方向 - 计算机的潜意识 的博客,感兴趣的话可以多看看TA的博文哟!

 我能做的就是在这基础上,推荐了李航博士的《统计学习方法》

1.普通程序员,如何转向人工智能方向?

对普通程序员的定义是:拥有大学本科知识;平时工作较忙;自己能获取的数据有限。

 AI(人工智能)并不仅仅包括机器学习;关于AI领域的发展历史介绍推荐看周老师写的《机器学习简介》,AI不好跨的原因在于学习过程中要面对大量复杂的公式,在实际项目中会面对数据的缺乏,以及艰辛的调参等。因此需要制定要制定合适的学习方法。

2.学习方法

学习方法的设定就是回答以下几个问题:

  • 我要学的是什么?(学习目标)
  • 我怎样学习?(学习方针)
  • 我如何去学习?(学习计划)

3. 学习路线

首先了解这个领域,建立起全面的视野,培养起充足的兴趣 :AI是什么?它能做什么事?它的价值在什么地方?

关于机器学习是什么,能做什么,它与深度学习以及人工智能的关系,可以看博客从机器学习谈起 - 博客园

3.1 知识准备

  • 数学:复习以下基本知识。其他的一些知识可以在后面的学习的过程中按需再补;

                     线性代数:矩阵乘法;高数:求导;概率论:条件与后验概率

  • 英文:常备一个在线英文词典,例如爱词霸,能够不吃力的看一些英文的资料网页;
  • FQ:可以随时随地上Google,这是一个很重要的工具。不是说百度查的不能看,而是很多情况下Google搜出来的资料比百度搜的几十页的资料还管用,尤其是在查英文关键字时。节省时间可是很重要的学习效率提升;

资源查找:

3.2 机器学习  

机器学习的第一门课程首推Andrew Ng的机器学习。这门课程有以下特点:难度适中,同时有足够的实战例子,非常适合初学者。cs229 斯坦福大学-机器学习这门课程不推荐,原因有以下:

  •  时间:cs229 的时间太早,一些知识已经跟不上当今的发展,目前最为火热的神经网络一笔带过。而Cousera上神经网络可是用了两个课时去讲的!而且非常详细;
  • 教学:Ng在cs229 时候的教学稍显青涩,有很多问题其实他都没有讲清楚,而且下面的人的提问其实也很烦躁,你往往不关心那些人的问题。在Coursera上Ng的教学水平大幅度改善了,他会对你循循善诱,推心置腹,由浅入深的教学,在碰到你不明白的单词术语时也会叫你不要担心,更重要的,推导与图表不要太完善,非常细致清晰,这点真是强力推荐;
  • 字幕:cs229 的字幕质量比Coursera上的差了一截。Coursera上中文字幕翻译经过了多人把关,质量很有保证;
  • 作业:cs229 没有作业,虽然你可以做一些,但不会有人看。这点远不如Coursera上每周有deadline的那种作业,而且每期作业提交上去都有打分。更重要的是,每期作业都有实际的例子,让你手把手练习,而且能看到自己的成果,成就感满满!

3.3 机器学习&统计学习的书籍推荐

机器学习的知识系统化,有相对经典的书。其中统计学习(代表SVM)与集成学习(代表adaboost)是在实践中使用非常多的技术。下面是相关资源:

 推荐: 机器学习(周志华) 如果是在以前,机器学习方面的经典教材首推PRML,但现在周老师的书出来以后,就不再是这样了。首先推荐读周老师的书。这本书有一个特点,那就是再难的道理也能用浅显精炼的语言表达出来。正如周老师的名言:“体现你水平的地方是把难的东西讲容易了,而不是把容易的东西讲难,想把一个东西讲难实在太简单”;

推荐: 统计学习方法-豆瓣评价  统计学习方法-李航 -下载此书 [提取码: y5pz ]

统计学习又叫统计机器学习,和机器学习的重合内容多,但是公式推导非常清晰,强烈推荐!!!! 

3.3 实践做项目  

学习完了基础课程,你对机器学习就有了初步了解。现在使用它们是没有问题的,你可以把机器学习算法当作黑盒子,放进去数据,就会有结果。在实战中你更需要去关心如何获取数据,以及怎么调参等。如果有时间,自己动手做一个简单的实践项目是最好的。需要选择一个应用方向:是图像(计算机视觉CV,Computer Version)、音频(语音识别Speech Recognition ),还是文本(自然语言处理NLP, Natural Language Processing)。这里推荐选择图像领域,这里面的开源项目较多,入门也较简单,可以使用OpenCV做开发,里面已经实现好了神经网络,SVM等机器学习算法。项目做好后,可以开源到 Github 上面,然后不断完善它。实战项目做完后,你可以继续进一步深入学习,这时候有两个选择,深度学习和继续机器学习;

3.4 深度学习  

 深度学习是目前最火热的研究方向。有以下特点:知识更新快,较为零碎,没有系统讲解的书。因此学习的资源也相对零散,下面是一些资源介绍。深度学习的学习方法可以在有一定基础后,自己看论文再GitHub搜代码,或者搜博客、视频、讲义都行,按自己喜欢的方式来。其中不推荐的部分并不代表不好,而是在这个初学阶段不合适:

  •  推荐 UFLDL讲义: 非常好的DL基础教程,也是Andrew Ng【吴恩达】写的。有很详尽的推导,有翻译,且翻译质量很高;
  • 推荐Deep learning (paper)  ,2015年Nature上的论文,由三位深度学习界的大牛(Yann LeCun, Yoshua Bengio & Geoffrey Hinton)所写,读完全篇论文,给人高屋建瓴,一览众山小的感觉,强烈推荐。如果只能读一篇论文了解深度学习,我推荐此篇。这篇论文有同名的中文翻译;
  • 推荐 Neural networks and deep learning:这本书的作者非常擅长以浅显的语言表达深刻的道理,虽然没有翻译,但是阅读并不困难;
  • 推荐 Recurrent Neural Networks : 结合一个实际案例告诉你RNN是什么,整篇教程学完以后,会让你对RNN如何产生作用的有很清晰的认识,而这个效果,甚至是读几篇相关论文所没有的;
  • 不推荐,Neural Networks for Machine Learning - University of Toronto | Coursera:深度学习创始人教的课,最大的问题是太难,而且老先生的吐字有时不是很标准;
  • 不推荐,Deep Learning (book):同样也是由深度学习大牛所写的书。很多内容都讲了,但是感觉也没讲出什么内容来,只是告诉你来自那篇论文,但是可以把这本书当作论文索引来用,可能直接阅读论文更合适。
  • 不推荐,cs231n:李菲菲的课程,很有名,专门讲CNN。但是这门课程有一个最大的问题,就是没有字幕,虽然有youtube的自动翻译字幕,但有还不如没有。

5.继续机器学习  

推荐 机器学习(周志华) 

不推荐Pattern Recognition And Machine Learning : 当前阶段不推荐;PRML是以贝叶斯的观点看待很多机器学习方法,这也是它的一大特色。但对于初学者来说,这种观点其实并无必要。而且此书没有中文翻译,当前阶段硬啃很容易放弃;

3.6 开源项目

当知识储备较为充足时,学习可以再次转入实践阶段。这时候的实践仍然可以分两步走,学习经典的开源项目或者发表高质量的论文。开源项目的学习应该以尽量以优化为目的,单纯为读代码而学习效果往往不太好。好的开源项目都可以在Github 里搜索。这里以深度学习为例。深度学习的开源优秀库有很多,例如torch,theano等等,这里列举其中的两个:

 推荐 DeepLearnToolbox :较早的一个深度学习库,用matlab语言撰写,较为适合从刚学习的课程转入学习。遗憾的是作者不再维护它了;

推荐 tensorflow :Google的开源库,时至今日,已经有40000多个star,非常惊人,支持移动设备;

3.7.会议论文  

较好的课程都会推荐你一些论文。一些著名的技术与方法往往诞生于一些重要的会议。因此,看往年的会议论文是深入学习的方法。在这时,一些论文中的内容会驱使你学习数学中你不擅长的部分。有时候你会觉得数学知识储备不够,因此往往需要学习一些辅助课程。当你看完足够的论文以后,在这个阶段,如果是在校学生,可以选择某个课题,以发论文为目的来学习研究。一般来说,论文是工作的产物。有时候一篇基于实验的论文往往需要你写代码或者基于开源项目。因此开源项目的学习与会议论文的工作两者之间是有相关的。两者可以同时进行学习。关于在哪里看论文,可以看一下CCF推荐排名; 目录-CCF推荐排名,了解一下这个领域里有哪些优秀的会议。下面介绍两个图像与机器学习领域的著名顶级会议

 CVPR:与另两个会议ICCV和ECCV合称计算机视觉领域的三大会,注意会议每年的主页是变动的,因此搜索需要加上年份,例如CVPR2018

NIPS :Conference on Neural Information Processing Systems的简称,许多重要的工作发表在这上面,例如关于CNN的一篇重要论文就是发表在上面;  点NIPS论文集查看!

3.8 自由学习  

到这里可以说已经入门AI了。下面可以依据兴趣来自由学习。前阶段不推荐的学习资源也可随意学习,下面是点评:

  • cs229 斯坦福大学-机器学习:Ng写的讲义很不错,其中关于SVM的推导部分很清晰,想学习SVM推荐;
  • Neural Networks for Machine Learning:大牛的视角跟人就是不一样,看看Hinton对神经网络是怎么看的,往往会让你有种原来如此的感悟。其实看这门课程也等同于读论文,因为几乎每节课的参考资料里都有论文要你读;
  • CS231n: Convolutional Neural Networks for Visual Recognition,最新的知识,还有详细的作业。国内应该有团队对字幕进行了翻译,可以找找;
  • PRML :作为一门经典的机器学习书籍,是很有阅读必要的,会让你对机器学习拥有一个其他的观察视角;
  • PRML的python 实现 值得一看

4 总结  

本文的目的是帮助对AI领域了解不深,但又想进入的同学踏入这个门。这里只说踏入,是因为这个领域的专精实在非常困难,需要数年的积累与努力。在进行领域学习前,充分认识自己的特点,制定合适的学习方法是十分重要的。首先得对这个领域进行充分了解,培养兴趣。在学习时,保持着循序渐进的学习方针,不要猛进的学习过难资源;结合着学习与实践相辅的策略,不要只读只看,实际动手才有成就感。学习某个资源时要有充分的目的,不是为了学开源项目而看代码,而是为了写开源项目而看;不是为了发论文而写论文,而是为了做事情而写论文。如果一个学习资源对你过难,并不代表一定是你的问题,可能是学习资源的演讲或撰写人的问题。能把难的问题讲简单的人才是真正有水平的人。所以,一定要学习优质资源,而不是不分青红皂白的学习。最后,牢记以兴趣来学习。学习的时间很长,过程也很艰难,而只有兴趣才是让你持之以恒,攻克难关的最佳助力。

  谨以此文与在学海中乘舟的诸位共勉。我就是一名普通程序员,刚刚转入AI领域,还有很多不足。希望此文可以帮助到大家。

基于数据挖掘的音乐推荐系统设计与实现 需要一个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给一个用户推荐与其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给一个用户推荐与其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐和基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(和你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
MPU6050是一款广泛应用在无人机、机器人和运动设备中的六轴姿态传感器,它集成了三轴陀螺仪和三轴加速度计。这款传感器能够实时监测并提供设备的角速度和线性加速度数据,对于理解物体的动态运动状态至关重要。在Arduino平台上,通过特定的库文件可以方便地与MPU6050进行通信,获取并解析传感器数据。 `MPU6050.cpp`和`MPU6050.h`是Arduino库的关键组成部分。`MPU6050.h`是头文件,包含了定义传感器接口和函数声明。它定义了类`MPU6050`,该类包含了初始化传感器、读取数据等方法。例如,`begin()`函数用于设置传感器的工作模式和I2C地址,`getAcceleration()`和`getGyroscope()`则分别用于获取加速度和角速度数据。 在Arduino项目中,首先需要包含`MPU6050.h`头文件,然后创建`MPU6050`对象,并调用`begin()`函数初始化传感器。之后,可以通过循环调用`getAcceleration()`和`getGyroscope()`来不断更新传感器读数。为了处理这些原始数据,通常还需要进行校准和滤波,以消除噪声和漂移。 I2C通信协议是MPU6050与Arduino交互的基础,它是一种低引脚数的串行通信协议,允许多个设备共享一对数据线。Arduino板上的Wire库提供了I2C通信的底层支持,使得用户无需深入了解通信细节,就能方便地与MPU6050交互。 MPU6050传感器的数据包括加速度(X、Y、Z轴)和角速度(同样为X、Y、Z轴)。加速度数据可以用来计算物体的静态位置和动态运动,而角速度数据则能反映物体动的速度。结合这两个数据,可以进一步计算出物体的姿态(如角度和角速度变化)。 在嵌入式开发领域,特别是使用STM32微控制器时,也可以找到类似的库来驱动MPU6050。STM32通常具有更强大的处理能力和更多的GPIO口,可以实现更复杂的控制算法。然而,基本的传感器操作流程和数据处理原理与Arduino平台相似。 在实际应用中,除了基本的传感器读取,还可能涉及到温度补偿、低功耗模式设置、DMP(数字运动处理器)功能的利用等高级特性。DMP可以帮助处理传感器数据,实现更高级的运动估计,减轻主控制器的计算负担。 MPU6050是一个强大的六轴传感器,广泛应用于各种需要实时运动追踪的项目中。通过 Arduino 或 STM32 的库文件,开发者可以轻松地与传感器交互,获取并处理数据,实现各种创新应用。博客和其他开源资源是学习和解决问题的重要途径,通过这些资源,开发者可以获得关于MPU6050的详细信息和实践指南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值