fast.ai认为现在的传授教化有两种「不良趋势」,让初学者望而生畏:
a)大量韶光学习各个部分的细节,学习的时候不知道它们能干什么,也就没兴趣了;
b)重视理论和背后的事理,根本没有培养兴趣就已经损失约念了;
fast.ai的创始人Jeremy不是理科生(学哲学的),不是顶级大学,也不是打算器、数序或者统计学博士。
「学习一年挥棒,并不会让你会打棒球」,以是fast.ai课程一开始就设计用极少的代码(5行)、极少的背景知识(懂python语法和高中数学)、极少的软件配置(用kaggle或者colab这种在线环境),立时开始完成一个「跟上当今主流」的机器学习运用,感想熏染它的神奇。
高密度的第一课原来以为一开始只是先容语法、手写数字识别或猫狗分类这样的入门,没想到一上来就利用了ResNet(一个50层、ILSVRC 2015年图像分类第一名的深度学习框架),确实是紧跟当今潮流。
而且一上来就先容了迁移学习的观点,让大家可以在课后做一些非常有趣的练习。
迁移学习深度学习须要超级大量的数据。如果你想做一些有趣的小运用,没有大量的数据就即是白瞎。那怎么办呢?
迁移学习便是办理这个问题的方法。你可以利用一个已经演习过的模型,这个模型虽然演习的数据跟你不同,但是它们有某些特点类似。由于这个预演习模型已经被大量数据演习过,已经有了很多「积累的履历」,只要给它很少量的新数据,就能很好地成为新运用的模型了。
打个比方,如果你是一个资深的c++程序员,虽然你从来没写过python代码,但是经由大略的1-2周学习后,你就能迅速上手完成工业级别的python程序。
我想做什么基于fast.ai第一课的内容,用大概300张图片写一个能区分这是足球鞋、篮球鞋还是跑鞋的代码,并达到很高的准确率(实际结果超过90%)。
可以看到这样的任务比猫狗分类繁芜很多的(很多机器学习入门的例子)。
0.数据准备迁移学习的魅力在于用小样本办理类似的新问题,于是我在图片搜索引擎上找了200张足球鞋、200张篮球鞋、200张跑步鞋的图片,用chrome的批量下图工具ImageAssistant下载好,存放成下面的样子:
个中train是演习数据(3种鞋100张),valid是测试数据(3种鞋100张),弄好往后上传到colab上(colab是google推出的一个免费在线jupyter notebook环境,不用折腾各种软件、库就能用GPU加速做机器学习的练习)。
1.写代码fast.ai强调写代码要快、要大略,下面我们看看到底有多大略。
引入必要的库
把文件上传往后做一点点的设置(这个在本地不须要,特殊针对colab)
下面开始写代码分类球鞋了
fast.ai演习模型的3步:
a)标准化数据,ImageDataBunch;
b)创建一个模型,这里用50层的深度学习模型ResNet50,cnn_learner(data, models.resnet50);
c)进行演习,learner.fit_one_cycle;
经由十来分钟的演习,可以看到error_rate(缺点率)已经低落到10%了。
我们用一个非常小的样本(300个)+迁移学习的方法+一个被1000多万张图片演习的50层深的模型=90%精确的球鞋分类器。
那你会不会好奇,它没有分类精确的10%到底是若何的呢?
第一个是跑鞋,机器认为是足球鞋。第二个是篮球鞋,机器认为是跑鞋。第三个是足球鞋,机器认为是跑鞋。当然,人类该当是都能分对的了(跑鞋透气,篮球鞋保护脚踝,足球鞋有钉)。
下面看几个分对的例子,看看你是不是也跟机器一样为难刁难了呢?
3.总结
代码量:10来行代码(核心6行);
演习数据:300张演习数据+300张测试数据;
完成效果:90%的精确率,能分别给定的一张图是篮球鞋、足球鞋还是跑鞋;
球鞋分类显然是一个没啥用途的炫技例子,只是我为了加深课程理解临时凑的。这个思路用在垃圾分类上面该当能方便不少人吧(少样本的图片演习+大略的代码,彷佛看起来也没有多深奥嘛^_^)。
臭不要脸的自我介绍我叫黎晨,英文名LC,是我中文拼音的简称,跟LV并无关系;
性别男,遵纪遵法,无不良前科。我的很多朋友都说我是「去世变态」。以是我常常宅在家里不出去祸害社会。
为此,我向政府申请掩护社会公序良俗的褒奖,但还没有得到任何回答;
00年开始打仗互联网,可是很年轻。在互联网牛市造福浪潮中连小小的牛尾巴都没沾到,不过,我会连续努力的;
我的所有文章均为无版权声明。无须搜聚本人见地,可以随意修正转载。