Machine Learning Models | #3 Reinforcement

w1sd0m

Katılımcı Üye
28 Mar 2020
699
626
/802.1x/
q688b03.png







Merhaba dostlarım,bu makalemde sizlere "Makine öğrenmesi (ML)" alanında karşımıza çıkan ve oldukça popüler olan modelleri,algoritmaları anlatacağım. Bu makale bir devam makalesi olduğundan, konuyu daha iyi anlayabilmek için önceki makalelerimi, "Supervised ML" ve "Unsupervised ML", incelemenizi tavsiye ediyorum. Bu bakalede ise serinin sonuncusu olan ve sizlerin daha dikkatini çekeceğini düşündüğüm "Reinforcement ML" kavramına değineceğiz. Ayrıca yine makaledeki algoritmalara "Python3" kullanarak örnekler vereceğim ve bu kodları inceleyeceğiz. Foruma katkısı ve bu alanda çalışacak arkadaşlara faydalı olması dileğiyle diyerek başlamak istiyorum.
İyi okumalar.



|
|
v




Makine öğrenmesi (ML) nedir? | Önemi | Çalışma mantığı | Denetimli öğrenme | Denetimsiz öğrenme | Avantaj&Dezavantaj

||
V


Machine Learning Models #1 | Machine Learning Models #2





jx3vvgm.png





n1kyzq4.png





Pekiştirmeli (Reinforcement) öğrenme nedir?

rzp2tx8.png


Pekiştirmeli (Reinforcement) öğrenme (RL); bir modelin kendi eylemlerinden ve deneyimlerinden edindiği verileri kullanarak, deneme yanılma yöntemi ile öğrenmesini sağlayan bir Makine öğrenimi (ML) tekniğidir.

Model, karmaşık veya belirsiz bir ortamda belirlenen hedefe ulaşmayı öğrenir. Model çevresini algılayabilir ve yorumlayabilir, eyleme geçebilir ve hedefe ulaşabilir. Tabi burada modelin yaptığı her bir eylemin bir geri dönüşü olduğunu söylemeliyim. Bir nevi “Ödül / Ceza” ilişkisi var aslında. Model, yaptığı her başarılı eylem için olumlu geri bildirim alırken her başarısız eylemde ise olumsuz geri bildirim alır.

Denetimli öğrenmenin aksine bu teknikte model, hiçbir etiketlenmiş veri olmadan sadece kendi geri bildirimleri ile öğrenimini sürdürür.


Denetimsiz öğrenmeden farkı ise, modelin amacı veriler arasındaki farklardan yola çıkarak hedefe ulaşmak değil mümkün olan en yüksek ödül puanına ulaşmaktır. Model, hedefe ulaşmak için maksimum başarılı adımı atmalıdır.

6a6khkh.png


Programcı; ödül politikasını, kuralları koymasına rağmen modele, çözüme gidecek bir ip ucu vermez. Model, tamamen rastgele denemeler, değişik taktiktler ve hızlı hesaplama becerileri ile hedefe ulaşmaya çalışır. Bu yöntem, modelin yaratıcılık özelliğini inşa etmede en etkili yoldur. Yeterince güçlü bilgisayar alt yapısına sahip bir model, insan üstü hesaplamalar yapabilir ve insanlara karşı oyunlar kazanabilir.

Burada hiçbir insan müdahalesi olmadan bir makinenin öğrenmesi ve oyunu kazanmasından bahsediyoruz.
Sizce yapay zekanın bu kadar ileri gitmesi iyi mi, yoksa kötü mü?





Temel terimler

Pekiştirmeli öğrenmenin (RL) temel terimlerine bakalım;


