ಸ್ಕೆಚ್ನೋಟ್: ಟೊಮೊಮಿ ಇಮುರಾ
ಬಲವರ್ಧಿತ ಅಧ್ಯಯನವು ಮೂರು ಪ್ರಮುಖ ಕಲ್ಪನೆಗಳನ್ನು ಒಳಗೊಂಡಿದೆ: ಏಜೆಂಟ್, ಕೆಲವು ಸ್ಥಿತಿಗಳು ಮತ್ತು ಪ್ರತಿ ಸ್ಥಿತಿಗೆ ಕ್ರಿಯೆಗಳ ಒಂದು ಸೆಟ್. ನಿರ್ದಿಷ್ಟ ಸ್ಥಿತಿಯಲ್ಲಿ ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸುವ ಮೂಲಕ, ಏಜೆಂಟ್ಗೆ ಬಹುಮಾನ ನೀಡಲಾಗುತ್ತದೆ. ಮತ್ತೆ ಕಂಪ್ಯೂಟರ್ ಆಟ ಸೂಪರ್ ಮಾರಿಯೋವನ್ನು ಕಲ್ಪಿಸಿ. ನೀವು ಮಾರಿಯೋ, ನೀವು ಆಟದ ಮಟ್ಟದಲ್ಲಿ ಇದ್ದೀರಿ, ಒಂದು ಹಿಮ್ಮುಖದ ಬದಿಯ ಬಳಿ ನಿಂತಿದ್ದೀರಿ. ನಿಮ್ಮ ಮೇಲಿರುವುದು ನಾಣ್ಯ. ನೀವು ಮಾರಿಯೋ ಆಗಿದ್ದೀರಿ, ಆಟದ ಮಟ್ಟದಲ್ಲಿ, ನಿರ್ದಿಷ್ಟ ಸ್ಥಾನದಲ್ಲಿ ... ಅದು ನಿಮ್ಮ ಸ್ಥಿತಿ. ಬಲಕ್ಕೆ ಒಂದು ಹೆಜ್ಜೆ ಸಾಗುವುದು (ಒಂದು ಕ್ರಿಯೆ) ನಿಮ್ಮನ್ನು ಬದಿಯ ಮೇಲೆ ಕಳುಹಿಸುತ್ತದೆ, ಮತ್ತು ಅದರಿಂದ ನಿಮಗೆ ಕಡಿಮೆ ಸಂಖ್ಯಾತ್ಮಕ ಅಂಕ ಸಿಗುತ್ತದೆ. ಆದರೆ, ಜಂಪ್ ಬಟನ್ ಒತ್ತಿದರೆ ನೀವು ಒಂದು ಅಂಕ ಪಡೆಯುತ್ತೀರಿ ಮತ್ತು ಜೀವಂತವಾಗಿರುತ್ತೀರಿ. ಅದು ಧನಾತ್ಮಕ ಫಲಿತಾಂಶ ಮತ್ತು ಅದಕ್ಕೆ ಧನಾತ್ಮಕ ಸಂಖ್ಯಾತ್ಮಕ ಅಂಕ ನೀಡಬೇಕು.
ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ ಮತ್ತು ಸಿಮ್ಯುಲೇಟರ್ (ಆಟ) ಬಳಸಿ, ನೀವು ಆಟವನ್ನು ಹೇಗೆ ಆಡಬೇಕು ಎಂದು ಕಲಿಯಬಹುದು, ಬಹುಮಾನವನ್ನು ಗರಿಷ್ಠಗೊಳಿಸುವುದು ಎಂದರೆ ಜೀವಂತವಾಗಿದ್ದು ಸಾಧ್ಯವಾದಷ್ಟು ಅಂಕಗಳನ್ನು ಪಡೆಯುವುದು.
🎥 ಮೇಲಿನ ಚಿತ್ರವನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ ಡ್ಮಿಟ್ರಿ ಬಲವರ್ಧಿತ ಅಧ್ಯಯನವನ್ನು ಚರ್ಚಿಸುವುದನ್ನು ಕೇಳಿ
ಈ ಪಾಠದಲ್ಲಿ, ನಾವು ಪೈಥಾನ್ನಲ್ಲಿ ಕೆಲವು ಕೋಡ್ಗಳೊಂದಿಗೆ ಪ್ರಯೋಗ ಮಾಡಲಿದ್ದೇವೆ. ನೀವು ಈ ಪಾಠದ ಜುಪಿಟರ್ ನೋಟ್ಬುಕ್ ಕೋಡ್ ಅನ್ನು ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ನಲ್ಲಿ ಅಥವಾ ಕ್ಲೌಡ್ನಲ್ಲಿ ಎಲ್ಲಿ ಬೇಕಾದರೂ ಚಾಲನೆ ಮಾಡಬಲ್ಲಿರಿ.
ನೀವು ಪಾಠ ನೋಟ್ಬುಕ್ ತೆರೆಯಬಹುದು ಮತ್ತು ಈ ಪಾಠವನ್ನು ಅನುಸರಿಸಬಹುದು.
ಗಮನಿಸಿ: ನೀವು ಈ ಕೋಡ್ ಅನ್ನು ಕ್ಲೌಡ್ನಿಂದ ತೆರೆಯುತ್ತಿದ್ದರೆ, ನೀವು
rlboard.pyಫೈಲ್ ಅನ್ನು ಕೂಡ ಪಡೆಯಬೇಕು, ಇದು ನೋಟ್ಬುಕ್ ಕೋಡ್ನಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ. ಅದನ್ನು ನೋಟ್ಬುಕ್ ಇರುವ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಸೇರಿಸಿ.
ಈ ಪಾಠದಲ್ಲಿ, ನಾವು ರಷ್ಯನ್ ಸಂಗೀತ ರಚಯಿತೃ ಸೆರ್ಗೇ ಪ್ರೊಕೊಫಿಯೆವ್ ಅವರ ಸಂಗೀತ ಕಥೆಯ ಪ್ರೇರಣೆಯಿಂದ ಪೀಟರ್ ಮತ್ತು ವೋಲ್ಫ್ ಜಗತ್ತನ್ನು ಅನ್ವೇಷಿಸುವೆವು. ನಾವು ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ ಬಳಸಿ ಪೀಟರ್ ತನ್ನ ಪರಿಸರವನ್ನು ಅನ್ವೇಷಿಸಿ, ರುಚಿಕರ ಆಪಲ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸಿ ಮತ್ತು ನರಿ ಭೇಟಿಯಾಗುವುದನ್ನು ತಪ್ಪಿಸುವಂತೆ ಮಾಡುತ್ತೇವೆ.
ಬಲವರ್ಧಿತ ಅಧ್ಯಯನ (RL) ಒಂದು ಅಧ್ಯಯನ ತಂತ್ರಜ್ಞಾನ, ಇದು ನಮಗೆ ಒಂದು ಪರಿಸರದಲ್ಲಿ ಏಜೆಂಟ್ನ ಅತ್ಯುತ್ತಮ ವರ್ತನೆಯನ್ನು ಅನೇಕ ಪ್ರಯೋಗಗಳನ್ನು ನಡೆಸಿ ಕಲಿಯಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಈ ಪರಿಸರದಲ್ಲಿ ಏಜೆಂಟ್ಗೆ ಕೆಲವು ಗುರಿ ಇರಬೇಕು, ಅದು ಬಹುಮಾನ ಕಾರ್ಯ ಮೂಲಕ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗುತ್ತದೆ.
ಸರಳತೆಗೆ, ಪೀಟರ್ನ ಜಗತ್ತನ್ನು width x height ಗಾತ್ರದ ಚದರ ಫಲಕ ಎಂದು ಪರಿಗಣಿಸೋಣ, ಹೀಗೆ:
ಈ ಫಲಕದ ಪ್ರತಿ ಸೆಲ್ ಇವುಗಳಲ್ಲಿ ಒಂದಾಗಿರಬಹುದು:
- ಭೂಮಿ, ಇದರಲ್ಲಿ ಪೀಟರ್ ಮತ್ತು ಇತರ ಜೀವಿಗಳು ನಡೆಯಬಹುದು.
- ನೀರು, ಇದರಲ್ಲಿ ನೀವು ಸ್ಪಷ್ಟವಾಗಿ ನಡೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ.
- ಮರ ಅಥವಾ ಹುಲ್ಲು, ವಿಶ್ರಾಂತಿ ಪಡೆಯಲು ಸ್ಥಳ.
- ಆಪಲ್, ಇದು ಪೀಟರ್ ತನ್ನ ಆಹಾರಕ್ಕಾಗಿ ಹುಡುಕಲು ಇಚ್ಛಿಸುವ ವಸ್ತು.
- ನರಿ, ಇದು ಅಪಾಯಕಾರಿಯಾಗಿದ್ದು ತಪ್ಪಿಸಿಕೊಳ್ಳಬೇಕು.
ಈ ಪರಿಸರದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು Python ನಲ್ಲಿ ಪ್ರತ್ಯೇಕ ಮಾಯಾಜಾಲ rlboard.py ಇದೆ. ಈ ಕೋಡ್ ನಮ್ಮ ಕಲ್ಪನೆಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮುಖ್ಯವಲ್ಲದ ಕಾರಣ, ನಾವು ಈ ಮಾಯಾಜಾಲವನ್ನು ಆಮದುಮಾಡಿ ಮಾದರಿ ಫಲಕವನ್ನು ರಚಿಸಲು ಬಳಸುತ್ತೇವೆ (ಕೋಡ್ ಬ್ಲಾಕ್ 1):
from rlboard import *
width, height = 8,8
m = Board(width,height)
m.randomize(seed=13)
m.plot()ಈ ಕೋಡ್ ಮೇಲಿನ ಪರಿಸರದ ಚಿತ್ರವನ್ನು ಮುದ್ರಣ ಮಾಡಬೇಕು.
ನಮ್ಮ ಉದಾಹರಣೆಯಲ್ಲಿ, ಪೀಟರ್ನ ಗುರಿ ಆಪಲ್ ಹುಡುಕುವುದು, ನರಿ ಮತ್ತು ಇತರ ಅಡ್ಡಿ ಅಡ್ಡಿಗಳನ್ನು ತಪ್ಪಿಸುವುದು. ಇದಕ್ಕಾಗಿ, ಅವನು ಸುತ್ತಾಡಿ ಆಪಲ್ ಕಂಡುಹಿಡಿಯಬಹುದು.
ಆದ್ದರಿಂದ, ಯಾವುದೇ ಸ್ಥಾನದಲ್ಲಿ ಅವನು ಕೆಳಗಿನ ಕ್ರಿಯೆಗಳೊಂದನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು: ಮೇಲಕ್ಕೆ, ಕೆಳಗೆ, ಎಡಕ್ಕೆ ಮತ್ತು ಬಲಕ್ಕೆ.
ನಾವು ಆ ಕ್ರಿಯೆಗಳನ್ನು ಡಿಕ್ಷನರಿಯಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಿ, ಅವುಗಳನ್ನು ಸಂಬಂಧಿತ ಸಂಯೋಜನೆ ಬದಲಾವಣೆಗಳ ಜೋಡಿಗೆ ನಕ್ಷೆ ಮಾಡುತ್ತೇವೆ. ಉದಾಹರಣೆಗೆ, ಬಲಕ್ಕೆ ಸಾಗುವುದು (R) ಜೋಡಿ (1,0)ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ. (ಕೋಡ್ ಬ್ಲಾಕ್ 2):
actions = { "U" : (0,-1), "D" : (0,1), "L" : (-1,0), "R" : (1,0) }
action_idx = { a : i for i,a in enumerate(actions.keys()) }ಸಾರಾಂಶವಾಗಿ, ಈ ದೃಶ್ಯದ ತಂತ್ರ ಮತ್ತು ಗುರಿ ಹೀಗಿವೆ:
-
ತಂತ್ರ, ನಮ್ಮ ಏಜೆಂಟ್ (ಪೀಟರ್) ಗೆ ಸಂಬಂಧಿಸಿದಂತೆ, ಅದನ್ನು ನೀತಿ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ನೀತಿ ಎಂದರೆ ಯಾವುದೇ ಸ್ಥಿತಿಯಲ್ಲಿ ಕ್ರಿಯೆಯನ್ನು ನೀಡುವ ಕಾರ್ಯ. ನಮ್ಮಲ್ಲಿ, ಸಮಸ್ಯೆಯ ಸ್ಥಿತಿ ಫಲಕದಿಂದ ಮತ್ತು ಆಟಗಾರನ ಪ್ರಸ್ತುತ ಸ್ಥಾನದಿಂದ ಪ್ರತಿನಿಧಿಸಲಾಗಿದೆ.
-
ಗುರಿ, ಬಲವರ್ಧಿತ ಅಧ್ಯಯನದ ಗುರಿ ಉತ್ತಮ ನೀತಿಯನ್ನು ಕಲಿಯುವುದು, ಇದು ಸಮಸ್ಯೆಯನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಪರಿಹರಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಮೂಲಭೂತವಾಗಿ, ನಾವು ಸರಳ ನೀತಿ ಎಂದರೆ ಯಾದೃಚ್ಛಿಕ ನಡೆ ಅನ್ನು ಪರಿಗಣಿಸೋಣ.
ಮೊದಲು, ನಾವು ಯಾದೃಚ್ಛಿಕ ನಡೆ ತಂತ್ರವನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಿ ನಮ್ಮ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸೋಣ. ಯಾದೃಚ್ಛಿಕ ನಡೆ ಮೂಲಕ, ನಾವು ಅನುಮತಿಸಲಾದ ಕ್ರಿಯೆಗಳಲ್ಲಿಂದ ಯಾದೃಚ್ಛಿಕವಾಗಿ ಮುಂದಿನ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತೇವೆ, ಆಪಲ್ ತಲುಪುವವರೆಗೆ (ಕೋಡ್ ಬ್ಲಾಕ್ 3).
-
ಕೆಳಗಿನ ಕೋಡ್ ಬಳಸಿ ಯಾದೃಚ್ಛಿಕ ನಡೆ ಅನುಷ್ಠಾನಗೊಳಿಸಿ:
def random_policy(m): return random.choice(list(actions)) def walk(m,policy,start_position=None): n = 0 # ಹೆಜ್ಜೆಗಳ ಸಂಖ್ಯೆ # ಪ್ರಾರಂಭಿಕ ಸ್ಥಾನವನ್ನು ಹೊಂದಿಸಿ if start_position: m.human = start_position else: m.random_start() while True: if m.at() == Board.Cell.apple: return n # ಯಶಸ್ಸು! if m.at() in [Board.Cell.wolf, Board.Cell.water]: return -1 # ನರಿ ತಿಂದ ಅಥವಾ ಮುಳುಗಿದ while True: a = actions[policy(m)] new_pos = m.move_pos(m.human,a) if m.is_valid(new_pos) and m.at(new_pos)!=Board.Cell.water: m.move(a) # ನಿಜವಾದ ಚಲನೆ ಮಾಡಿ break n+=1 walk(m,random_policy)
walkಕರೆ ಸಂಬಂಧಿತ ಮಾರ್ಗದ ಉದ್ದವನ್ನು ಹಿಂತಿರುಗಿಸಬೇಕು, ಇದು ಪ್ರತಿ ಓಟದಲ್ಲಿ ಬದಲಾಗಬಹುದು. -
ಯಾದೃಚ್ಛಿಕ ನಡೆ ಪ್ರಯೋಗವನ್ನು ಹಲವಾರು ಬಾರಿ (ಹೇಳಿ, 100) ನಡೆಸಿ, ಫಲಿತಾಂಶದ ಅಂಕಿಅಂಶಗಳನ್ನು ಮುದ್ರಿಸಿ (ಕೋಡ್ ಬ್ಲಾಕ್ 4):
def print_statistics(policy): s,w,n = 0,0,0 for _ in range(100): z = walk(m,policy) if z<0: w+=1 else: s += z n += 1 print(f"Average path length = {s/n}, eaten by wolf: {w} times") print_statistics(random_policy)
ಗಮನಿಸಿ, ಮಾರ್ಗದ ಸರಾಸರಿ ಉದ್ದವು ಸುಮಾರು 30-40 ಹೆಜ್ಜೆಗಳಷ್ಟಿದೆ, ಇದು ಬಹಳಷ್ಟು, ಏಕೆಂದರೆ ಸಮೀಪದ ಆಪಲ್ಗೆ ಸರಾಸರಿ ದೂರವು ಸುಮಾರು 5-6 ಹೆಜ್ಜೆಗಳಷ್ಟಿದೆ.
ನೀವು ಪೀಟರ್ನ ಚಲನವಲನವನ್ನು ಯಾದೃಚ್ಛಿಕ ನಡೆ ಸಮಯದಲ್ಲಿ ಹೇಗಿದೆ ಎಂದು ಕೂಡ ನೋಡಬಹುದು:
ನಮ್ಮ ನೀತಿಯನ್ನು ಹೆಚ್ಚು ಬುದ್ಧಿವಂತಿಕೆಯಿಂದ ಮಾಡಲು, ಯಾವ ಚಲನೆಗಳು "ಮೇಲ್ಮಟ್ಟ" ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು. ಇದಕ್ಕಾಗಿ, ನಾವು ನಮ್ಮ ಗುರಿಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಬೇಕು.
ಗುರಿಯನ್ನು ಬಹುಮಾನ ಕಾರ್ಯ ಮೂಲಕ ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು, ಇದು ಪ್ರತಿ ಸ್ಥಿತಿಗೆ ಕೆಲವು ಅಂಕ ಮೌಲ್ಯವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಸಂಖ್ಯೆ ಹೆಚ್ಚು ಇದ್ದರೆ, ಬಹುಮಾನ ಕಾರ್ಯ ಉತ್ತಮ. (ಕೋಡ್ ಬ್ಲಾಕ್ 5)
move_reward = -0.1
goal_reward = 10
end_reward = -10
def reward(m,pos=None):
pos = pos or m.human
if not m.is_valid(pos):
return end_reward
x = m.at(pos)
if x==Board.Cell.water or x == Board.Cell.wolf:
return end_reward
if x==Board.Cell.apple:
return goal_reward
return move_rewardಬಹುಮಾನ ಕಾರ್ಯಗಳ ಬಗ್ಗೆ ಆಸಕ್ತಿದಾಯಕ ವಿಷಯವೆಂದರೆ, ಬಹುತೇಕ ಸಂದರ್ಭಗಳಲ್ಲಿ, ನಾವು ಆಟದ ಕೊನೆಯಲ್ಲಿ ಮಾತ್ರ ಮಹತ್ವದ ಬಹುಮಾನವನ್ನು ಪಡೆಯುತ್ತೇವೆ. ಇದರರ್ಥ ನಮ್ಮ ಅಲ್ಗೋರಿದಮ್ "ಚೆನ್ನಾದ" ಹೆಜ್ಜೆಗಳನ್ನು ನೆನಪಿಡಬೇಕು, ಅವು ಕೊನೆಯಲ್ಲಿ ಧನಾತ್ಮಕ ಬಹುಮಾನಕ್ಕೆ ಕಾರಣವಾಗುತ್ತವೆ ಮತ್ತು ಅವುಗಳ ಮಹತ್ವವನ್ನು ಹೆಚ್ಚಿಸಬೇಕು. ಹಾಗೆಯೇ, ಕೆಟ್ಟ ಫಲಿತಾಂಶಗಳಿಗೆ ಕಾರಣವಾಗುವ ಎಲ್ಲಾ ಚಲನೆಯನ್ನು ತಡೆಯಬೇಕು.
ನಾವು ಇಲ್ಲಿ ಚರ್ಚಿಸುವ ಅಲ್ಗೋರಿದಮ್ ಅನ್ನು ಕ್ಯೂ-ಅಧ್ಯಯನ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಈ ಅಲ್ಗೋರಿದಮ್ನಲ್ಲಿ, ನೀತಿ ಒಂದು ಕಾರ್ಯ (ಅಥವಾ ಡೇಟಾ ರಚನೆ) ಮೂಲಕ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗುತ್ತದೆ, ಅದನ್ನು ಕ್ಯೂ-ಟೇಬಲ್ ಎಂದು ಕರೆಯುತ್ತಾರೆ. ಇದು ನೀಡಲಾದ ಸ್ಥಿತಿಯಲ್ಲಿ ಪ್ರತಿ ಕ್ರಿಯೆಯ "ಚೆನ್ನಾಗಿರುವಿಕೆ" ಅನ್ನು ದಾಖಲಿಸುತ್ತದೆ.
ಇದನ್ನು ಕ್ಯೂ-ಟೇಬಲ್ ಎಂದು ಕರೆಯುತ್ತಾರೆ ಏಕೆಂದರೆ ಅದನ್ನು ಟೇಬಲ್ ಅಥವಾ ಬಹು-ಮಾನದ ಅರೇ ಆಗಿ ಪ್ರತಿನಿಧಿಸುವುದು ಅನುಕೂಲಕರ. ನಮ್ಮ ಫಲಕವು width x height ಆಯಾಮಗಳಿದ್ದು, ನಾವು ಕ್ಯೂ-ಟೇಬಲ್ ಅನ್ನು numpy ಅರೇ ಆಗಿ width x height x len(actions) ಆಕಾರದಲ್ಲಿ ಪ್ರತಿನಿಧಿಸಬಹುದು: (ಕೋಡ್ ಬ್ಲಾಕ್ 6)
Q = np.ones((width,height,len(actions)),dtype=np.float)*1.0/len(actions)ನಾವು ಕ್ಯೂ-ಟೇಬಲ್ನ ಎಲ್ಲಾ ಮೌಲ್ಯಗಳನ್ನು ಸಮಾನ ಮೌಲ್ಯದಿಂದ ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ, ನಮ್ಮಲ್ಲಿ - 0.25. ಇದು "ಯಾದೃಚ್ಛಿಕ ನಡೆ" ನೀತಿಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ, ಏಕೆಂದರೆ ಪ್ರತಿ ಸ್ಥಿತಿಯಲ್ಲಿ ಎಲ್ಲಾ ಚಲನೆಗಳು ಸಮಾನವಾಗಿ ಉತ್ತಮ. ನಾವು plot ಕಾರ್ಯಕ್ಕೆ ಕ್ಯೂ-ಟೇಬಲ್ ಅನ್ನು ಪಾಸ್ ಮಾಡಿ ಫಲಕದಲ್ಲಿ ಟೇಬಲ್ ಅನ್ನು ದೃಶ್ಯೀಕರಿಸಬಹುದು: m.plot(Q).
ಪ್ರತಿ ಸೆಲ್ನ ಮಧ್ಯದಲ್ಲಿ ಚಲನೆಯ ಇಚ್ಛಿತ ದಿಕ್ಕನ್ನು ಸೂಚಿಸುವ "ಬಾಣ" ಇದೆ. ಎಲ್ಲಾ ದಿಕ್ಕುಗಳು ಸಮಾನವಾಗಿರುವುದರಿಂದ, ಬಿಂದು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ.
ಈಗ ನಾವು ಸಿಮ್ಯುಲೇಶನ್ ನಡೆಸಿ, ನಮ್ಮ ಪರಿಸರವನ್ನು ಅನ್ವೇಷಿಸಿ, ಮತ್ತು ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯಗಳ ಉತ್ತಮ ವಿತರಣೆ ಕಲಿಯಬೇಕು, ಇದು ಆಪಲ್ಗೆ ದಾರಿಯನ್ನು ಹೆಚ್ಚು ವೇಗವಾಗಿ ಕಂಡುಹಿಡಿಯಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
ನಾವು ಚಲಿಸಲು ಪ್ರಾರಂಭಿಸಿದಾಗ, ಪ್ರತಿ ಕ್ರಿಯೆಗೆ ಸಂಬಂಧಿಸಿದ ಬಹುಮಾನ ಇರುತ್ತದೆ, ಅಂದರೆ ನಾವು ತಕ್ಷಣದ ಬಹುಮಾನ ಆಧರಿಸಿ ಮುಂದಿನ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು. ಆದರೆ, ಬಹುತೇಕ ಸ್ಥಿತಿಗಳಲ್ಲಿ, ಚಲನೆ ನಮ್ಮ ಗುರಿ ಆಪಲ್ ತಲುಪುವುದನ್ನು ಸಾಧಿಸುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ಯಾವ ದಿಕ್ಕು ಉತ್ತಮ ಎಂದು ತಕ್ಷಣ ನಿರ್ಧರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.
ತಕ್ಷಣದ ಫಲಿತಾಂಶವೇ ಮುಖ್ಯವಲ್ಲ, ಆದರೆ ಸಿಮ್ಯುಲೇಶನ್ ಕೊನೆಯಲ್ಲಿ ಪಡೆಯುವ ಅಂತಿಮ ಫಲಿತಾಂಶವೇ ಮುಖ್ಯ.
ಈ ವಿಳಂಬಿತ ಬಹುಮಾನವನ್ನು ಪರಿಗಣಿಸಲು, ನಾವು ಡೈನಾಮಿಕ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ತತ್ವಗಳನ್ನು ಬಳಸಬೇಕು, ಇದು ನಮ್ಮ ಸಮಸ್ಯೆಯನ್ನು ಪುನರಾವರ್ತಿತವಾಗಿ ಯೋಚಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
ನಾವು ಈಗ ಸ್ಥಿತಿ s ನಲ್ಲಿ ಇದ್ದೇವೆಂದು ಕಲ್ಪಿಸೋಣ, ಮತ್ತು ಮುಂದಿನ ಸ್ಥಿತಿ s' ಗೆ ಸಾಗಲು ಬಯಸುತ್ತೇವೆ. ಇದರಿಂದ, ನಾವು ತಕ್ಷಣದ ಬಹುಮಾನ r(s,a) ಪಡೆಯುತ್ತೇವೆ, ಇದು ಬಹುಮಾನ ಕಾರ್ಯದಿಂದ ವ್ಯಾಖ್ಯಾನಿತ, ಜೊತೆಗೆ ಕೆಲವು ಭವಿಷ್ಯ ಬಹುಮಾನ. ನಮ್ಮ ಕ್ಯೂ-ಟೇಬಲ್ ಪ್ರತಿ ಕ್ರಿಯೆಯ "ಆಕರ್ಷಕತೆ" ಅನ್ನು ಸರಿಯಾಗಿ ಪ್ರತಿಬಿಂಬಿಸುವುದಾಗಿ ಊಹಿಸಿದರೆ, ಸ್ಥಿತಿ s' ನಲ್ಲಿ ನಾವು ಕ್ರಿಯೆ a' ಆಯ್ಕೆಮಾಡುತ್ತೇವೆ, ಅದು ಗರಿಷ್ಠ ಮೌಲ್ಯದ Q(s',a') ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ. ಆದ್ದರಿಂದ, ಸ್ಥಿತಿ s ನಲ್ಲಿ ನಾವು ಪಡೆಯಬಹುದಾದ ಅತ್ಯುತ್ತಮ ಭವಿಷ್ಯ ಬಹುಮಾನವನ್ನು maxa'Q(s',a') ಎಂದು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು (ಇಲ್ಲಿ ಗರಿಷ್ಠವು ಎಲ್ಲಾ ಸಾಧ್ಯ ಕ್ರಿಯೆಗಳ ಮೇಲೆ ಲೆಕ್ಕಿಸಲಾಗುತ್ತದೆ).
ಇದು ಸ್ಥಿತಿ s ನಲ್ಲಿ ಕ್ರಿಯೆ a ಗೆ ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯವನ್ನು ಲೆಕ್ಕಿಸುವ ಬೆಲ್ಮನ್ ಸೂತ್ರ ನೀಡುತ್ತದೆ:
ಇಲ್ಲಿ γ ಅನ್ನು ಡಿಸ್ಕೌಂಟ್ ಫ್ಯಾಕ್ಟರ್ ಎಂದು ಕರೆಯುತ್ತಾರೆ, ಇದು ನೀವು ಪ್ರಸ್ತುತ ಬಹುಮಾನವನ್ನು ಭವಿಷ್ಯ ಬಹುಮಾನಕ್ಕಿಂತ ಎಷ್ಟು ಪ್ರಾಧಾನ್ಯತೆ ನೀಡಬೇಕು ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ.
ಮೇಲಿನ ಸಮೀಕರಣವನ್ನು ಆಧರಿಸಿ, ನಾವು ಈಗ ನಮ್ಮ ಅಧ್ಯಯನ ಅಲ್ಗೋರಿದಮ್ಗೆ ಪ್ಸ್ಯೂಡೋ-ಕೋಡ್ ಬರೆಯಬಹುದು:
- ಎಲ್ಲಾ ಸ್ಥಿತಿಗಳು ಮತ್ತು ಕ್ರಿಯೆಗಳಿಗಾಗಿ ಸಮಾನ ಸಂಖ್ಯೆಗಳೊಂದಿಗೆ ಕ್ಯೂ-ಟೇಬಲ್ Q ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ
- ಅಧ್ಯಯನ ದರ α ← 1 ಸೆಟ್ ಮಾಡಿ
- ಅನೇಕ ಬಾರಿ ಸಿಮ್ಯುಲೇಶನ್ ಪುನರಾವರ್ತಿಸಿ
- ಯಾದೃಚ್ಛಿಕ ಸ್ಥಾನದಿಂದ ಪ್ರಾರಂಭಿಸಿ
- ಪುನರಾವರ್ತಿಸಿ
- ಸ್ಥಿತಿ s ನಲ್ಲಿ ಕ್ರಿಯೆ a ಆಯ್ಕೆಮಾಡಿ
- ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸಿ ಮತ್ತು ಹೊಸ ಸ್ಥಿತಿ s' ಗೆ ಸಾಗಿರಿ
- ಆಟದ ಅಂತ್ಯ ಅಥವಾ ಒಟ್ಟು ಬಹುಮಾನ ತುಂಬಾ ಕಡಿಮೆ ಇದ್ದರೆ ಸಿಮ್ಯುಲೇಶನ್ ನಿಲ್ಲಿಸಿ
- ಹೊಸ ಸ್ಥಿತಿಯಲ್ಲಿ ಬಹುಮಾನ r ಲೆಕ್ಕಿಸಿ
- ಬೆಲ್ಮನ್ ಸಮೀಕರಣದ ಪ್ರಕಾರ ಕ್ಯೂ-ಕಾರ್ಯವನ್ನು ನವೀಕರಿಸಿ: Q(s,a) ← (1-α)Q(s,a)+α(r+γ maxa'Q(s',a'))
- s ← s'
- ಒಟ್ಟು ಬಹುಮಾನವನ್ನು ನವೀಕರಿಸಿ ಮತ್ತು α ಅನ್ನು ಕಡಿಮೆ ಮಾಡಿ.
ಮೇಲಿನ ಅಲ್ಗೋರಿದಮ್ನಲ್ಲಿ, ನಾವು 2.1 ಹಂತದಲ್ಲಿ ಕ್ರಿಯೆಯನ್ನು ಹೇಗೆ ಆಯ್ಕೆ ಮಾಡಬೇಕು ಎಂದು ಸ್ಪಷ್ಟಪಡಿಸಿಲ್ಲ. ನಾವು ಕ್ರಿಯೆಯನ್ನು ಯಾದೃಚ್ಛಿಕವಾಗಿ ಆಯ್ಕೆ ಮಾಡಿದರೆ, ನಾವು ಪರಿಸರವನ್ನು ಯಾದೃಚ್ಛಿಕವಾಗಿ ಅನ್ವೇಷಿಸುತ್ತೇವೆ, ಮತ್ತು ನಾವು ಬಹುಶಃ ಹೆಚ್ಚು ಸಾರಿ ಸಾಯಬಹುದು ಮತ್ತು ಸಾಮಾನ್ಯವಾಗಿ ಹೋಗದ ಪ್ರದೇಶಗಳನ್ನು ಅನ್ವೇಷಿಸಬಹುದು. ಪರ್ಯಾಯವಾಗಿ, ನಾವು ಈಗಾಗಲೇ ತಿಳಿದಿರುವ ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯಗಳನ್ನು ಉಪಯೋಗಿಸಿ, ಸ್ಥಿತಿ s ನಲ್ಲಿ ಅತ್ಯುತ್ತಮ ಕ್ರಿಯೆಯನ್ನು (ಹೆಚ್ಚಿನ ಕ್ಯೂ-ಮೌಲ್ಯ) ಆಯ್ಕೆ ಮಾಡಬಹುದು. ಆದರೆ ಇದು ಇತರ ಸ್ಥಿತಿಗಳನ್ನು ಅನ್ವೇಷಿಸುವುದನ್ನು ತಡೆಯುತ್ತದೆ ಮತ್ತು ನಾವು ಅತ್ಯುತ್ತಮ ಪರಿಹಾರವನ್ನು ಕಂಡುಹಿಡಿಯದಿರಬಹುದು.
ಆದ್ದರಿಂದ, ಉತ್ತಮ ವಿಧಾನವು ಅನ್ವೇಷಣೆ ಮತ್ತು ಉಪಯೋಗದ ನಡುವೆ ಸಮತೋಲನ ಸಾಧಿಸುವುದು. ಇದು ಸ್ಥಿತಿ s ನಲ್ಲಿ ಕ್ರಿಯೆಯನ್ನು ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯಗಳಿಗೆ ಅನುಪಾತಿಕ ಪ್ರಾಬಬಿಲಿಟಿಗಳೊಂದಿಗೆ ಆಯ್ಕೆಮಾಡುವ ಮೂಲಕ ಮಾಡಬಹುದು. ಆರಂಭದಲ್ಲಿ, ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯಗಳು ಎಲ್ಲವೂ ಸಮಾನವಾಗಿರುವಾಗ, ಇದು ಯಾದೃಚ್ಛಿಕ ಆಯ್ಕೆ ಆಗಿರುತ್ತದೆ, ಆದರೆ ನಾವು ನಮ್ಮ ಪರಿಸರವನ್ನು ಹೆಚ್ಚು ಕಲಿತಂತೆ, ನಾವು ಅತ್ಯುತ್ತಮ ಮಾರ್ಗವನ್ನು ಅನುಸರಿಸುವ ಸಾಧ್ಯತೆ ಹೆಚ್ಚಾಗುತ್ತದೆ ಮತ್ತು ಏಜೆಂಟ್ಗಿಗೆ ಕೆಲವೊಮ್ಮೆ ಅನ್ವೇಷಿಸದ ಮಾರ್ಗವನ್ನು ಆಯ್ಕೆಮಾಡಲು ಅವಕಾಶ ನೀಡುತ್ತದೆ.
ನಾವು ಈಗ ಅಧ್ಯಯನ ಅಲ್ಗೋರಿದಮ್ ಅನ್ನು ಅನುಷ್ಠಾನಗೊಳಿಸಲು ಸಿದ್ಧರಾಗಿದ್ದೇವೆ. ಅದಕ್ಕೆ ಮುಂಚೆ, ನಾವು ಕ್ಯೂ-ಟೇಬಲ್ನ任意 ಸಂಖ್ಯೆಗಳನ್ನೂ ಸಂಬಂಧಿತ ಕ್ರಿಯೆಗಳ ಪ್ರಾಬಬಿಲಿಟಿಗಳ ವೆಕ್ಟರ್ಗೆ ಪರಿವರ್ತಿಸುವ ಕಾರ್ಯ ಬೇಕಾಗುತ್ತದೆ.
-
probs()ಎಂಬ ಕಾರ್ಯವನ್ನು ರಚಿಸಿ:def probs(v,eps=1e-4): v = v-v.min()+eps v = v/v.sum() return v
ನಾವು ಮೂಲ ವೆಕ್ಟರ್ಗೆ ಕೆಲವು
epsಸೇರಿಸುತ್ತೇವೆ, ಆರಂಭಿಕ ಸ್ಥಿತಿಯಲ್ಲಿ ಎಲ್ಲ ಘಟಕಗಳೂ ಸಮಾನವಾಗಿರುವಾಗ ಶೂನ್ಯದಿಂದ ಭಾಗಿಸುವುದನ್ನು ತಪ್ಪಿಸಲು.
5000 ಪ್ರಯೋಗಗಳ ಮೂಲಕ ಅಧ್ಯಯನ ಅಲ್ಗೋರಿದಮ್ ಅನ್ನು ನಡೆಸಿ, ಇದನ್ನು ಎಪೋಕ್ಸ್ ಎಂದು ಕರೆಯುತ್ತಾರೆ: (ಕೋಡ್ ಬ್ಲಾಕ್ 8)
for epoch in range(5000):
# ಪ್ರಾರಂಭಿಕ ಬಿಂದುವನ್ನು ಆಯ್ಕೆಮಾಡಿ
m.random_start()
# ಪ್ರಯಾಣವನ್ನು ಪ್ರಾರಂಭಿಸಿ
n=0
cum_reward = 0
while True:
x,y = m.human
v = probs(Q[x,y])
a = random.choices(list(actions),weights=v)[0]
dpos = actions[a]
m.move(dpos,check_correctness=False) # ನಾವು ಆಟಗಾರನಿಗೆ ಫಲಕದ ಹೊರಗೆ ಚಲಿಸಲು ಅನುಮತಿಸುತ್ತೇವೆ, ಇದು ಎಪಿಸೋಡ್ ಅನ್ನು ಮುಕ್ತಾಯಗೊಳಿಸುತ್ತದೆ
r = reward(m)
cum_reward += r
if r==end_reward or cum_reward < -1000:
lpath.append(n)
break
alpha = np.exp(-n / 10e5)
gamma = 0.5
ai = action_idx[a]
Q[x,y,ai] = (1 - alpha) * Q[x,y,ai] + alpha * (r + gamma * Q[x+dpos[0], y+dpos[1]].max())
n+=1ಈ ಅಲ್ಗೋರಿದಮ್ ಅನ್ನು ನಿರ್ವಹಿಸಿದ ನಂತರ, ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯಗಳು ನವೀಕರಿಸಲಾಗುತ್ತದೆ, ಅವು ಪ್ರತಿ ಹೆಜ್ಜೆಯಲ್ಲಿ ವಿಭಿನ್ನ ಕ್ರಿಯೆಗಳ ಆಕರ್ಷಕತೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತವೆ. ನಾವು ಕ್ಯೂ-ಟೇಬಲ್ ಅನ್ನು ದೃಶ್ಯೀಕರಿಸಲು ಪ್ರಯತ್ನಿಸಬಹುದು, ಪ್ರತಿ ಸೆಲ್ನಲ್ಲಿ ಒಂದು ವೆಕ್ಟರ್ ಅನ್ನು ಚಿತ್ರಿಸಿ ಅದು ಚಲನೆಯ ಇಚ್ಛಿತ ದಿಕ್ಕನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಸರಳತೆಗೆ, ನಾವು ಬಾಣದ ತಲೆ ಬದಲು ಸಣ್ಣ ವೃತ್ತವನ್ನು ಬಿಡುತ್ತೇವೆ.
ಕ್ಯೂ-ಟೇಬಲ್ ಪ್ರತಿ ಸ್ಥಿತಿಯಲ್ಲಿ ಪ್ರತಿ ಕ್ರಿಯೆಯ "ಆಕರ್ಷಕತೆ" ಅನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ, ಆದ್ದರಿಂದ ಅದನ್ನು ಬಳಸಿ ನಮ್ಮ ಜಗತ್ತಿನಲ್ಲಿ ಪರಿಣಾಮಕಾರಿ ನ್ಯಾವಿಗೇಶನ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು ಸುಲಭ. ಸರಳ ಪ್ರಕರಣದಲ್ಲಿ, ನಾವು ಗರಿಷ್ಠ ಕ್ಯೂ-ಟೇಬಲ್ ಮೌಲ್ಯಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುವ ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು: (ಕೋಡ್ ಬ್ಲಾಕ್ 9)
def qpolicy_strict(m):
x,y = m.human
v = probs(Q[x,y])
a = list(actions)[np.argmax(v)]
return a
walk(m,qpolicy_strict)ನೀವು ಮೇಲಿನ ಕೋಡ್ ಅನ್ನು ಹಲವಾರು ಬಾರಿ ಪ್ರಯತ್ನಿಸಿದರೆ, ಕೆಲವೊಮ್ಮೆ ಅದು "ಹ್ಯಾಂಗ್" ಆಗುತ್ತದೆ ಎಂದು ನೀವು ಗಮನಿಸಬಹುದು, ಮತ್ತು ಅದನ್ನು ಮಧ್ಯಂತರಗೊಳಿಸಲು ನೀವು ನೋಟ್ಬುಕ್ನಲ್ಲಿ STOP ಬಟನ್ ಒತ್ತಬೇಕಾಗುತ್ತದೆ. ಇದು ಸಂಭವಿಸುವುದು ಏಕೆಂದರೆ ಎರಡು ಸ್ಥಿತಿಗಳು ಪರಸ್ಪರ ಅತ್ಯುತ್ತಮ Q-ಮೌಲ್ಯದ ದೃಷ್ಟಿಯಿಂದ "ಸೂಚಿಸುವ" ಸಂದರ್ಭಗಳು ಇರಬಹುದು, ಇಂತಹ ಸಂದರ್ಭದಲ್ಲಿ ಏಜೆಂಟ್ ಆ ಸ್ಥಿತಿಗಳ ನಡುವೆ ಅನಂತಕಾಲ ಚಲಿಸುತ್ತಿರುತ್ತದೆ.
ಕಾರ್ಯ 1:
walkಫಂಕ್ಷನ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಿ, ಮಾರ್ಗದ ಗರಿಷ್ಠ ಉದ್ದವನ್ನು ನಿರ್ದಿಷ್ಟ ಹೆಜ್ಜೆಗಳ ಸಂಖ್ಯೆಯಿಂದ (ಹೇಳಿ, 100) ಮಿತಿಗೊಳಿಸಿ, ಮತ್ತು ಮೇಲಿನ ಕೋಡ್ ಈ ಮೌಲ್ಯವನ್ನು ಸಮಯಕಾಲಕ್ಕೆ ಹಿಂತಿರುಗಿಸುವುದನ್ನು ಗಮನಿಸಿ.
ಕಾರ್ಯ 2:
walkಫಂಕ್ಷನ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಿ, ಅದು ಈಗಾಗಲೇ ಹೋಗಿದ್ದ ಸ್ಥಳಗಳಿಗೆ ಹಿಂದಿರುಗದಂತೆ ಮಾಡಿ. ಇದರಿಂದwalkಲೂಪ್ ಆಗುವುದನ್ನು ತಡೆಯಬಹುದು, ಆದರೆ ಏಜೆಂಟ್ ಇನ್ನೂ ತಪ್ಪಿಸಿಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲದ ಸ್ಥಳದಲ್ಲಿ "ಹುಡುಗಲ್ಪಟ್ಟ" ಸ್ಥಿತಿಯಲ್ಲಿ ಇರಬಹುದು.
ಮುಂಬರುವ ನ್ಯಾವಿಗೇಶನ್ ನೀತಿ ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ ನಾವು ಬಳಸಿದ ನೀತಿಯೇ ಉತ್ತಮವಾಗಿರುತ್ತದೆ, ಅದು ಅನ್ವೇಷಣೆ ಮತ್ತು ಉಪಯೋಗವನ್ನು ಸಂಯೋಜಿಸುತ್ತದೆ. ಈ ನೀತಿಯಲ್ಲಿ, ನಾವು Q-ಟೇಬಲ್ನ ಮೌಲ್ಯಗಳಿಗೆ ಅನುಪಾತವಾಗಿ ಪ್ರತಿ ಕ್ರಿಯೆಯನ್ನು ನಿರ್ದಿಷ್ಟ ಸಾಧ್ಯತೆಯಿಂದ ಆಯ್ಕೆಮಾಡುತ್ತೇವೆ. ಈ ತಂತ್ರವು ಏಜೆಂಟ್ ಈಗಾಗಲೇ ಅನ್ವೇಷಿಸಿದ ಸ್ಥಾನಕ್ಕೆ ಹಿಂತಿರುಗುವ ಸಾಧ್ಯತೆಯನ್ನು ಇನ್ನೂ ಹೊಂದಿರಬಹುದು, ಆದರೆ ಕೆಳಗಿನ ಕೋಡ್ನಿಂದ ನೀವು ನೋಡಬಹುದು, ಇದು ಗುರಿ ಸ್ಥಳಕ್ಕೆ ತುಂಬಾ ಚಿಕ್ಕ ಸರಾಸರಿ ಮಾರ್ಗವನ್ನು ನೀಡುತ್ತದೆ (print_statistics 100 ಬಾರಿ ಸಿಮ್ಯುಲೇಶನ್ ನಡೆಸುತ್ತದೆ): (ಕೋಡ್ ಬ್ಲಾಕ್ 10)
def qpolicy(m):
x,y = m.human
v = probs(Q[x,y])
a = random.choices(list(actions),weights=v)[0]
return a
print_statistics(qpolicy)ಈ ಕೋಡ್ ಅನ್ನು ಚಲಾಯಿಸಿದ ನಂತರ, ನೀವು ಹಿಂದಿನದಿಗಿಂತ ಬಹಳ ಕಡಿಮೆ ಸರಾಸರಿ ಮಾರ್ಗದ ಉದ್ದವನ್ನು 3-6 ರ ವ್ಯಾಪ್ತಿಯಲ್ಲಿ ಪಡೆಯಬೇಕು.
ನಾವು ಉಲ್ಲೇಖಿಸಿದಂತೆ, ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆ ಅನ್ವೇಷಣೆ ಮತ್ತು ಸಮಸ್ಯಾ ಸ್ಥಳದ ರಚನೆಯ ಬಗ್ಗೆ ಪಡೆದ ಜ್ಞಾನವನ್ನು ಅನ್ವೇಷಿಸುವ ನಡುವಿನ ಸಮತೋಲನವಾಗಿದೆ. ಕಲಿಕೆಯ ಫಲಿತಾಂಶಗಳು (ಏಜೆಂಟ್ ಗುರಿ ತಲುಪಲು ಚಿಕ್ಕ ಮಾರ್ಗವನ್ನು ಕಂಡುಹಿಡಿಯುವ ಸಾಮರ್ಥ್ಯ) ಸುಧಾರಿತವಾಗಿದೆ, ಆದರೆ ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆಯ ಸಮಯದಲ್ಲಿ ಸರಾಸರಿ ಮಾರ್ಗದ ಉದ್ದ ಹೇಗೆ ವರ್ತಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಗಮನಿಸುವುದು ಸಹ ಆಸಕ್ತಿದಾಯಕವಾಗಿದೆ:
ಕಲಿಕೆಗಳನ್ನು ಸಂಕ್ಷಿಪ್ತವಾಗಿ ಹೇಳುವುದಾದರೆ:
-
ಸರಾಸರಿ ಮಾರ್ಗದ ಉದ್ದ ಹೆಚ್ಚಾಗುತ್ತದೆ. ಇಲ್ಲಿ ನಾವು ನೋಡುತ್ತಿರುವುದು ಪ್ರಾರಂಭದಲ್ಲಿ ಸರಾಸರಿ ಮಾರ್ಗದ ಉದ್ದ ಹೆಚ್ಚಾಗುತ್ತದೆ. ಇದು ಬಹುಶಃ ಪರಿಸರದ ಬಗ್ಗೆ ಏನೂ ತಿಳಿಯದಿರುವಾಗ, ನಾವು ಕೆಟ್ಟ ಸ್ಥಿತಿಗಳಲ್ಲಿ, ನೀರು ಅಥವಾ ನರಿ ಬಳಿ ಸಿಕ್ಕಿಬಿದ್ದಿರಬಹುದು ಎಂಬುದರಿಂದ ಆಗುತ್ತದೆ. ನಾವು ಹೆಚ್ಚು ಕಲಿತಂತೆ ಮತ್ತು ಈ ಜ್ಞಾನವನ್ನು ಬಳಸಲು ಪ್ರಾರಂಭಿಸಿದಂತೆ, ನಾವು ಪರಿಸರವನ್ನು ಹೆಚ್ಚು ಅನ್ವೇಷಿಸಬಹುದು, ಆದರೆ ಆಪಲ್ಗಳು ಎಲ್ಲಿವೆ ಎಂಬುದನ್ನು ಇನ್ನೂ ಚೆನ್ನಾಗಿ ತಿಳಿಯದು.
-
ಕಲಿತಂತೆ ಮಾರ್ಗದ ಉದ್ದ ಕಡಿಮೆಯಾಗುತ್ತದೆ. ನಾವು ಸಾಕಷ್ಟು ಕಲಿತ ನಂತರ, ಏಜೆಂಟ್ ಗುರಿಯನ್ನು ಸಾಧಿಸುವುದು ಸುಲಭವಾಗುತ್ತದೆ, ಮತ್ತು ಮಾರ್ಗದ ಉದ್ದ ಕಡಿಮೆಯಾಗಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ. ಆದಾಗ್ಯೂ, ನಾವು ಇನ್ನೂ ಅನ್ವೇಷಣೆಗೆ ತೆರೆಯಲಾಗಿದ್ದು, ನಾವು ಉತ್ತಮ ಮಾರ್ಗದಿಂದ ದೂರ ಹೋಗಿ ಹೊಸ ಆಯ್ಕೆಗಳನ್ನು ಅನ್ವೇಷಿಸುವುದರಿಂದ ಮಾರ್ಗವು ಅತ್ಯುತ್ತಮಕ್ಕಿಂತ ಹೆಚ್ಚು ಉದ್ದವಾಗಬಹುದು.
-
ಉದ್ದವು ಅಕಸ್ಮಾತ್ ಹೆಚ್ಚಾಗುತ್ತದೆ. ಈ ಗ್ರಾಫ್ನಲ್ಲಿ ನಾವು ಮತ್ತೊಂದು ಗಮನಿಸುವುದು, ಕೆಲ ಸಮಯದಲ್ಲಿ ಉದ್ದವು ಅಕಸ್ಮಾತ್ ಹೆಚ್ಚಾಗಿದೆ. ಇದು ಪ್ರಕ್ರಿಯೆಯ ಸಾಂಖ್ಯಿಕ ಸ್ವಭಾವವನ್ನು ಸೂಚಿಸುತ್ತದೆ, ಮತ್ತು ನಾವು ಕೆಲ ಸಮಯದಲ್ಲಿ Q-ಟೇಬಲ್ ಗುಣಾಂಕಗಳನ್ನು ಹೊಸ ಮೌಲ್ಯಗಳಿಂದ ಮರುಬರೆಯುವ ಮೂಲಕ "ಹಾಳು" ಮಾಡಬಹುದು. ಇದನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಕಲಿಕೆಯ ದರವನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು (ಉದಾಹರಣೆಗೆ, ತರಬೇತಿಯ ಕೊನೆಯಲ್ಲಿ, ನಾವು Q-ಟೇಬಲ್ ಮೌಲ್ಯಗಳನ್ನು ಸಣ್ಣ ಮೌಲ್ಯದಿಂದ ಮಾತ್ರ ಸರಿಪಡಿಸುತ್ತೇವೆ) ಸೂಕ್ತ.
ಒಟ್ಟಾರೆ, ಕಲಿಕೆಯ ಪ್ರಕ್ರಿಯೆಯ ಯಶಸ್ಸು ಮತ್ತು ಗುಣಮಟ್ಟವು ಕಲಿಕೆಯ ದರ, ಕಲಿಕೆಯ ದರ ಕುಸಿತ, ಮತ್ತು ಡಿಸ್ಕೌಂಟ್ ಫ್ಯಾಕ್ಟರ್ ಮುಂತಾದ ಪರಿಮಾಣಗಳ ಮೇಲೆ ಬಹುಮಟ್ಟಿಗೆ ಅವಲಂಬಿತವಾಗಿದೆ. ಅವುಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಹೈಪರ್ಪ್ಯಾರಾಮೀಟರ್ಗಳು ಎಂದು ಕರೆಯುತ್ತಾರೆ, ಮತ್ತು ತರಬೇತಿಯ ಸಮಯದಲ್ಲಿ ನಾವು ಸುಧಾರಿಸುವ ಪ್ಯಾರಾಮೀಟರ್ಗಳು (ಉದಾಹರಣೆಗೆ, Q-ಟೇಬಲ್ ಗುಣಾಂಕಗಳು) ಇಂದ ವಿಭಿನ್ನವಾಗಿವೆ. ಉತ್ತಮ ಹೈಪರ್ಪ್ಯಾರಾಮೀಟರ್ ಮೌಲ್ಯಗಳನ್ನು ಹುಡುಕುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಹೈಪರ್ಪ್ಯಾರಾಮೀಟರ್ ಆಪ್ಟಿಮೈಜೆಷನ್ ಎಂದು ಕರೆಯುತ್ತಾರೆ, ಮತ್ತು ಇದು ಪ್ರತ್ಯೇಕ ವಿಷಯಕ್ಕೆ ಅರ್ಹವಾಗಿದೆ.
ಅಸ್ವೀಕರಣ:
ಈ ದಸ್ತಾವೇಜು Co-op Translator ಎಂಬ AI ಅನುವಾದ ಸೇವೆಯನ್ನು ಬಳಸಿ ಅನುವಾದಿಸಲಾಗಿದೆ. ನಾವು ಶುದ್ಧತೆಯತ್ತ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಸ್ವಯಂಚಾಲಿತ ಅನುವಾದಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿರುವ ಮೂಲ ದಸ್ತಾವೇಜನ್ನು ಅಧಿಕೃತ ಮೂಲವೆಂದು ಪರಿಗಣಿಸಬೇಕು. ಮಹತ್ವದ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಅನುವಾದವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಅನುವಾದ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ತಪ್ಪು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವಿಕೆ ಅಥವಾ ತಪ್ಪು ವಿವರಣೆಗಳಿಗೆ ನಾವು ಹೊಣೆಗಾರರಾಗುವುದಿಲ್ಲ.







