自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

機器學習中的“學習”到底是個啥?

人工智能 機器學習
將機器學習視為一種編程范式,有助于我們更好地理解其核心價值和潛力。它不僅僅是一系列算法和技術(shù)的集合,更是一種全新的思考和解決問題的方式。這種思維方式的創(chuàng)新為解決復(fù)雜問題提供了新的可能性,并且正在不斷推動科技和社會的進步。

人工智能的發(fā)展經(jīng)歷了數(shù)次高潮和低谷,以2016年AlphaGo對戰(zhàn)圍棋大師李世石為標志性事件,再一次將人工智能推上一波全新的高潮。這一波AI高峰是一種稱為深度學習的技術(shù)推動而來的,深度學習是機器學習的一個子集,它幾乎影響了每一個領(lǐng)域和每一個人,那么機器學習中的學習到底是什么呢?

我剛開始了解到這個詞的時候,直覺是機器學習和人類學習是類似的,機器竟然已經(jīng)強大到可以像人類一樣學習了,向來不自信的我就覺得這哪是我能學會的技術(shù)呢!可以說機器學習這個術(shù)語嚇住了我,讓我不敢嘗試去進一步學習它的技術(shù)原理,直到很久以后才慢慢對它有了了解。因此我個人是不太喜歡這個詞的,不知道是不是有人和我同樣的原因放棄或延緩了進一步學習AI的知識。剛好最近學習《深度學習與圍棋》第10章發(fā)現(xiàn)有一個簡單的例子非常適合直觀展示到底什么是機器學習中的學習,大家來體會體會。

策略學習與演示

這個例子演示如何讓一個程序不斷進行策略學習來贏得一個叫做“加加加”的游戲,其實就是個數(shù)字游戲,下面是它的游戲規(guī)則:

  • 每一回合每人選擇一個1~5的數(shù)字;
  • 在100回合后,每個人將他們所選擇的數(shù)字加起來;
  • 總和最高的人獲勝。

很顯然,每個回合選擇數(shù)字5就是最佳策略,書中之所以選擇這么簡單的游戲,就是為方便展示策略學習,觀察程序如何逐步學習到這個最佳的策略的。

首先,下面的python代碼用來模擬一局“加加加”游戲,傳入的參數(shù)policy是選擇各個數(shù)字的概率列表,返回值為100回合后勝者和負者所選擇的數(shù)字次數(shù)統(tǒng)計。

import numpy as np
   
def simulate_game(policy):
    """
    模擬加加加游戲,游戲介紹:
    1. 兩個玩家每一回合每人選擇一個1~5的數(shù)字;
    2. 在100回合之后,每個人將他們選擇的數(shù)字加起來;
    3. 總和最高的人獲勝。
    
    返回值:(勝者的選擇,負者的選擇)
    """
    # 記錄玩家選擇數(shù)字1~5的次數(shù)
    player_1_choices = {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}
    # 記錄玩家選擇數(shù)字的總數(shù)
    player_1_total = 0
    player_2_choices = {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}
    player_2_total = 0


    # 運行100回合
    for i in range(100):
        # 按照policy指定的概率選擇1~5中的數(shù)字
        player_1_choice = np.random.choice([1, 2, 3, 4, 5], p=policy)
        player_1_choices[player_1_choice] += 1
        player_1_total += player_1_choice


        player_2_choice = np.random.choice([1, 2, 3, 4, 5], p=policy)
        player_2_choices[player_2_choice] += 1
        player_2_total += player_2_choice
    
    if player_1_total > player_2_total:
        winner_choices = player_1_choices
        loser_choices = player_2_choices
    else:
        winner_choices = player_2_choices
        loser_choices = player_1_choices
    return (winner_choices, loser_choices)

接下來就持續(xù)模擬游戲,初始策略是所有的數(shù)字選擇概率都是相同的,為20%,每模擬一局游戲,就將勝利者選擇數(shù)字的概率增加一點,而失敗者選擇數(shù)字的概率減少一點,這個更新選擇數(shù)字概率的過程就是“學習”。下面的代碼模擬了3000局游戲,并將策略的變化繪制成了曲線。

# 歸一化處理選擇策略
def normalize(policy):
    # <0的變?yōu)?,大于1的變?yōu)?,將所有的policy的值限制在0-1范圍內(nèi)
    policy = np.clip(policy, 0, 1)
    # 歸一化處理,使得所有概率的總和為1
    return policy / np.sum(policy)