Agent (Temsilci/Etken); Çevreyi algılayabilen,anlamlandırabilen,keşfedebilen ve ona göre hareket edebilen varlık.
Environment (Çevre); Temsilcinin faaliyet gösterdiği etki ortamı.
State (Durum/Hal); Temsilcinin her eyleminden sonra döndürülen temsilci durumu.
Reward (Ödül); Çevreden temsilciye döndürülen geri bildirim.
Policy (İlke); Temsilcinin durumunu eylemler ile eşleştirme yöntemi.
Deterministik politika için: a = π(s)
Stokastik politika için: π(a | s) = P[At =a | St = s]
Value (Değer); Ödülden farklı olarak, temsilcinin belirli bir durumda gerçekleştireceği eylemde alacağı gelecekteki ödül.



aw6nm6v.png


dys6b4z.png



PacMan örneği;

RL konusunu anlatırken bir örnek vererek anlatımı güçlendireyim.

Bir “PacMan” oyununu düşünün. PacMan burada “Agent”, üzerinde bulunduğu dünya “Environment”, PacMan’in mevcut durumu “State”, yoldaki yiyecekleri yemesi ve hayaletlerden kaçması “Policy” ve tüm yiyecekleri yakalanmadan yemesi ve oyunu kazanması ise “Value” değerleridir diyebilirim.





Pekiştirmeli öğrenmenin (RL) ana noktaları;

Input (Girdi); Modelin başlangıç durumunu belirler.
Output (Çıktı); Problemin çözümünü belirtir. Bir problem için çeşitli çözümler olduğundan, birden fazla çıktı da olabilir.
Learning (Eğitim); Girdiye dayalı bir modelin durumunu döndürür ve belirlenen çıktıya göre modeli ödüllendirir yada cezalandırır.





Türleri & Kullanım alanları

Pekiştirmeli öğrenmenin (RL) iki farklı türü vardır. Bunlar;



Pozitif:


Olumlu pekiştirme; Belirli bir eylem nedeni ile bir olayın meydana gelmesi, eylemin kuvvetini ve sıklığını artırması olarak tanımlanabilir.
Performansı En Üst Düzeye Çıkarır
Değişimi uzun süre sürdürür
Çok fazla Güçlendirme, sonuçları azaltabilecek durumların aşırı yüklenmesine neden olabilir.


Negatif:

Olumsuz pekiştirme; Olumsuz bir durum durdurulduğunda veya olumsuz durumdan kaçınıldığında, davranışı güçlendirmesi olarak tanımlanabilir.
Davranışı Artırır
Asgari performans standardına meydan okuma sağlamaktadır
Yalnızca minimum davranışı karşılamaya yetecek kadarını sağlar




Kullanım alanları;


Robotik: Robot navigasyonunda, Robo-futbolda, yürümede, dans etmede vb. alanlarda kullanılır
Kontrol: Fabrika süreçleri, telekomünikasyonda kabul kontrolü gibi uyarlanabilir kontrol için kullanılabilir. Helikopter pilotu, pekiştirmeli öğrenmeye bir örnektir.
Oyun: Tic-tac-toe, satranç, dama, bilardo vb. oyunlarda kullanılabilir.
Kimya: kimyasal reaksiyonları optimize etmek için kullanılabilir.
İşletme: iş stratejisi planlaması için kullanılabilir.
Üretim: Çeşitli otomobil imalat şirketlerinde robotlarların iş hareketlerini öğrenmesinde kullanılabilir.
Finans: Finans sektöründe ticaret stratejilerini değerlendirmek için kullanılabilir.




jx3vvgm.png




Sırada algoritma bölümümüz var dostlarım.
Pekiştirmeli öğrenim (RL) tekniğinde en çok kullanılan algoritmalar şunlardır;

Q-Learning Algorithm | SARSA (State Action Reward State action) | DQN (Deep Q Network)

Bu algoritmaların ne işe yaradığına gelin daha yakından bakalım...




tqd0iwt.png


Q-Learning Algoritması nedir?

Q-Learning algoritması, mevcut durumda yapılabilecek en iyi eylemi bulmaya çalışan ilke dışı bir RL algoritmasıdır. İlke dışı olarak tanımlanmasının sebebi; bu algoritmanın rastgele eylem ilkesine uymaması ve farklı tür öğrenimler uygulamasıdır. Kısacası bu algoritma bir ilkeye ihtiyaç duymaz.

