Reinforcement Learning (RL) হল একটি মেশিন লার্নিং পদ্ধতি যেখানে একটি এজেন্ট একটি পরিবেশে কাজ করে এবং বিভিন্ন কর্মের মাধ্যমে শাস্তি বা পুরস্কার পেয়ে শিখে। CNTK (Microsoft Cognitive Toolkit) একটি শক্তিশালী ডিপ লার্নিং ফ্রেমওয়ার্ক যা Reinforcement Learning মডেল তৈরি করতে সাহায্য করতে পারে। এখানে আমরা একটি সাধারণ RL (Reinforcement Learning) মডেল তৈরি করার প্রক্রিয়া আলোচনা করব।
এই উদাহরণে আমরা একটি খুবই সাধারণ Q-learning অ্যালগরিদম ভিত্তিক Reinforcement Learning মডেল তৈরি করব, যা একটি CartPole পরিবেশে কাজ করবে।
1. প্রয়োজনীয় লাইব্রেরি ইনস্টল করা
প্রথমে প্রয়োজনীয় লাইব্রেরি ইনস্টল করতে হবে। আমরা OpenAI Gym ব্যবহার করব, যা একটি সাধারণ RL পরিবেশ প্রদান করে, এবং CNTK ব্যবহার করব।
pip install gym
pip install cntk
pip install numpy
2. CartPole পরিবেশ প্রস্তুতি
CartPole হল একটি ক্লাসিক RL পরিবেশ যেখানে একটি পোল (পোলের উপরের দিকে ভারী লোড) একটি কার্টে স্থাপিত থাকে। লক্ষ্য হল পোলটি সোজা রাখার জন্য কার্টের অবস্থান নিয়ন্ত্রণ করা।
import gym
import numpy as np
import cntk as C
# CartPole পরিবেশ তৈরি করা
env = gym.make("CartPole-v1")
3. Q-Learning অ্যালগরিদম
Q-Learning হল একটি মান-ভিত্তিক Reinforcement Learning অ্যালগরিদম, যেখানে প্রতিটি অবস্থার জন্য action-value function (Q-table) তৈরি করা হয়। এটি ব্যবহৃত হয় ভবিষ্যতের রিওয়ার্ড অনুমান করতে এবং সর্বোত্তম কর্ম নির্বাচন করতে।
এখানে, Q-table তৈরি করতে আমরা CNTK ব্যবহার করব এবং epsilon-greedy কৌশল ব্যবহার করব, যেখানে epsilon হল এক ধরনের এক্সপ্লোরেশন-এক্সপ্লোইটেশন প্যারামিটার।
# Parameters for Q-Learning
n_actions = env.action_space.n
n_states = env.observation_space.shape[0]
epsilon = 0.1 # Exploration vs Exploitation
alpha = 0.1 # Learning rate
gamma = 0.99 # Discount factor
# Q-table (state-action value table)
Q = np.random.uniform(low=-1, high=1, size=(n_states, n_actions))
# CNTK Neural Network for Q-values
def build_nn(input_dim, output_dim):
input_var = C.input_variable(input_dim)
hidden = C.layers.Dense(24, activation=C.relu)(input_var) # Hidden Layer
output = C.layers.Dense(output_dim)(hidden) # Output Layer (Q-values)
return input_var, output
input_var, q_output = build_nn(n_states, n_actions)
# Training loop
num_episodes = 1000
for episode in range(num_episodes):
state = env.reset()
state = np.reshape(state, [1, n_states])
done = False
total_reward = 0
while not done:
# Epsilon-greedy policy
if np.random.rand() < epsilon:
action = env.action_space.sample() # Random action (exploration)
else:
q_values = q_output.eval({input_var: state})
action = np.argmax(q_values) # Best action (exploitation)
# Take action and observe the result
next_state, reward, done, _ = env.step(action)
next_state = np.reshape(next_state, [1, n_states])
# Calculate Q-value update
next_q_values = q_output.eval({input_var: next_state})
max_next_q_value = np.max(next_q_values)
target = reward + gamma * max_next_q_value # Q-value target
# Update Q-values (simplified)
q_values = q_output.eval({input_var: state})
q_values[0, action] = q_values[0, action] + alpha * (target - q_values[0, action])
# Update the network (apply gradient descent)
input_var, q_output = build_nn(n_states, n_actions)
# Update the state and accumulate reward
state = next_state
total_reward += reward
print(f"Episode {episode+1}/{num_episodes}, Total Reward: {total_reward}")
4. Q-Learning এর সাথে CNTK ব্যবহার
এখানে আমরা Q-table এর পরিবর্তে একটি neural network ব্যবহার করছি যা CartPole পরিবেশের জন্য Q-values অনুমান করবে। এই মডেলটি epsilon-greedy policy অনুসরণ করে যাতে কিছু অংশে নতুন কর্মসমূহ (exploration) চেষ্টা করা হয়, তবে সাধারণভাবে এটি পুরস্কৃত কর্ম (exploitation) অনুসরণ করবে।
- Q-value update: এটি সাধারণভাবে Q-learning অ্যালগরিদমের মতো কাজ করে যেখানে ভবিষ্যত রিওয়ার্ড অনুমান করা হয়।
- Neural Network: মডেলটি একটি স্নায়ু নেটওয়ার্ক হিসেবে তৈরি করা হয়েছে, যা ইনপুট হিসেবে বর্তমান অবস্থান নেয় এবং আউটপুট হিসেবে সম্ভাব্য কর্মের জন্য Q-value প্রদান করে।
5. সারাংশ
এই উদাহরণে CNTK ব্যবহার করে একটি সাধারণ Reinforcement Learning মডেল তৈরি করেছি যা Q-learning অ্যালগরিদম অনুসরণ করে। CartPole-v1 পরিবেশে এজেন্টটি পরিবেশের সাথে ইন্টারঅ্যাক্ট করে এবং পুরস্কৃত কর্ম নির্বাচন করার জন্য epsilon-greedy policy অনুসরণ করে।
- Q-Learning মডেলটি ইনপুট অবস্থার জন্য Q-values অনুমান করতে CNTK neural network ব্যবহার করে, যা সাধারণভাবে Reinforcement Learning সমস্যায় কার্যকরী।
- Neural Network ব্যবহার করার মাধ্যমে, আমরা Q-table এর পরিবর্তে আরও জটিল, শক্তিশালী এবং স্কেলেবেল মডেল তৈরি করতে সক্ষম হয়েছি।
এটি একটি simple RL model তৈরি করার জন্য একটি প্রাথমিক উদাহরণ, এবং এটি আরও উন্নত করতে Deep Q-Networks (DQN) বা Policy Gradient Methods ব্যবহার করা যেতে পারে।
Read more