# 要選擇的數(shù)字列表
choices = [1, 2, 3, 4, 5]
# 初始選擇數(shù)字的策略,每個數(shù)字的選擇概率都是20%
policy = np.array([0.2, 0.2, 0.2, 0.2, 0.2])
# 學習率,主要是為了控制策略變化的快慢
learning_rate = 0.0001
# 模擬游戲的局數(shù)
num_games = 3000
result = []
# 模擬多局游戲
for i in range(num_games):
  # 模擬一局游戲(100個回合)
  win_counts, lose_counts = simulate_game(policy)
  # 遍歷每一個要選擇的數(shù)字
  for j, choice in enumerate(choices):
    # 計算本局勝利者選擇數(shù)字的次數(shù)-失敗者選擇此數(shù)字的次數(shù),表示勝者和負者的偏差
    net_wins = win_counts[choice] - lose_counts[choice]
    # 將選擇此數(shù)字的概率根據(jù)偏差*學習率增加或減少
    # 為負表明勝者傾向于少選擇此數(shù)字,為正表明勝者傾向于多選擇此數(shù)字
    # ===注意這里就是在進行策略的學習===
    policy[j] += learning_rate * net_wins
  # 概率歸一化處置
  policy = normalize(policy)
  # 記錄局數(shù)、更新后的策略值
  result.append((i, policy))
  print(f"{i}: {policy}")
  
# 繪制策略的變化變化曲線
x = [i[0] for i in result]
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 設(shè)置中文字體為黑體
plt.rcParams['axes.unicode_minus'] = False  # 正確顯示負號
for i in range(5):
  plt.plot(x, [c[1][i] for c in result], label=f"選擇數(shù)字{i + 1}的概率")
plt.grid(True)
plt.legend(loc="right")
plt.title("加加加游戲策略變化曲線")
plt.show()

下圖就是3000局游戲中選擇數(shù)字策略的變化曲線,從圖中可以看出大概2000局之后,程序就學到了最佳策略,即每次都選擇數(shù)字5,也就是說程序自主學會了怎么在“加加加”游戲中獲勝。深度學習要比這個例子復(fù)雜的多,但是機器學習的本質(zhì)都是一樣的,都是通過某些手段去調(diào)節(jié)參數(shù)以達到解決問題的目的。

圖片圖片

機器學習:一種創(chuàng)新的編程范式

在傳統(tǒng)的編程實踐中,我們通過精心設(shè)計的算法和邏輯來直接解決問題。這種方式要求程序員對問題有深入的理解,并且能夠?qū)⒔鉀Q方案明確地編碼到程序中。然而,機器學習提供了一種全新的視角,它不是直接針對問題本身,而是將問題轉(zhuǎn)化為數(shù)學模型,然后利用數(shù)據(jù)來訓練模型,使其能夠自動學習和找到解決問題的方法。

這種范式轉(zhuǎn)變帶來了幾個關(guān)鍵的思維創(chuàng)新:

  • 抽象和泛化:機器學習將具體問題抽象為數(shù)學模型,這使得模型能夠在不同情境下泛化,解決更廣泛的問題。
  • 數(shù)據(jù)驅(qū)動的決策:在機器學習中,決策過程是基于數(shù)據(jù)的,模型通過分析大量數(shù)據(jù)來學習如何做出預(yù)測或決策。
  • 自動化的特征工程:傳統(tǒng)編程中,特征提取和工程通常需要領(lǐng)域?qū)<业纳钊雲(yún)⑴c。機器學習,尤其是深度學習,能夠自動從原始數(shù)據(jù)中學習特征,減少了對專家知識的依賴。
  • 迭代和自適應(yīng):機器學習模型可以通過迭代訓練過程不斷優(yōu)化,它們能夠適應(yīng)新的數(shù)據(jù)和變化的環(huán)境。
  • 跨領(lǐng)域的應(yīng)用:機器學習的方法論可以應(yīng)用于各種領(lǐng)域,從圖像識別到自然語言處理,從醫(yī)療診斷到股票市場分析,其應(yīng)用范圍廣泛。

將機器學習視為一種編程范式,有助于我們更好地理解其核心價值和潛力。它不僅僅是一系列算法和技術(shù)的集合,更是一種全新的思考和解決問題的方式。這種思維方式的創(chuàng)新為解決復(fù)雜問題提供了新的可能性,并且正在不斷推動科技和社會的進步。

責任編輯:武曉燕 來源: 一點鑫得
相關(guān)推薦

2024-02-26 00:00:00

人工智能序列數(shù)據(jù)機器人

2022-04-10 19:26:07

TypeScript類型語法

2024-07-12 15:08:23

Python@wraps函數(shù)

2024-02-07 12:35:00

React并發(fā)模式concurrent

2021-05-11 07:30:58

JNIJavaAPI

2022-05-04 08:38:32

Netty網(wǎng)絡(luò)框架

2021-01-28 17:41:32

Github網(wǎng)站Pull Reques

2022-03-28 13:14:19

機器學習深度學習

2022-09-06 21:38:45

數(shù)字人數(shù)字孿生

2021-12-16 15:11:59

Facebook天秤幣加密貨幣

2024-08-01 17:34:56

Promiseaxios請求

2021-12-26 00:01:51

Log4Shell漏洞服務(wù)器

2012-07-25 09:09:46

GNOME OS桌面

2021-02-01 06:41:47

流水線計算機隊列

2020-03-07 09:47:48

AVL樹算法場景

2024-02-01 20:15:37

2013-05-29 10:17:56

Hadoop分布式文件系統(tǒng)

2021-12-16 21:13:38

通信網(wǎng)管平臺

2022-02-16 20:04:08

容器KubernetesShim

2020-10-25 20:05:29

Pythonyield開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號