Q-Learning algoritmasının ana amacı, toplam ödül puanını en üst düzeye çıkarmaktır



Bellman Denklemi nedir?

Bellman denklemi, belirli durumları analiz etmek ve o durumun eyleme geçirilmesinin ne kadar iyi olacağını hesaplamak için kullanılır. Denklemde, optimal durum en yüksek optimal değeri verir.


tspi468.jpg

Örnek;

Geçek hayat ile ilişkilendirecek bir örnek olması açısından, bir köpeğimizin olduğunu ve ona eğitim verdiğimizi düşünelim. Köpek talimatlara uyar ve hareketi öğrenir ise ödül vereceğiz.

Şimdi, sistemin nasıl çalıştığını tablolar ile anlatayım.

Tüm değerlerin “
0 “ olduğu bir tablomuz olsun.


oxwn8cf.PNG

Ardından bir hareket belirleyeceğiz ve bunu hayvanımıza yaptıracağız.

5e258rg.PNG

Hareketi seçtiğimizde değerini belirttik. Bu durum “Başlangıç” diğer bir terim ile “Input” adımımızdır.

13cp2rw.PNG

Gerçekleştirilen eylem için ödül değerini aldık ve Bellman denklemini kullanarak “Q-Value” değerini hesapladık.
Gerçekleştirilen değer için asıl ödül değerini, Q(S, A) değerini hesaplamalısınız.
Bu adımı tablo dolana kadar veya bir hareket tamamen dolana kadar tekrar edeceğiz.

m89l2re.PNG

Burada köpeğimiz hareketleri yapmaya devam eder ve her eylem için “Ödül” ve “Q” değerini hesaplarız. Tabloyu güncelleriz.


Formül;


86bthoe.png


Python3 örneği;

Python:
# Gerekli kütüphanelerin içeri alınması
import numpy as np
import gym
import random

env = gym.make("FrozenLake-v1")
action_size = env.action_space.n
state_size = env.observation_space.n
qtable = np.zeros((state_size, action_size))
#print(qtable)
total_episodes = 15000        # Toplam bölüm
learning_rate = 0.8           # Öğrenim oranı
max_steps = 99                # Bölüm başına maksimum adım
gamma = 0.95                  # indirim oranı

# Keşif parametreleri
epsilon = 1.0                 # Keşif oranı
max_epsilon = 1.0             # Başlangıçta keşif olasılığı
min_epsilon = 0.01            # Minimum keşif olasılığı
decay_rate = 0.005            # Keşif için üstel bozulma oranı

# Ödüllerin listelenmesi
rewards = []

# Yaşam boyu veya öğrenme durdurulana kadar
for episode in range(total_episodes):
    # Ortamı sıfırlamak
    state = env.reset()
    step = 0
    done = False
    total_rewards = 0

    for step in range(max_steps):
        # Mevcut dünya durumlarında bir eylem seçilmesi
        # Rastgele bir sayının alınması
        exp_exp_tradeoff = random.uniform(0, 1)

        ## If this number > epsilon --> İşleme (bu durum için en büyük Q değeri alınır)
        if exp_exp_tradeoff > epsilon:
            action = np.argmax(qtable[state, :])

        # Else random choice --> Keşif
        else:
            action = env.action_space.sample()

        # Eylemin (a) yapılması, sonuç durumlarının (s) gözlemlenmesi ve ödüllendirme (r)
        new_state, reward, done, info = env.step(action)

        # UQ(s,a):= Q(s,a) + lr [R(s,a) + gamma * max Q(s',a') - Q(s,a)]
        qtable[state, action] = qtable[state, action] + learning_rate * (
                    reward + gamma * np.max(qtable[new_state, :]) - qtable[state, action])

        total_rewards += reward

        # Yeni durum
        state = new_state

        if done == True:
            break

    # Epsilon'u azaltmak
    epsilon = min_epsilon + (max_epsilon - min_epsilon) * np.exp(-decay_rate * episode)
    rewards.append(total_rewards)

