摘要:強化學(xué)習(xí)強化學(xué)習(xí)英語,簡稱是機器學(xué)習(xí)中的一個領(lǐng)域,強調(diào)如何基于環(huán)境而行動,以取得最大化的預(yù)期利益。在強化學(xué)習(xí)的領(lǐng)域中,學(xué)習(xí)自動機的特征是馬可夫決策過程。
強化學(xué)習(xí)
強化學(xué)習(xí)(英語:Reinforcement learning,簡稱RL)是機器學(xué)習(xí)中的一個領(lǐng)域,強調(diào)如何基于環(huán)境而行動,以取得最大化的預(yù)期利益。其靈感來源于心理學(xué)中的行為主義理論,即有機體如何在環(huán)境給予的獎勵或懲罰的刺激下,逐步形成對刺激的預(yù)期,產(chǎn)生能獲得最大利益的習(xí)慣性行為。這個方法具有普適性,因此在其他許多領(lǐng)域都有研究,例如博弈論、控制論、運籌學(xué)、信息論、仿真優(yōu)化、多主體系統(tǒng)學(xué)習(xí)、群體智能、統(tǒng)計學(xué)以及遺傳算法。在運籌學(xué)和控制理論研究的語境下,強化學(xué)習(xí)被稱作“近似動態(tài)規(guī)劃”(approximate dynamic programming,ADP)。在最優(yōu)控制理論中也有研究這個問題,雖然大部分的研究是關(guān)于最優(yōu)解的存在和特性,并非是學(xué)習(xí)或者近似方面。在經(jīng)濟學(xué)和博弈論中,強化學(xué)習(xí)被用來解釋在有限理性的條件下如何出現(xiàn)平衡。 在機器學(xué)習(xí)問題中,環(huán)境通常被規(guī)范為馬可夫決策過程(MDP),所以許多強化學(xué)習(xí)算法在這種情況下使用動態(tài)規(guī)劃技巧。傳統(tǒng)的技術(shù)和強化學(xué)習(xí)算法的主要區(qū)別是,后者不需要關(guān)于MDP的知識,而且針對無法找到確切方法的大規(guī)模MDP。 強化學(xué)習(xí)和標(biāo)準(zhǔn)的監(jiān)督式學(xué)習(xí)之間的區(qū)別在于,它并不需要出現(xiàn)正確的輸入/輸出對,也不需要精確校正次優(yōu)化的行為。強化學(xué)習(xí)更加專注于在線規(guī)劃,需要在探索(在未知的領(lǐng)域)和遵從(現(xiàn)有知識)之間找到平衡。強化學(xué)習(xí)中的“探索-遵從”的交換,在多臂老虎機問題和有限MDP中研究得最多。學(xué)習(xí)自動機
學(xué)習(xí)自動機是在一隨機環(huán)境下的適應(yīng)性決策產(chǎn)生單元,可以根據(jù)和環(huán)境重復(fù)的互動來學(xué)習(xí)最佳的動作。動作是依照特定的機率分布來決定,而系統(tǒng)會依采取特定行動后的環(huán)境反應(yīng)來更新機率分布。 在強化學(xué)習(xí)的領(lǐng)域中,學(xué)習(xí)自動機的特征是馬可夫決策過程。政策迭代者會直接處理π,這點其他強化學(xué)習(xí)的算法不同。另一個政策迭代者的例子是演化算法。鏈路預(yù)測
網(wǎng)絡(luò)中的鏈路預(yù)測(Link Prediction)是指如何通過已知的網(wǎng)絡(luò)節(jié)點以及網(wǎng)絡(luò)結(jié)構(gòu)等信息預(yù)測網(wǎng)絡(luò)中尚未產(chǎn)生連邊的兩個節(jié)點之間產(chǎn)生鏈接的可能性。這種預(yù)測既包含了對未知鏈接(exist yet unknown links)的預(yù)測也包含了對未來鏈接(future links)的預(yù)測。該問題的研究在理論和應(yīng)用兩個方面都具有重要的意義和價值。基于學(xué)習(xí)自動機的鏈路預(yù)測模型實現(xiàn)
import numpy as np
import time
from random import choice
import pandas as pd
import os
"""
def Cn(MatrixAdjacency):
Matrix_similarity = np.dot(MatrixAdjacency,MatrixAdjacency) return Matrix_similarity
"""
計算Jaccard相似性指標(biāo)def Jaccavrd(MatrixAdjacency_Train):
Matrix_similarity = np.dot(MatrixAdjacency_Train,MatrixAdjacency_Train) deg_row = sum(MatrixAdjacency_Train) deg_row.shape = (deg_row.shape[0],1) deg_row_T = deg_row.T tempdeg = deg_row + deg_row_T temp = tempdeg - Matrix_similarity Matrix_similarity = Matrix_similarity / temp return Matrix_similarity定義計算Salton指標(biāo)的方法
def Salton_Cal(MatrixAdjacency_Train):
similarity = np.dot(MatrixAdjacency_Train,MatrixAdjacency_Train) deg_row = sum(MatrixAdjacency_Train) deg_row.shape = (deg_row.shape[0],1) deg_row_T = deg_row.T tempdeg = np.dot(deg_row,deg_row_T) temp = np.sqrt(tempdeg) np.seterr(divide="ignore", invalid="ignore") Matrix_similarity = np.nan_to_num(similarity / temp)print np.isnan(Matrix_similarity) Matrix_similarity = np.nan_to_num(Matrix_similarity) print np.isnan(Matrix_similarity)
return Matrix_similarity定義計算Katz1指標(biāo)的方法
def Katz_Cal(MatrixAdjacency):
#α取值 Parameter = 0.01 Matrix_EYE = np.eye(MatrixAdjacency.shape[0]) Temp = Matrix_EYE - MatrixAdjacency * Parameter Matrix_similarity = np.linalg.inv(Temp) Matrix_similarity = Matrix_similarity - Matrix_EYE return Matrix_similarity定義計算局部路徑LP相似性指標(biāo)的方法
"""
def LP_Cal(MatrixAdjacency):
Matrix_similarity = np.dot(MatrixAdjacency,MatrixAdjacency) Parameter = 0.05 Matrix_LP = np.dot(np.dot(MatrixAdjacency,MatrixAdjacency),MatrixAdjacency) * Parameter Matrix_similarity = np.dot(Matrix_similarity,Matrix_LP) return Matrix_similarity
"""
計算資源分配(Resource Allocation)相似性指標(biāo)def RA(MatrixAdjacency_Train):
RA_Train = sum(MatrixAdjacency_Train) RA_Train.shape = (RA_Train.shape[0],1) MatrixAdjacency_Train_Log = MatrixAdjacency_Train / RA_Train MatrixAdjacency_Train_Log = np.nan_to_num(MatrixAdjacency_Train_Log) Matrix_similarity = np.dot(MatrixAdjacency_Train,MatrixAdjacency_Train_Log) return Matrix_similarity隨機環(huán)境一:針對活躍性的節(jié)點對
def RandomEnviromentForActive(MatrixAdjacency,i,j):
Index = np.random.randint(1, 5) print(Index) global IndexName if Index == 1: IndexName = "相似性指標(biāo)是:Jaccard Index" print(IndexName) similarity_matrix = Jaccavrd(MatrixAdjacency) similarity = similarity_matrix[i,j] elif Index == 2: IndexName = "相似性指標(biāo)是:Salton Index" print(IndexName) similarity_matrix = Salton_Cal(MatrixAdjacency) similarity = similarity_matrix[i,j] elif Index == 3: IndexName = "相似性指標(biāo)是:Katz Index" print(IndexName) similarity_matrix = Katz_Cal(MatrixAdjacency) similarity = similarity_matrix[i,j] else index == 4: IndexName = "相似性指標(biāo)是:RA Index" print(IndexName) similarity_matrix = RA(MatrixAdjacency) similarity = similarity_matrix[i,j] return similarity隨機環(huán)境二:主要針對非活躍性的節(jié)點對
def RandomEnviromentForNonActive():
Action = np.random.randint(1, 4) if Action == 1: ActionName = "ID3" similarity_matrix = ID3_Cal(MatrixAdjacency) #similarity = similarity_matrix[i,j] elif Action == 2: ActionName = "CART" similarity_matrix = Cart_Cal(MatrixAdjacency) #similarity = similarity_matrix[i,j] elif Action == 3: ActionName = "C4.5" similarity_matrix = C4_Cal(MatrixAdjacency) #similarity = similarity_matrix[i,j] return similarity構(gòu)建學(xué)習(xí)自動機(To Construct the agent)
def ContructionAgent(filepath,n1,n2):
f = open(filepath) lines = f.readlines() A = np.zeros((50, 50), dtype=float) A_row = 0 for line in lines: list = line.strip(" ").split(" ") A[A_row:] = list[0:50] A_row += 1 # 初始化p1和p2 a = 0.05 b = 0.01 p1 =0.5 p2 =0.5 Action = 1 # 在這里使用數(shù)字1代表選擇動作‘Yes’,用2代表動作‘No’ for i in range(1): # global Action # 相似性閾值(the threashhold_value of similarity) if (p1 >= p2): Action = 1 else: Action = 2 print("選擇的動作是:" + str(Action)) threshhold_value = 0.3 similarity = RandomEnviromentForActive(A, n1, n2) # p1表示動作1"Yes"被選擇的概率,p2表示動作2"No"被選擇的概率 # 前一次選擇的動作是‘Yes’,并且該動作得到了獎勵 if (similarity > threshhold_value) and (Action == 1): p1 = p1 + a * (1 - p1) p2 = 1-p1 # p2 = (1 - a) * p2 # 前一次選擇的動作是"No",并且該動作得到了獎勵 elif (similarity < threshhold_value) and (Action == 2): p2 = (1-a)*p2 p1 = 1-p2 # p1 = (1 - a) * p1 # 前一次選擇的動作是‘Yes’,但該動作得到了懲罰 elif (similarity < threshhold_value) and (Action == 1): p2 = 1-b*p2 p1 = 1-p2 #p2 = 1 - b * p2 # 前一次選擇的動作是‘No’,但該動作得到了懲罰 elif (similarity > threshhold_value) and (Action == 2): p1 = b + (1 - b) * (1 - p1) p2 = 1-p1 # p1 = 1 - b * p1 if (p1 >= p2): print("下一時刻選擇的動作是:Yes") else: print("下一時刻選擇的動作是:No") return p1, p2 import os
import pandas as pd
import numpy as np
path=r"../Data/itcmatrixs/36000/"
result = np.zeros((50, 50))
for i in os.walk(path):
#print(i) #print(type(i)) for m in range(50): for n in range(50): r = None for j in range(26): datapath = path+i[2][j] p1,p2 = ContructionAgent(datapath,m,n) r = int(p1>=p2) result[m,n] = r;
r.save("result.npy")
pass
有需要源碼和數(shù)據(jù)集的請發(fā)送信息到[email protected],感謝您的關(guān)注。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/43450.html
摘要:百度網(wǎng)盤提取碼最近一直關(guān)注貪心學(xué)院的機器學(xué)習(xí)訓(xùn)練營,發(fā)現(xiàn)這門課講的很有深度,不僅適合職場也適合科研人員,加入行業(yè)拿到高薪僅僅是職業(yè)生涯的開始。 ??百度網(wǎng)盤??提取碼:u6C4最近一直關(guān)注貪心學(xué)院的機器學(xué)習(xí)訓(xùn)練營,發(fā)現(xiàn)這門課講的很有深度,不僅適合職場也適合科研人員,加入AI行業(yè)拿到高薪僅僅是職業(yè)生涯的開始?,F(xiàn)階段AI人才結(jié)...
摘要:文本谷歌神經(jīng)機器翻譯去年,谷歌宣布上線的新模型,并詳細(xì)介紹了所使用的網(wǎng)絡(luò)架構(gòu)循環(huán)神經(jīng)網(wǎng)絡(luò)。目前唇讀的準(zhǔn)確度已經(jīng)超過了人類。在該技術(shù)的發(fā)展過程中,谷歌還給出了新的,它包含了大量的復(fù)雜案例。谷歌收集該數(shù)據(jù)集的目的是教神經(jīng)網(wǎng)絡(luò)畫畫。 1. 文本1.1 谷歌神經(jīng)機器翻譯去年,谷歌宣布上線 Google Translate 的新模型,并詳細(xì)介紹了所使用的網(wǎng)絡(luò)架構(gòu)——循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)。關(guān)鍵結(jié)果:與...
閱讀 1675·2021-10-13 09:39
閱讀 2109·2021-09-07 10:20
閱讀 2691·2019-08-30 15:56
閱讀 2958·2019-08-30 15:56
閱讀 939·2019-08-30 15:55
閱讀 638·2019-08-30 15:46
閱讀 3504·2019-08-30 15:44
閱讀 2563·2019-08-30 11:15