趣味入门之机器学习

官方定义:机器学习

机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论凸分析算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。

案例:1.

机器能否象人类一样能具有学习能力呢?1959年美国的塞缪尔(Samuel)设计了一个下棋程序,这个程序具有学习能力,它可以在不断的对弈中改善自己的棋艺。4年后,这个程序战胜了设计者本人

案例2.

无人驾驶,利用机器人在一段测试路段跑n次,开始有驾驶员操作躲开障碍物,识别红绿灯,拐弯等操作,等机器人学习到一定程度,积累了大量经验之后,可以达到一个普通驾驶员的水平。

 

快速感受:Java实现图灵机器人聊天系统:

图灵机器人平台,基于自然语言处理、知识库和云计算等技术,为广大开发者、合作伙伴提供的一系列智能语义处理能力(包括语义理解、智能问答、知识库对接等)的服务平台。截止到目前为止,平台已经积累了近百亿条语料库和PB级别的基础数据,经测试平台的整体准确度已经达到90%以上。

 

图灵官网:http://www.tuling123.com/

api地址:http://www.tuling123.com/openapi/api?key=KEY&info=你好

测试key:e7a1447ed2182d57758ca845e5a0f36e

调用代码:

public static StringSendGet(String param) {

          OutputStreamWriterout = null;

          BufferedReaderin = null;

          Stringresult = "";

          try {

                        URLrealUrl = newURL(urlget+"&info="+param);

                        HttpURLConnectionconn = (HttpURLConnection) realUrl

                                                    .openConnection();//打开与图灵机器人接口的连接

                        conn.setDoOutput(false);//get方式不需要使用输出流,参数拼接在url后面所以false即可

                        conn.setDoInput(true);

                        conn.setUseCaches(true);

                        conn.setRequestMethod("GET");

                        conn.setConnectTimeout(50000);

                        conn.setReadTimeout(50000);

                        conn.setRequestProperty("Accept","text/html");//期待返回类型为json

                        conn.setRequestProperty("Authorization","token");

                        conn.setRequestProperty("tag","htc_new");

                       

                         

                       

                        conn.connect();//这句话才真正建立了与服务器的连接

                         

                       

                        in = newBufferedReader(new InputStreamReader(

                                                    conn.getInputStream(), "UTF-8"));

                       

                        Stringline = "";

                        while ((line= in.readLine()) != null) {

                                      result += line;

                        }

          } 

关于智能机器人原理与实现

1.      人机交互

可见的部分称作人机交互界面,比如计算机的显示器、鼠标和键盘,更好的可操作性是关键

2.      智能问答

如果说你问,机器人来回答,其实很简单,只要写一个数据库表,提前录入数据,根据用户询问信息查询对应结果即可。但这不是智能回答。

与其对应的就是“智能问答”,智能的实现包含了很多的核心技术,例如人工智能自然语言处理、语义解析、机器学习

词库设计


训练过程

大白天的做什么美梦啊?”回答是“哦哈哈哈不用你管”。

S1:应用双向最大匹配算法分词:双向分词结果,正向《大白天,的,做什么,美梦,啊》;反向《大白天,的,做什么,美梦,啊》。正向反向都是一样的,所以不需要处理歧义问题。长词优先选择,“大白天”和“做什么”。

S2:以“大白天”举例,假设hash函数为f(),并设f(大白天)指向首字hash表项[大,11,P]。于是由该表项指向“3字索引”,再指向对应“词表”。

S3:将结构体<大白天,…>插入队尾。体中有一个Ans域,域中某一指针指向“哦哈哈哈不用你管”。

S4:完成训练。

 

内容匹配过程

可以被描述成如下流程:S1:用户通过聊天界面向系统提出一个话题;S2:系统对该话题进行分词处理;S3:在系统知识库中寻找与该话题匹配的话语回复用户。

       基于词典的分词算法分为词典加载、预处理、最大匹配、歧义消解几个阶段。

其具体流程如下:

S1:预处理阶段,按照特殊字符(英文字母、数字、标点符号等)将待分析文本进行断句,将待切分的文本切分为只有中文的短句子,这些句子是下一步分词处理的基本单位;

(举个栗子:输入“asdfadf东北师范大学哈哈哈dfadflakfl(*^__^*) 嘻嘻……”,simi只会对其中的中文“东北师范大学哈哈哈嘻嘻”做出响应;输入“(*^__^*)”时,输出“I have no response.”)

S2:对断句出来的句子进行双向最大匹配(双向匹配,长词优先)分词,分词后的结果作为S3的输入;

(举个栗子:输入“东京古巴比伦”,正向与反向切词结果均为《东京,古巴比伦》,长词优先,所以simi只对“古巴比伦”做出响应;输入“古巴比伦埃菲尔铁塔”,正向与反向切词结果均为《古巴比伦,埃菲尔铁塔》,此时Simi对“埃菲尔铁塔”做出响应)

S3:对上一步分词得到的结果进行比较,判断是否存在歧义,如果存在歧义,就进行一定的歧义消解;

S4:重复S2、S3,直到处理完步骤一中断句所切分出的所有句子单元。

算法流程如图所示:

 

这里给出与小黄鸡对话的例子:我问小黄鸡:“埃菲尔铁塔上45度角仰望星空”。

S1:双向最大匹配分词:正向反向均为《埃菲尔铁塔上,45度角,仰望星空》,没有歧义。长词优先,系统选择了“埃菲尔铁塔上”作为关键词;

S2:系统在知识库中用刚才说的哈希函数f(埃菲尔铁塔上),找到比如[埃,11,P] 的表项,顺着指针找到6字词的索引,顺着索引找到6字词表,遍历词表,找到<埃菲尔铁塔上,…>结构体;

S3:系统随机选择该结构体Ans域中的一个回答(也有可能是根据频率高低来选择)。比如“两年之后等着你”。

S4:输出回答,匹配结束。

亟待学习:经典的机器算法

其实机器学习都没有固定规则或者定理,都是靠不断训练和拟合产生的结果。所以几乎都是:训练+预测。

传说中的十大经典算法如下:

决策树

随机森林算法

逻辑回归

SVM

朴素贝叶斯

K最近邻算法

K均值算法

Adaboost 算法

神经网络

马尔可夫

其实最简单的就是线性回归这样的算法,拟合一条直线,最终就是获得一个函数y=f(x),而这里f(x)=ax+b,线性方程。逻辑回归是线性回归算法的进化版。

详细请参照下一篇博文:机器学习十大经典算法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值