print("Score over time: " + str(sum(rewards) / total_episodes))
print(qtable)
env.reset()

for episode in range(5):
    state = env.reset()
    step = 0
    done = False
    print("****************************************************")
    print("EPISODE ", episode)

    for step in range(max_steps):

        # Bu duruma göre maksimum beklenen gelecekteki ödüle sahip eylem (dizin) gerçekleştirilir
        action = np.argmax(qtable[state, :])

        new_state, reward, done, info = env.step(action)

        if done:
            # Son durumun yazdırılması.
            env.render()

            # Atılan adım sayısının yazdırılırması.
            print("Number of steps", step)
            break
        state = new_state
env.close()

Çıktı;

7fwhzds.png





my9650f.png


SARSA (State Action Reward State Action), ilkeye ve zamansal farka dayalı bir RL algoritmasıdır. İlke içi denetim yöntemi ile, öğrenme aşamasında her bir durum için eylemi seçer

Bu algoritmanın amacı, seçilen ilke (
π) ve bütün (S-A) çiftleri için “Q π(S-A)” hesabı yapmaktır.

Q-Learning’den tek farkı, tabloyu güncellemede bir sonraki adım için maksimum ödül puanının gerekmemesidir.


1zj97t2.png

Tanımlar ise şu şekilde;

S: Orijinal durum A: Orijinal eylem R: Durum takibinde gözlemlenen ödül S,A: Yeni durum-eylem çifti


Formül;

kdecht8.png


Python3 örneği;

Python:
# Gerekli kütüphanelerin içeri alınması
import numpy as np
import gym


# Çevrenin oluşturulması
env = gym.make('FrozenLake-v1')

# Parametrelerin tanımlanması
epsilon = 0.9
total_episodes = 10000
max_steps = 100
alpha = 0.85
gamma = 0.95

# Q-matrix başlatılması
Q = np.zeros((env.observation_space.n, env.action_space.n))

# Sonraki eylemi seçme işlevi
def choose_action(state):
    action=0
    if np.random.uniform(0, 1) < epsilon:
        action = env.action_space.sample()
    else:
        action = np.argmax(Q[state, :])
    return action

# Q değerini öğrenme işlevi
def update(state, state2, reward, action, action2):
    predict = Q[state, action]
    target = reward + gamma * Q[state2, action2]
    Q[state, action] = Q[state, action] + alpha * (target - predict)


# Ödülün başlatılması
reward = 0

# SARSA öğrenimini başlatma
for episode in range(total_episodes):
    t = 0
    state1 = env.reset()
    action1 = choose_action(state1)

    while t < max_steps:
        # Eğitimi görselleştirmek
        env.render()

        # Bir sonraki durumu almak
        state2, reward, done, info = env.step(action1)

        # Bir sonraki eylemi seçmek
        action2 = choose_action(state2)

        # Q-değerini öğrenmek
        update(state1, state2, reward, action1, action2)

        state1 = state2
        action1 = action2

        # İlgili değerlerin güncellenmesi
        t += 1
        reward += 1


        if done:
            break

# Performansın değerlendirilmesi
print ("Performance : ", reward/total_episodes)

# Q matrisini görselleştirme
print(Q)

Çıktı;

qt3e2sa.png


NOT: GIF'ler çalışmaz ise tekrardan yükleyebilirim.





iod51s0.png


DQN algoritması, sinir ağlarını kullanan bir RL algoritmasıdır.
Algoritma, Q tabloları oluşturma zahmetinden kaçınır, her eylem ve durum için Q değerine yaklaşan sinir ağları kullanır.


9zt2be0.png

Kısa kısa bu kavramları tanımlayacak olursak;

