我的对算法的理解与算法入门方法

有些小伙伴知道我作nlp的总问我怎么学习,其实我也是个菜鸟,就介绍一下我对算法的理解,说说怎么入门。

对算法的理解:

    关于算法工程师,应用很广,用的知识也被分为不少分支,地图的道路规划可能用到动态规划,代码计算的优化算法简单的就是熟知的数据结构中的排序与查找,广告推荐用到关联规则,而后近些年火起来的机器学习,深度学习都是算法。这些算法也没有严格的界限,工业上常常各类算法一块儿使用。我的认为目前算法能够分为两类,一是优化计算量,如查找排序,路径搜索,这种主要利用一些巧妙的思惟逻辑减小计算量,最后获得想要的准确的结果;二是利用几率统计从数据中挖掘有用信息,这种就是机器学习与深度学习,从已有的数据中计算各类几率,并优化处理过程的计算量,最后获得的结果是一个有几率的结果,这还有一个搜索算法。目前互联网公司比较多的算法岗位可能是指人工智能,机器学习,以及广告推荐,而风险评估这岗位也多用机器学习算法作的,也就是第二类。这一类的一个依据是什么大数定理,还有其余的定理,我忘记了,通俗意思就是:当一件事(如抛硬币)发生的次数多了,咱们就能够粗糙的认为这件事中的某个现象(如正面朝上)出现的理论几率就是这个现象出现的次数与这件事发生次数的比值,即正面朝上的次数/投硬币次数=正面朝上的几率。当咱们没法得知一件事的准确几率时,就从已有的数据去这样计算来估计,而后数据越多,计算出的几率越准确。
	
人工智能大概分为几个领域:天然语言处理,图像处理,语音处理。
    
    天然语言处理主要是对文本的处理,底层是要对文本分词,词性标注,创建词向量等。往上又主要分为:文本分类,文本翻译,阅读理解,智能问答,知识图谱等。具体业务应用好比新闻稿分类,商品的正面负面评论分类,语言上的翻译,客服自动回答等,这些都没有严格界线,都很灵活的应用在系统上。好比淘宝的商品推荐首先要对商品的属性进行相似文本分类,接着对客户的数据进行分类添加标签,而后互相对应又用到搜索匹配算法。
    图像处理了解的很少,文本以词或字符为单位,图像以像素点为单位,传统的会对图像像素的色彩数值进行计算,如腐蚀膨胀等,深度学习以CNN为开端则是对图像以一个小区域为单位进行计算,全部带有相邻像素的信息更准确。主要应用有OCR识别,如识别车牌号,门禁识别人脸,识别图片的文字,如今有app能够扫描银行卡识别卡号,具体又有分类或者识别出具体的文字或字符。不少时候都要传统的算法进行图象预处理,把图像特征突出的更明显效果更好。
    语音处理这块我接触的最少,几乎为0,大概就是把声音转成文字,一段声音分多帧,还有音素什么的,其实只要识别成文本后剩下的就是天然语言处理的工做了。
    不少业务场景都是不少算法结合使用的,好比智能机器人首先语音识别把听到的声音转为文字,而后利用天然语言处理判断意图进而去领域数据库或者知识图谱内利用搜索算法快速检索可能性最大的词汇,再组织成语言利用语音技术发声回答。

那么具体怎么学习与入门呢?

    首先要会一门编程语言,首推python其次java与c++和c,不用太熟,能写数据结构中的排序与查找算法就行。
    而后建议学一些机器学习的算法,从工程入手,跟着书籍或者视频调用现成的包实现小demo,了解这是究竟是干什么的,而后尝试了解具体算法原理,最简单的是k-近邻算法,而后贝叶斯,逻辑回归等等。我推荐一本书<机器学习实战>“图灵程序设计丛书,Peter Harrington著,李锐,李鹏,曲亚东,王斌翻译”。里面有很好的案例与解释,还有python代码,最适合工程入手的小伙伴。而后是周志华的西瓜书(因里面常以西瓜举例得绰号)与李航的《统计学习方法》,视频推荐“唐宇迪博士”的,若是英文好看国外视频更好,还有吴恩达大佬的。当有了机器学习的一点基础在学一点神经网络玩玩。接着看往哪一个领域发展,作天然语言处理要了解分词,词性标注,实体识别,文本分类,句子类似,词向量等等。具体能够先看tf-idf,余弦类似,跟着众多博客写写,我以为简单易懂还有效。而后ng-ram,hmm,crf,rnn,lstm,sequency2sequency,word2vec,fasttext,bert等等都尝试尝试。图像的话我不知道,能够先看看图像的基本处理方法如腐蚀膨胀等等,不看也影响不大,直接从CNN开始到Alex Net 还有VGG等等,最近有个fasterRcnn。作NLP能够看看吴军的《数学之美》,其余的好像没什么好书,硬要推荐就是宗成庆老师的天然语言处理综述

关于特征工程

    其中作机器学习有一个过程叫“特征工程”,结果的怎么样和特征提取的好坏有很大的关系。常见的两个机器学习入门案例,一个是房价预测,一个是垃圾邮件分类。所谓的“特征工程”就是提取准确的特征,而“特征”就是蕴含咱们须要信息的属性,咱们能够根据这些属性来计算咱们最终想要的结果,好比房价预测,房价确定和房子的大小,房子的位置有很大关系关,因此咱们的特征就有房子的面积,房子距市中心的距离等,而无关的特征则不必加上去还会增长计算量,好比房价会和小区有多少单元相关吗?就算有,影响也不大。如何能从一堆数据中找到和咱们关心的结果有影响的属性数据是十分重要的,有时只能把全部属性全加上去靠算法反馈赋予不一样权重来弱化无关特征的影响,有时无关属性多了反而影响咱们的预测结果。算法工程师一大半时间在数据处理和提取特征上。而深度学习则是至关于自动提取特征了,咱们一股脑的把全部数据放上去,深度学习算法则不断反馈修改权重参数,最终分配好不一样特征的权重,而后再预测,可是这时各个特征的权重对咱们来讲也是一个黑盒子。不管用什么算法,能精准提取特征或提早去除无用特征总归对算法准确度的提高有很大的帮助。忽然想到一个例子,好比看相先生,实际也是提取特征,根据人的五官容貌,衣着,皮肤,谈吐这些特征判断这我的的家境经历脾气性格。。。还有就是要会把这些特征进行量化,就是表示成数字来让计算机去计算,NLP的词向量就是对特征的量化,图像的卷积也是。
	
最后

    看书,视频学习,看博客。。。多多百度google一些专有名词,扩大领域知识积累。都这么入门而后看论文论坛作项目提高。有心的能够看看kaggle的比赛,里面有数据有案例.后端小伙伴转算法仍是很好转的,可是若是工做还不错不建议转,去年开始算法岗位就有些难找工做了,由于已经出了几届搞算法的学生了,接下来须要的是大神资深人士,能够先搞搞,以为本身学的很不错了再去转。而后一些工程上经常使用的东西:python模块的numpy,pandas,matplotlib,sklearn,tensorflow,keras,pytorch...若是熟悉C++能够考虑作图像用caffe.其实文中不少东西我只是据说或了解,你们一块儿学习呀!
    本文不少内容凭记忆写的,有误望谅解!
相关文章
相关标签/搜索