Javascript是我的“母语”,用它来学习人工智能,记得更可靠。

学习人工智能门槛高不高?我入门花了2个月工夫,学习了python、微积分,才大略弄懂了深度学习的基本原理,的确让人头大,不过当初回过头想想,其实基本原理是没这么难的。

通过我的消化之后,表达出来的人工智能的流程就是:有一些数据,假如这些数据遵循某种法则,然而这个法则里的具体参数是未知的,让电脑屡次猜想这些参数的值,并从中找到误差最小的那组参数,就能够对新的数据进行预测

比方有一组身高x、年龄y的数据:

arr = [ {x: 10, y: 131}, {x: 11, y: 135}, {x: 12, y: 139}, {x: 13, y: 145},]

年龄越大,身高越高呗,所以假如身高和年龄遵循的法则是:

y = kx + b

k和b是多少,电脑是个学渣,看了公式和数据一脸懵逼,那就瞎猜一下吧。

k = 10b = 15则10*10 + 15 = 11510*11 + 15 = 12510*12 + 15 = 13510*13 + 15 = 145

看这个瞎猜和理论的值差异是多少,咱们中学学过一个评估的形式,叫做方差,这里用相似的形式来评估:

let y0Arr = [131, 135, 139, 145]let y1Arr = [115, 125, 135, 145]let diff = 0y0Arr.forEach((y0, index) => {    let y1 = y1Arr[index]    diff += Math.pow(y1 - y0, 2) // (y1 - y0)²})diff = diff / y0Arr.length// diff = 93

diff评估进去是93,是大了还是小了,电脑学渣也不太分明,所以电脑须要进行更多的猜想,从所有猜想中取diff最小时的k和b,当成最终值。

用代码残缺得实现就是:

model = {  xArr: [10, 11, 12, 13],  y0Arr: [131, 135, 139, 145],  k: 10, // 参数1  b: 15, // 参数2  // 损失函数:评估误差用的  getDiff (k, b) {    let y1Arr = this.xArr.map(x => this.getY(x, k, b))    let diff = 0    this.y0Arr.forEach((y0, index) => {        let y1 = y1Arr[index]      diff += Math.pow(y1 - y0, 2) // (y1 - y0)²    })    diff = diff / this.y0Arr.length    return diff  },  // 法则的公式  getY(x, k, b) {    return k * x + b  },  // 训练:让电脑瞎猜,理论开发中不是像以下代码这样猜的,然而尽管伎俩不同,原理却是一样的  learn () {    // 让k和b别离取1到100    let kArr = Array.from(Array(100), (v,i) => i + 1)    let bArr = Array.from(Array(100), (v,i) => i + 1)    let diffs = []    kArr.forEach(k => {      bArr.forEach(b => {        diffs.push({          diff: this.getDiff(k, b), // 统统计算一遍,算出diff          k: k,          b: b        })      })    })    let result = {diff: Infinity}    diffs.forEach(d => {      if (d.diff < result.diff) {        result = d // 找出最小的diff      }    })    console.log(result.diff)    this.k = result.k    this.b = result.b  }}model.learn()console.log(model.k, model.b)console.log(model.y0Arr)console.log(model.xArr.map(x => model.getY(x, model.k, model.b)))

最初,求得

k = 5b = 80y0Arr = [131, 135, 139, 145]y1Arr = [130, 135, 140, 145]

来试试预测个14岁的身高

y = kx + by = 5 * 14 + 80y = 150

150cm很正当,这就是人工智能,带着从这里学到的常识,去开发人脸识别吧,呵呵

都看到这里了,给个赞好不好???