DQN: Pekiştirmeli öğrenmenin video oyunları veya robotik için karmaşık, çok boyutlu alanlarda çalışmasına izin veren, Q-Learning ile sinir ağlarını birleştiren bir RL algoritmasıdır.
Double Q-Learning: DQN algoritmasının belirli eylemlere bağlı değerleri fazla tahmin etme problemini düzeltir.
Priority Playback: Ödülün beklenen ödülden hemen hemen ayrıldığı zamanları yeniden oynatarak DQN algoritmasının yeniden oynatma kabiliyetini geliştirir ve yanlış varsayıma karşı modelin kendini ayarlamasını sağlar.
Duel DQN: Eylemi; biri her adımda değeri tahmin etmeye çalışan, diğeri ise her bir eylemin potansiyel avantajlarını hesaplayan iki parçaya böler.

rx5ep1u.png

Formül;

4m25ei2.png


Python3 örneği;

Python:
# Gerekli kütüphanelerin içeri alınması
import gym
import math
import random
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from collections import namedtuple, deque
from itertools import count
from PIL import Image
import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as F
import torchvision.transforms as T


env = gym.make('CartPole-v1').unwrapped

# Matplotlib kurulumu
is_ipython = 'inline' in matplotlib.get_backend()
if is_ipython:
    from IPython import display

plt.ion()

# GPU aktifliği
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

Transition = namedtuple('Transition',
                        ('state', 'action', 'next_state', 'reward'))


class ReplayMemory(object):

    def __init__(self, capacity):
        self.memory = deque([],maxlen=capacity)

    def push(self, *args):
        self.memory.append(Transition(*args))

    def sample(self, batch_size):
        return random.sample(self.memory, batch_size)

    def __len__(self):
        return len(self.memory)

class DQN(nn.Module):

    def __init__(self, h, w, outputs):
        super(DQN, self).__init__()
        self.conv1 = nn.Conv2d(3, 16, kernel_size=5, stride=2)
        self.bn1 = nn.BatchNorm2d(16)
        self.conv2 = nn.Conv2d(16, 32, kernel_size=5, stride=2)
        self.bn2 = nn.BatchNorm2d(32)
        self.conv3 = nn.Conv2d(32, 32, kernel_size=5, stride=2)
        self.bn3 = nn.BatchNorm2d(32)

        # Doğrusal giriş bağlantılarının sayısı, conv2d katmanlarının çıkışına ve dolayısıyla giriş görüntüsünün boyutuna bağlıdır.
        # Bu durumun hesaplanması
        def conv2d_size_out(size, kernel_size = 5, stride = 2):
            return (size - (kernel_size - 1) - 1) // stride  + 1
        convw = conv2d_size_out(conv2d_size_out(conv2d_size_out(w)))
        convh = conv2d_size_out(conv2d_size_out(conv2d_size_out(h)))
        linear_input_size = convw * convh * 32
        self.head = nn.Linear(linear_input_size, outputs)


    # Sonraki eylemi belirlemek için bir öğeyle veya optimizasyon sırasında bir toplu iş ile çağrılır.
    def forward(self, x):
        x = x.to(device)
        x = F.relu(self.bn1(self.conv1(x)))
        x = F.relu(self.bn2(self.conv2(x)))
        x = F.relu(self.bn3(self.conv3(x)))
        return self.head(x.view(x.size(0), -1))

resize = T.Compose([T.ToPILImage(),
                    T.Resize(40, interpolation=Image.CUBIC),
                    T.ToTensor()])


def get_cart_location(screen_width):
    world_width = env.x_threshold * 2
    scale = screen_width / world_width
    # Orta
    return int(env.state[0] * scale + screen_width / 2.0)


def get_screen():
    # Tavsiye edilen ekran 400x600x3'tür. Ancak bazen daha büyük olabilir.
    screen = env.render(mode='rgb_array').transpose((2, 0, 1))
    # Sepetin konumu
    _, screen_height, screen_width = screen.shape
    screen = screen[:, int(screen_height*0.4):int(screen_height * 0.8)]
    view_width = int(screen_width * 0.6)
    cart_location = get_cart_location(screen_width)
    if cart_location < view_width // 2:
        slice_range = slice(view_width)
    elif cart_location > (screen_width - view_width // 2):
        slice_range = slice(-view_width, None)
    else:
        slice_range = slice(cart_location - view_width // 2,
                            cart_location + view_width // 2)
 
    screen = screen[:, :, slice_range]
 
    screen = np.ascontiguousarray(screen, dtype=np.float32) / 255
    screen = torch.from_numpy(screen)
 
    return resize(screen).unsqueeze(0)


env.reset()
plt.figure()
plt.imshow(get_screen().cpu().squeeze(0).permute(1, 2, 0).numpy(),
           interpolation='none')
plt.title('Example extracted screen')
#plt.show()


BATCH_SIZE = 128
GAMMA = 0.999
EPS_START = 0.9
EPS_END = 0.05
EPS_DECAY = 200
TARGET_UPDATE = 10

# AI spor salonundan döndürülen şekle göre katmanları doğru şekilde başlatılabilmesi için ekran boyutunun alınması. Bu noktada tipik boyutlar 3x40x90'a yakındır.
# Bu, get_screen() içindeki sıkıştırılmış ve küçültülmüş bir oluşturma arabelleğinin sonucudur
init_screen = get_screen()
_, _, screen_height, screen_width = init_screen.shape

# gym eylem alanından eylem sayısını alınması
n_actions = env.action_space.n

policy_net = DQN(screen_height, screen_width, n_actions).to(device)
target_net = DQN(screen_height, screen_width, n_actions).to(device)
target_net.load_state_dict(policy_net.state_dict())
target_net.eval()

optimizer = optim.RMSprop(policy_net.parameters())
memory = ReplayMemory(10000)


steps_done = 0


def select_action(state):
    global steps_done
    sample = random.random()
    eps_threshold = EPS_END + (EPS_START - EPS_END) * \
        math.exp(-1. * steps_done / EPS_DECAY)
    steps_done += 1
    if sample > eps_threshold:
        with torch.no_grad():
            # t.max(1) her satırın en büyük sütun değerini döndürür.
            # Maksimum sonuçtaki ikinci sütun, maksimum öğenin bulunduğu dizindir.
            # Bu yüzden daha büyük beklenen ödülle eylem seçilir.
            return policy_net(state).max(1)[1].view(1, 1)
    else:
        return torch.tensor([[random.randrange(n_actions)]], device=device, dtype=torch.long)


episode_durations = []


def plot_durations():
    plt.figure(2)
    plt.clf()
    durations_t = torch.tensor(episode_durations, dtype=torch.float)
    plt.title('Training...')
    plt.xlabel('Episode')
    plt.ylabel('Duration')
    plt.plot(durations_t.numpy())
    # 100 bölüm ortalamasını alınır
    if len(durations_t) >= 100:
        means = durations_t.unfold(0, 100, 1).mean(1).view(-1)
        means = torch.cat((torch.zeros(99), means))
        plt.plot(means.numpy())

    # Çevrenin güncellenmesi için mola verilmesi
    plt.pause(0.001)
    if is_ipython:
        display.clear_output(wait=True)
        display.display(plt.gcf())

def optimize_model():
    if len(memory) < BATCH_SIZE:
        return
    transitions = memory.sample(BATCH_SIZE)
    batch = Transition(*zip(*transitions))

    # Nihai olmayan durumların maskesinin hesaplanması ve toplu iş öğelerini birleştirilmesi
    non_final_mask = torch.tensor(tuple(map(lambda s: s is not None,
                                          batch.next_state)), device=device, dtype=torch.bool)
    non_final_next_states = torch.cat([s for s in batch.next_state
                                                if s is not None])
    state_batch = torch.cat(batch.state)
    action_batch = torch.cat(batch.action)
    reward_batch = torch.cat(batch.reward)

    # Q(s_t, a)
    state_action_values = policy_net(state_batch).gather(1, action_batch)

    # V(s_{t+1})
    next_state_values = torch.zeros(BATCH_SIZE, device=device)
    next_state_values[non_final_mask] = target_net(non_final_next_states).max(1)[0].detach()
    # Beklenen Q değerlerini hesaplanması
    expected_state_action_values = (next_state_values * GAMMA) + reward_batch

    # Huber kaybının hesaplanması
    criterion = nn.SmoothL1Loss()
    loss = criterion(state_action_values, expected_state_action_values.unsqueeze(1))

    # Model optimizasyonu
    optimizer.zero_grad()
    loss.backward()
    for param in policy_net.parameters():
        param.grad.data.clamp_(-1, 1)
    optimizer.step()

num_episodes = 50
for i_episode in range(num_episodes):
    # Çevre ve durumun başlatılması
    env.reset()
    last_screen = get_screen()
    current_screen = get_screen()
    state = current_screen - last_screen
    for t in count():
        # Eylemin seçilmesi ve gerçekleştirilmesi
        action = select_action(state)
        _, reward, done, _ = env.step(action.item())
        reward = torch.tensor([reward], device=device)

        # Yeni durumun gözlemlenmesi
        last_screen = current_screen
        current_screen = get_screen()
        if not done:
            next_state = current_screen - last_screen
        else:
            next_state = None

        # Geçişi bellekte saklanması
        memory.push(state, action, next_state, reward)

        # Diğer duruma hareket edilmesi
        state = next_state

        # Optimizasyonun bir adımının gerçekleştirilmesi
        optimize_model()
        if done:
            episode_durations.append(t + 1)
            plot_durations()
            break
    # DQN'deki tüm ağırlıkları ve önyargıları kopyalayarak hedef ağın güncellenmesi
    if i_episode % TARGET_UPDATE == 0:
        target_net.load_state_dict(policy_net.state_dict())

print('Complete')
env.render()
env.close()
plt.ioff()
plt.show()

Çıktı;

pxsn0nt.png
nww29yy.gif






jx3vvgm.png





Avantaj & Dezavantaj

Pekiştirmeli (Reinforcement) öğrenmenin bazı avantajları şunlardır;

Pekiştirmeli öğrenme, geleneksel tekniklerle çözülemeyen karmaşık problemleri çözmek için kullanılır.
Bu teknik, elde edilmesi oldukça zor olan ve uzun vadeli sonuçlara ulaşmak için tercih edilir.
Bu öğrenme modeli, insanın öğrenmesine çok benzer. Bu nedenle, mükemmele ulaşmaya yakındır.



Pekiştirmeli (Reinforcement) öğrenmenin bazı dezavantajları şunlardır;

Çok fazla pekiştirmeli öğrenme işlemleri, sonuçları azaltabilecek durumların aşırı yüklenmesine yol açabilir.
Bu öğrenme tekniği, basit problemlerin çözümü için tercih edilmez.
Bu tekniğin algoritmaları çok fazla veriye ve çok fazla hesaplamaya ihtiyaç duyar.
Boyutluluk laneti, gerçek fiziksel sistemler için pekiştirmeli öğrenmeyi sınırlar.





Supervised VS Reinforcement


eynj4j8.png



Son olarak, ilginizi çekebilecek harika "Reinforcement Learning" uygulamaları, oyunları, projeleri bulabileceğiniz bir site bırakıyorum.
Bir gezip dolaşmanızda fayda var ;)

>> PROJECTs <<


^
|
|

jx3vvgm.png


|
|

v




Değerli dostlarım, güzel kardeşlerim;
Bu makalemde kısaca "Makine öğrenmesi modelleri" konusuna değindim.
Ardından "
En popüler algoritmalar" konusunda örnekler yaptık.
Kaynak niteliğinde bu forumda kalması temennisi ile diyerek sözlerimi bitiriyorum.


Sağlıcakla kalın.





eyruvyp.png
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.