E:\courses\LangChain Project\main root\data\6S191_MIT_DeepLearning_L4_2.pdf

#!/usr/bin/env python3

#*******************************
# dokme black tanha baraye halate tasvir ghabele estefade ast na baraye halate mogheyat.
# dar halate mogheyat darsurat eshtebah dar rasm bayad kole safhe pak shavad

from os import environ
environ['PYGAME_HIDE_SUPPORT_PROMPT'] = '1'

import pygame
from pygame.locals import *
import time
import os
import numpy as np
import random
import cv2
from keras.models import load_model
import math

class Graphic:

    Button_state={"Color": "White"}
    x_y_of_number=[]
    data=[]

    def __init__(self):

        pygame.init()
        #infoObject = pygame.display.Info()
        #self.screen = pygame.display.set_mode((infoObject.current_w, infoObject.current_h),FULLSCREEN)
        self.screen = pygame.display.set_mode((960, 540))
        self.clock = pygame.time.Clock()
        pygame.display.set_caption('BlackBoard')

        self.image = pygame.image.load("screen_bar.jpg")
        self.black_mask=pygame.Surface((960,466))
        self.black_mask.fill((0,0,0))
        #self.image = pygame.transform.scale(self.image, (720, 480)) 
        self.screen.blit(self.image, (0, 466))

        self.radius = 10
        self.ball_surface = pygame.Surface((self.radius*2,self.radius*2))
        self.ball_surface.set_colorkey((0, 0, 0))
        self.ball_surface = self.ball_surface.convert_alpha()
        pygame.draw.circle(self.ball_surface, (0,255,0), (self.radius,self.radius), self.radius, 2)

        self.Color_ball_surface = pygame.Surface((self.radius*2,self.radius*2))
        self.Color_ball_surface.set_colorkey((0, 0, 0))
        self.Color_ball_surface = self.ball_surface.convert_alpha()
        pygame.draw.circle(self.Color_ball_surface, (255,255,255), (self.radius,self.radius), self.radius, self.radius)

        # self.myfont = pygame.font.SysFont("Arial", 22)
        # self.Line_txt_surface = self.myfont.render("1", False, (225, 255, 255))

        self.model = load_model('MNIST_CNN.h5')
        #self.model = load_model('MNIST_LSTM.h5') #RNN

        self.brush=None
        self.Hold=False
        self.Button="white"
        self.last_brush=(0,0)
        self.img_counter=0
        self.folder_name=time.time()

    def mouse_rectangle(self):

        buttons_rectangle = {}
        buttons_rectangle["Black_pos"]=[(317,502),(331,518)]
        buttons_rectangle["White_pos"]=[(334,502),(349,518)]
        buttons_rectangle["Eraser_pos"]=[(354,502),(396,518)]
        buttons_rectangle["Save_pos"]=[(227,485),(257,515)]
        
        for event in pygame.event.get():
            if(event.type==pygame.MOUSEBUTTONDOWN):

                for P in buttons_rectangle:
                    if(buttons_rectangle[P][0][0]<event.pos[0]<buttons_rectangle[P][1][0] and buttons_rectangle[P][0][1]<event.pos[1]<buttons_rectangle[P][1][1]):
                        self.Button=P.replace("_pos",'')

                if(event.button == 1): 
                    self.brush=event.pos

            elif(event.type == pygame.MOUSEBUTTONUP):
                if(event.button == 1):
                    self.brush = None

            elif(event.type==pygame.MOUSEMOTION):
                if self.brush:
                    self.brush = event.pos
        #print(self.brush)

    def Buttons_check(self):

        if(self.Button=="White"):
            Graphic.Button_state["Color"]="White"
        elif(self.Button=="Black"):
            Graphic.Button_state["Color"]="Black"
        elif(self.Button=="Eraser"):
            Graphic.Button_state["Color"]="Eraser"
        elif(self.Button=="Save"):
            Graphic.Button_state["Color"]="Save"
        self.Button="" #reset

    def draw(self):

        #print(Graphic.Button_state)

        B_P=Graphic.Balls_pos()
        self.screen.blit(self.ball_surface, B_P[Graphic.Button_state["Color"]])

        if(self.brush):
            self.screen.blit(self.Color_ball_surface,self.brush)

        if(Graphic.Button_state["Color"]=="Eraser"):
            self.screen.blit(self.black_mask,(0,0))
            Graphic.x_y_of_number.clear()
            Graphic.data.clear()

        elif(Graphic.Button_state["Color"]=="White"):
            pygame.draw.circle(self.Color_ball_surface, (255,255,255), (self.radius,self.radius), self.radius, self.radius)

        elif(Graphic.Button_state["Color"]=="Black"):
            pygame.draw.circle(self.Color_ball_surface, (0,0,0), (self.radius,self.radius), self.radius, self.radius)

    def pygame_to_opencv(self):

        view_ROI = pygame.surfarray.array3d(self.screen)        
        view_ROI = view_ROI.transpose([1, 0, 2]) #convert from (width, height, channel) to (height, width, channel)
        view_ROI=view_ROI[0:466,0:]

        self.img_bgr = cv2.cvtColor(view_ROI, cv2.COLOR_RGB2BGR)
        self.img_gray= cv2.cvtColor(view_ROI,cv2.COLOR_RGB2GRAY)

        #cv2.imshow("img_gray",self.img_gray)

    def hand_writing_detection_using_pictures_CNN(self):

        contours,hierarchy = cv2.findContours(self.img_gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)#_NONE

        if len(contours)>0:
            #cv2.drawContours(self.img_bgr, contours, -1, (0,255,0), 5)
            # find the biggest countour (c) by the area
            #c = max(contours, key = cv2.contourArea)
            num_rec= 0
            for cnt in contours:
                x,y,w,h = cv2.boundingRect(cnt)
                if (w>28 and h>28):
                    num_rec+=1
                    #print(num_rec)
                    roi= self.img_gray[y:y+h,x:x+w]
                    #roi=np.pad(roi, 5, mode='constant', constant_values=0)
                    roi=roi/255 #normalization
                    #cv2.imshow('ROI',roi)
                    gray_small = cv2.resize(roi, (28, 28))
                    gray_small = gray_small.reshape(1,28,28,1)
                    pred=self.model.predict(gray_small) 
                    max_pred=np.amax(pred)
                    pred_number=np.argmax(pred,axis=1)

                    if(pred_number!=10):# and max_pred>0.90):
                        LABEL_COLOR = (0,255,0)
                        LABEL_TEXT = str(pred_number)+"="+str(max_pred)
                        cv2.rectangle(self.img_bgr,(x,y),(x+w,y+h),(255,0,0),1)
                        cv2.putText(self.img_bgr, LABEL_TEXT, (x, y-8), cv2.FONT_HERSHEY_SIMPLEX, 1/2, LABEL_COLOR, 2)

    def hand_writing_detection_using_pictures_RNN(self):

            num_rec= 0
                    gray_small=np.expand_dims(gray_small, axis=0)
                    pred=self.model.predict(gray_small)

                    if(pred_number!=10):#and max_pred>0.90):
                        cv2.putText(self.img_bgr, LABEL_TEXT, (x, y-8), cv2.FONT_HERSHEY_SIMPLEX, 1/2, LABEL_COLOR, 2)   

    def get_hand_writing_coordinates(self):

            if(self.brush[1]<466):
                if(Graphic.x_y_of_number):
                    if(Graphic.x_y_of_number[-1]!=self.brush):
                        self.Hold=True
                        Graphic.x_y_of_number.append(self.brush)
                else:
                    Graphic.x_y_of_number.append(self.brush)
        else:
            if(self.Hold==True):
                self.Hold=False
                Graphic.data.append(Graphic.x_y_of_number)
                Graphic.x_y_of_number=[]

        #print(len(Graphic.data),Graphic.x_y_of_number)

    def flatten(t):
        return [item for sublist in t for item in sublist]

    def save(self):
        if(Graphic.Button_state["Color"]=="Save"):
            #print(Graphic.data)
            #print(Graphic.flatten(Graphic.data))
            np.savez("dataset/normal_data"+str(time.time()),np.array(Graphic.data,dtype=object)) 
            np.savez("dataset/flatten_data"+str(time.time()),np.array(Graphic.flatten(Graphic.data),dtype=object))

    def Balls_pos():

        Ball_pos = {
        "White":(332,500),
        "Black":(313,500),
        "Eraser":(352,500),
        "Save":(232,490)
        }
        return Ball_pos

class Main:

        Graphic.__init__(self)

    def run(self):
        x=0
        y=0
        c=1
        #n=0

        while True:
            
            self.screen.blit(self.image, (0, 466)) #clean_screen

            #pos=pygame.mouse.get_pos()
            keyState = pygame.key.get_pressed()
            
            Graphic.mouse_rectangle(self)
            Graphic.Buttons_check(self)
            Graphic.draw(self)
            Graphic.pygame_to_opencv(self)
            Graphic.get_hand_writing_coordinates(self)
            Graphic.save(self)

            # if (keyState[pygame.K_r]): #press R to detect
            #     Graphic.hand_writing_detection_using_coordinates(self)

            if (keyState[pygame.K_c]): #press C to detect 
                Graphic.hand_writing_detection_using_pictures_CNN(self)
                #Graphic.hand_writing_detection_using_pictures_RNN(self)

            if (keyState[pygame.K_ESCAPE] or cv2.waitKey(1) & 0xFF == ord('q')):
                pygame.quit()
                break
                #quit()

            # if (keyState[pygame.K_RIGHT]):
            #     x+=1
            # if (keyState[pygame.K_LEFT]):
            #     x-=1
            # if (keyState[pygame.K_UP]):
            #     y-=1
            # if (keyState[pygame.K_DOWN]):
            #     y+=1
            # self.screen.blit(self.ball_surface,(x,y))
            # print((x,y))

            #self.img_bgr = cv2.resize(self.img_bgr, (480, 270))
            cv2.imshow("out_put",self.img_bgr)
            milliseconds=self.clock.tick(30) # fps=30
            pygame.display.flip()
            
# Execute:
Main().run()
cv2.destroyAllWindows()

'markdown' cell: '['# Conditional GAN implementation']'

'markdown' cell: '['In this tutorial we are going to introduce conditional GAN or sortly cGAN. cGAN allows us to condition the network with additional information such as class labels. It means that during the training, we pass images to the network with their actual labels (rose, tulip, sunflower etc.) for it to learn the difference between them.']'

'code' cell: '['import keras \n', 'import tensorflow as tf\n', 'import numpy as np']'

'markdown' cell: '['After importing the necessary libraries, we have to define the architecture of the discriminator and generator. This architecture depends on many things like the volume of the data we have, the complexity of the data, data modality, etc. But as a rule of thumb, the complexity of these two networks should be roughly the same, i.e., one network should not be very powerful than the other.\n', '\n', 'the provided networks below are an example for cGAN, where the input of the generator is a noise vector with a length of 400 and the condition, which is an image with the size of (50,50,3). There are various ways to construct the generator, but a typical choice is Transposed Convolution. This is due to the fact that generally in a generator, we are interested in building an image or signal with a low dimensional input.']'

'code' cell: '['def get_discriminator(in_shape=(50,50,3)):   # defining discriminator architecture\n', '    inputs = tf.keras.Input(in_shape)\n', "    conv1 = tf.keras.layers.Conv2D(64,(3,3),strides=(2,2),padding='same')(inputs)\n", '    leaky1 = tf.keras.layers.LeakyReLU(0.2)(conv1)\n', '    drop1 = tf.keras.layers.Dropout(0.4)(leaky1)\n', "    conv2 = tf.keras.layers.Conv2D(64,(3,3),strides=(2,2),padding='same')(drop1)\n", '    leaky2 = tf.keras.layers.LeakyReLU(0.2)(conv2)\n', '    drop2 = tf.keras.layers.Dropout(0.4)(leaky2)\n', '    flat = tf.keras.layers.Flatten()(drop2)\n', "    outputs = tf.keras.layers.Dense(1,activation='sigmoid')(flat)\n", '    model = tf.keras.Model(inputs=inputs, outputs=outputs)\n', "    model.compile(loss='binary_crossentropy',optimizer='Adam',metrics=['accuracy'])\n", '    return model\n', '\n', 'def get_generator():   # defining generator architecture\n', '    inputs = tf.keras.Input((50,50,3))\n', "    conv1 = tf.keras.layers.Conv2D(64,(3,3),strides=(3,3),padding='same')(inputs)\n", '    leaky1 = tf.keras.layers.LeakyReLU(0.2)(conv1)\n', '    drop1 = tf.keras.layers.Dropout(0.4)(leaky1)\n', "    conv2 = tf.keras.layers.Conv2D(64,(3,3),strides=(3,3),padding='same')(drop1)\n", '    leaky2 = tf.keras.layers.LeakyReLU(0.2)(conv2)\n', '    drop2 = tf.keras.layers.Dropout(0.4)(leaky2)\n', '    flat = tf.keras.layers.Flatten()(drop2)\n', '    noise = tf.keras.Input((400))\n', '    total = tf.keras.layers.Concatenate(axis=1)([noise,flat])\n', '    n = 10*10*32;\n', '    dense1 = tf.keras.layers.Dense(n)(total)\n', '    reshape = tf.keras.layers.Reshape((10,10,32))(dense1)\n', "    convt1 = tf.keras.layers.Conv2DTranspose(64,(4,4),strides=(5,5),padding='same')(reshape)\n", '    leakt = tf.keras.layers.LeakyReLU(0.2)(convt1)\n', "    outputs = tf.keras.layers.Conv2D(3,(3,3),strides=(1,1),activation='sigmoid',padding='same')(leakt)\n", '    model = tf.keras.Model(inputs=[inputs,noise], outputs=outputs)\n', '    return model\n', '\n', '# building generator and discriminator\n', 'generator = get_generator()\n', 'discriminator = get_discriminator(in_shape=(50,50,3))']'

'markdown' cell: '["After defining the generator and discriminator, it's time to build our custom training loop. As you know, training a GAN has two major parts: training the discriminator and training the generator. In the phase of training the discriminator, we should pass fake (generated) and real data to the discriminator and backpropagate the error through the discriminator. In this phase, the generator will not be trained, and the label of the data will be assigned as it is, i.e., the label of fake data is assigned to 0, while the label of the real data will be 1. \n", '\n', "After training the discriminator, the generator should be trained. For this purpose, we feed the generator with noise vectors and conditions, and it generates fake outputs. This fake output will be then passed through the discriminator, and the output will be compared to 1. Yes! The label of the fake data will be 1 here for the discriminator, as we aim to train the generator in a way that it generates real-like data. In this phase, the discriminator's weights will be frozen and thus, it won't be trained.\n", '\n', 'this procedure will be continued for several epochs until we are satisfied with the output of the generator and the accuracy of the discriminator would be around 0.5, while the generator has a good performance (min-max game). It is sometimes hard to train GAN models, so if you have a harder problem, it could be beneficial to check out Wasserstein GAN or, in short, WGAN. Compared with the original GAN discriminator, the Wasserstein GAN discriminator provides a better learning signal to the generator. This allows the training to be more stable when the generator is learning distributions in very high dimensional spaces.\n', '\n', 'Below, you can find the functions and training loop similar to what was discussed before:']'

'code' cell: '['def select_real_images(dataset, indices):  # for selecting random images from dataset\n', '    X = dataset[indice]\n', '    Y = np.ones((n_samples,1))\n', '    return X,Y\n', '\n', 'def generate_prediction(generator,data):  # generating and labeling predicted pictures\n', '    noise = np.random.normal(0,1,[data.shape[0],400])\n', '    predicts = generator.predict([data,noise])\n', '    lables = np.zeros((data.shape[0],1))\n', '    return predicts,lables\n', '\n', '\n', 'def get_gan_model():  #gan model\n', '    discriminator = get_discriminator()\n', '    generator = get_generator()\n', '    discriminator.trainable=False\n', '    inputs = tf.keras.Input((50,50,3))\n', '    noise = tf.keras.Input((400))\n', '    gan = tf.keras.Model(inputs=[inputs,noise],outputs=discriminator(generator([inputs,noise])))\n', "    gan.compile(loss='binary_crossentropy',optimizer='Adam')\n", '    return discriminator,generator,gan\n', '\n', 'gan = get_gan_model()\n', '\n', 'def train(gan,generator,discriminator,dataset,data_condition,epochs=100,batch_size=50):\n', '    \n', '    batches_per_epoch = int(dataset.shape[0]/batch_size)\n', '    half = int(batch_size/2)\n', '    \n', '    # in this example, "dataset" contains target images, and "data_condition" contains condition images\n', '    for i in range(epochs):\n', '        for j in range(batches_per_epoch):\n', '            \n', '            ############# Training Discriminator ###############\n', '            indice = np.randint(0,dataset.shape[0],half) # generate random indices\n', '            X_real,Y_real = select_real_images(dataset,indice) #next time_step images\n', '            indice = np.randint(0,data_condition.shape[0],half) # generate random indices\n', '            X_predict,Y_predict = generate_prediction(generator,data_condition[indice]) #previous time_step as entry\n', '            X,Y = np.vstack((X_real,X_predict)),np.vstack((X_predict,Y_predict))\n', '            d_loss,_ = discriminator.train_on_batch(X,Y)\n', '            ####################################################\n', '            \n', '            ############### Training Generator #################\n', '            datan = dataset[np.randint(0,dataset.shape[0],batch_size)]\n', '            noiset = np.random.normal(0,1,[batch_size,400])\n', '            X_gan = [datan,noiset]\n', '            Y_gan = np.ones((batch_size,1))\n', '            g_loss,_ = gan.train_on_batch(X_gan,Y_gan)\n', '            ####################################################\n', '            \n', "            print('discriminator loss= {}, and generator loss is {}'.format(d_loss,g_loss))\n", '    return']'

'markdown' cell: '["Note that in this example, we could feed the proper conditions to the discriminator too, which also seems to be more efficient. We can implement it in the training loop and change the discriminator's architecture. You can modify every part of this code to construct the GAN model specifically for your case."]'

'code' cell: '['# usage\n', 'train(gan,generator,discriminator,dataset,epochs=100,batch_size=50)']'

برای خدا دوستان عزیز ارجمند عرض سلام و ادب درس ادامه میدیم فرصت استراحتی خاط براتون تموم میکنم خدمتتون عارضم که خیلی ممنون تا این لحظه با درس ما همراه بودید ما بلکه گم نشیم از دو جلسه قبل شروع کردیم مباحثی رو مطرح کردن که در واقع برای خودمون مباحث پیشرفته در هوش مصنوعی نام گذاری ش کردیم بعد از اینکه شبکه های عصبی امپی سی و ترنس را خدمتتون عرض کردیم مبحث یکی مونده به آخری که براتون انتخاب کردیم اسمش هست کانتینیو لرنینگ یا یاد

پیوسته و چیزیه که حالا حالت‌های خیلی زیادی به همه مواردش ندارم یک زیر شاخه خاصشه که میتونه برای خیلیامون به عنوان در واقع پوتنشیالی یا به صورت بالقوه مهم باشه و بهش بتونیم نگاه کنیم و ما اونو انشالله براتون هم بیان می‌کنیم چه اتفاقایی داره توش میفته در توانمون جلسه آینده آقای معماری تشریف میارن و برامون کد نشون میدن از اینکه یاد بگیرید چجوری میشه کدها رو نوشت جهت اطلاعتون بچه‌ها من تا این لحظه سعی کردم بدهی ها رو بهتون صاف بکنم فایل ها و فیلم های جلسات گذشته کدها رو همه رو گذاشتم دیشب دیگه تق سالش لحظه آخر رسید دستم اینم براتون بارگذاری کردم حتی اسلاید های این کانتینر لرنینگ هم براتون آپلود کردم و دیگه باید ببینیم حالا به درد دوستان میخوره نمیخوره یا کی

در آینده بخواد از این استفاده بکنه خب خدمتتون عارضم که ما انشالله جلسه آینده این مبحثو می‌بندیم و هفته آخرم اگه خدا بخواد دیگه میریم روی لارج لنگویج مادلا و یه مقدارم باز در حد توانمون در مورد اون و پیاده سازیش صحبت میکنیم و دانه معنی شما مردان عقل بگیرید دیگه که هر کدوم از این آیتم‌هایی که گفتیم کجای حالا مباحث مربوط به فعالیت‌های علمی خودتون و به صورت خاص برای بچه‌های ما کجا یه ربات اجتماعی جا میشه یا میشه جا بشه خوب ما اول صورت مسئله رو معرفی می‌کنیم امروز براتون تو این فصل واریانت های مختلفی که برای مسائل کانتینر لرنینگ میتونن مطرحشن میگیم سه تا مسئله اصلی تسک اینکتال کلاس و فوکس ما کلا روی کلاس اینکریمنتال خواهد بود عرض به حضور شما متریک ها و شاخص ها را بیان میکنیم که چجوری میشه یه شبکه که کانتینال داره ترین می‌کنید رو بسنجید که

خوب عمل می‌کنه یا نه و در مورد روش‌هاش صحبت می‌کنیم سه روش‌های اصلی و پارامتر آیسلیشن که باز دوباره بین اینا روی دومی روی یکی از زیر شاخه‌هاش که به صورت خاص می‌خوایم براتون نمونه کد بیاریم صحبت خواهیم کرد اگرچه در مورد هر کدوم یه توضیحاتی هم میدیم و در نهایت هم یه سری از مطالبی که الان مرز دانشه داره روش کار میشه رو فقط آیتم و مطرح میکنیم و جمع بندی داشتیم خواهیم ببینید ماجرا اینکه دانشکده کامپیوتر که خانم دکتر سلیمانی حالا تدریس میکردن یه درسی رو به نام ایml یک بار درس دادن و دیگه تا جایی که میدونم به بار دوم نرسید بخاطر اینکه احتمالا فرصتشو نداشتن یه درسی رو اضافه کرد به سیلابسش به نام مباحث پیشرفته در یادگیری ماشین و مخففش شده بود ادونس تاپیکس اینشن لرنینگ و با ایml نشونش میدادند

تو اون درسه که برگرفته شده است یه درسی بود که خانم چلسی فین تو استنفورد درس می‌دادند سه تا موضوع مالتی تسک لرنینگ متال لرنینگ و کانتینیو لرنینگ تدریس میشه و خب تدریس شده اگه دلتون می‌خواد می‌تونید مراجعه بفرمایید به بچه‌های دانشکده کامپیوتر و درس جالبی میتونه باشه به خصوص کسانی که مطمئنن می‌خوان از این استفاده کنند یا اینکه دوست دارن مباحث به روز هوش مصنوعی رو مطالعه بکنن و این سه تا در یک اسلاید کنار هم ما آوردیم که فقط خیلی در واقع کوتاه و خلاصه در چند ثانیه معرفیش کنیم و بریم جلوتر اول یه مفهومی به نام تسک بیارم تسک میشه چه میدونم یک کاری که خودش یک کاری رو که شما می‌خواید با شبکه عصبی سعی کنید انجام بدید و حلش کنید که خودش میتونه شامل چند تا کلاس باشه مثلاً تسک این باشه که وقتی یه سری حیوون بهتون دادن بگید که اسب گربه است الاغه و الی آخر به این می‌گیم یه تسک یه تسک دوم

هر کدوم از اینا می‌گیم تسک خب ما سه تا اصطلاح اینجا کنار همدیگه بزاریم سه تا مفهومی که اینا هم اشتراکات دارن هم تفاوت‌ها دارن یه مفهومی داریم به نام مالتی تسک لرنینگ و دنبال این هستید شبکه‌ای داشته باشید که وقتی چند تا کار بهش یاد میدید انشاالله بتونه تو تک تک کارهای که تو ذهنتونه بهتر از این عمل کنه که تک تک بهش یاد میدادید ها مثلا فرض کنید که شما در مورد راه رفتن اسب سواری دوچرخه سواری به ماشین یه چیزی یاد بدید بعد مثلاً در مورد اسب سواری داده بهش بدید و اون بتونه براتون حلش بکنه و این که اگر اسب سواری تنها رو ترین کرده بودید یه دقت میداد ولی وقتی کنارش دوچرخه سواری بهش یاد دادید شاید بتونه چیزها یا فیچرهای مشترک جذابی رو پیدا کنه که حتی شما بعضا بهش فکر نمی‌کردید و این بتونه تو اسب سواری هم به کارتون بیاد

ویژگیش اینه که چند تا تسکو با هم بهش میدید برای ترین همون تسک‌ها رو تو تستش میدید چیز جدیدی نمی‌بینه و در جریان باشید که وقتی که میخواد بشه همه تسک‌ها رو با هم داشته دو رو داشته تا ده رو داشته حالا هر کدوم این دو تا کلاس اون پنج تا کلاس برای خودشون هر کدوم داشتن متال لرنینگ حرفش چیه مت لرنینگ میگه که شما چند تا تسک با هم بدید ترین بکنه براش خب ولی یه تسک جدیدو ازش سوال بپرسید که البته اون تسک جدید یه سری ویژگی های باید داشته باشه اینا که از اون تسک جدیده هم یا میتونید اصلا داده بهش ندید یعنی باشه و اون بتونه حدس بزنه یا حلش کنه یا اینکه فیو شات لرنینگ باشه این یک یا دو نمونه یا سه نمونه هم بهش بدید مثلا فرض کنید که چه میدونم الفبای زبان چینی و جدا بهش دادید هزاران نفر مثلاً اومدن چینی نوشتن هزاران نفر اومدن فارسی نوشتن دو تا دونه سه عربی یا فارسی هم بهش می‌دید

تا الان ندیده یا خیلی ندیده ولی یه چیزایی دیده که انشالله به کارش میاد و این مدلی حلش بکنه و اما یه چیزی داریم به نام کانتینیوال لرنینگ که خیلی خیلی با زندگی آدما سازگاره توی مالتی تسک لرنینگ و متال لرنینگ چیزی که متوجه دارید میشید اینه که باید کلی تسک رو با هم برای ترین بهش بدید در حالی که تو دنیای واقعی موجودات زنده و به خصوص آدما همه اتفاقا با هم نمیفته که همه این کارا رو آنی بخوان به شما داده‌هاشو در اختیارتون قرار بدن و معمولاً شما به تجربه کم کم اینا رو یاد می‌گیرید و در ضمن در طول زمان باید چی هی خودتونو بهتر کنید نه تنها خودتونو بهتر بکنید و تسک های جدید یاد بگیرید بلکه تا حد امکان تسک های قدیم هم نباید یادتون بره و فراموش شه این مسئله خیلی مهمیه خب این مثال براتون بزنم شما فرض کنید یه شبکه دارید که خروجیش سه تا مثلاً نرونه و داره برای شما به صورت وان ها

پیشنهاد می‌کنه که عکسی که بهش دادید مثلاً میگم گربه است سگه یا موشه بعد فرض کنید که می‌خواید شبکه‌تونو کاری کنید که اسب و الاغ و گورخرو یاد بگیره اگه همون شبکه رو بردارید با داده‌های اصل و الاغ و گورخر ترین مجدد بکنید خب وزن عوض میشن بعد می‌بینید که رو اسب خوب جواب میده ولی به محض اینکه داده سگ و گربه بهش میدید دیگه دری وری جواب میده ها و این اتفاقی که توی یک شبکه عصبی عادی واقعا میفته و باید به این فکر کنیم چه‌جوری می‌شه اینو رفع رجوش کرد تو دنیا واقعی باید در نظر بگیریم که موجودات زنده داده ها بهشون پیوسته داده نمیشه چیز داده نمیشه آنی داده نمیشه در به مرور زمانه و باید طرف تلاش کنه به مرور زمان خودش قوی کنه و مسائلی مثل فورگتینگ و فراموشی این در حد امکان اتفاق نیفتاده یا حتی یه پله خفن‌تر و پرروانه‌ترش وقتی تسک های جدید یاد می‌گیریم تسک های قبلی هم حتی بهتر یاد گرفته باشن یعنی نه تنها فراموش نشن و حالا آیا این امکان وجود داره یا نه آیا شاخصی برای سنجیدنشون وجود داره یا نه پاسخش

خیر نیست می‌تونه بله باشه و حالا در موردش یه کوچولو صحبت می‌کنیم پس در یک نگاه در واقع تفاوت بین مالتی تسک متا لرنینگ و کانتینیوال لرنینگ رو گفتیم شباهت‌ها و تفاوت‌ها رو ببینید مثلاً توی شباهت مالتی تسک و متا اینه که با هم چند تا تسکو بهش میدن در حالی که تو کانتینیوال اینجور نیست توی چیز مالتی تسک چیزهایی که ازش می‌خواید بپرسید دقیقاً همون چیزایی که دیده ولی تو متال لرنینگ تسک های جدیده که ندیده و اینا جانم کانتینیو تسک ها پله پله میان که دیدن میپرسیم نه تسک های که اول یه تسک که دیده یه تسک اول بهش یاد میدیم همونو ازش میپرسیم بعد تسک دو رو بهش یاد میدیم نه فقط تسک دو بلکه تسک یکم ازش میپرسیم ممکنه حالا اینا چیزهایی که روش حساب نمیکنیم ولی یه جاهایی که کانتینیوال و مت رو میزنن تنگ هم میشه اجف نالج که بهش میگن کانتینیوال مت لرنینگ یا مت کانتینیوال لرنینگ که دو تا شاخ

در بستر زمان میبینه و دیدگاه واقعی تری پشت بود که هزار کلاس داشت اینجا ممکنه که تسک ها متفاوت باشند مثلا چیکارش میشه کرد که مال ۱۰۰ تا کلاسش بکنید بگید تسک یک مثلا پرنده هاش باشن تسک دوشن ما همین کار میخویم بکنیم تو کانتینیو اینجوری براتون مثال بزنیم و اینا نحوه تعریف ببخشید چون اینا ماجرا اینه که مقدمه داشته چاره ای نداریم ما همشو فقط در حد شهودتون بیان کنید بفرمایید

تموم میشه صحبت می‌کنیم که حالا آیا بعد از اینکه رفتی تسک ۲ به داده های تسک یک دسترسی داری یا نداری از داده های تذکیه چی برات مونده اینا تو روش های مختلف کانتینیوال جا میشه اشاره میکنم خب عرض به حضور شما که اینم باز دوباره یعنی یه عکس خیلی معروفیه که حالا تو اسلاید های خیلی از کس که تو این زمینه تدریس میکن ممکنه ببینید تفاوت های بین مالتی تسک لرنینگ ترنسفریشن آنلاین لرنینگ و الی آخر که در مورد هر کدوم صحبت میکنه که عرض کردم اینا لازمش اینه که جزئیاتش دونستن لازمش اینه که شما اون درس آشنا باشید در یک نگاه داشته باشید من در واقع پیشنهاد جدی اینه که می‌تونیم ازش بگذریم فقط به صورت خاص توی عرض به حضور شما کانتینر لرنینگ که پایین سمت راسته چیزی که متوجه میشید اینه که وقتی تسک یکو

بهش یاد دادیم تو سبزا پایین سمت چپش فقط تسک یکو ازش می‌پرسیم وقتی تسک ۲ رو بهش یاد دادیم ۱ و ۲ رو می‌پرسیم ولی آخر ولی مثلاً میگم توی چیزای دیگه این تفاوت‌ها وجود داره مثلاً تو مالتی تسک لرنینگ در جا میتونیم همه رو بپرسیم خب تو متال لرنینگ یه چیز جدیدو می‌پرسیم تو ترنسفر لرنینگ ما از دومین تارگت می‌پرسیم و نه از دومین سورس اینا تفاوت هایی که وجود داره ولی دلتون میخواد حالا بعداً که انشالله بهش وارد شدید میتونید با جزئیات بیشتری مثلا لازم شد بخونید اینا همون مباحثی که هر کسی لزوماً به کارش در آینده نمیاد خب این کاملا آگاهانه تعیین شده و تصمیم گرفته شده که این مبحث براتون درس داده بشه امیدواریم برای یه عده‌ای در آینده ازش استفاده کنیم خب در واقع در مورد این مسئله واریانت های مختلفی که مطرحه توجه به اینکه شما در مورد تسک آیدی تسک اردر یا دیسکریپت یا کانتینیوس کانتینیوس بودن تسک ها اطلاعاتی دارید یا نه و این خودش میتونه در انواع مسائل کانتینیوال لرنینگ رو برای شما

تصویر انسان هست توش یا نیست یه عکس تسک دوتون این باشه که نور عکس زیاده یا نورش کمه درسته دو تا تسک حالا به ظاهر بی رفتن و میتونه یه تصویر اصلا انسان توش نباشه نورش کم و زیاد باشه یه تصویری انسان توش باشه اصلا شما قبلا به نور کم و زیادش دقت نمی‌کردید آخر تسک آیدی شماره آیا ما داریمش یا نه موقع ترین یا موقع تست یا هر دو داریم یا نداریم یعنی وقتی یه داده بهمون میدن و میگن بگو مثلا مال کدوم کلسه آیا میگن که این داده از تسک سه بوده تو بگو تو کدوم کلاس تسک سه است یا هیچی بهتون نمیگن خب که این در مورد این صحبت میکنیم در مورد اینکه تسک اردرها رو با چه در واقع ترتیبی به شبکتون بدید یا اینکه تسک ها خودشون مرز بینشون دیسکریپت باشه یا کانتینیوس باشه این هم باز دوباره مسائلتون رو به دست های مختلفی تقسیم میکنه

تمرکزمون روی مسئله تسک آیدی توی تسک آیدی عرض به حضور شما که موقع ترین داریم و موقع تست فعلاً فرض کنید که موقع ترین تسک آیدی رو داریم یعنی می‌دونیم که وقتی دارم داده ترین میکنم این تسک شماره یکمه که خودش ۱۰ تا کلاس داره شماره دوم که سه تا کلاس داره ولی آخر خب و اینجا چند حالت پیش میاد آیا موقع تستم تسک دارم یا نه یعنی وقتی داده تست برام میاد بهم میگه کدوم تصویر بود بهم میگه تو بهم بگو که با توجه به اینکه من می‌خوام بگردم نورش زیاده یا کمه بگو نورم زیاده یا کمه یعنی بهت بگه کدوم تسک برو بگرد یا اینکه میگه دسته بندی کن دیگه ها و این دیگه شمایید که در واقع با یه تکنیکی باید برید پیدا کنید اولا منظورش کدوم بوده تو کدوم تسک و کدوم کلاس رو بیشتر مد نظرش بوده خب اگر شما تو ترین و تست هر دو تسک آییدی رو داشته باشید که ساده ترین مسائل ممکن میشه این

و ساده‌ترین ایده‌ای هم که برای تولید شبکه‌اش به ذهن می‌خوره یه شبکه مالتی هده یعنی یه شبکه‌ای که در واقع چند تا لایه داره مثلاً لایه اولتون برای اینکه بهتون بگه سگ گربه است یا موشه لایه دومتون برای اینکه بگه اسب الاغ یا گورخره بعد عکسی که اومد اون بهتون میگه کدوم تسکم بعد شما بسته به اینکه کدوم تسکه بفرستینش تو اون شاخه شبکه یعنی دیگه ساده ترین کاری که میشه کرد اینه دیگه یه شبکه موبایل چند لایه بسازید فقط هدایت کنید داده ورودی و یه در واقع چیز داره دیگه یه وان هاتی بهتون داده که شماره تسک هم چنده و هدایتش کنید به اون شاخص شبتون و اون بره چیکار کنه جواب براتون در بیاره به نظر میاد ساده ترین ایده است اگرچه ما خیلی بهش کاری نداریم دو تا دو تا شاخه بعدی که میتونن جذاب باشن داستان وقتی که شما توی در واقع ترین آیدی رو دارید ولی تو تست ندارید خب و

ماجرایی میشن صحبت کنیم دو شاخه معروف کلاس اینکریمنتال و دوم اینکریمنتالن و یه شاخه‌ای هم هست تم مرز دانشین اینکه موقع ترین هم حتی شماره تسکو ندارید خب که دیگه بهشون میگن و اصلا ما اصلا به اونا امروز بحثی نداریم خودم دانشی در این زمینه نداریم بهش میگننتال و دومین رو باز میکنم الان اجازه بدید با این عکس ها بگمنتال صحبت کردم شما موقعی که میکنید سفید رنگ بهش علاوه بر اینکه ایکس و وای دادید یعنی گفتید این عکسم مثلاً ایکس عکسمه وای برچسب بشه بهش بدید که تسک شماره چنده مثلا فرض کنید سیفارده و به سه تا سه تا مثلا بشکونید حالا یکیش کاری نداشته باشید مثلاً سه تا شاخه شو بگید تسک یک سه تا شاخش بگید تسک دو سه تاشو بگید تسک سه توی لحظه اول اینجوریه که از تسک یک مثلاً از گل و گیاهش مثلا یه سری داده میاد برچسب میزنید ترین میکنید یه

شماره تسک رو دارید بعد تو تستم فرض کنید که دارید یعنی وقتی یه چیزی می‌خواید ازتون بپرسن برو تو گل و گیاه‌ها ببین چیز یه جورایی عرض کردم مثل اینکه چند تا شبکه فقط دارید که شما فقط برید به کدومش نگاه کنید حالا این شبکه ممکنه با ایده‌های مالتی تسک لرنینگ شیر پارامتر هم بینشون اتفاق افتاده باشه مثلا اون دو تا لایه موازی که دارن یه جاهایی هم به‌خصوص اون اوایلش که ممکنهچر های لوله های این به درد اونم بخوره این به اون و اون به این خبرهایی داده باشه ولی تهش از همدیگه مسیرهاشونو جدا کنن و الی آخر کسی سوالی نشه بفرمایید نفهمیدم در نظر میگیریم کلاس نه الان هم تسک معلومه چنده ولی در نهایت میخویم بگیم که تو تو وقتی بهت میگن داده تستت از تسک دو شما میگید تو کدوم کلاس تسک دو ممکنه ده تا کلاس داشته باشه تمامی فرض کنید گربه سانان تو تسک دو

کنارش داره که شماره تسک تسک نامبر یا تسک آیدیه و این وان هات میشه جایی یا یه جایی وسط شبکه اضافه میشه و این میفهمه که این باید بره تو کدوم بگرده عرض کردم مثل مثلاً فرض کنید شبکه سه لایه ببینید این فقط تا بهش میگی گربه سانان میگه خط اول رو میخونه دیگه نمیده دو تای بعدی اصلاً کاریش نداره یه همچین چیزی خب و توی عرض به حضور شما توی به اصطلاح خروجی هاتون هم تسک آییدی بهش دادید این مسئله آسونه فقط صرفاً یه مسئله‌تونو دارید ارزش زیاد میکنید دیگه میگید که یه شبکه گنده داشته باشم یه ده تا دستگاه با هم حل کنه خب مثلاً

شناسایی میوه‌ها رو داشته باشه شناسایی حیوانات داشته باشه و و یعنی به جای اینکه میوه رو جدایی شبکه‌اش کنید حیوون و جدا شبکه گنده‌تری داره که میوه داره حیوان داره همه رو داره و وقتی هم یه داده میاد حالا یا بهش میگید که میوه و حیوون هست یا نمیگید حالا اگه بگید میشه تسکیننتال اتفاقی که میفته اینه که تو اینکریمنتال ها برچسب‌هامون در واقع چیزه دیگه متفاوته یعنی اینکه بسته به اینکه گربه سانان باشن یا میوه باشند برچسب متفاوت میشه ولی دومین هم ثابت میمونه و همینطور دستگاه هم که موجوده بعدی کلاس خیلی برای ما جذابه خب کلاس اینکریمنتال اسمش روشه میگه مسائلی که کلاس ها توش تعدادش زیاد میشه و اون جایی که برای ما جذابه مثلاً فرض کنید که من شروع کردم به یادگیری حیوانات مثلاً شما فرض کنید که فرزندی دارید می‌خواید رنگ‌ها رو بهش یاد بدید چیکار می‌کنید چیکار می‌کنن در حالت عادی با رنگ های اصلی شروع می‌کنن روز اول با آبی و

یکی یکی اضافه می‌کنن یا دوتا دوتا اضافه می‌کنند بسته به اینکه توانمندیش چقدر رفت بالاتر ها تو کلاس اینکریمنتال یه حقه ما می‌زنیم راستشو بخوای من چیزایی که تو این اسلایدا دیدم و یه نمونه کدم دیدم اونام همین کارو می‌کنن همون اول می‌دونن چند تا کلاس دارن یعنی تهش چند تا کلاس دارن مثلاً می‌دونه تهش ۱۰۰ تا کلاس داره خب با ۲۰ تا شروع میکنه تو تسک یک ۲۰ تاست تسک ۲ ۴۰ تاست ولی میدونه تهش ۱۰۰ تاست خب از همون اول تو لایه آخرش تدارک صد تا خونه رو میبینه خب و جالبه اینجا هم تاکید کرده که وای تی به علاوه یک یکیه یعنی چی یعنی برچسب های وقتی زیاد میکنید برچسب تغییر نمیکنه این همون فرض است از دید من من استدلال من اینو میگه که این فرض کرده که درسته تسک ها دارن یکی یکی اضافه میشن ولی اول ماجرا می‌دونه آخر

چند تا کلاس داشته باشه خب ولی بعضیاشو تا حالا ندیده یا فرصت نکرده یاد بگیره ده تای اولو دیده بعداً دوتا دیگه میخواد بهش اضافه شه یاد بگیره مثلاً مثال براتون بزنم که کارای ما با زبان اشاره که می‌خوایم مثلاً یاد بدیم به ربات روز اول ۱۰ تا کلمه ۲۰ تا کلمه میشه یاد دادیم زبان اشاره میتونه بیش از ۱۰ هزار کلمه رایج داشته باشه و شما می‌خواید بهش مدام دوباره اضافه بکنید چیکار خب کلاس می‌خواد اضافه بشه در قالب تسک های مختلفی می‌بینیم و این در موردش براتون صحبت کنیم همینه خب این اتفاقی که میفته اینه که در واقع دومین تو ورودی اصلا عوض میشه مثلاً ممکنه کلاسی رو ببینه که قبلاً ندیده برچسب‌ها عوض نمیشه چون گفتم تدارکشو دیدیم طبیعتاً دیستربیوشن روی خروجی هم عوض میشه و فرقش با تسکیننتال اینه که موقع ترین شما میدونید تو کدوم تسک ولی موقع تستتون نمیگه یه داده می‌ندازه جلوتون که شما هم باید

شناسایی میوه‌ها ۵ تا میوه بوده و شناسایی گربه‌سانان ۱۰ تا هم اونا بودن ۱۵ تا الان کلاسه یه عکس می‌ذاره جلوتون شما باید بگید کدوم از این ۱۵ تایی یعنی تو تست کار سختی دارید خب برخلاف تصمیم که بهتون یک کمک نمیکنه که برو تو گربه‌ها گربه سانان‌ها بگرد به من بگو میتونه دیگه ولی من بیشتر کلاسه برام مهمه دیگه بدون قهوه ای هم حالا اضافه شده بهش مطمئن باشم مثلا فیروزه‌ای هم اضافه شده و الی آخر فرض کنید به یک بچه دارید یه همچین چیزی رو یاد می‌دید خب عرض به حضور شما و آخرین چیز دومیننتال که میخویم بحث کنیم تو دومین اینکریمنتال مثل کلاس اینکریمنتال فرض میکنیم تو ترین لیبل بهش دادیم لیبل تسکو تو تست باز نمیدیم ولی یه فرق اساسی با کلاس داره تو دومین اینکریمنتال

دومین عوض میشه مثلاً مثل چی فرض کنید تسک شناسایی سگ و گربه از هم باشه تسک یکیتون عکس‌های واقعی سگ و گربه رو میده تسک دوتون کاریکاتورهای سگ و گربه رو میده تسک ستون نقاشی‌های سگ و گربه رو میده یعنی کلاس‌ها همونن ولی چی دومینتون داره عوض میشه ها به این میگن دومنتال یا فقط داره سگ ها چیز فضای بیشتری دارن به خودشون تو دومین اختصاری قبلا فقط عکس واقعی بودن الان علاوه بر عکس واقعی باید یاد بگیری که کاریکاتورهای سگ ها هم جز سگ ها اند نمیدونم نقاشی های رنگیشون یا آبرنگ ش سگ به اینا میگیم دومیننتال و توی اتفاقی که میفته اینه که دومین ورودی عوض میشه لیبل اصلا دست نمیخوره و در واقع چیزه این دیستبیوشن این فرض میکنیم که فرقی نمیکنه و یه ماجرای چهارمی داریم به نام تسک که اصلا بحثش نمی‌کنیم و این وقتیه که اصلا شما تو

یه جورایی باید بره اینا رو در بیاره خودش یا حتی مرزبندی بکنه بین دستگاه که میتونه دیسکریت باشه یا در واقع به صورت کانتینیوس و پیوسته باشه زمانی که فقط لیبل یه نوع باشد بله لیبل ثابت ولی سگ و گربه‌ها می‌تونن متفاوت عکس واقعی بیاد عکس کارتونی بیاد میتونه نقاشی بیاد میتونه کاریکاتور بیاد ولی سگ و گربه بودن ثابت حالا مثال براتون میزنم میگم جزئیات چون نمیدونم فقط حدس و گمانمو میزنم که مثلا ممکنه از روش های آنس استفاده بکنیم برای اینکه یه حدسی بزنیم برای تسک مون یا خودمون تو روش های آنتوروایز دیدید مثلاً داده رو بهتون میدن به پنج تا کلاستر تقسیم میکنیم احتمال داره اینجا بیاید به چند تا تسک خودت تقسیم بکنی بعد بیای حالا با یکی از

یه دیتا ستی ساختن به نام اسپلیت ام نیست صفر یه جا گذاشتن یک ووهاشو یه جا به اصطلاح چهار و پنجا تا دسته دوتایی خب حالا اجازه بدید به این نگاه کنیم که مسائل معروف خودمون که ایننتال یا کلاس روی این بیان کنیم خب تسکال حرفش چیه میگه که یه بار تسک یکتون اینه که صفر و یک رو بهش میدید و بهش میگید تی یکه یعنی تسک یک رو بهت دادم تو بهم بگو که صفره یا یک درسته وقتی هم که دو و سه رو بهش میدی باز دوباره شماره تسک

کلاس صفر رو انتخاب می‌کنید برای سه کلاس یک رو انتخاب می‌کنید وقتی هم تست بهش میدی چه اتفاقی میفته شما تسکو بهش میدید اون میره تو اون شاخه مربوطه می‌گرده و براتون بین این دوتایی که توشن یه لیبل می‌زنه که اینه یا اونه اوکیه به این میگیم اگر با این دید بره جلو جانم رو مقایسه کردن حالت اینکه همه کلاس نوبتی بهش میدیا اینکه همه کلاس ها رو با هم بهش بدی زیر مجموعه مالتی لرنینگه یه بار نگاه میکنم تصویر بندی نکن همون کلاس خودمون یک حالت که اگر شرایطش داری که این کار بکنی خب این کار میک ولی ما چون تو دنیای واقعی داده‌هامون کانتینیوال میاد یه چیزایی الان ندارم اصلا بخوام هم ندارمش چاره ای ندارم به این اپروچ ها نگاه کنم وگرنه محدودیت آره محدودیت هامونه که ما را به این سمت

اینجا نگاه کنید تسک یک که میاد صورتی است بهتون میگه آبی هستید یا سبزید تسک ۲ که میاد میگه نارنجی یا زردید و هر وقت هم یه تسکی میاد چون بالاخره تو یکی از این تی یک یا تی دو می‌افتید خب دومین اینکریمنتاله ماجراش اینه که فرض کنید بگیم زوج ها یا فردا تسکمون این باشه پیدا کردن زوج یا فرد حالا زوج و فرد میتونه تو تسک های مختلف اینجا متفاوت باشه تو صفر و یک صفر زوج یک فرد تو بعدیش دو زوج سه فرد الی آخر اگه تسک تو این تعریف کنید که زوج یا فرد بودن رو برام پیدا بکن این مدلی می‌شه که چی این مدلی می‌شه که این میره با تسک یک شروع میکنه ترین میشه آبی بهتون میگه زوجه فرد سبز بهتون میگه فرده درسته بعد میرید تسک دو رو بهش اضافه

و وقتی که یه داده جدیدی میاد شما دیگه به شماره تسکو نمی‌گید این باید بهتون بگه زوجه یا فرده یعنی یه جوری باید بره پیدا کنه که به کدوم شبیه‌تر بوده بره اول تو اون و تو اون بره بگرده یه همچین کاری باید بکنه خب کلاس اینکریمنتال اونی که ما دوست داریم اینه که فرض کنید من اول خورد خورد بهم داده دادن فقط صفر و یکای هم نیست بهم دادن حالا بقیه‌شو بهم ندادن وایسادم فعلاً تا رقمای بعدی من بیاد حروف الفبای بعدی من بیاد با این چیکار می‌کنه که صفر و یکم خروجی بده شبکه بعدی وقتی تسک دو میاد باید چیکار کنه دو و سه و خروجی بده دو و سه رو باید کلاس جدید کنه کنار صفر و یک قبلی که چهار تا کلاس بشه در ضمن وقتی من دو رو بهش دادم تسک دو رو ترین دادم میخوام ارزیابیش کنم باید نگاه کنم صفر یک هم یادش نرفته باشه و یه شاخص براش معرفی می‌کنیم یه متریک معرفی می‌کنیم که چیه که دنیا می‌پذیره استاندارد جهانی می‌پذیره ولی آخر میرید تا جلو تا به نه

خوب شناسایی میکنه و پلکانی هم شما رفتید جلو به خاطر اون محدودیتی که مهدی اشاره کرد چون داده‌ها رو نداشتیم یا امکانش نداشتیم محدودیت‌های محاسباتی داشتیم خب پس این مسئله در واقع اسپلیت ام نیست و توی سه تا دیدگاه بررسیش کردیم که باید ببینید کدوم من عرض کردم ما بیشتر الان ذهن من بایاست به سمت کلاس اینکریمنتال یعنی اینکه مسائلی مواجهم فردا ممکنه کلاس ۱۱ و ۱۲ هم ظاهر شه مثلاً مثلاً فرض کنید الان دارم نگاهتون میکنم رباتیک کشاورزی دارید کار می‌کنید مثلاً فرض کنید یه چند تا کلاس شما الان دارید یا چند تا تسک دارید بعد بخواید تسک مثلا فرض کنید سمپاشی رو دارید الان تسک مثلاً اینکه آفت زده رو دارید یا نه تسک بعداً گرد پخش کنی هم بخواید اضافه بکنید خب یعنی می‌دونید که قبلاً وجود نداشته بعداً می‌خواد اضافه شه و یه شبکه غول تر و غنی‌تری داشته باشید که

گربه‌های واقعی بهش بدید سگ و گربه‌های نقاشی شده رنگی سگ و گربه‌های سیاه و سفید ماجراش اینه که دومین ورودی داره متفاوت میشه ولی کلاس‌ها تغییر نمی‌کنه همون سگ و گربه باقی موندن ولی کلاس سگ و گربه رو یه بار توی تسک بهش یاد میدید یه بار ماشین و دوچرخه رو بهش یاد میدید یه بار مثلاً کامپیوتر موبایل رو بگردید خودش باید بره بین این شش تا کلاس بره بگرده و بهتون بگه کدومه این همون جذاب‌ترین مسئله‌ای که ما احتمالاً بهش نگاه می‌کنیم خب در مورد متریک‌ها عرض به حضور شما چند تا می‌خواید یه استراحتی بدیم یه ۱۰ دقیقه استراحت بدین یک سوال بفرمایید سوال بپرس این فرقش با اون مثلا یه حالت هم داریم فرض کنید که کارخانه هست

متفاوت ببینید مثلاً تو گوگل من نشستم امروز همه داریم سرچ میزنیم فلان فلان خب بعد ممکنه گوگل فقط از این سرچ های ما در آن استفاده کنه شبکه یه کوچولو بهتر کنه کلاس اضافه نکنه ها خب فقط مثلا چه میدونم دینامیک سرچ‌هامونو بسنجه که مثلاً من وقتی یه جمله بهش میدم چجوریه امروز یا کدوم کلمه بیشتر سرچ میشه و شبکه‌ش به این سمت یه کوچولو عوض شه بعد کلاً دادار شیفت کنه بریزه دلیل نداشته باشه نگه داره داده‌هامونو و دوباره یه دو ساعت بعد یه سری داده جدید میاد و از این داده‌های جدید که می‌بینه آنی تصمیم روشون بگیرید به اینا میگن آنلاین لرنینگ کانتینیوال لرنینگ عرضم اینه که بالاخره این می‌تونه

اضافه کنی یا اینکه دومین تو داری گسترش میدی مثلاً قبلاً سگ و گربه‌هات فقط محدود بود به عکس واقعی الان به نقاشی تامینش میدی این دوتا مفهوم متفاوت و بینشون تفاوت ببینید و عرض به حضور شما که باز خود اینام دوباره دنیایی‌ان یعنی اگه دلتون بخواد باید جستجو فرمانده بیشتر بخونید ازش دانشم خیلی عمومی و محدوده خب می‌خواید استراحت بدیم ۱۰ دقیقه ۱۰ دقیقه بچه‌ها استراحت بفرمایید حدود ۱۱:۴۰ دقیقه وایمیستینش پاز بزنید و بعدش حالا ادامه میدیم ماجرا خب چشم میشه ما انشالله این جلسه تئوری ها را ادامه میدیم ولی احتمالاً تئوریاش تمام نمیشه میره جلسه آینده جلسه آینده مباحث تئوری

آقای معماری هم میان نمونه کد برامون رام می‌کند خب چه شاخص‌هایی داریم که بخواهیم در واقع وقتی کانتینر لرنینگ میریم جلو که هنوز نگفتیم چه جوری میریم جلو باهاش بسنجیم چند تا پارامتر اسماشو بشنویم یه پارامتر استبیلیتی استبیلیتی پایداری منظورمون اینه که عملکرد مدل روی تسک‌های تا این لحظه دیدش خوب باشه خب یه چیز دیگه‌ای داریم به نام پلاستیتی که شاید کسایی که نوساینس دوست دارند خوندن برای خودشون این اصطلاح تو مغز شنیده باشند که این اتفاق میفته اینه که دوست داریم تطبیق پذیری خوبی هم با چی با تسک های بعدی داشته باشه که این دو تا چیزنا یعنی علیه هم عمل می‌کنن و یه جایی شما باید سبک سنگین کنید بالاخره کدوم براتون مهم‌تره تسک یک و دو دوست دارید خیلی خوب یاد یاد بگیره و یادش بمونه یا اینکه نه این شانس رو بهش میدید که تسک سه هم بره یاد بگیره ولی حالا به هر حال تسک یک و دو رو هم یه مقدار

فراموش کرد توش ضعیف‌تر شد عیب نداشته باشه اگر خیلی کلاسیک روش‌های کلاسیک یادش میره دیگه اگه روش‌های کانتینیوال داری باید ببینیم تو اون تسکه وقتی که دارید گرادیان این اون آپدیت میکنید آیا این گرادیان ها هم جهتن یا نه بعضی وقتا ماجرایی میشه بدبختی اینا زاویه بینشون بیش از نوده یعنی این میگه برو اینوری پارامترها اون میگه برو اونوری حالا چیکار میکن همون جایی که می‌خوایم در مورد روش کانتینیوال براتون یه کوچولو صحبت می‌کنیم که چه تکنیک های وجود داره و به صورت خاص حالا روش چیز ای سی رو براتون باز میکنیم که این برای کارهای ما جواب داد حالا یک بار که امتحانش کرد بفرمایید اینم میشه اینکه شبکه تون نسبت به حالت قبلی عرضش بیشتر بشه عمقش اینا میتونید خب وقتی تسک یک اومد شبکه تو یه لاین داره تسک دو که میاد یه لاین دیگه هم بهش اضافه شه ولی

روش‌های مختلف یکیش اینکه شبکه سایزش ثابته معماری ثابته پارامترهاش عوض میشه جوری که این کارا رو بتونه یاد بگیره خدمت داریم سبک سنگین داریم یک مفهوم وجود داره به نام اکیورسی دقت که منطقیه که دستگاه بعد از اینکه لیبلشون رو من ببینم چک کنم که ببینم شبکه من چقدر از این کلاس رو بالاخره تو کلاس یه چیزی به من خروجی دارم چک کنم و شاخصی از اکیوریسی ارائه بدم و اکیورسی یادتون باشه اکیورسی تا اون لحظه مهمه یعنی نه فقط وقتی تسک ۱۰ رو بهش یاد بدید فقطسک ده رو بسنجید از تسک یک تا ۱۰ مهمه خب و دو تا مفهوم دیگه به وجود میاد به نام فوروارد ترانسفر و بک ترنسفر که خود این میتونه پازتیو فوارد ترنسفر یا نگتیو فوارد ترانسفر و همینطور pازتیو بکوارد و نگتیو بک

مثبت معنا کنید یعنی خوبه برای ما منفی حرفش چیه میگه که یاد گرفتن یک تسک سبب بشه تسک‌های بعدی رو بهتر یاد بگیره یا دقت تسک‌های بعدی ببره بالاتر خب یعنی شما یکو که بهش یاد بدید کمکش کنه که دو رو هم حتی بهتر یاد بگیره حرفش چیه میگه دو رو که بهش یادی یاد دادی دو رو که یاد گرفت قبلی استفاده می‌کنید بگید که من فوروارد ترانسفررم مثبت بود یا نبود مثبت بود یا نبود و اگه خوبه واقعا گزارشش کنید اینا رو خب و عرض به حضورتون که تازه بک ترانسفر یه پله از فورگتینگ خفن تره نه تنها میگه فورگت نکن قبلیا رو تو یه پله خفن تر عمل میکنه میگه من دو رو که بهت یاد دادم تو یک قوی‌تر هم حتی بشو یه

یاد میدید یکی میاد پایین تا چند بیاد پایین راضی هستید اصلاً ۹۵ بشه ۹۳ ممکنه هیچ مشکلی پیش نیاد ولی ۹۵ بشه ۵۰ در واقع دیگه باید یادت رفته دیگه ها یه همچین چیزی و ما انقدی نمی‌خوایم خراب کاری خب اینا مفهوم های که ما داریم و اینو تعریف کردیم خدمتتون باشه چجوری میتونیم این متریک ها رو محاسبه بکنیم بچه‌ها اینا تازه یک پیشنهاده بعضی از پیپر ها اومدن متریک های مختلفی ارائه میدن حتی مثلاً موقعی که می‌خواد بکو ترنسفر یا ترانسفر حساب بکنید دقیقاً فرمول نمیره من خودم دیروز فقط دو تا مختلفشو دیدم نوشته بود که من نسبت به مقاله ۲۰۱۷ فلانی این تغییر رو توش به وجود آوردم خب و یه مفهومی یا جدولی رو باز بکنم ببخشید الان قلم نوری دیگه ندارم خب بهتون میگم تجسم کردنش کار سختی نیست من یک

ماتریس مربعی رو در نظر بگیرید خب حالا این مربعیشم باز قیدیه که دارم میزارم اسمشو می‌ذاریم آر بزرگ ماتریس آر بزرگ قراره اکیوریسی به من بده خب مثلا یک ماتریس ۳ درصد در نظر بگیرید درایه یک یکش در مورد چی صحبت میکنه میگه دقت شبکه‌تون وقتی که تسک یکو یاد دادید بهش و رو تسک یک ترین چیز کردید تست گرفتید خب حالا سوال پرسید مثلا میشه ۹۷ درصد خب یه همچین چیزی آره یک و دو چیه میگه روی شبکه یک ترین کردید رو تسک یک ترین کردید خب تسک دو ازش سوال میپرسید منطقا هم نباید خوب جواب بده آره یک دو میشه دقت شبکه‌تون وقتی که تا تسک دو رفتی تا تسک یک رفتید ولی دو رو ازش پرسیدید آر دو یک چی میگه تا تسک دو رفتید یعنی یک رفتید دو هم رفتید یکو دارید ازش میپرسید این میشه آر دو یک

تا اونجایی که رفتید همونو ازش بپرسید خب حالا گفته اکیرسی رو چطور چیز کنیم چجوری در واقع تو یک کانتینیوال لرنینگ تعریف کنید گفته یک به تی سیگمای آی از یک تا تی آر تی بزرگ و آی تی چیه شماره تی کوچیک تعداد تسک‌هاست تی بود حالا اینجا آی البته اسمش تی بزرگ آخرین تصویر مثلا ده خب الان چی داره میگه اکسی برام بازش کنید مثلاً اکیوریسی یک کاری که ۱۰ تا تسک داره چجوری داره محاسبه میشه بگید میانگین اصلا به جای یکی فرض کنید دو تا دو تا تسک دارم دو تا تسک داشته باشم میشه یک دوم چی سیمای آر دو و یک و آر دو و دو یعنی چی یعنی تسک تو برو شبکه تو برو تا آخرین

ترین بکن ولی یک بار فقط داده‌هایی هست که آخرو بهش بده یه دقت بهت میده اینو داشته باش یه بار داده‌های تسک یکی مونده به آخرو بهش بده فقط تو تست اینو داشته باش و الی آخر یعنی یه جورایی تو ماتریس آره که بهتون گفتم کجاشو داره می‌سنجه ردیف آخرو ردیف آخرو داره می‌سنجه میانگین میگیره این شاخه این ساده‌ترین شاخصیه که میشه ارائه داد ساده ترین شاخص که میشه ارائه داد اینه این اکیوری ترنسفر که دب تی چیزش کرده معرفیش کرده چجوری محاسبه میشه گفته یک به تیم حرفش این بود که بعدی ها چقدر رو قبلیا اثر می‌ذارن گفته چیکارش کن شاخصی که بسنجیمش گفته یک به تی منهای یک آیت از یک بره تا یکی قبلی مثلاً ۱۰ تا تسک داشتی سما روی یک تا نه آره تی بزرگ و آی منهای آر

دوتایی بریم جلو چیکار می‌کنه آها میگه میشه r۲ و یک و چیکار میکنه منهای آر یک و یک میکنه میگه زمانی که رفتی تا ۲ ترین کردی و یکو روش سنجیدی دقتشو داشته باش یک بارم زمانی رو نگاه کن که فقط تا یک رفته بودی و یکو سنجیده بودی اینو از هم کم کن ببین پازتیو میشه یا نمیشه حالا میانگین بگیر دیگه خب این اگه پازتیو شد خبر خوبه یعنی شما رفتید دست بعدی قبلی قوی تر شده خب یه چیز دیگه داریم به نام فوارد ترنسفر که چجوری قبلیه بعدی ها رو قویتر کنه میگه چیکار کن میگه آیا از دو برو تا آخر منطقم که همیشه اولی که بهترین خود اول عادی خودم اولین تسک میاد جلوتون حیوونا رو می‌خواید شناسایی کنید اوکی می‌زنیم تو سر کله خودمون یه شبکه داریم هزار تا پارامتر یک میلیون پارامتر داره که سگ و گربه و فلان

اعظم شناسایی می‌کنه البته می‌دونم که بدن ۲۰ تا کلاس دیگه می‌خوام اضافه کنم تو سافت مکسش ۲۰ تا خونه خالی فعلاً پایین داره خب تسک شماره ۲ میاد ولی آخر میره تا جلو میگه فوروارد ترانسفر رو چه جوری محاسبه کن مثلا باز دوباره برای دوتایی بدیم وقتی تی دوئه چی میشه میشه یک تقسیم بر ۲۱ میشه یک یکم سیگمای آر از دو تا تی بزرگ که همین دو باشه آره آی منهای یک و آی میشه آر یک و دو منهای چی بی بار یک خب یک و دو یعنی چی بی بار دو آره یک و دو یعنی چی تسک یک فقط ترین کردید ولی داده دو رو بهش بدید منطقا نباید خوب باشه بی بار من دیروز پیپرشو نگاه کردم برداشتن این بود که رندوم به شبکه داده بده وزن بده رو تسک دو فقط بسنج یه همچین وزن رندوم بده به شبکه شبکه نگاه شبکه معماری داره مثلا یه

تا کجا اون بی باره من اینجوری برداشتم بود که رندوم اینشیالیزیشن فقط یک و دو رو می‌گیرید هم در واقع خیلی قوی نیستید شما یک ترین کردید دو رو داری ازش میپرسی میگید زمانی که یکو ترین کردی دو رو ازش می‌پرسی قوی تری یا اینکه رندوم بهش بدی قویت یه همچین چیزی داره بهت میگه خب و این بارش نمیدونم باز شاید شاید معنیش این باشه پنج بارشیالایز بکن میانگین بگیر مثلا برای خیلی استوکستیک این فرایند اینو مطمئن نیستم ولی برداشت من این بود یکی دیگه اومده بود یه شاخص دیگه ارائه داده بود گفته من اینو قبول ندارم گفته بود تو ماتریس آره بود خب یه قطر اصلی داره یه مثلث بالاش داریم مثلث پایینش داره برای فوارد ترانسفر مثلث بالای قطر اصلی رو همه رو بازی داده بود خب منهای فکر کنم قطر اصلی هم

شاخص دیگه‌ای استفاده کرده بود ولی از این جنسه که قبلیه چقدر رو تاثیر می‌ذاره خب و عرض به حضور شما روی این عکس خیلی خوب الان میتونیم ببینیم به بالا سمت چپ نگاه کنید شبکه اول تسک ترین کردید به ستون سمت چپش نگاه کنید آبیه رفته بالا نارنجی و زرد پایین خب منطقی کردم آبیش قوی شده تسک دو رو ترین کردم که نارنجی باشه نارنجی قوی شده آبی چی با مخ خورده زمین این استبیلیتی نداره این شبکه بعد رفته تسک زرد ترین کرده زرده خیلی قویه آبی و نارنجی اومدن پایین اصلاً استبیلیتی پایینه خیلی شبکه خوبی نیست احتمالا شما عادی ترین کردید شبکه بعدی چیه در واقع آبی رو ترین کردی رفته چسبیده بالا بعد رفتید نارنجیه رو ترین کردید اینقدر اومده بالا خب بعد رفتید چیز کردید زرده رو ترین کردید یه کوچولو اومده

این پلاستیکی نداره این انقدر شما قید روش گذاشتید انقدر براتون مهم بوده که آبی خوب باشه که این دیگه اصلاً ترسیده هی ترجیح میده آبیه رو خراب نکنه زرده نرفت بالا نرفت نارنجی هم نرفت اینم خوب نیست اینم پلاستی سیتی پایینی داره خب حالا به عکس دوم این پایین سمت چپ نگاه کنید اول چیکار می‌کنید استبیلیتی مناسب ولی لزوماً بکوارد ترانسفر نداره آقا آبی میکنید میره بالا با مناسب نارنجی هم میاد تو همون اردر میمونه یه کوچولو کم میشه زرد هم که ترین می‌کنید میاد بالا و این ایده آل ما هدف گذاری ما از کانتینیو هم همین عکس است اما دو تا عکس چهارم و پنجمی دارم که یه پله خفن‌تر از اون که حتی من تجسمش میکردم میگه شما اول آبیه رو بیارید بالا خب بعد میرید رو نارنجی کار می‌کنید می‌بینید نارنجیه از اون خطی که تو هدف شما بودم باز بالاتر میزنه مثلاً شما به ۹۰ راضی بودید

آبی سبب شده که نارنجی خفن بشه و باز زرده را ترین کنید می‌بینید که زرده رم باز دوباره می‌برید هی بالاتر یعنی زرده با وجود اینکه مثلاً تو دومی ترینش نکردید اومده بالا نارنجی از اونی که حدس می‌زدیدم حتی بالاتر رفت ترانسفر هم اینه که اول آبی آوردید بالا بعد نارنجیه رو که میرید می‌کنید آبیه رو هم باتون میاد بالاتر حتی خب و این ماجرای خوب داستانه که اینا متریک های که داریم و اما دیگه داریم میرسیم به خود متدهاش من ریپلیشو میگم و بعدش دیگه حالا بقیشون دو تای دیگه رو می‌ذاریم برای بدن ما کلا یا میخوید کلا بذاریم جلسه بعد نمیدونم قصد میتونیم تعطیلش کنیم اسلاید ۲۷ ۲۶ آخریشه ۱۱ تا دیگه مونده آره تئوری کانت تموم میشه دیگه مرتضی میاد کد میاره ۱۱ میخوید جلسه بعدی کلاً اینا رو بگم تو پارت

سه تا متد کلی داریم که اینا خیلی زیر شاخه من اینو نشونتون بدم وحشت نکنید تعداد الگوریتم موجود کانتینر خیلی زیادن خب یعنی اینجوریه که هر کی هر پیپری میده تو حوزه کانتینیو روش خودشو میاره یا یه کوچولو یه تغییراتی میده کلی‌ترین حالت‌هایی که می‌شه دسته‌بندی کرد اینه که به سه دسته کلی آبی رنگ ریپلی متدهایزیشن یا پارامتر آیزلیشن ها شکوند که خود ریپ به سه دسته ریرسال کانست میشکنند و اینا خودشون زیر مجموعه که این مقاله‌هایی که می‌بینید زیرش هی روش‌هاشونو معرفی کردن یکیشون که معمولا سرفصلشون اولیه معروف‌ترینشونه خب اولین جایی که بهش میرسه تو رگولاریزکشن بیس ها ما دو تا روش دیتا فوکس و پرایر فوکس داریم اول دیتا رو بهتون میگیم که یه روشی به نام ال اف داره معروف ترینشه ولی در نهایت برمی‌گردیم رو ای سی که اولین روش پر

معرفی میکنیم خیلی کاری باهاش نداریم خب و این سه تا روش معرفی می‌کنیم انشالله دیگه بعدش کدشو بهتون می‌گیم ما تمرکزمون فقط در حالت عادی مگر اینکه مرتضی فرصت بکنه تا پس فردا کد دیگه‌ای هم تو یکی از اینا دیگه آماده کنیم خب ولی ای دبلیوسی الان مد نظرمونه و کار راه‌اندازمه یعنی اجازه بهتون میده که کلاس مثلا بشه نیاز نیست نگه دارید بهتون میگیم اینا فرقشون چیه و انشالله اینو بذاریم جلسه آینده که دیگه بعدش چیزو تمام بکنیم مخصوص کانت تمام بکنیم و دیگه بریم وارد هفته آخر خیلی ممنون بابت حضور همراهیتون بی زحمت اینم متوقف بفرمایید فیلمشو برای من بفرستید تا من چیکار کنم من خدمت عزیزان ارسال

به نام خدا دوستان عزیز و ارجمند عرض سلام و ادب وقت همگی بخیر و شادی خدمتتون عارضم که ما امروز بریم مباحث کانتینال لرنینگ رو ادامه بدیم انشالله یه جمع بندی برسونیم و قراره آقای معماری به ما ملحق شوند یازده و نیم فکر می‌کنم که یه نمونه کد برامون ران کنند و ببینیم چجوری میشه اینو پیاده کرد یعنی به یه نقطه هیجان انگیز دیگه باز برسیم یه چیز جدیدی یاد بگیریم و امیدوارم یه روزی یه جوری به خوبی به کارتون بیاد در آینده مبحثی که جلسه گذشته شروع کردیم و انشالله امروز به جمع بندی میرسونیم اسمش بود کانتینیو لرنینگ یا یادگیری پیوسته و خدمتتون عارضم که ما تعریفی از کانتینر لرنینگ ارائه دادیم و مقایسه اجمالی

متالرنینگ که البته چون شما به صورت سیستمی اینا رو پاس نکردید حالا یه مقدار شاید اذیت بشید واریانت‌های اصلیشو بهتون گفتیم واریانت‌های تسکریمنتال اینکریمنتال و دومنتال و توی تسکریمنتال همونطور که عرض کردیم خدمتتون این بود که شما شماره تسک رو دارید موقع ترینتون یعنی وقتی تسک ۱ ۲ ۳ رو میدید اینا رو بهش می‌گید که این دادن مال تسک یک دو بعد در ضمن توی تست هم باز دوباره بگرد ببین کدوم کلاسم برقراره توی کلاس اینکریمنتال که جذاب‌ترین مسئله برای ما و احتمالا واقعی ترین برای مائه که اصلاً به این سمت و سو اومدیم اینه که به هر دلیلی می‌دونم چند تا کلاس قراره به من اضافه بشه ولی الان داداشون ندارم یا به مرور میاد یا الان کششش ندارم توانمندی یادگیریشو فعلاً ندارم و اینکه قراره یه تسک جدیدی بیاد و توش یه سری کلاس جدید

تمام کلاس‌ها رو دارم ولی موقعی که داده برای تست برام میاد دیگه نمی‌دونم تو تسک چندمم و باید بین تمام کلاس‌های موجود یعنی مجموعه کلاس‌های تمام تسک‌ها برم بگردم و بهتون بگم که این کدومه و این ویژگی جذابیه که تو کلاس اینکریمنتال وجود داره در مورد دو کیلومتال هم صحبت کردیم که مثلاً فرض کنید شناسایی سگ و گربه باشه یک بار با عکس‌های واقعی یک بار با عکس‌های نقاشی شده رنگی یکاتور رو امروز تکه تکه شده زدیم و الی آخر و مفاهیم متریک های که میخویم بسنجیم حالا الگوریتم کانتینال صرف نظر که کدوم استفاده کردیم بسنجیم خوب عمل کرده یا نه یه چند تا مفهوم براتون یا مرور کردیم یا تعریف کردیم اینکه استبیلیتی و پلا چی اند استتی میزان تمایل به برقراری حفظ در واقع چیزه کلاس تسک های قبلی یادگیری تسک های قبلیهستی

چقدر انعطاف دارید که دستگاه جدید یاد بگیرید اکیورسی رو تعریف کردیم که چگونه دقت و میتونید محاسبه کنید که مثلاً گفتیم تو یک کار ۱۰ کلاسه شما اول با هر الگوریتمی رفتید اول تسک یک رو بهش یاد دادید بعد ۲ رو تا ۱۰ برای اینکه اکیورسی رو حساب بکنید یکی از ساده‌ترین شاخص‌های اینه که بیاید تا ده کردید یک بار رو دیتا ست گروه همون تسک دهمتون اکیورسی رو بخونید یک بار با مدل آخری رو نهم بخونید دیتا ست نهمیه رو بهش بدید تست تست نهم بهش بدید تست هشتم تا تست تست یکم اینا رو با همدیگه جمع بزنید میانگین بگیرید تقسیم بر ۱۰ بکنید و این نمادی از اکیورسی باشه در مورد فوروارد و بکوارد ترانسفر هم صحبت کردیم اینکه چگونه در واقع یادگیری تسک های قبلی بتونه بعدی ها رو قویتر کنه بهش میگن فوارد ترنسفر و بکوارد ترانسفر برعکس ماجرا اینکه تسک های بعدی بتونه قبلی رو قویتر کنه اینا مواردی بود که صحبت کردیم و

یه مثال‌های کاربردی هم ازش زدیم و الان رسیدیم چی سر اینکه روش‌های مختلف چطورند باز دوباره قراره فقط شهودی براتون صحبت کنیم بچه‌ها من در حد توان اون چیزی که یاد گرفتم و به هر حال دیدم و فیلمی دیدم یا مثلاً یه مقاله‌ای یه چند پاراگرافشو خوندم براتون بیان می‌کنم من تا الان کلاً تا این لحظه دو تا پایان‌نامه کانت لرنینگ دار تعریف کردم که یکیش دفاع شده و از روش ای سی استفاده شده توش که معماری میان توضیح میدن برامون حتی دومیش حتی انجام هم نشده یعنی می‌خوام بگم کانتینیو لرنینگ درسته انواع زیر شاخه ها داره ولی خود من فقط تئوریکلی بعضی از اینا رو می‌دونم جزواتی که استفاده کردم از خانم دکتر سلیمانی دانشکده کامپیوتره و عرض به حضور شما ایشون هم بیشتر اسلایداشون از خانم چلسی فینگ تو استنفورد گرفتن برای اینکه اینا رو بسازن کانتینال لرنینگ روش‌های خیلی زیاد متنوعی براش وجود داره از ۲۰۱۴ ۱۵ اینا هی اومده و هی هم داده باز به روزتر میشه شاید بیشترین

که الان داره بیان میشه تو حد فاصل مثلاً ۲۰۱۶ ۱۷ ۱۸ و ولی می‌تونه کارا باشه یه ماجرایی که مثلاً وجود داره اینه که ما دوست داریم مثلاً روشمون هم ترانسفر داشته باشند واقعیت اینه که روش‌هایی که الان مثلاً معرفیش میکنیم لزوماً ندارن هر دو رو اصلاً هر دو داشتن همزمان خیلی چیز عجیب و وحشتناک سختیه و رخ نمیده ولی خوبه که تو این مسائل خاص ممکنه روش خاصی رو که انتخاب میکنیم یکی از این دو تا رو حداقل به ما نشون بده که خبر خوبی برای ما خواهد بود تو جمع بندی خدمتتون می‌گم خدمتتون عرض کنم که روش‌های کانتینر لرنینگ و در حالت عادی به سه دسته کلی ری پلی متدها رگزیشن بیس متدها و پارامتر آیزلیشن متدها میشه شکوند خب توی ریپلی ها که خودشون دسته های مختلف دارند اتفاقی که میفته اینه که شما اساس کارتون بر این که داده هایی که تو زمان

گذشته توی آموزش تسک‌های قبل استفاده کردیم هنوز باید یه جوری بهش دسترسی داشته باشید خب حالا یا واقعاً خودشو داشته باشید یا یه چیزی یه نماینده‌ای از اونا داشته باشید خب ولی به هر حال وقتی میرید تسک ۲ باید داده‌ای از تسک یکم باشد ها مثال ساده اول جلسه قبل یه بار دیگه براتون بیان بکنم مثلاً فرض کنید که شما یک شبکه دارید که روز اول سه تا حیوونه مثلاً فرض کنید که سگ و گربه موش یا یاد دادید سه تا کلاس معلوم داره سه تا کلاس هم اضافه جا براش گذاشتید میدونید میخواد چیز دیگه بیاد خب و بعدا اسب و گورخر و الاغ و ترین میکنید اگه شما عادی بعد از اینکه سگ و گربه و موش ترین کردید شبکه سی ان ان چند لایه است یه میلیون تومن پارامتر داره بیاید رو داده‌های اون سه تای بعدی فقط چیز کنید در واقع بزنید تیون بکنید پارامتر شبکه رو تغییر بدید اتفاقی که میفته اینه که این سه تای دوم خوب می‌شناسه ولی سه تای اول یادش میره

یاد بدم یه چیزی از اون قبلیا سگ و گربه موش هم داشته باشم بشه بدم که یادش نره الی آخر پس ریپلی متدها اساس کارشون داده‌های تسک‌های قبل که باید یه جوری موجود باشن که حالا سه تا زیر شاخه دارن در موردش صحبت می‌کنیم رگولاریزیشن بیس متدها تلاش میکنن که تو فرایند بهینه سازی تون ترم های مناسبی رو بیارن که در واقع کانست قید بزاره و نذاره چی نذاره یه سری اتفاقا بیفته که خودشون می‌تونن دیتا فوکس یا پرایر فوکس باشن که در موردش صحبت میکنیم و اون ای سی که ما استفاده کردیم زیرمجموعه پرایر فوکس اینه یعنی از اونایی که به داده های تسک های قبل احتیاج نداره یه یه قید دیگه یه چیز دیگه شاخص دیگه رو استفاده میکنم که نمادی از اون باشه که داده های قبلی دارن

داده‌های قبلی و دسته سوم که تو شبکه مثلاً برای تسک یک یه جایی رو فیکس میکنه میگه دیگه ببین دست نزن یا یه کاریش بکن یه جایی از شبکه است که یک نگه می‌داره وقتی تسک دو داره وقتی که تسک دو رو داریم وقتی که تسک دو رو داریم یه جایی از اون شبکه موجوده که مربوط به تسک یک و کسی بهش دست نمیزنه یعنی اساس کارش اینه که آقا من یه جایی برای خودم برای تسک یک آوردم بالا دیگه بهش کسی کار نداشته باشه دیگه پس که دوره اومدم اگه لازم شد یه جای جدید براش باز می‌کنم یا از روز اول شبکه‌مو انقدر بزرگ می‌بینم که بتونه همه تسک‌ها رو تو خودش جا بده بعد یه زیرمجموعش هست که یک باشه یه زیررم مجموعه اش دست دو الی آخر این هم دسته سوم که حالا می‌خوایم در مورد اینا

چیکار کنیم صحبت کنیم بریم سر روش اول شاخه‌های مختلف دارن و توی مقالات مختلف اومده سر شاخه هر کدوم تو این باکس‌های زرد تقریباً مهم‌ترین هر کدومه یعنی اولین حد می‌خوام از مثلاً ریپلی متد از روی هر سالش استفاده کنم از کدوم شروع کنم احتمالاً اون اولیه رو انتخاب می‌کنیم آره میتونه آره کلاس بدیم از این استفاده کنیم در موردش صحبت بکنیم این واقعاً یه پیاده سازیه یعنی الان می‌خوام برم تو اجرا کانت فرقش با لرنینگ های قبلی من چیه با اون ابزارهایی که یاد گرفتم چه چه حقه‌ای باید چه چیزی اضافه کنم که بتونم این کارو انجام بدم خب اینجا اسپیس میزنم شما عرض به حضور شما اولین جایی که می‌خوایم بریم زیرمجموعه ریپلی متدها در واقع زیر

اتفاقی که می‌افته همون حدس اولیه‌ای که شما در مورد کانتینیوال احتمالاً به ذهنتون میخواد شما تسک و گربه به صورت عادی با یه شبکه عادی که من داشتم چی شده شده و این شبکه جان براش توی کلاس دیدم خود معماریش هم دست نمی‌زنم مثلاً اگر اول بوده ۱۵ میلیون پارامتر دارم خب فرض کنید که میدونم قراره ۲۰ تا کلاس داشته باشم سه تاش تو تسک شماره یک سه تای اولشو میام چیکار میکنم اینقدر میزنم با روش عمومی خودمون که این ۱۵ میلیون تا پارامتر خوب ترین بشن که چی سگ و موش و گربه رو خوب شناسایی بکنه حله می‌خوام برم حالا تسک بعدی اینجا باید چیکار کنم میگه که یک چیز وجود داره اینه که به نام شما یک در واقع پالیسی سیاست گذاری باید بکنید به نام

شما اول از تسک‌های قبلیتون یه ام دارید که یه سری داده‌های گزینشی دستگاه قبلی توشن که من بعدنا تو دستگاه بعدی میرم می‌خوام از اینا استفاده کنم میگه وقتی میخوای شبکه جدیدتو ترین کنی یا دبلیوهای جدیدتو ترین کنی فقط نیا از بچه مربوط به تسک جدید استفاده کن که اسمش bه یه بچ دیگه‌ای هم باهاش اجتماع بگیر به نام بی ها و برو ریتم کن از بچ از اون ام قبلیه که در مورد تسک های قبلی بودن ها پس از اون هم گزینش می‌کنی حالا با یه سیاستی اینکه کدومش مهمتره آیا رندوم بردارم آیا من تشخیص دادم که این داده خوب از قبلی با یه سیاست اضافه بشه از قبلیا و اینو سلکت می‌کنم و اجتماع بی و بی تیلدا رو میدم و دوباره شبکه چی میکنم امگاشو تنظیم می‌کنم اتفاقی که میفته اینه که انتظار

یاد بگیره و دوباره آخر اینکه تسک دوم یاد گرفتم فصل سوم یاد گرفتم باید آپدیت کنم ام اینجوریه که اگه لازم شد یه سری داده‌های قدیم رو حذف کنم توش یه سری از این جدیده بیام بهش اضافه کنم تا ام هم در هر لحظه تا یکی اینو داشته باشه و من بتونم فراخوانیش کنم این میشه چی در واقع روشال از زیرمجموعه متدها میتونیم بزرگترش کنیم این پالیسی هاقدر زیادن که مثلاً تنوع شما روش من درآوردی بسازید ولی به هر حال اگر از این تکنیک استفاده کنی شما زیرمجموعه هستید که داری از داده های واقعی استفاده می‌کنی ولی یک خطر همیشه وجود داره یک تهدید برای ما وجود داره که مموری ازمون میره ما باید ببینیم ما چقدر محدودیت مموری داریم و تا کی می‌خواد تسک‌هامون چند تاان تا کی من می‌خوام ازش داده نگه دارم مثلاً ۱۰۰ تا از تسک اول ۲۰۰ هست که دوم و و

انتخاب نداریم دوباره دفعه دیگه تمام تمام داده‌های قدیمتون نگه دارید اتفاقی که میفته اینه که شما شبکه دو سال بعدت از شبکه دو سال قبل قویتره چون دیتا ست غنی تر بوده همین حالا این کار بتونیم که این کار میکنیم ولی دنیای آدم‌ها اینو نمی‌یده دنیای موجودات زنده میگه که داده‌ها تو مرور زمان میان و اکسپرینس آنی اتفاق نمی‌افته حتی آدما کاوش میکن تا به اینا برسن نداریم محدودیت وجود داره محدودیت رم محدودیت داده نیومده

۱ ۲ ۳ ۴ ۵ بعد تا ده الی آخر بله اگه لازم شد مرور می‌کنی الی آخر نه بعضی وقتا به اون اندازه دیگه نمیده بیشتر فقط حالت یادآوری باشه اتفاقاً از این جنسه باشه بی برداشته یه چند تا نمونه یکم داری باهاش کار می‌کنه یه همچین چیزی روش بعدی سود و ریحرساله از داده های تسک های قبلی استفاده می‌کنیم ولی نه اینکه خود داده رو سیو کنم توری یه شبکه جنریتیو آموزش می‌دن یا گ یا وی ای مثلا که یاد بگیره از تسک قبلی داده تولید کنه خب یعنی زمانی که من دارم میرم جلو

شکل سمت چپ نگاه بکنید یه چیزی دارم به نام سالور که همون شبکه منه که هی قراره تسک‌های جدید بهش یاد داده بشه یه شبکه هم دارم چی جنریتور اسمشو گذاشته مثلاً شما سالورتون رو چیز می‌کنید یه شبکه داشته باشید براتون حل کنه یه جنریتور هم با شبکه های گن یا چیزی میسازید که بتونه داده های ورودی تسک یک رو براتون چیکار کنه تولید کنه در مورد همون مثلاً موش و گربه سگ بوده باید بتونید جنریتور داشته باشید که بتونید چیکار کنه سگ و موش و گربه رو تولید کنه بعد می‌رید تو تسک دو تسک دو چه اتفاقی میفته می‌رید یه سری داده جدید از تسک براتون میاد این دیگه منطقیه که باید بیاد درسته در مورد تسک یک شما فایل سیو نکردید از عکس‌های سگ و موش و گربه ولی جنریتورتون رو دارید و اون می‌تونه چیکار کنه سگ و موش و گربه رو براتون ورودی بیاره و از سالور خودتون می‌تونید استفاده کنید

گربه تولید کن و اینو تولید کنه اینو بدم کنار چیزا داده‌های جدید حالا اسب و الاغ و گورخرم درسته و اینجا هم دوباره قویتر می‌کنم هم شبکه و هم جنریتور دوباره قویترش کنم که بتونه این کارو بکنه حالا جالبه مغز آدما اینجوریه بیشتر عمل می‌کنه یعنی شما وقتی یه خاطره‌ای دارید فکر نکنید که دادنش تو مموریتون چیز یعنی پیکسل پیکسل سیو شده یه چیزی از این جنسه این خاطرات آدما و مرور خاطرات آدم از این جنسه تمش تو دنیای کاگشن و کاتی ساینس اینجوریه که یه چیز تولید میکنه خب و مثلاً الان می‌تونید به این مسائل جذاب فکر کنید مثلاً اونو الان نگه داشتم گفتم چه روزی بهتون می‌گ مثلاً

خواب دیدن خواب گسسته نیست دیگه درسته پیوسته است یعنی آدمه توش حرکت میکنه آدم اینجوری نیست که الان غیب شه اونجا بره و فلان و اینا داره چه اتفاقی می‌افته مثلاً اگه شما می‌خواستید اینو مدل کنید خواب دیدن آدما رو مدل کنید چیکار می‌کنید از استفاده همچین چیزی فکر کنید که ربات خواب ببینه ربات فکرشو بیاریم رو پرده بندازیم خب

فرایندی که داره فکر می‌کنه تا بگه مثلاً الان چند نفر تو تصویر نمی‌دونم یا یه تصمیم می‌خواد بگیره رو بندازه یعنی شما مراحل فکرشم حتی تصویری ببینید خب یه همچین جذابیه بعضیاشونم فنسی‌ان فانتزی‌ان ولی ارزش واقعاً فکر کردن دارند و احتمالاً تو سال‌های آینده از اون مسائل خیلی خیلی جدی بررسی خواهد شد نتونستن در حد چپ و راست فکر کردم همون کاری که خودتون کردید در حد یه سری اشکال هندسی می‌تونن مثلاً فازهای آلفا بتای خوابش پیدا کنن که خواب عمیق نیست فلان انسان آره مثلا میگم شاید در این حد بتونن ولی با جزئیات الان نمیدونم مگر اینکه احتمالا باید سطح خیلی زیادی از اسپایک های مغزی دسترسی داشته باشید تا بتونید چون

سلول‌های مغز انسان خیلی خیلی زیاد و اونم آخرین حریم شخصی آدماست ممکنه بدرنش یعنی ببینید الان که لپ تاپ‌ها و موبایل‌هاتون تو خونه‌هاتونن شما می‌تونید همیشه این بدگمانی رو داشته باشید که دوربینش یا میکروفونش بدون اینکه به من اطلاع بده داره داده‌های خونه منو جمع آوری میکنه یا داده‌های اتاقمو اتاق کارم اتاق خوابم آشپزخومو داره میگیره آخرین دیگه حریم انسان ها این که داده های مغزیشونو بگیرید و به هر حال چیز بوده نورال لینک همین شرکت های تحت نظر ایلان ماسک قطعه طراحی کرده بودند که در واقع با یک جراحی مینیمال این مثلا جا زده بشه و بتونه اسپایک های نیرون ها رو در حد زیادی بگیره حتی از اونایی که حالا از این بابت میگم مینیمال اینسیف که یعنی از اونایی که قطعه رو کار می‌ذارن شما دو ساعت بعدش میتونی بری به زندگیت ادامه بدی در این حد در واقع چیز را دستیه و

آخرین حریم‌هاست یعنی اگه همه آدما یه روزی به این برسند که اینو بذارن و داده‌هاشم یه جا وجود داشته باشه دیگه شما هرچی فکر می‌کنیدم دیگه چی می‌تونن داشته باشنش می‌تونن حسابتونو خالی کنن چون مثلاً برن شماره رمز کارت بدونن شماره حسابتونو اگه بهش فکر کنید یا مثلا تو ذهنتون بیاد بدونن ولی آخر یعنی به هر چیزی دیگه فکر می‌کنید برداشته بشه این توی خب آموزش های دینی ما هست دیگه یا داریم مثلا روزی که مثلا رازها آشکار شوند خب یعنی وجود داره واقعا واقعا وجود داره حالا انسان ها بهش میرسن یا نه لزوم نداره برسن ولی به هر حال وجود داره خب پس اینم سود و ریحرس شدن یعنی اینکه خاطره ها وجود دارد چیزه وجود داره داده‌های تسک های قبلی ولی نه در قالب یک فایل به عنوان فایل مستقیم یک شبکه جنریتیو باید بتونه چیکار کنه اونو باز تولید بکنه و باز تولید هاش تو باز تولید خودش شبکه

تسک‌های جدید و جدید و جدید یاد بگیره و خیلی چیزا بتونه یاد بگیره که ما توش کانسیگن یا کاندیشن‌ها گفتیم خدمتتون کاندیشن بزاریم مثلا دیدید عکس آقا تولید کن عکس فلان ما می‌تونیم کاندیشن بذاریم از تسک یک تولید کن از تسک یک کلاس دوشو تولید کنه یعنی هی میتونید شما کاندیشن بزنید الان تو گن اینا مسائل حل شده است یه چیز عجیبی نیست که مثلاً تسک یک و دو ممکنه خیلی به هم بی ربط باشن این سه تا کلاس داره اون پنج تا عیب نداره من میتونم رو یه در واقع کاندیشن های بزارم که تسک یک کلاس تولید کن و این بره برام تولید کنه قویتر بشه آخرین در واقع چیزی که وجود داره مسائل در واقع ریپلی متدها زیر مجموعه کانسترین خب کانسترین روش های کانسترین بیسشون که معروف‌ترینشون روش روشیه به نام جم که مخفف عرض به حضور شما گریدت اپیزودیک معماری باشه اساس کارش اینجوریه خب که می‌ره

وقتی داده جدید میاد چیکار می‌کنه وقتی داده جدید خب از تسک‌های قبلی یه دونه ام کا می‌کشیم بیرون که یه سری لیبل های در واقع چیز دیتاهای منتخب یا نمونه‌های منتخب اون تسکه هستند مثلا وقتی تو دو هم یه ام یکی من دارم خب وقتی میرم دو دارم که نمونه های منتخب تسک یک و دو میگه که زمانی که می‌خوام تسک دوم رو ترین کنم بعد از یکم میگه چیکار کن میگه زمانی که می‌خوای تتای شبکه تو آپدیت کنی حتماً علاوه بر اینکه لاس های عادی خودمون باید برقرار باشه و اینا برو به این سمت که داده که میدی لیبل جدیده رو بهت بده در ضمن باید چه اتفاقی بیفته یه قید روش میزاری میگید که کاری کن که لاس جدیده که می‌خوای یه پله بعد بری

نسبت به یه پله قبل روی تمام تسک‌های قبلی چی باشه لاس کوچکتر مساویش باشه یه کوچولو هم بدتر نشه رو قبی‌ها مثلاً فرض کنید شما رفتی تو تسک ۲ ۱۰۰ تا داده از تسک یک دارید خب بعد میری تو تسک دو می‌خواید یه چیزی کنید اون میگه مثلاً این یک میلیون تا پارامتر این باید تتاش انقدر کم شه اون باید اینقدر زیاد شه فلان فلان شه که مثلاً بتونه اینو تشخیص بده اوکی اینو هنوز اعمال نمی‌کنید می‌رید چکش می‌کنید اگه من این تغییرات بدم آیا لاسم روی در واقع ام عنوان که دیتا ست اولی باشه رفت از لاس ام عنوانم روی یه پله قبل از اینکه پارامترها آپدیت کنم بهتر میشه یا نه اگه بهتر شد اون دلتا تتا رو قبول می‌کنم و امگامو آپدیت میکنم و این تازه باید رو تمام چیزا تسک‌ها این اتفاق بیفته خب تمام تسک های قبلی باید این اتفاق بیفته و کانست میره جلو این از یه نقطه شروع میکنه که نقطه خوبی تو

بدتر عمل نکنید رو ۲ رفتید بعد رفتید ۳ رو یک و دو بدتر از حالت قبلش عمل نکنید و اینقدر میرید جلو که چی باشه که عرض به حضور شما دیگه به یه نقطه‌ای حالا رسیدید و اونو می‌پذیرید به عنوان جواب نهاییتون که اوکی تا این لحظه هم دارم خوب عمل می‌کنم انشالله جدیدام داره خوب یاد می‌گیره اینم روش کانست یعنی اساسشو یاد بگیرید فعلا اینکه قید گذاشتن تو فرایند مینیمالیزیشن لاس هم عادی لاسش ندادم سابجکتد به یه چیزایی یعنی لاس خودش باید مینیمم بشه در ضمن یه سری قید قیود هم باید وجود داشته باشه که حالا میگم طراحی به این آقای دکتر خدایگان اگه داشته بوده باشید دیدید مسائل بهینه‌سازی مقید رو دیدید احتمالاً مثلاً تو درس ریاضی پیشرفته تو لول مساویی‌هاشو به بچه ها میگیم ولی کوچکتر مساوی بزرگتر مساوی نمیگیم مثلاً وقتی میگیم که یک مسئله بهینه کن در حالی که این قید هم وجود داشته باشه که

کوچکتر مساوی کوچکتر مساوی یک لحظه مهم بشه اینکه اول کدوم دستگاه این بالاخره یه روش دیگه یه روشی که به ذهن میخوره و ازش استفاده کردن جم معروف‌ترینشه ایج هم هست اینجا هستش و چیزای دیگه‌ای که احتمالاً اومده باشه و میتونید مشاهده بفرمایید اینم شد چی گام بعدی پس برای اینکه گم نشیم ما تا الان تو ریپلی متدها بودیم ریپلی متدها اساس کارشون این بود که باید دادگان تسک های قبلی بمونه حالا یا مموری می‌خوان واقعاً مثل روش اول و سوم ریرسال و کانسترینت یا چی می‌خوان سود ریورسال یه شبکه جنریتیون که سعی میکنه از اون تسک های قبلی یه شبکه یه جنراتور خوب بسازه و دیگه اگه لازم شد داده‌ها رو مرخص کنه برن و اون ژنراتوره حالا برای ما

گام بعدی وابسته به نگهداری داده‌های قبل نباشیم تو فرایند ترینینگمون یا فرایند اپتیمیزیشن لاسمون یه تغییراتی به وجود بیاریم که چی که انشالله بگیم که به نقطه خوبی برسیم دو زیر شاخه عمومی دارن دیتا فوکس و پرایر فوکس خب دیتا فوکس اساس کارش بر دیتا هاست خب ولی یه فرقی داره با اون روش کانده یه ایده‌ای که اینجا دادن و البته نمیدونم چرا باید کار کنه ولی کار کرده و به هر حال به عنوان یک روش وجود داشته اسمش فرض کنید الf که مخفف لرنینگ وید فورگتگه ما کلا اساس یعنی چالش ما تو کانتینیوال چیه که فورگتینگ اتفاق میفته میریم بعدی بعدی رو می‌تونیم راحت یاد بگیریم قبلیه رو چیه خاکی به سرمون بگیریم که یادش نره توی

زیر مجموعه دیتا فوکس روش lwf اینو میگه میگه ببین این چیزی که میگم یکم مضحکه ما تو حالت عمومی دوست داریم وقتی یک داده وقتی یه شبکه جدید میاد نسبت به داده‌های قدیمش چی باشه بتونه باز یابیشون بکنه و اونا رو خروجیشو درست حدس بزنه این یکی حرفش اینه که میگه وقتی داده جدید میاد خب اول تلاش کن که تسک جدید یاد بگیری و بعد بعدش وقتی که داده جدیدتو میدی به شبکه خب و باهاش تسک قبلی رو می‌سنجی یعنی تو تسک دو دادت هم چیز داده جدید اومده داده تسک دو اومده خب میدی به تسک یک بار میدی به شبکه جدیدت یک بار بده به شبکه یک پله قبلی اینا خروجیشون نباید خیلی فرق بکنه اگه خیلی فرق کرد شبکه یه چیزی داره یادش میره یک عجی ها شما با داده بعدی داده بعدیتو می‌ذاری تو شبکه قبلیت

شبکه جدیدت میگه باید این دوتا خوردشون خیلی فرق نکنه اگه خیلی فرق کرد احتمالاً داره خرابکاری رخ میده نگاه کن اینجا الان تو لاسشو نگاه کنید اینجا خط به خط جلو میگه پارامتر شبکه دارید مثلاً فرض کنید گفتم یه سی ان ان مثلاً پنج لایه است ۱۵ میلیون تا پارامتر داره میگه تتاهاش یا دبلیوهاشو به دو دسته تتای شر و تتای اسپسیفیک میشکونم فرض کنید اس دارم او دارم داده جدیدم میاد اوکی که اسمش هست ایکس ان لیبلش وای ان مثلا فرض کنید تسک یک هم که موش و گربه و سگ بوده تمام شده رفتم تو تسک دو داده گورخرو بهش دادم لیبل گورخ چیه خب گورخره خب میگه چیکار کن میگه بیا اول عرض به حضور شما که داده جدیدتو بده به شبکه قبلی قبل از اینکه شبکه تو ترین کنی یه پله که گو خر رو بشناسه

بعد میام چیکار می‌کنم شبکه‌مو در واقع ترین میکنم خدمتتون عارضم که با شبکه ترین شدم گورخرو بهش میدم اون یه چیزی برام تولید میکنه که دوست دارم چی باشه بهم بگه گورخ دیگه خب میگه لاسمو چجوری تعریف میکنم نه تنها میگم باید چیزی که با شبکه آپدیت شده تولید کردی به گورخر نزدیک باشه بلکه وقتی که داده گورخ به شبکه یک لحظه قبلت دادی خب خروجیش باید با خروجی الانم یکی باشه خب با وای هت و وای او باید یکی باشه اولده وای هت اولد تسک اوت یعنی

رفتن به شبکه یک پله قدیمم دادم یه همچین چیزی و اساس عجیبه ولی اینی که داده جدید که میاد میگم نه تنها میره سعی می‌کنه جدیده رو یاد بگیره بلکه میگه اگه به قبلی می‌دادم هم باید این دوتا یکی می‌دادن تا حد امکان خروجی‌هاشون به همدیگه نزدیک می‌بود و اینو توی لاسش میذاره این چیزی که حالا تا این لحظه برداشت کردم اساس کار در واقع شبکه‌های دیتا فوکس همه شبکه ببینید چیزی که داره میره جلو نگاه کنید n میخواد یکی کنه وای n چیه لیبل واقعی گورخره وای هت n لیبل پردیکتد شبکه جدیده منه خب من کنار این یک وای وایت او هم دارم که اینا چی اند در واقع وقتی که دادممو به ازای جدیده میدم یعنی گورخ رو میدم یک بار به شبکه قدیمه میدم چون نوشته اولدسک

نگاه کنم اول یه بار چیکار می‌کنیم گفته کامپیوتر چیکار می‌کنم من یه تتای قدیم دارم شبکه آپدیت نکردم داده گور خره رو میدم اون یه خروجی بالاخره به من میده خب اسم اینو میزارم وای اولد بعد چیکار می‌کنم رندوم نیو پارامترز میکنم شبکه رو کلاً تتاشو رندوم عوض می‌کنم بعد میام ترینش میکنم میگم که وای هت الد رو چجوری تقسیم کن بیا رو شبکه ات که حالا سی ان ان بوده ایکس ان ورودی بده تتا حد های اس و اولد بده اینو نمیفهمم الان چی پارامتر شعر اس مخفف

اس چیز داره دیگه یک بار دیگه یک بار نگاه با شبکه جدیده برو خروجی آپدیت کردی اسم اینو وای هت انتظار برچسب واقعی گورخرم وای ان بود آیا وای هت o چیه میگه داده گورختو بده به شبکه قبلی شبکه که هنوز پارامترهاش یه پله ترین آپدیت نکردید او داره هتش

ممکنه منظورش این باشد بعد از اینکه آپدیت شد بده این دو تا نباید خیلی فرق کنند شبکه جدید باید بگه این گورخره بلکه شبکه جدید و قدیمت نباید به ازای داده جدید خروجشون خیلی فرق کنه خرو خیلی فرق کنه استدلال روش جم اینه که تو داری چیز می‌کنی تو داری واگراشی داری فراموشی بهت رخ میده این نمیدونم باز چرا این اتفاق می‌افته حالا کسی ایده‌ای اگه ایده آنی داره میتونه

تغییر می‌کنند اینا رو جوری انتخاب بکن که اون عبارت جلویش مینیمم بشه متوجه شدم مرسی میگه انتخاب بکن تا اون عبارت میگه عبارت لاندا برابر لاس مثلاً کراس آنتروپی بین وای و نمیدونم فلان یعنی اول اینشیالایز رندوم بکن انقدر برو جلو که این عبارته مینیمم بشه نه عبارت چیز نه فقط شما احتمالاً تو ذهنتون فقط این بوده که لاس وای

نه تنها اینو تلاش کنه بگه بلکه یه قید هم داشته باشه که چیز نکنه قبلیه رم فراموش نکنه و این برام این میشه شبکه تا این لحظه خودم فهمیدم احتمالاً چی گفتم یعنی رندوم اینشیالایز میکنه معمار شبکه جوری که داده های تسک جدید که داره میاد به جای اینکه ترم وسطیه فقط لاسه رو مینیمم کنه و شما تتاات انتخاب کنید چی مینیممش کنه جمع این سه تا مینیمم بشه این جمع این سه تا به ازای یه سری کتاب مینیمم میشه دیگه این کتاب رو سیو کن این میشه شبکه تسک دو پس سه که رفتیم

بهترین حالت قبلا دارم تمام شبکه یه خروجی میده اسم اینو میزارم اوکی با جدید ترین میکنم جوری که نه فقط فقط خودش گورخ بگه بلکه سه تای جمع اینا مینیمم شه یا اون ترم رو بخون چرا شبکه جدید جوری ترین میشود که به جای اینکه فقط لاس مربوط به گورخرش مینیمم بشه بلکه باید وقتی که

شبکه جدیده که داریم ترینش می‌کنیم میدیم و یک بار به قبلیه می‌دادیم باید تا حد امکان این دوتا خروجشون به هم نزدیک باشه عوض بله بله بله بله بله یکی عقب تر از ماه بله میریم جلو بله بله میگیم خروجی بده شبکه جدیده که الان مثلا فرض کنید من تا تسک یک رفته شدم تسک دو معماری ثابته این ۱۵ میلیون تا رو چجوری تغییر بدم میگه

نه تنها سعی کن گورخره رو بشناسه بلکه کنارش دو تا چیز دیگه هم باید باشه ترم اولشو ببینید میگه که یه شبکه دارید میشه یه شبکه هم بهترین شبکه تسکیه که قبلی رو داشتید درسته میگه باید خروجی داده‌های جدید تو این دو تا شبکه باشن تا حد امکان اگر یه دفعه جامپ کنه یعنی شبکه‌تون دارید یه اتفاق بد داره تو شبکه میفته حرفش اینه آره دیگه احتمالا درسته داده جدید ها یعنی مثلاً شبیه چیزه این تمرین بود بهتون دادیم که گفتیم از معلمه یاد بگیره یه شبکه بزرگ بود گفتیم یه شبکه کوچتری از دیجیتالش استفاده کنید تو تمرین سری دو انگار یه جورایی شبیه اونه یعنی با وجود که تسکه رو واقعاً یاد تو تسک

کلاس چهارمه بهم بده حالا من لازمش دارم چیکار داری و من میرم با شبکه خودمم تولید می‌کنم اینا رو به هم نزدیکش می‌کنم بله بله بله سواری با شبکه دیتایی که به اسب سواری از اسب سواری اومده بدی به شبکه‌ای که با راه رفتن ترین شده یه خروجی میده مثلا فرض کن راه رفتن مثلاً چهار تا کلاس داره اسب سواری پنج تا کلاس داره عجیبه ولی باید اسب سواری بتونه مثلا خونه نهم اونو فعال کنه خونه نهم راه رفتن نگاه کن چهار تا اولش هی یاد گرفته خوب بشه پنج تای بعدیش خیلی خوب یاد نه چیزی یاد نگرفته ولی

انتظار اونی که خونه پنجم تا نهمشون بتونه فعال کنه یه کمی عجیبه ولی به هر حال کاریه که راه افتاده و اساس کار یه عده‌ای خب عرض به حضور شما که چیز بعدی روش بعدی خیلی برای ما مهمه فوکس کنیم و همینو می‌خوایم کدشو بهتون نشون بدیم در واقع روشیه به نام زیرمجموعه ریگولاریزیشن بیست ها از زیر مجموعه پرایر فوکس ها همون روش سالیدیشن یه همچین چیزی رو می‌خوایم خدمتتون بگیم این چیکار میکنه این دیگه کلاً به داده های قبلی ربط نداره میاد این کار میکنه این یه شبکه داره ۱۵ میلیون تا پارامتر داره با تسک یک ترید میکنه اوکی خب شما وقتی که می‌خواید برید تسک دو رو ترین کنید سه اپروچ من بهتون پیشنهاد میدم یکی اینکه چیز نکنید اصلاً در مورد یک هیچ حرفی نزنید داده

انتظارتون چیه دو عالی بشه روش درسته یک افت کنه خب بعد برم ۳ رو این کار بکنم چی میشه سه رو عالی بشه دو یک افت کنه و این اتفاق واقعا افتاده روش است اینجا اینجوریه نگاه کنید اول ترین کرده تسک آ رو رفته عالی یاد گرفته خب بعد رفته تسک بی که ترین کرده بی برای خودش عالی شده افت کرده بعد رفته تسک سی رو که ترین کرده هم آقای افت کرده هم بی ولی سی به هر حال به ماکسش رسیده که این جای جذابی برای ما نیست یه حالت لب بومی دیگه چیه از ال تو استفاده کنیم ال تو رو یادتونه چجوری بود بچه ها ال تو رگولاریزیشن چجوری بود یه خب چیکار میکرد میومد یه لاندا تا تتای منهای تتای قبلی به توان دو اضافه می‌کرد اینو اگه به ترم اپتمیزیشن

مثبت چه اتفاقی میفته تلاش میکنه که تتاهای قبلی ثابت بمونند یعنی چی همه وزن‌ها چی بشن ترجیحاً فیکس بمونن اگر التو استفاده کنید یاد گرفته که می‌خواد بره بی چه اتفاقی می‌افته بسیار پلاستیکیش پایینه بسیار دوست داره آ رو نگه داره اصلا دستشو بستی میگه برو چیز کن شنا کن اینجوری اینجوری دیگه نهایتا یه بالکی بزنه خب و نتونه خیلی دست باز کنه اتفاق که میفته توی این روش ال تو آر که ترین میکنید خیلی خوب باقی میمونه خب ولی بی و سی اصلا ممکنه تو ترینینگش هم تازه به نقطه بالایی نرسه چون چرا تو دستش بستی اصلاً نمی‌ذاری بره اونجا خب حالا یه چیزی بینابینی می‌خوام روش ec میگه ببین نه دیگه خیلی ولش کن که اصلا همه پارامترها رو بخواد دست بزنه نه مثل دو سر بوم نه مثل ال تو باش که نذار به هیچک

یه شاخصی بیار که اجازه بده بعضیاش آپدیت بشن بعضیا نشن ها و این شاخصه رو با یه ضریبی به نام اف آی در واقع توش بیان میکنه که آی نماد در واقع چیز وزن آیوم شبکه ۱۵ شبکه باشه من ۱۵ میلیون تا اف دارم که الان مرتضی میاد بهتون میگه این مثلاً چیز کراسینا اینا رو حساب می‌کنن یعنی می‌تونید با اصلاً شما نمی‌خواد کاری حساب بکنید من فقط یه شهود بهتون بدم چیه یه جورایی نمادی از در واقع عرض به حضور مثلاً از جنس معکوس واریانس از جنس معکوس واریانس اون پارامتر است مثلاً اون پارامتر مثلاً تتای پنجمه مثلاً در حالت عادی برای خودش یه توضیح داره خب اگه توضیحش جوری باشه که گلگشاد باشه یعنی بگه من حس می‌کنم تو این بازه مثبت منفی یه عدد بزرگی واریانسش زیاد باشه شما به این اجازه میدید راحت‌تر تغییر کنه ولی اگه جوری بود که نوک تیز بود

شکلی بکشم اینجا اگه ماژیک داشته باشم خوبه حالا تو فیلم براتون نمی‌افته همینو به خاطر بسپارید ماژیک آره به اینجا رسید حالت دو فرض کنید اینجوریه و بهینش اینجا باشه حالا اگر از این سه تا استفاده کنیم اگر از اس دی عادی استفاده کنید شما چیکار می‌کنید از این می‌رید به این میرسید تو خوب میشید آ رو کلاً فراموش می‌کنید خب اگر رفتید از ال استفاده کردید همین جا یه کوچولو میچرخید آتون کامل یادتون

اگه لازم شد چیزو فراموش کن ای تو به اون دقت قبلی نباشه ولی چی بی هم برام یاد بگیر درسته اینجا لاس‌هاییه که مثلاً یه لاس معقولی از ای توش قرار بگیره و بره اونجا بشینه خب بفرمایید لانداش چقدره یعنی چقدر برات مهمه که اون قبلی مینیمم میشه چقدر برات مهمه که وزن یکی بمونه این ضریب بازیش خیلی مهمه توی پله خفن تر از ال تو هستیم دیگه کاملاً اسپیسی که ۱۵ میلیون تا پارامتر چیز میزاری قید می‌ذاریم که آقا مثلاً ده تای اولش اصلا دست نخوره از ۲۰ تا ۱۰۰ هزارش کامل اصلا حق داره کن فیکون بشه ولی آخر درسته این چیز جذاب‌تریه

حساب میشه لاس در هر لحظه چه جوری محاسبه میشه میشه لاس تسک جدید به علاوه چیزی مثلا فرض کنید تسک یکیم تسک عادی ترین میکنیم میفتیم اینجا قبوله میریم تسک دو چه اتفاقی میفته ما دیگه داریم ازش ندارم داده است که دو رو دارم چیکار می‌کنم شبکه هم ۱۵ میلیون تا پارامتر داره معماریش هم دست نخورده میام چی میرم لاس جدید و این تعریف میکنم که مینیمایز شه میگم تسک دو رو بهش بده و لاس تسک دو رو برام حساب بکن که میشه اون چیزی که بیرون سیگما در ضمن چه اتفاقی بیفته سیمای یه لاندا دومی که لاندا رو شما باید تعیین کنید که زورش در مقابل اون ترم چقدر باشه

در اف آی در تتای هر کدوم از تتاهای جدید منهای تسویه قبلی به توان ۲ این باید چی باشه مینیمایز باشه اف آی هم یه چیزی از جنس دی به دیتای عرض به حضور شما به توان دو که عرض کردم وقتی عددش چیز میشه عددش بزرگ میشه یعنی واریانس زیاده و شما حق دارید اون تغییرش بدید ولی وقتی عدد کوچیک میشه یعنی چی یعنی جای خوبی بوده دست بهش نزنه یعنی کوچیک یعنی خیلی بهش دست نزن بزرگ یعنی حق داری بهش دست بزنی دیگه درسته دارم میگم نه اگه اف آی بزرگ باشه این شانس بهش میده که دست نخوره نه برعکس گفتم میخواد کوچیکش کنه پس اجازه میده دست بخوره درسته آره دیگه آره دیگه برداشت خودم تا این لحظه این اگه اشتباه نگفته باشم اینه که وقتی اف آی

خیلی نزدیک اشتباه از جنس معکوس واریانسه جای کانفیدنسمون بالا دیگه تغییر ندیم بهتره اگه اف از جنس معکوس واریانسه آره دیگه از جنس معکوسه یعنی اف زیاد شه واری کم بوده خودش خوب بوده خودش خوب بوده اف که زیاد شه اتفاقاً برای اینکه لاست نره بالا باید تتای قبلی نزدیک بمونه اف کوچک باشه یعنی تتای آزاد که تغییر بکنه یه همچین چیزیه خب تا این لحظه برداشتم این مسئله اپتمیزیشنه حالا اگه اشتباه میکنم خودتون اصلاح بفرمایید ولی دیدگاه

تمام دبلیوها برای تمام دبلیو ما یه اف آی داریم مربوط یه چیزی از جنس ماتریس فیشر و ایناست این ربط داره به پارامترهای شبکه نگاه کاملا تمامی پارامترهای شبکه بستگی داره پارامتر شبکه تا اون لحظه به محض اینکه پارامتر عوض میشن و اینو نمیخواد شما محاسبه کنید پس آقا وقتی ما تسک یکمون تموم شده یه الی داریم تسک دو میخویم ترین کنیم چیکار میکنیم یه ال تسک دومون عادی محاسبه می‌کنیم در ضمن با تمام ضرایب فیشرها در تتا ۱۵ میلیون تا پارامتر منهای حالت قبلیش به توان دو اینو میزاریم تو لاسمون میگیم اینو اپ

تست کنیم بچه‌ها یه شبکه‌ای دارم که تسک ۱ و ۲ روش ترین شده میتونم تسک ۲ رو بهش بدم فقط با دیتا ست دوم ببینم چه دقتی میده تسک دو رو بهش بدم با دیتا ست یک بدم چه دقتی میده اون ماتریسه رو یادتونه اسمشو r آی و جی گذاشتیم تشکیل بدم که اکیوریسی تسک شبکه پایینیش خیلی برام مهمه همیشه درسته مثلث پایینی اون ماتریسه چون من همیشه میکنم میخوام ببینم تا قبلیاش چقدر خوب دارم میرم جلو و جمع ردیف آخره میانگینش برام نمادی از اکیرسی شبکه است خب که حالا این تو کار ما تو حوزه زبان اشاره بهتون نشون می‌یم خب این همون مهمترین روشی بود که بهتون گفتم میگه یه روش‌هایی هست به نام پارامتر آیزلیشن راستشو بخواید اصلا نمیدونم

خیلی نفهمیدم حالا تحلیلمو میگم بهتون ولی اگه بلد بودم دیگه مسئولیتش با خودتون منظور خودتون چک بفرمایید که شبکه‌هایی هستند که میگه یه بخشی رو تو شبکه برام در نظر بگیر که چیزن که مربوط به یه تسک خاصه و دیگه به اون دست نزن حالا دو حالت داره یا داینامیک هم یا فیکسم شبکه‌های داینامیک اول میگیم میگه آقا فرض کن تسک یک برو بالا یه شبکه ترین کن حله خب یه شبکه ترید می‌کنید یه شبکه با یه معماری مثلا ۱۵ میلیون تا پارامتر میری تسک دو رو که می‌خواید ترین کنید چیکار کن میگه تسک به شبکه شبکه اول تو فریز کن قرمزش کرده یه لاین جدیدی باز کن یعنی شبکه اصلاً دینامیکش دیگه از چیزش دیگه عوض شده آررکتکچر و معماریش عوض شد تو قبلیا همه چی بودن معماریا فیکس بودن فقط تتا داشتن عوض می‌شدن اصلاً اینجا دیگه تتای جدید اضافه شد یه لاین جدید

جدید اضافه و این اتفاقی ارزش زیاد میشه چند لایه مثلاً پیشرونده فرض کن سی ان ان داره که البته با هم دارن دیتا شیر میکنن و عرض کردم تو تو اجرا ممکنه جزئیات بیشتری داشته باشه ولی اساس کارش اینه که دینامیک شبکه رو عوض میکنه از یه چیز کوچیک به بزرگ میرسه که بهش میگن اینا داینامیک آرکتکچرا یه شبکه دیگه یه شبکه های دیگه داریم به نام شبکه های فیکس نتورک ها بهشون میگن که اینجا حالا من برداشت خودمو میگم گویا یه قضیه‌ای وجود داره که توی حوزه این چیز شبکه‌های عمیق و اینا که اگر یک شبکه فوق فوق بزرگ داشته باشید با داده‌های رندوم خیلی از تسک‌ها رو می‌تونه براتون انجام بده

خیلی بزرگتر داشتم رندوم می‌کردم احتمال داره من یه لاین یه شاخه‌ای از ابتدا تا انتهای این پیدا کنم که مثلاً کار فرض کن شناسایی سگ و گربه رو برام خوب انجام بده بخاطر در واقع بیش از حد عدد موجود بودنتون گونی است که هی اینا رو بزن تنگ هم یعنی همه حالت‌های ممکنو داشته باشه تو خودش حالا اساس کارش اینه که شبکه گنده و ثابته برعکس هم عمل میکنه میگه تسک یکو بهش بده اون باید بهت بگه که کجاهای تسک کجاهای این شبکه فعال شه تسک یک داره انجام میشه خب بهش میگه مس یک ام یک بعد تسک دو رو باهاش ترین کنی اون باید بهت بگه کدوم نیرون‌ها فعال شن کدوما رو برید جلو پس تسک دو حالا دفعه دیگه یه تسکی برات اومد یه داده‌ای از یه تسک جدید اومد فرض بر اینکه تسک رو داریم که چنده چیکار کن

فقط برو از اون شبکه مثلاً چند میلیارد پارامتر فقط به اون ۱۰ میلیون تایی نگاه کن که مربوط به تسک خودته یعنی یک ساب نتورکی از اون سوپر نتورک من برداشتم اینه شبکه پارامترهاش رندومیشیالایز هدف شما اینه که چیز پیدا کنیم ماسک پیدا کنیم از کجا شروع کنم به کجا خاتمه پیدا کنن این مهمه خب دیگه این مهمه و اولش اینجوریه و اینه که یک شبکه خیلی خیلی هیوجی داری که مثلا سه چهار تا گرافی توش استخراج میک این تسک یکی این تسک دو الی آخر و حالا اگر شماره تسک هم بهتون ندن یه روش‌هایی وجود داره دیگه الان فرصتش ندارم بگم که چجوری ماسک مربوطه رو پیدا کنید حتی مثلاً میگه یه آلفا یک تا آلفا انیو در نظر بگیرید به ازای تمام تسک هات بعد چیز بکن آلفا یک تا ان رو باید بری یه جوری ترین کنی اول رندومیشیالایز میکنی یک بار یعنی دیتا ست

خروجی میده و و برو جلو بعد آلفا رو جوری ترین کن که خروجی نوکتیز بشه و اون آلفاها جوری میشن که وقتی یه داده جدید بیاد حتی دیگه خودش هم میتونه پیدا کنه که جز کدوم تسکه یعنی تو اون داستان کلاس اینکریمنتاله میره براتون اینجوری پیدا میکنه که این عرض کردم حالا نمیدونم ما ممکنه ازش بخوایم استفاده کنیم یا نه و اینم در واقع اساس کار پارامتر آیزلیشن ها و این دیگه صحبتام تموم شد اینکه چجوری می‌شه پیاده‌شون کرد عرض کردم جانم داینامیک همون بود که چیز بود دیگه هی اضافه میکردیم لایه لایه اضافه میکردیم آبی ها رو فیکسش این بود که سوپر شبکه داری اول و سعی میک سوپر مس های ازش استخراج بکنی کجاشو ببینم تسک فلان رو بهم میده این شد بچه ها تمام اصولی که تا حالا تا به این لحظه یا حالا شاید بگم بهتر بگم تا ۲۰۲۰ رو کانتینیو

به شبکه بگیم یاد بدیم چه جوری یاد بگیره خب یعنی خفن‌تر از اینکه فقط یاد بگیره که این سگه یا گربه است یاد بگیره که خودش یاد بگیره خب اینا رو می‌زنن تنگ هم و دو مسئله جذاب کانتینیوال متا کانتینیوال لرنینگ و کانتینیوال مت لرنینگ هم الان مسائل بسیار داغ پژوهشی اینجا خب که اینا هر کدوم حالا برای خودشون جزئیاتی دارند اگه دلتون خواست می‌تونید نگاه بندازید ولی چون ما کانتینیوال نگفتیم دیگه یعنی شاید بخواهیم بگیم دوباره مقدماتی از اون جنس لازم داره ولی انشالله خوندید به این فکر کنید که این تلفیق این دو تا می‌تونه چیزهای جذاب باشه بچه‌هایی که نزدیک انتخاب تزن و دوست دارن هیجان انگیز کنن تزهاشونو مثلاً متا رو جا بدن کانتینال رو جا بدن مت کانتینیال یا کانتینیوال مت رو جا بدن و اینا چیزایی که میتونید بهش فکر کنید و در نهایت رویای ما تو حوزه کانتینیوال اینه

رویای ما اینه که بتونیم به شبکه‌های جذابی و روش‌های تولید کنیم که بتونن جاهایی که هی داده مدام میاد تا ابد هی داره داده میاد مثلاً مثل زندگی آدم هی داره براش چیزهای جدید به وجود میاد هی بتونه یاد بگیره حتی اگر بین تسک‌ها که الان بهش گفتیم تسک یک و دوئه اگه باندری وجود نداشت الگوریتم توسعه بدید که اونم بتونه یاد بگیره عرض به حضور تو آنلاین لرنینگ موفق عمل کنه فوروارد ترنسفر و ترانسفر رو داشته باشه عرض به حضور شما که مسائلی که در مورد تسک ها هستند بهش نمیگیم بتونه انجام بده خدمتتون عارضم که بین و جاهایی هم که لازمه بین استبیلیتی و پلاستیسیتی بتونه بالانس به وجود بیاره مثل زندگی آدما یعنی واقعاً شما یه چیزیو که مثلاً علوم مثلاً سوم ابتدایی نمی‌دونم کرم‌های حلقوی ابرهای کلاله‌ای ابرهای سیاه باران زا اینا چیزایی که خوندید الان ممکنه هیچک یادتون نباشه کاملاً ذهن یعنی نیچر و ماهیت

یادتون بره خیلی هم یادتون بره ولی عوضش چیزای جدیدی بیاد تو سر کله‌تون مثلاً تیرهای یک ساعت درگیر نمی‌دونم گشتاور خمشی الی آخر ولی کدوم مهمه من کاری ندارم ولی به هر حال اینا جایگزین هم بشن و یه جاهایی واقعاً شاید لازم رخ بده خب تو زندگی آدما اینا زیاد دیده شده تو خلقت هست حتما بهتر از من میدونید که چه میدونم وجود مثلا تایم یا زمان به عنوان بهترین دمپر دنیا همیشه ساعت میشه که تلخ‌ترین اتفاقات زندگی هم بعد یه مدت به هر حال قابل تحمل بشن خب و یا حتی فراموش بشن یعنی به هر حال مهمه تو زندگی آدما تو زندگی تو خلقت واقعاً وجود داره خب و اینا مباحث که میشه بهش فکر کنید حالا یک چون سلیقه و ذائقمه من شخصی این کارو می‌کنم شما ممکنه با ابعاد دیگش فکر کنید و اینکه چگونه چگونه اینا رو می‌تونید توی زندگی فرامادده جا بدید یعنی یه زمانی می‌گم اگر حتی مثلاً این دیپ لرنینگ اومد و درید یعنی حوزه

موجود دنیا رو تو حوزه مادی همه رو مثلاً چیز کرد مدل سازی کرد بالاخره یه جواب معقول داد و الی آخر آیا همچنان میشه ازش استفاده کرد من به نظرم میشه و برید به این فکر کنید که با تلفیق‌های مواردی فراتر از اون چیزی که ما تو زندگی هستیم هم شاید بشه چیکار کرد از این ماجرا استفاده کرد این بچه‌ها صحبت‌های بنده بود خیلی ممنون که همراهی کردید ما کانت لرنینگمون تموم شد در واقع حدود ۵ تا ۱۰ دقیقه استراحت بفرمایید من زنگ میزنم آقای معماری که تشریف بیارن شروع کنیم فقط یه چیزی الان تعدادمون چند تاست بچه‌ها اینو متوقفش می‌کنیم آرزو من تعدادمون بشمارم ببخشید دو چهار شش بخش دوم کد نویسی آره

مبانی بیسیک‌ترین حالتیه که میتونیم ای دبلیوسی رو پیاده سازی بکنیم روی امینیس که دیتا ست معروف هم هست مهم اینه که الگوریتمش رو بلد باشیم حالا عوض میشه تغییر داد رو خدمتتون کار سختی در میاریم حالا یه تابعی من اون بالا نوشتم که اینجا فراخوانی کردم فاصله ببینید اینجا که تسک سپریت میکنیم اینو دسته تابش خودم نوشتم اون بالا حالا نشونتون میدم در اصل چیکار

ایکس و وای رو می‌گیره و حالا اینجا من براش تعریف کردم که کلاس صفر و یک است ۲ و ۳ رو بگیره یک هست ۴ و ۵ همینطوری که خیلی هم طول نکشه چون ران گرفتنش خیلی زیاد طول میکشه الان جلوتر با هم میبینیم اینو سه فصل بیشتر در نظر نگرفته یعنی صفر و یک میشه تسک الان تشکیل میدیم دو سه رو پیدا میکنه در میاره کانکت میکنه میشه یه مسئله دو کلاسه که خب این دو کلاسش متفاوت از همه خب الان با توجه به این توضیح شما باید بدونید که ما کدوم اپروچ رو داریم پیش میگیریم ما الانتالم یا دامنتال قاعدتا کلاس

اگر بخواهیم دامنتالش کنیم کافیه که این صفر و یک دو و سه که جدا کردیم لیبل‌هاشو مثل هم کنیم یعنی چی یعنی تو تسک یک لیبل اولیش بشه صفر و یک تو تسک ۲ همینطور تو تسک سه همینطور اون وقت میشه چی میشه دامدار مثل این میمونه که بخواهیم اعداد زوج و فرد هم تشخیص بدیم فقط دیتای صفر دیگه یعنی فقط صفر میشناسه بعد دو بعد چهار بعد شش و همینطور جلو خب برگردیم ادامه کد اینجا که ایکس تست تستشون رو جدا کردیم الان من فقط یه توضیح بدم قبل از اینکه اینو رانش بکنم اینجا توی این خط ایکس من هر کدوم یه لیست شامل

هر کدوم یه لیست شامل سه تا نامپای اره به نامپای اریا دیتامن یا لیبل من و اون لیسته تعداد تسکم رو مشخص میکنه یه مدل رو براش تعریف می‌کنیم مدل ساده‌ایه صرفاً یه لایه دمس ۱۲۸ تایی گذاشت ده تایی برای دقت خوبی دقت تقریباً ۱۰۰% رو میده دقت بسیار بالای هم کار سختی نمیخواهیم بکنیم دیگه آخرین لایه‌مون ۱۰ تا نیرون داره و ما فقط دو تا کلاس رو می‌خوایم پیش‌بینی بکنیم نکته‌ای که هست حالا یکی از آیتم های که محدود میکنه استفاده از این الگوریتم رو با این نوع پیاده سازی اینه که ما از قبل می‌دونیم مجموعاً چند کلاس رو می‌خوایم تفکیک کنیم یعنی من می‌دونم نهایتاً ۱۰ تاست حالا تو هر تعداد تصویر ماکسیمم ۱۰ کلاس قراره

اگر نخوام این کارو بکنم می‌تونم از اون مدل آخر اون روش‌های پارامتریشن‌ها استفاده با افزایش کلاس‌ها لایه دنسم نرون بیشتری بگیره که اون طبیعتا وزن‌های بیشتری هم اضافه میشن به سیستم خب تعریف مدل من به جای که از مدل دات کامپایل استفاده بکنم چون خیلی رفتم خیلی را دست نیست مقدار اضافه کردن به لاس دیفالت خود مدل های کراس یه تابع تعریف کردم کامپایل مدل با هم میبینیم کامپایل مدل چیکار میکنه این بالا پایین شدنه بخاطر اینکه فانکشن ها رو اول تعریف کردم شما یه دور که ما کامل توضیح بدیم بعد ران کردنش دیگه ملموس‌تر میشه کامپایل مدل چیکار میکنه ما توی کامپایل مدل خود مدل را بهش میدیم لرنینگ ریت رو هم بهش میدیم و یه پارامتر دیگه

توی هر تسکی که می‌گذره ما یه ترم رگولاریزیشن به مقدار لازم اضافه بشه که حالا چه جوری حساب میشه با همدیگه جلوتر ریاضی در نظر نگیرید فعلا مدل انجام میشه اپتیمایزش آدامه لرنینگ بهش دادیم ورودی فانکشنمون متریکش هم اکیورسی یه مسئله ساده رو می‌خوایم با متریک متداول حل بکنیم تنها تفاوت این مقدار لاسه که من لاس رو میخوام توی هر فصل تغییر بدم درسته بخاطر این اومدم به جای مستقیم استفاده کردم از مدل دات کام فایل کامپایل مدل کد نوشتم براش و کلاً فرایند ترینینگ رو دستی انجام یعنی تابعش رو

مدل فراخوانی میشه این مدل دات کامپایل اجرا میشه و لاس مساوی یک فانککشنی قرار میگیره که داخل همین کامپایل مدل تعریف شده برای اینکه بتونه توی هر پست مقدار متفاوت‌تری از لاس‌ها رو بگیره یا اضافه کنه یا تغییر بده کاستم لاس چیه میاد میگه وای ترو و کلا پایه یک تابعی که میتونی ازش استفاده کنیم اینه که وایتمون رو بگیره و یک عدد تحویل بده دیگه حالا با یه سری اعمال ریاضی یه کارایی بکنه عدد تحویل بده که من اون عدد رو مینیممش کنم دنبال صفر شدنش باشه یا نزدیک به صفر شدن این کاستم لاس میاد میگه یه پارامتر لاس اسپ کت را بریز توش یه نکته‌ای که هست توی این مدل پیاده

استفاده کنید یعنی از وان هات استفاده کنید اعمال ریاضیتون پیچیده‌تر می‌شه وارد اعمال ریاضی بیضین میشه و نمیتونه حساب کنه براتون یعنی نیاز به تغییرات توی کد داره برای همین ما اینجا از اسپارت کتگوری کال استفاده کردیم به خاطر راحتی نیست بخاطر اینکه اگر کتگوریکال باشه یعنی اگه لیبل‌هامون وان هات باشند توی این ریاضیات میمونه و با این مدل نمیتونیم به نتیجه برسیم درست شد متوجه شدین بخاطر همینه که من تو کتگوریکال دیگه نمی‌کنم لیبل ببینید اینجا که نه کتگوریکال فرقش با کتگوری کال اینه که کتگوریکال وان ها من این اگر صدا سعی کنم بلند حرف بزنم آره ببینید کت مثلا کلاس دو رو اینجوری حالا اگر پنج در نظر بگیرید

باشه لیبل رو مساوی با ۲ عددش شما خودتون باید کت کنید دیگه با استفاده از دستور اینجا دقت کنید که من الان این کار را نکردم چون میخوام از اسپارس استفاده بکنم دیگه تفاوتی هم نداره این خودش میاد فرایند مشابهی رو طی میکنه داخل خودش خب لاس را پیدا میکنه مقدار عادی لاسه کتگوریکاله حالا اگر با دونستن این نکته فاکتور بگیریم همون کتگوریکال عادی م اختلاف وای تو حالا به توان

اگر داشتم چون من تسک اول ندارم که من بخوام فراموشش نکنم میگه اگر اکسترا لاس داشتی خب اکسترالات یه سری فانکشن که اونا هم مثل لاس عمل می‌کنن روی مدل پیادشون کن و هر عددی دادن هی با هم جمع ببند درست شد پس عملاً این تیکه کد یعنی کاستم لاسه داره اون رابطه سازی با لاس بی تتا به علاوه سیگما اف در توان دو رو میسازه برام که حالا چجوری اینو میسازه اکستراس چی تعریف کنم مهم میشه دیگه علاوه بر اکسترالاسی که این میتونم بزارم برای ای سی هر

و سایر ترم‌های رگولایزر دیگه من اینجا جلوتر ای دبلیو سی رو چه جوری کد میزنم متوجه شدیم داره چیکار میکنه داره میگه مدل بکن ولی نه با لاست عادی از پیش تعریف شده کراس با یه چنین کاستم لاسی که من میگم چه ترم های داشته باشه اول خود اون کتگوریکال رو حساب می‌کنن و یه سری ترم هم اگر نیاز بود بهش اضافه بکنم میتونم اضافه نکنم حالا برگردیم پایین این مدل بفرمایید

وارد چه اتفاقاتی میشه و از نظر ریاضیاتی کجا به باد می‌خوره رو نمی‌دونم ولی من با نمونه‌های متفاوت امتحان کردم یعنی با انواع مختلف دیتا ست کردن و اینا امتحان کردم به جواب یعنی نه که به جواب نمی‌رسه ارور میده و نمیتونه گرادیان بگیرم از اینا تو اون گرادیان گرفتنی نمیتونه گرادیان بگیره اما از نظر ریاضی کجاست ببینید ریاضیاتی چجوری اثبات میشه که با اون نمی‌شه با این میشه اونو نمی‌دونم خب کامپایل مدل رد شیم برگردیم توی لوپ اصلی‌مون من یه دور کامپایل مدل می‌کنم فقط با مدل و لرنینگ ریتسترالاسی بهش نمیدن دیفالتش رو هم اگه یادتون باشه اون بالاتر نان گذاشته مگر اینکه چیزی اضافه بشه یه لیست هم درست می‌کنم که

تعریفش می‌کنم تعریف شده میتونم هر تعدادی که بخوام بذارم میشه چی میشه از متغیر ایکس ترین تسکم درایه اولش من گفتم ایکس و وای فرس اینا لیست های سه تایی اند لیست های تسک تایی اند درسته توی هر تسک اولین یعنی اون درایه مربوط به شماره تسک هم میشه داده ترینم و طبیعتاً متناظر با اون لیبلش همینطور برای تست تا اینجا اوکیه پس من اینپوتمو می‌ذارم داده تسک اول لیبلش از وای میخونم از وای ترین تسک میخونم

مجبورم فرایند شدن رو دستی به عهده بگیرم یعنی اون کارهایی که مدل انجام میده رو من دستی کد بزنم چه جوری کد بزنم توی هر ایپاک یه تعداد ایپاکی می‌خوام برم جلو دیگه توی هر ای پاک یه تابعی رو فراخوانی میکنم به نام ترین ای پاک که اون پاک رو ترین بکنه مدل را میگیره اینپوت و لیبلش رو میگیره چند تا چند تا باید بره گرادیان حساب کنه برگرده و اپتیمایز کنه بریم بالا ببینیم چیکار میکنه اون کار میتونیم از اون دستور هم میتونیم استفاده کنیم که دستی حسابش بکنیم و اون تفاوتی نداره یا اصلا تو حالت من از اون استفاده نکردم میدونم وجود داره ولی ازش استفاده

آره از نظر ساختاری متناسب نیاز چیکار می‌کنه حالا فکر کنم اینجا خیلی نیاز نداشته باشه قراره که یک پاک ترین بشه چجوری یه کد آماده است دیگه اصلا نیاز نیست بدونیم چه جوری مگه ما میدونیم وقتی مدل میکنیم مرحله به مرحله چه جوری بک سایز میگیره ریاضیات چی می‌دونیم ولی مگه کد میزنیم آماده استفاده کنیم فقط مروری رد شیم میاد شافل میکنه به تعداد بچه سایز جدا می‌کنه از دیتا ستش دیتا ست که همون همون دیتا و لیبلش اینپوت و لیبل رو می‌گرفتن دو تا پارامتر دارهینت ماسک و اینک

که اگر بخواهیم الگوریتم‌های آماده دانلود کردم از جایی آورده از گیتاب گرفتم کد مفصل‌تر بوده من کامل میزارم براتون الگوریتم‌های غیر از کانتینیوال هم میشه باکی هر جا بخوام کنم میشه از این استفاده این دو تا پارامتر توی اون الگوریتم‌ها به کار میاد اینجا به درد ما نمی‌خوره فعلاً میام جلوتر کسی میام جلوتر دونه دونه گرادی حساب می‌کنم و بعد با اپتیمایز هم وزن‌ها رو آپدیت می‌کنه کاری که این لوپ روی دیتا ست انجام میده نت من فکر کنم قطع شد آره نه اینجا رو می‌بینم که هست صدای صدا صدا

تصویر مطلب اونجایی که باید دوست عزیزمونو پیاده بکنیم پس من تا اینجا اومدم یه یه کردم بعد حالا ولیدیشن ست رو هم میتونم براش تعیین بکنم که بعداً با استفاده از دستور ریپورت ولیدیشن بگیرم ازش دستور ریپورت هم اینجا یه فشن که خودم نوشتم کار خاصی نمیکنه میاد رو ولیدیشن

طولانی میشه مدت تموم میشه میاد میریم میاد تموم شده توی لوپ بعدی توی این لوپ میایم چیکار میکنیم میایم میگیم از تسک اولی اولین تسکی که یاد گرفتیم تست بگیر ببینم چند درص من اینو می‌خوام گزارش کنم بعدا و ببینم که وقتی تسک دو رو یاد گرفت تسک یک چقدر یادش مونده که بعد حالا میانگین بگیرم بین دقت هاش بشه میانگین مدلم فعلا تو کسی که اول که این فقط یک بار اجرا میشه رو داده تست خودش میشه تست میکنه و دقت گزارش میکنه حالت عادی

ادامه میدم میام هر کس که تموم میشه دو تا کار انجام میدم یه بار اینو ماتریس رو می‌سازم یک بار این فرم رو به کاستوم لاسم اضافه می‌کنم که وقتی میرم تسک بعدی این مدل دات کامپایل که حالا کامپایل مدل رو که فراخوانی کردم لاس جدید را برای من مینیمم بکنه درست شد چجوری این کار میکنم دستور یک فانککشنی تشکیل میدهد برای من ببینید این دستور ای دستور که خود تابع خودمون نوشتیم الان بازش میکنیم ببینیم یک فانککشنی برامون خروجی میده یعنی ریترش یک فشن به نام لات fn که بعد من اپندش میکنم روی لیست ریگولارایزرام و بعد مدل رو این ریگولا

تسک‌های قبلی رو یادش بمونه درست شد اما بریم الان تا اینجا اوکیه کلیت کد داره چیکار می‌کنه ای دبلیو سیلاس چند تا پارامتر ورودی میگیره لاندا میگیره مدل کاری نداشته باشیم جلوتر بهش میرس لاندا هم که این پارامتر حالا یادم رفت این ضریب یه های پارامتر ضریبی که من چقدر میخوام قدیمیا یادم بمونه چقدر می‌خوام اجازه بدم اونا فراموش بشه جدیده رو یاد بگیرم که باید یکی از پارامترهایی که تاثیر داره توی

نتایج این ورودی رو که بهش دادم میام اول از همه از مدلم از وزن‌های مدلم یه دی کپی خوانی میکنم آخر حرف فکر اول تموم شده الان تسک اول تموم شده من می‌خوام این ترم رو برای این تسک بسازم با استفاده از این دستور خب پس مدل وزنش برایون شدن من این رو نگه می‌دارم به عنوان وزنه اپتیمالم بعد میام با استفاده از فیشر ماتریکس این f رو می‌سازم که طبیعتاً هم سایز با درسته شکی نیست وقتی اینو ساختم حالا میام یه فانکشن یه لاس فکشن تعریف میکنم یه لاست فانکشن تعریف میکنم تو کامپایل مدل دستور کامپ

اونجایی که کاستم لاست داشتیم تعریف می‌کردیم اینجا گفتیم این کاستم لاسه باید چی ورودی بگیره ببینید چه جوری قراره فراخوانی بشه قراره مدل رو فقط بگیره پس من الان اینجا لاستیک مینویسم فانکشن لاستیکی که می‌نویسم رگولایزرها اپند و میارن اینجا اضافه می‌کنم باید فقط ورودی مدل بگیره خب ورودی مدل رو بهش می‌گن می‌گن خب تو نیو مدل که میاد رو اسمشو میزارم نیو مدل چون مدل بعدی قراره استفاده بشه مدلیه که داره هی ترین میشه برای تسک بعدی وقتی مدل گرفتی اول لاسو بذار صفر بعد بیا های اون نیو مدلی که هستیم الان دیگه اومدن رو تسک دو این کد این فانکشن زمانی کاربرد پیدا می‌کنه زمانی اجرا میشه

تموم شده رو تسک ۲ هم می‌خوام لاس تعریف بکنم اپتیمال ویتم مال تسک یک وزن یکی از قبلی ترند شده الان می‌خوام یعنی وزنه رو دارم تغییر میدم توی هر تغییر که عوض میشه وزن‌های فعلی رو می‌ریزم توی کارنت ویت و بعد میام میگم سه تا سه تا چیز دارن که باید توی این رابطه بشه ماتری که اینجا با چه فیش یکی که الان دارم عوضش میکنم کار یکی که میشه اپت مال قبلی که قراره من این دو تا منها کنم به توان دو برسونم ضرب کنم چجوری الزامی نداره که ما همیشه یک لایه وزن داشته باشیم شما اگر یک ام ال پی ساده

یک لایه خروجی فقط داشته باشید یعنی ورودی بیاد دوتا ماتریس داریم وقتی اینجوری فراخوانی می‌کنید ببینید این دستور به تعداد هر لایه دو تا لیست به شما تحویل میده لیست اول مربوط به وزنه‌های اون مدل دبلیو هاست wh مربوط من هیچ وقت نمیتونم این دوتا رو به صورت ماتری بگم خب این دو تا منهای هم کار ویت منهای اون چون خودش دو تا لیست در اصل میام از دستور زیپ استفاده می‌کنم این سه تا رو میارم کنار هم یه فرم روش میزنم توی هر فرم اینا حالا میشن یه تک ارای دیگه یه نامپای ارای میشن منها می‌کنن به توان دو

چند لایه وزن دارد تا اینجا تعیین می‌شه ضربدر لاندا دوم می‌کنم و خروجی میدم الان اینجا اف انه لاس فانکشن که مدل را می‌گیرد این سه تا آیتم را از روش می‌سازه یعنی اف و تتا رو ازش استخراج میکنه اینتر را تشکیل میده پس من وقتی دستور رو این تابست رو فراخوانی می‌کنند عملاً دارن یه تابع لاس فکشن اضافه میکنم ریتر کل این فانکشن لاس فکشن لاست اف که خودش یه تابع درسته خروجی این تابع خودش یه تابع دیگه است که بعد میاد اضافه میشه به لاس

کل پیاده سازی نیست بالاتر یعنی اینجوریه ببین این تابع یه تابع کلش تو ای فراخوانی میکنم نه نمیتونیم فراخوانی میکنم یک دور با استفاده از این اپت و فیش که حساب شده این تابع را تشکیل بده هر دفعه تابع تعریف بله

خروجی اصلی این بلوک این تابع کلی که اسمش لاسه این تابع است یعنی یک حالت سی بهش می‌گفتیم پوینتر اشاره داره به اون محل ذخیره شدن اون تابع یک عملگری که اسمش تابعه میاره که هر وقت فراخوانی بشه یعنی خروجی استفاده کنید باید یه ورودی به عنوان نیو مدل بهش بدی یک فانککشنی میاد بیرون عدد نمیاد بیرون از کل این سیستم عدد آره یه جای دیگه بعدا بهش میگم دیگه موقعی که داره هی پاک میکنه اونجا دارم ای استفاده مدل ای مدل کجاست اینجایی بود که من توی کامپایل مدل آفرین گفتم

یه لیسته که هر کدومش یه تابعه به اسم لاسه _ میشه یه لاست اف ان که قراره ورودی شماست میشه ای مودم میشه سوالی نیست تنها چیزی که اون چیه فیش چجوری تشکیل شده خب فیش چجوری تشکیل شده من مدل را اگر داشته باشم دیتا ست هم داشته باشم میتونم فیشر های مختلف حالا فیش نه ماتریس اهمیت های مختلفی تعریف ممکنه بخوام از خروجی نسبت وزن گرادیان بگیرم

ماتریس اهمیت اون وزن که به فراخور مسئله‌ام می‌تونم حالت‌های مختلف امتحان کنم ببینم کدومش سنس بهتری به من میده و نتیجه بهتری داره اینجا چیکار کرده اینجا اومده مدل رو که گرفته دیتا ستشو اولاً اینپوتشو در آورده اگر مدل زمانی دارم این کارو می‌کنم یعنی کانسپت کلی اینه که زمانی دارن این کار میکنم که مدل یک بار وزن‌های اپتیمال برای اون تسک رو به دست آورده پس وزن‌ها می‌شن می‌تونم بهشون بگم میانگین گرادیان‌ها یعنی میانگین خوبی از وزنه‌هایین که می‌تونن باشن و من هر بار که گرادیان می‌گیرم عملاً دارم واریانسمون رو در میتونم

چشم واریانس بهش نگاه کند و این رو به عنوان اهمیت در نظر گرفت ماتریس اهمیت در نظر گرفته شما هرچی خیلی ساده‌اش اینه که شما بگید آقا من اینپوت لیبل که دارم این بعداً میاد اینجا توی این لوپ قراره بیاد اوت پوت رو در بیاره گرادیان حساب بکنه دیگه شما می‌تونی بگی آقا من اوت به دست میارم لاسمو حساب می‌کنم رند لاش به رند دبلیو هرچی که شد این میشه ماتریس اهمیته بخاطر اینکه اگر منفی و مثبتشو بتونم تمیز قائلم همه رو از صفر به بار مثبت کنم به توان دو میرسونم درسته اون هم یه راهه اینم یه خرده پیچیده‌تره مقاله‌ای که اولین بار اومد و ای رو معرفی کرد چنین فیشر ماتریسی پیشنهاد داده بود بعداً مقالات دیگه روش های مختلفی برای فیشر ماتریس پیشنهاد کردن و حتی ادعا کردن که بهتر از اون می‌تونه جواب بده درست شد

تک تک گرادیان می‌گیره و بعد اینجا گرادیان رو می‌گیره گرادیان لوگاریتم خروجی به وزن رو میگیره و بعد واریانسشو حساب می‌کنه و فیشر دراگونال رو با استفاده از این واریانسه توی هر لایه در میاره به خروجی میده یه ماتریس خروجی میده خوبی این کد اینه که الزامی نداره شما از کل دیتا برای به دست آوردن این ماتریس اهمیت استفاده بکنید به تعدادش سمپل ازش استفاده کن که سریعتر چون این فرایند به شدت زمان بره کل کد اگر یک ثانیه ران بشه این خودش به تنهایی یه دقیقه ممکنه طول بکشه این اسکیل زمان ران تایم هم اضافه میکنه درست شد بخاطر همین میگم آقا نیاز نیست از کل دیتا مثلاً ۲۰۰۰ تا دیتا داری ۱۰ هزار تا دیتا داریم نیاز نیست

با اون الگوریتم این میشه کل کدی که ما نیاز داریم و حالا مدل‌های مختلف رو می‌تونیم با این بکنیم از همین استفاده کنیم چون مدل هر مدلی که تعریف بشه به هر حال مدل کار داریم که میتونیم تابع های مختلف پاسکاریش کنیم و اون چیزی که می‌خوایمو ازش بیاریم بیرون پیشنهادم برای اینکه اگر اگر خدای نکرده دوست داشتید مثلاً کانتینر لرنینگ بیشتر کار کنیم پیشنهادم اینه که سعی کنید همین الگوریتم ساده رو روی یه مدل ترنسفور پیاده بکنید

ها هم میتونه مثال جذابی برای طبیعت یه خورده جذاب اگه سوالی نیست خسته باید ران کنم پنج دقیقه پیش آره مطمئن باشید میشه امتحان بکنم مطمئن باشید ران میشه اینکه چه جوابی بده دیگه بستگی داره که من چقدر خواست کلاه بزارم ولی

اگر کل پکیج دانلود پیشرفت تمام

فلش سبزه داره چیز میکنه این الان چی گذاشتم چند گذاشتم اینکه خیلی کم طول میکشه برای پنج دقیقه‌ای جواب میده ولی مثلا کدی مثلاً من پایان نامه ترنسور ارشدم یه دو روزی طول کشید

# -*- coding: utf-8 -*-
"""Copy of MNIST.ipynb

Automatically generated by Colaboratory.

Original file is located at
    https://colab.research.google.com/drive/1ZSvE-ptYwCCnpsTotLo8-sZp9kavF8Ux
"""

import matplotlib.pyplot as plt
from keras.datasets import mnist
from tensorflow.keras import regularizers

(X_train, y_train), (X_test, y_test) = mnist.load_data()

len(X_train)

len(X_test)

X_test[0].shape

plt.imshow(X_train[0], 'gray')
print("Digit class:", y_train[0])

X_train = X_train.astype('float32') / 255
X_test = X_test.astype('float32') / 255

X_train

from keras.utils import np_utils

Y_train = np_utils.to_categorical(y_train, 10) # 10 classes to codify
Y_test = np_utils.to_categorical(y_test, 10)

Y_train

from keras.models import Sequential
from keras.layers.core import Dense
from keras.layers.core import Activation
from keras.layers.core import Dropout
from keras.layers.convolutional import Convolution2D, MaxPooling2D
from keras.layers.core import Flatten

traintensor = X_train.reshape(60000, 28, 28, 1)
testtensor = X_test.reshape(10000, 28, 28, 1)

traintensor.shape

img_rows = 28
img_cols = 28
kernel_size = 3
pool_size = 2
model = Sequential()

model.add(Convolution2D(32, kernel_size=(3, 3),input_shape=(img_rows, img_cols, 1)))
model.add(Activation('relu'))

model.add(Convolution2D(64, (3, 3)))
model.add(Activation('relu')),

model.add(MaxPooling2D(pool_size=(pool_size, pool_size)))
model.add(Dropout(0.25))

model.add(Flatten())

model.add(Dense(128)),
model.add(Dropout(0.5))
#model.add(Dense(80, activation = 'relu'))
model.add(Dense(10, activation = 'softmax'))

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=["accuracy"])

model_history = model.fit(
    traintensor,
    Y_train,
    batch_size=128,
    epochs=24,
    verbose=2,
    validation_data=(testtensor, Y_test)
)

preds = model.predict(testtensor)

score = model.evaluate(testtensor, Y_test)
print("Test loss", score[0])
print("Test accuracy", score[1])

plt.figure(figsize=(18,6))

# Loss Curves
plt.subplot(1,2,1)
plt.plot(model_history.history['loss'], linewidth=3.0)
plt.plot(model_history.history['val_loss'], linewidth=3.0)
plt.legend(['Training loss', 'Validation Loss'], fontsize=18)
plt.xlabel('Epochs', fontsize=16)
plt.ylabel('Loss', fontsize=16)
plt.title('Loss Curves', fontsize=16)

# Accuracy Curves
plt.subplot(1,2,2)
plt.plot(model_history.history["accuracy"], linewidth=3.0)
plt.plot(model_history.history['val_accuracy'], linewidth=3.0)
plt.legend(['Training Accuracy', 'Validation Accuracy'], fontsize=18)
plt.ylabel('Accuracy', fontsize=16)
plt.title('Accuracy Curves', fontsize=16)

plt.show()

model.save('MNIST_model.h5')

from sklearn.metrics import ConfusionMatrixDisplay
from sklearn.metrics import confusion_matrix

y_pred = model.predict(testtensor)
print(y_test.shape)
y_pred_plot=np.argmax(y_pred, axis=1)
y_test_plot=np.argmax(Y_test, axis=1)

cm = confusion_matrix(y_test_plot, y_pred_plot)

disp = ConfusionMatrixDisplay(confusion_matrix=cm)
#disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=labels)

disp.plot(cmap=plt.cm.Blues)

import seaborn as sns
cmn = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
fig, ax = plt.subplots(figsize=(10,10))
sns.heatmap(cmn, annot=True, fmt='.2f')
plt.ylabel('Actual')
plt.xlabel('Predicted')
plt.show(block=False)

Recurrent	Neural	Networks: Training	of	Variants	(CTC)M.	SoleymaniSharif	University	of	TechnologySpring	2020
Most	slides	have	been	adopted	from	BhikshaRaj,	11-785,	CMU	2019.

What	follows	in	this	series	on	recurrent	nets•Architectures:	How	to	train	recurrent	networks	of	different	architectures
•Synchrony:	How	to	train	recurrent	networks	when–The	target	output	is	time-synchronous	with	the	input–The	target	output	is	order-synchronous,	but	not	time	synchronous–Applies	to	only	some	types	of	nets
•How	to	make	predictions/inference	with	such	networks
2

Variants	on	recurrent	nets
•Conventional	MLP•Time-synchronous	outputs–E.g.	part	of	speech	tagging
Images	fromKarpathy
3

4

•Usual	assumption:	Sequence	loss	is	the	sum	of	the	loss	at	individual	instants𝐿𝑜𝑠𝑠𝑌%&'()%1…𝑇,𝑌(1…𝑇)=1𝐿𝑜𝑠𝑠𝑌%&'()%,𝑌(𝑡)
%𝛻5(%)𝐿𝑜𝑠𝑠𝑌%&'()%1…𝑇,𝑌(1…𝑇)=𝛻5(%)𝐿𝑜𝑠𝑠𝑌%&'()%𝑡,𝑌(𝑡)
Time
X(t)
Y(t)
t=0
h-1
Y(t) Loss
Ytarget(t)
5
Time-synchronous	recurrence

Variants
•A	posteriorisequence	to	sequence:		Generate	output	sequence	after	processing	input–E.g.	language	translation•Single-input	a	posteriori	sequence	generation–E.g.	captioning	an	image
6

•Sequence	classification:	Classifying	a	full	input	sequence–E.gphoneme	recognition•Order	synchronous	,	time	asynchronous	sequence-to-sequence	generation–E.g.	speech	recognition–Exact	location	of	output	is	unknown	a	priori7

Example..
•Question	answering•Input	:	Sequence	of	words•Output:		Answer	at	the	end	of	the	question
8
𝐶𝑜𝑙𝑜𝑟
Blue
𝑜𝑓𝑠𝑘𝑦

Example..
•Speech	recognition•Input	:	Sequence	of	feature	vectors	(e.g.	Mel	spectra)•Output:		Phoneme	ID	at	the	end	of	the	sequence–Represented	as	an	N-dimensional	output	probability	vector,	where	N	is	the	number	of	phonemes
𝑋= 𝑋> 𝑋?
/AH/
9

Inference:		Forward	pass
•Exact	input	sequence	provided–Output	generated	when	the	last	vector	is	processed•Output	is	a	probability	distribution	over	phonemes
•But	what	about	at	intermediate	stages?
𝑋= 𝑋> 𝑋?
/AH/
10

Forward	pass
•Outputs	are	actually	produced	for	every	input–We	only	read	it	at	the	end	of	the	sequence
𝑋= 𝑋> 𝑋?
/AH/
11

Training
•The	Loss	is	only	defined	at	the	final	input–𝐿𝑜𝑠𝑠𝑌@&'()%,𝑌=𝑋𝑒𝑛𝑡(𝑌𝑇,𝑃ℎ𝑜𝑛𝑒𝑚𝑒)•This	loss	must	propagate	through	the	net	to	update	all	parameters	
𝑋= 𝑋> 𝑋?
/AH/
Loss
Y(2)
12

Training
𝑋= 𝑋> 𝑋?
/AH/
Loss
Y(2)
Shortcoming: Pretends there’s no usefulinformation in these
13

Training
•Exploiting	the	untagged	inputs:	assume	the	same	output	for	the	entire	input•Define	the	Loss	everywhere𝐿𝑜𝑠𝑠𝑌%&'()%,𝑌=1𝑤%𝑋𝑒𝑛𝑡(𝑌𝑡,𝑃ℎ𝑜𝑛𝑒𝑚𝑒)
%
𝑋= 𝑋> 𝑋?
/AH/
Loss
Y(2)
Fix: Use these outputs too.
These too must ideally point to thecorrect phoneme
/AH/
Loss
/AH/
Loss
14

Training
•Define	the	loss	everywhere𝐿𝑜𝑠𝑠𝑌@&'()%,𝑌=1𝑤%𝑋𝑒𝑛𝑡(𝑌𝑡,𝑃ℎ𝑜𝑛𝑒𝑚𝑒)
%•Typical	weighting	scheme	for	speech:	all	are	equally	important•Problem	like	question	answering:	answer	only	expected	after	the	question	ends–Only	𝑤@is	high,	other	weights	are	0	or	low
𝑋= 𝑋> 𝑋?
/AH/
Loss
Y(2)
/AH/
Loss
/AH/
Loss
15
𝐶𝑜𝑙𝑜𝑟
Blue
Loss
Y(2)
𝑜𝑓𝑠𝑘𝑦
LossLoss

•Sequence	classification:	Classifying	a	full	input	sequence–E.gphoneme	recognition•Order	synchronous	,	time	asynchronous	sequence-to-sequence	generation–E.g.	speech	recognition–Exact	location	of	output	is	unknown	a	priori16

Case	1:	With	alignment
•The	input	and	output	sequences	happen	in	the	same	order–Although	they	may	be	asynchronous–E.g.		Speech	recognition•The	input	speech	corresponds	to	the	phoneme	sequence	output
Time
X(t)
Y(t)
t=0
h-1
17

A	more	complex	problem
•Objective:	Given	a	sequence	of	inputs,	asynchronously	output	a	sequence	of	symbols–This	is	just	a	simple	concatenation	of	many	copies	of	the	simple	“output	at	the	end	of	the	input	sequence”	model	we	just	saw
•But	this	simple	extension	complicates	matters..
𝑋= 𝑋> 𝑋?
/B/
𝑋G 𝑋H 𝑋I
/AH/
𝑋J 𝑋K 𝑋L
/T/
𝑋M
18

The	sequence-to-sequence	problem
•How	do	we	know	when	to	output	symbols–In	fact,	the	network	produces	outputs	at	every	time–Which	of	these	are	the	real	outputs•Outputs	that	represent	the	definitive	occurrence	of	a	symbol
𝑋= 𝑋> 𝑋?
 𝑋G 𝑋H 𝑋I 𝑋J 𝑋K 𝑋L𝑋M
/B/ /AH/ /T/
19

Training
•Given	output	symbols	at	the	right	locations–The	phoneme	/B/	ends	at	X2,		/AH/	at	X6,	/T/	at	X9
𝑋= 𝑋> 𝑋?
/B/
𝑋G 𝑋H 𝑋I
/AH/
𝑋J 𝑋K 𝑋L
/T/
𝑋M
20

•Either	just	define	Loss	as:𝐷𝐼𝑉=𝑋𝑒𝑛𝑡𝑌?,𝐵+𝑋𝑒𝑛𝑡𝑌I,𝐴𝐻+𝑋𝑒𝑛𝑡(𝑌L,𝑇)•Or..
𝑋= 𝑋> 𝑋?
/B/
𝑋G 𝑋H 𝑋I 𝑋J 𝑋K 𝑋L𝑋M
Loss Loss Loss
/AH/ /T/
𝑌? 𝑌I 𝑌L
21
Training

𝑋= 𝑋> 𝑋? 𝑋G 𝑋H 𝑋I 𝑋J 𝑋K 𝑋L𝑋M
Problem:	No	timing	information	provided
•Only	the	sequence	of	output	symbols	is	provided	for	the	training	data–But	no	indication	of	which	one	occurs	where
•How	do	we	compute	the	Loss?–And	how	do	we	compute	its	gradient	w.r.t.	𝑌%
/B//IY//IY/??????????𝑌= 𝑌> 𝑌? 𝑌G 𝑌H 𝑌I 𝑌J 𝑌K 𝑌L𝑌M
24
/F/

Connectionist	Temporal	Classification	(CTC)Labelling	Unsegmented	Sequence	Data	with	Recurrent	Neural	Networks	Alex	Graves	et	al.,	ICML	2006.
25

26
/F/

Solution	1:	Guess	the	alignment
•Initialize:		Assign	an	initial	alignment–Either	randomly,	based	on	some	heuristic,	or	any	other	rationale•Iterate:–Train	the	network	using	the	current	alignment–Reestimatethe	alignment	for	each	training	instance•Using	the	decoding	methods	already	discussed	
??????????𝑌= 𝑌> 𝑌? 𝑌G 𝑌H 𝑌I 𝑌J 𝑌K 𝑌L𝑌M
27
/B//B//IY//IY//IY//F//F//F//F//IY/

28

Estimating	an	alignment•Given:–The	unaligned	𝐾-length	symbol	sequence	𝑆=𝑆=…𝑆^_>(e.g.	/B/	/IY/	/F/	/IY/)–An	𝑁-length	input	(𝑁≥𝐾)–And	a	(trained)	recurrent	network
•Find:–An	𝑁-lengthexpansion	𝑠=…𝑠b_>comprising	the	symbols	in	S	in	strict	order•e.g.	𝑆=𝑆>𝑆>𝑆?𝑆M𝑆M…𝑆^_>•i.e.𝑠==𝑆=,𝑠?=𝑆>,𝑆M=𝑆>,𝑠G=𝑆?,𝑠H=𝑆M,…𝑠b_>=𝑆^_>•E.g.		/B/	/B/	/IY/	/IY/	/IY/	/F/	/F/	/F/	/F/	/IY/	..•Outcome:	an	alignment	of	the	target	symbol	sequence	𝑆=…𝑆^_>to	the	input	𝑋=…𝑋b_> 29

Constraining	the	alignment:	Try	1
•Block	out	all	rows	that	do	not	include	symbols	from	the	target	sequence–E.g.		Block	out	rows	that	are	not	/B/	/IY/	or	/F/
30
/AH//B//D//EH//IY//F//G/
𝑦=cd
𝑦=e
𝑦=f
𝑦=gd
𝑦=h5
𝑦=i
𝑦=j
𝑦>cd
𝑦>e
𝑦>f
𝑦>gd
𝑦>h5
𝑦>i
𝑦>j
𝑦?cd
𝑦?e
𝑦?f
𝑦?gd
𝑦?h5
𝑦?i
𝑦?j
𝑦Mcd
𝑦Me
𝑦Mf
𝑦Mgd
𝑦Mh5
𝑦Mi
𝑦Mj
𝑦Gcd
𝑦Ge
𝑦Gf
𝑦Ggd
𝑦Gh5
𝑦Gi
𝑦Gj
𝑦Hcd
𝑦He
𝑦Hf
𝑦Hgd
𝑦Hh5
𝑦Hi
𝑦Hj
𝑦Icd
𝑦Ie
𝑦If
𝑦Igd
𝑦Ih5
𝑦Ii
𝑦Ij
𝑦Jcd
𝑦Je
𝑦Jf
𝑦Jgd
𝑦Jh5
𝑦Ji
𝑦Jj
𝑦Kcd
𝑦Ke
𝑦Kf
𝑦Kgd
𝑦Kh5
𝑦Ki
𝑦Kj

/B/𝑦=e 𝑦>e 𝑦?e 𝑦Me 𝑦Ge 𝑦He 𝑦Ie 𝑦Je 𝑦Ke
/IY/𝑦=h5 𝑦>h5 𝑦?h5 𝑦Mh5 𝑦Gh5 𝑦Hh5 𝑦Ih5 𝑦Jh5 𝑦Kh5
/F/𝑦=i 𝑦>i 𝑦?i 𝑦Mi 𝑦Gi 𝑦Hi 𝑦Ii 𝑦Ji 𝑦Ki
Blocking	out	unnecessary	outputs
31Compute	the	entire	output	(for	all	symbols)Copy	the	output	values	for	the	target	symbols	into	the	secondary	reduced	structure

•Only	decode	on	reduced	grid–We	are	now	assured	that	only	the	appropriate	symbols	will	be	hypothesized
32

33Arrange the constructed table so that from top to bottom it has the exact sequence of symbols required
Try	2:	Explicitly	arrange	the	constructed	table/B/𝑦=e 𝑦>e 𝑦?e 𝑦Me 𝑦Ge 𝑦He 𝑦Ie 𝑦Je 𝑦Ke
𝑦=i 𝑦>i 𝑦?i 𝑦Mi 𝑦Gi 𝑦Hi 𝑦Ii 𝑦Ji 𝑦Ki
/IY/𝑦=h5 𝑦>h5 𝑦?h5 𝑦Mh5 𝑦Gh5 𝑦Hh5 𝑦Ih5 𝑦Jh5 𝑦Kh5/F/

34Arrange the constructed table so that from top to bottom it has the exact sequence of symbols required
Note: If a symbol occurs multiple times,  we repeat the row in the appropriate location.E.g. the row for /IY/ occurs twice, in the 2ndand 4thpositions
Try	2:	Explicitly	arrange	the	constructed	table

Explicitly	constrain	alignment
•Constrain	that	the	first	symbol	in	the	decode	must	be	the	top	left	block•The	last	symbol	must	be	the	bottom	right•The	rest	of	the	symbols	must	follow	a	sequence	that	monotonically	travels	down	from	top	left	to	bottom	right–I.e.	symbol	chosen	at	any	time	is	at	the	same	level	or	at	the	next	level	to	the	symbol	at	the	previous	time•This	guarantees	that	the	sequence	is	an	expansion	of	the	target	sequence–/B/	/IY/	/F/	/IY/	in	this	case 35

•Constrain	that	the	first	symbol	in	the	decode	must	be	the	top	left	block•The	last	symbol	must	be	the	bottom	right•The	rest	of	the	symbols	must	follow	a	sequence	that	monotonically	travels	down	from	top	left	to	bottom	right–I.e.	symbol	chosen	at	any	time	is	at	the	same	level	or	at	the	next	level	to	the	symbol	at	the	previous	time•This	guarantees	that	the	sequence	is	an	expansion	of	the	target	sequence–/B/	/IY/	/F/	/IY/	in	this	case 36
/IY//B/
/F//IY/
𝑦=e 𝑦>e 𝑦?e 𝑦Me 𝑦Ge 𝑦He 𝑦Ie 𝑦Je 𝑦Ke
𝑦=h5 𝑦>h5 𝑦?h5 𝑦Mh5 𝑦Gh5 𝑦Hh5 𝑦Ih5 𝑦Jh5 𝑦Kh5

Path	Score	(probability)
37
/IY//B/
/F//IY/
•Compose	a	graph	such	that	every	path	in	the	graph	from	source	to	sink	represents	a	valid	alignment–Which	maps	on	to	the	target	symbol	sequence	(/B//AH//T/)•Edge	scores	are	1•Node	scores	are	the	probabilities	assigned	to	the	symbols	by	the	neural	network•The	“score”	of	a	path	is	the	product	of	the	probabilities	of	all	nodes	along	the	path•E.g.	the	probability	of	the	marked	path	is𝑆𝑐𝑟𝑃𝑎𝑡ℎ=𝑦=e𝑦>e𝑦?h5𝑦Mh5𝑦Gi

38
/IY//B/
/F//IY/
Figure shows a typical end-to-end path.  There are an exponential number of such paths. Challenge:  Find the path with the highest score (probability)

39
/IY//B/
/F//IY/
•Find	the	most	probable	path	from	source	to	sink	using	any	dynamic	programming	algorithm–E.g.		The	Viterbi	algorithm

Viterbi	algorithm	Basic	idea
•The	best	path	to	any	node	must	be	an	extension	of	the	best	path	to	one	of	its	parent	nodes–Any	other	path	would	necessarily	have	a	lower	probability•The	best	parent	is	simply	the	parent	with	the	best-scoring	best	path
40
/IY//B/
/F//IY/

𝐵𝑒𝑠𝑡𝑃𝑎𝑡ℎ𝑦=e→𝑦Mi=	𝐵𝑒𝑠𝑡𝑃𝑎𝑡ℎ𝑦=e→𝑦?h5𝑦Mi
𝑜𝑟							𝐵𝑒𝑠𝑡𝑃𝑎𝑡ℎ(𝑦=e→𝑦?i)𝑦Mi
𝐵𝑒𝑠𝑡𝑃𝑎𝑡ℎ𝑦=e→𝑦Mi=𝐵𝑒𝑠𝑡o&')p%	∈(rstu,rsv)𝐵𝑒𝑠𝑡𝑃𝑎𝑡ℎ𝑦=e→𝑃𝑎𝑟𝑒𝑛𝑡𝑦Mi
𝐵𝑒𝑠𝑡𝑃𝑎𝑡ℎ𝑦=e→𝑦Mi=𝐵𝑒𝑠𝑡𝑃𝑎𝑡ℎ𝑦=e→𝐵𝑒𝑠𝑡𝑃𝑎𝑟𝑒𝑛𝑡𝑦Mi
•The	best	parent	is	simply	the	parent	with	the	best-scoring	best	path𝐵𝑒𝑠𝑡𝑃𝑎𝑟𝑒𝑛𝑡=𝑎𝑟𝑔𝑚𝑎𝑥o&')p%	∈(rstu,rsv)𝑆𝑐𝑜𝑟𝑒(𝐵𝑒𝑠𝑡𝑃𝑎𝑡ℎ𝑦=e→𝑃𝑎𝑟𝑒𝑛𝑡)
41
/IY//B/
/F//IY/

Viterbi	algorithm
•Dynamically	track	the	best	path	(and	the	score	of	the	best	path)	from	the	source	node	to	every	node	in	the	graph–At	each	node,	keep	track	of	•The	best	incoming	parent	edge•The	score	of	the	best	path	from	the	source	to	the	node	through	this	best	parent	edge•Eventually	compute	the	best	path	from	source	to	sink
42
/IY//B/
/F//IY/

•First,	some	notation:•𝑦%y(')is	the	probability	of	the	target	symbol	assigned	to	the	𝑟-throw	in	the	𝑡-thtime	(given	inputs	𝑋=…𝑋%)–E.g.,		S(0)	=	/B/•The	scores	in	the	0throw	have	the	form	𝑦%e
–E.g.	S(1)	=	S(3)	=	/IY/•The	scores	in	the	1stand	3rdrows	have	the	form	𝑦%h5
–E.g.	S(2)	=	/F/•The	scores	in	the	2ndrow	have	the	form	𝑦%i 43
/IY//B/
/F//IY/

•Initialization:
𝐵𝑠𝑐𝑟0,0=	𝑦=y=,𝐵𝑠𝑐𝑟0,𝑖=	−∞,	𝑖	=	1…𝐾−1•for	𝑡	=	1…𝑇−1𝐵𝑃(𝑡,0)	=	0,𝐵𝑠𝑐𝑟(𝑡,0)	=	𝐵𝑠𝑐𝑟(𝑡−1,0)×𝑦%y=
for	𝑙	=0…𝐾−1•𝐵𝑃𝑡,𝑙=𝑖𝑓	𝐵𝑠𝑐𝑟𝑡−1,𝑙−1>	𝐵𝑠𝑐𝑟𝑡−1,𝑙		𝑙−1;		𝑒𝑙𝑠𝑒	𝑙•𝐵𝑠𝑐𝑟(𝑡,𝑙)	=	𝐵𝑠𝑐𝑟(𝐵𝑃(𝑡,𝑙))	×𝑦%y 44
/IY//B/
/F//IY/

•Initialization:𝐵𝑃0,𝑖=	𝑛𝑢𝑙𝑙,𝑖=0…𝐾−1𝐵𝑠𝑐𝑟0,0=	𝑦=y=,𝐵𝑠𝑐𝑟0,𝑖=	−∞,	𝑖	=	1…𝐾−1•for	𝑡	=	1…𝑇−1𝐵𝑃𝑡,0=	0;	𝐵𝑠𝑐𝑟(𝑡,0)	=	𝐵𝑠𝑐𝑟(𝑡−1,0)×𝑦%y=
for	𝑙	=1…𝐾−1•𝐵𝑃𝑡,𝑙=𝑖𝑓	𝐵𝑠𝑐𝑟𝑡−1,𝑙−1>	𝐵𝑠𝑐𝑟𝑡−1,𝑙		𝑙−1;		𝑒𝑙𝑠𝑒	𝑙•𝐵𝑠𝑐𝑟(𝑡,𝑙)	=	𝐵𝑠𝑐𝑟(𝐵𝑃(𝑡,𝑙))	×𝑦%y 45
/IY//B/
/F//IY/

for	𝑙	=1…𝐾−1•𝐵𝑃𝑡,𝑙=𝑙−1∶		𝑖𝑓	𝐵𝑠𝑐𝑟𝑡−1,𝑙−1>	𝐵𝑠𝑐𝑟𝑡−1,𝑙;		𝑙∶𝑒𝑙𝑠𝑒•𝐵𝑠𝑐𝑟(𝑡,𝑙)	=	𝐵𝑠𝑐𝑟(𝐵𝑃(𝑡,𝑙))	×𝑦%y 46
/IY//B/
/F//IY/

𝐵𝑠𝑐𝑟0,0=	𝑦=y=,𝐵𝑠𝑐𝑟0,𝑖=	−∞,	𝑖	=	1…𝐾−1•for	𝑡	=	1…𝑇−1𝐵𝑃𝑡,0=	0;	𝐵𝑠𝑐𝑟(𝑡,0)	=	𝐵𝑠𝑐𝑟(𝑡−1,0)×𝑦%y=
for	𝑙	=1…𝐾−1•𝐵𝑃𝑡,𝑙=𝑙−1∶		𝑖𝑓	𝐵𝑠𝑐𝑟𝑡−1,𝑙−1>	𝐵𝑠𝑐𝑟𝑡−1,𝑙	;		𝑙∶𝑒𝑙𝑠𝑒•𝐵𝑠𝑐𝑟(𝑡,𝑙)	=	𝐵𝑠𝑐𝑟(𝐵𝑃(𝑡,𝑙))	×𝑦%y 47
/IY//B/
/F//IY/

•Initialization:𝐵𝑃0,𝑖=	𝑛𝑢𝑙𝑙,𝑖=0…𝐾−1𝐵𝑠𝑐𝑟0,0=	𝑦=y=,𝐵𝑠𝑐𝑟0,𝑖=	−∞,	𝑖	=	1…𝐾−1•for	𝑡	=	1…𝑇−1𝐵𝑃𝑡,0=	0;𝐵𝑠𝑐𝑟(𝑡,0)	=	𝐵𝑠𝑐𝑟(𝑡−1,0)×𝑦%y=
for	𝑙	=1…𝐾−1•𝐵𝑃𝑡,𝑙=𝑙−1∶		𝑖𝑓	𝐵𝑠𝑐𝑟𝑡−1,𝑙−1>	𝐵𝑠𝑐𝑟𝑡−1,𝑙	;		𝑙∶𝑒𝑙𝑠𝑒•𝐵𝑠𝑐𝑟(𝑡,𝑙)	=	𝐵𝑠𝑐𝑟(𝐵𝑃(𝑡,𝑙))	×𝑦%y 48
/IY//B/
/F//IY/

•Initialization:𝐵𝑃0,𝑖=	𝑛𝑢𝑙𝑙,𝑖=0…𝐾−1𝐵𝑠𝑐𝑟0,0=	𝑦=y=,𝐵𝑠𝑐𝑟0,𝑖=	−∞,	𝑖	=	1…𝐾−1•for	𝑡	=	1…𝑇−1𝐵𝑃𝑡,0=	0;		𝐵𝑠𝑐𝑟(𝑡,0)	=	𝐵𝑠𝑐𝑟(𝑡−1,0)×𝑦%y=
for	𝑙	=1…𝐾−1•𝐵𝑃𝑡,𝑙=𝑖𝑓	𝐵𝑠𝑐𝑟𝑡−1,𝑙−1>	𝐵𝑠𝑐𝑟𝑡−1,𝑙		𝑙−1;		𝑒𝑙𝑠𝑒	𝑙•𝐵𝑠𝑐𝑟(𝑡,𝑙)	=	𝐵𝑠𝑐𝑟(𝐵𝑃(𝑡,𝑙))	×𝑦%y 49
/IY//B/
/F//IY/

for	𝑙	=1…𝐾−1•𝐵𝑃𝑡,𝑙=𝑖𝑓	𝐵𝑠𝑐𝑟𝑡−1,𝑙−1>	𝐵𝑠𝑐𝑟𝑡−1,𝑙		𝑙−1;		𝑒𝑙𝑠𝑒	𝑙•𝐵𝑠𝑐𝑟(𝑡,𝑙)	=	𝐵𝑠𝑐𝑟(𝐵𝑃(𝑡,𝑙))	×𝑦%y 50
/IY//B/
/F//IY/

for	𝑙	=1…𝐾−1•𝐵𝑃𝑡,𝑙=𝑖𝑓	𝐵𝑠𝑐𝑟𝑡−1,𝑙−1>	𝐵𝑠𝑐𝑟𝑡−1,𝑙		𝑙−1;		𝑒𝑙𝑠𝑒	𝑙•𝐵𝑠𝑐𝑟(𝑡,𝑙)	=	𝐵𝑠𝑐𝑟(𝐵𝑃(𝑡,𝑙))	×𝑦%y 51
/IY//B/
/F//IY/

for	𝑙	=1…𝐾−1•𝐵𝑃𝑡,𝑙=𝑖𝑓	𝐵𝑠𝑐𝑟𝑡−1,𝑙−1>	𝐵𝑠𝑐𝑟𝑡−1,𝑙		𝑙−1;		𝑒𝑙𝑠𝑒	𝑙•𝐵𝑠𝑐𝑟(𝑡,𝑙)	=	𝐵𝑠𝑐𝑟(𝐵𝑃(𝑡,𝑙))	×𝑦%y 52
/IY//B/
/F//IY/

for	𝑙	=1…𝐾−1•𝐵𝑃𝑡,𝑙=𝑙−1∶		𝑖𝑓	𝐵𝑠𝑐𝑟𝑡−1,𝑙−1>	𝐵𝑠𝑐𝑟𝑡−1,𝑙		𝑙−1;		𝑙∶𝑒𝑙𝑠𝑒•𝐵𝑠𝑐𝑟(𝑡,𝑙)	=	𝐵𝑠𝑐𝑟(𝐵𝑃(𝑡,𝑙))	×𝑦%y 53
/IY//B/
/F//IY/

for	𝑙	=1…𝐾−1•𝐵𝑃𝑡,𝑙=𝑙−1∶		𝑖𝑓	𝐵𝑠𝑐𝑟𝑡−1,𝑙−1>	𝐵𝑠𝑐𝑟𝑡−1,𝑙		𝑙−1;		𝑙∶𝑒𝑙𝑠𝑒•𝐵𝑠𝑐𝑟(𝑡,𝑙)	=	𝐵𝑠𝑐𝑟(𝐵𝑃(𝑡,𝑙))	×𝑦%y 54
/IY//B/
/F//IY/

for	𝑙	=1…𝐾−1•𝐵𝑃𝑡,𝑙=𝑙−1∶		𝑖𝑓	𝐵𝑠𝑐𝑟𝑡−1,𝑙−1>	𝐵𝑠𝑐𝑟𝑡−1,𝑙		𝑙−1;		𝑙∶𝑒𝑙𝑠𝑒•𝐵𝑠𝑐𝑟(𝑡,𝑙)	=	𝐵𝑠𝑐𝑟(𝐵𝑃(𝑡,𝑙))	×𝑦%y 55
/IY//B/
/F//IY/

•𝑠(𝑇−1)	=	𝑆(𝐾−1)•for	𝑡	=	𝑇	𝑑𝑜𝑤𝑛	𝑡𝑜	1–s(t-1)	=	BP(s(t))
56
/IY//B/
/F//IY/

•𝑠(𝑇−1)	=	𝑆(𝐾−1)•for	𝑡	=	𝑇−1	𝑑𝑜𝑤𝑛𝑡𝑜	1𝑠(𝑡−1)	=	𝐵𝑃(𝑠(𝑡))
57
/IY//B/
/F//IY/

58
/B/	/B/	/IY/	/F/	/F/	/IY/	/IY/	/IY/	/IY/
/IY//B/
/F//IY/

59
VITERBI#N is the number of symbols in the target output#S(i) is the ithsymbol in target output#T = length of input
#First create output tableFor i= 1:Ns(1:T,i) = y(1:T, S(i))
#Now run the Viterbi algorithm# First, at t = 1BP(1,1) = -1Bscr(1,1) = s(1,1)Bscr(1,2:N) = -inftyfor t = 2:TBP(t,1) = BP(t-1,1);Bscr(t,1) = Bscr(t-1,1)s(t,1)for i= 1:min(t,N)BP(t,i) = Bscr(t-1,i) > Bscr(t-1,i-1) ? i: i-1Bscr(t,i) = Bscr(t-1,BP(t,i))s(t,i)
# BacktraceAlignedSymbol(T) = Nfor t = T downto1AlignedSymbol(t-1) = BP(t,AlignedSymbol(T))

Assumed	targets	for	training	with	the	Viterbi	algorithm
60
/IY//B/
/F//IY/
𝑋= 𝑋> 𝑋?
 𝑋M 𝑋G 𝑋H 𝑋I 𝑋J 𝑋K
Loss Loss LossLossLossLossLossLossLoss/B/			/B/	/IY/	/F/				/F/	/IY//IY/	/IY/		/IY/

Iterative	Estimate	and	Training??????????𝑌= 𝑌> 𝑌? 𝑌G 𝑌H 𝑌I 𝑌J 𝑌K 𝑌L𝑌M
62
/B//B//IY//F//F//IY//IY//IY//IY//IY/
Decode	to	obtainalignmentsTrain	model	withgiven	alignmentsInitializealignments
The “decode” and “train” steps may be combine into a single “decode, find alignment,compute derivatives” step for SGD and mini-batch updates

Iterative	update:	Problem•Approach	heavily	dependent	on	initial	alignment
•Prone	to	poor	local	optima
•Alternate	solution:	Do	not	commit	to	an	alignment	during	any	pass..
63

•Instead	of	only	selecting	the	most	likely	alignment,	use	the	statistical	expectation	over	all	possible	alignments
𝐿𝑜𝑠𝑠=𝐸−1log𝑌𝑡,𝑠%	
%–Use	the	entire	distribution	of	alignments–This	will	mitigate	the	issue	of	suboptimal	selection	of	alignment66
Averaging	over	all	alignments
t 0 1 2 3 4 5 6 7 8
/IY//B/
/F//IY/

𝑃(𝑠%=𝑆'|𝐒,𝐗)∝𝑃(𝑠%=𝑆',𝐒|𝐗)•𝑃(𝑠%=𝑆',𝐒|𝐗)is	the	total	probability	of	all	valid	paths	in	the	graph	for	target	sequence	𝐒	that	go	through	the	symbol	𝑆'(the	𝑟thsymbol	in	the	sequence	𝑆>…𝑆^)	at	time	𝑡
•We	will	compute	this	using	the	“forward-backward”	algorithm69
A	posteriori	probabilities	of	symbols
/IY//B/
/F//IY/

•𝑃(𝑠%=𝑆',𝐒|𝐗)can	be	decomposed	as𝑃𝑠%=𝑆',𝐒𝐗=𝑃𝑆>,…,𝑆',…,𝑆^,𝑠%=𝑆'𝐗=𝑃𝑆>…𝑆',𝑠%=𝑆',𝑠%>∈𝑠𝑢𝑐𝑐(𝑆'),…,𝑆^	𝐗•Where	𝑠𝑢𝑐𝑐(𝑆')is	a	symbol	that	can	follow	𝑆'in	a	sequence–Here	it	is	either	𝑆'or	𝑆'>(red	blocks	in	figure)–The	equation	literally	says	that	after	the	blue	block,	either	of	the	two	red	arrows	may	be	followed 71
/IY//B/
/F//IY/

•𝑃(𝑠%=𝑆',𝐒|𝐗)can	be	decomposed	as𝑃𝑠%=𝑆',𝐒𝐗=𝑃𝑆>,…,𝑆',…,𝑆^,𝑠%=𝑆'𝐗=𝑃𝑆>…𝑆',𝑠%=𝑆',𝑠%>∈𝑠𝑢𝑐𝑐(𝑆'),…,𝑆^	𝐗•Where	𝑠𝑢𝑐𝑐(𝑆')is	a	symbol	that	can	follow	𝑆'in	a	sequence–Here	it	is	either	𝑆'or	𝑆'>(red	blocks	in	figure)–The	equation	literally	says	that	after	the	blue	block,	either	of	the	two	red	arrows	may	be	followed72
/IY//B/
/F//IY/

•𝑃(𝑠%=𝑆',𝐒|𝐗)can	be	decomposed	as𝑃𝑠%=𝑆',𝐒𝐗=𝑃𝑆>,…,𝑆',…,𝑆^,𝑠%=𝑆'𝐗=𝑃𝑆>…𝑆',𝑠%=𝑆',𝑠%>∈𝑠𝑢𝑐𝑐(𝑆'),𝑠𝑢𝑐𝑐(𝑆'),…,𝑆^	𝐗•Using	Bayes	Rule=𝑃𝑆>…𝑆',𝑠%=𝑆'	𝐗𝑃𝑠%>∈𝑠𝑢𝑐𝑐(𝑆'),𝑠𝑢𝑐𝑐(𝑆'),…,𝑆^	𝑆>…𝑆',𝑠%=𝑆'𝐗•The	probability	of	the	subgraph	in	the	blue	outline,	times	the	conditional	probability	of	the	red-encircled	subgraph,	given	the	blue	subgraph
73
/IY//B/
/F//IY/

•𝑃(𝑠%=𝑆',𝐒|𝐗)can	be	decomposed	as𝑃𝑠%=𝑆',𝐒𝐗=𝑃𝑆>,…,𝑆',…,𝑆^,𝑠%=𝑆'𝐗=𝑃𝑆>…𝑆',𝑠%=𝑆',𝑠%>∈𝑠𝑢𝑐𝑐(𝑆'),𝑠𝑢𝑐𝑐(𝑆'),…,𝑆^	𝐗•Using	Bayes	Rule=𝑃𝑆>…𝑆',𝑠%=𝑆'	𝐗𝑃𝑠%>∈𝑠𝑢𝑐𝑐(𝑆'),𝑠𝑢𝑐𝑐(𝑆'),…,𝑆^	𝑆>…𝑆',𝑠%=𝑆'𝐗•For	a	recurrent	network	without	feedback	from	the	output	we	can	make	the	conditional	independence	assumption:𝑃(𝑠%=𝑆',𝐒|𝐗)=𝑃𝑆>…𝑆',𝑠%=𝑆'	𝐗𝑃𝑠%>∈𝑠𝑢𝑐𝑐(𝑆'),𝑠𝑢𝑐𝑐(𝑆'),…,𝑆^	𝐗 74
/IY//B/
/F//IY/
Assuming	past	output	symbols	do	not	directly	feed	back	into	the	net

Conditional	independence
•Dependency	graph:Input	sequence	𝐗=𝑋=	𝑋>…𝑋b_>governs	hidden	variables	𝐇=𝐻=	𝐻>…𝐻b_>•Hidden	variables	govern	output	predictions	𝑦=,	𝑦>,	…𝑦b_>individually•𝑦=,	𝑦>,	…𝑦b_>are	conditionally	independent	given	𝐇
•Since	𝐇is	deterministically	derived	from	𝐗,	𝑦=,	𝑦>,	…𝑦b_>are	also	conditionally	independent	given	𝐗–This	wouldn’t	be	true	if	the	relation	between	𝐗and	𝐇were	not	deterministic	or	if	𝐗is	unknown,	or	if	there	were	direct	connections	between	the	𝑦s 75
𝐗=𝑋=	𝑋>…𝑋b_> 𝐇=𝐻=	𝐻>…𝐻b_>
𝑦=
𝑦>
𝑦b_>
⋮

𝑃𝑠%=𝑆',𝐒|𝐗	=𝑃𝑆>…𝑆',𝑠%=𝑆'	𝐗𝑃𝑠%>∈𝑠𝑢𝑐𝑐(𝑆'),𝑠𝑢𝑐𝑐(𝑆'),…,𝑆^	𝐗
•We	will	call	the	first	term	the	forward	probability	𝛼𝑡,𝑟•We	will	call	the	second	term	the	backward	probability	𝛽𝑡,𝑟 76
A	posteriori	symbol	probability
/IY//B/
/F//IY/

•We	will	call	the	first	term	the	forward	probability	𝛼𝑡,𝑟•We	will	call	the	second	term	the	backward	probability	𝛽𝑡,𝑟 77
/IY//B/
/F//IY/

𝛼𝑡,𝑟=𝑃𝑆>..𝑆',𝑠%=𝑆'|𝐗•The	𝛼𝑡,𝑟is	the	total	probability	of	the	subgraph	shown
78
Computing	𝛼𝑡,𝑟:	Forward	algorithm
/IY//B/
/F//IY/

𝛼3,𝐼𝑌=𝑃𝑆>..𝑆',𝑠%=𝑆'|𝐗
𝛼3,𝐼𝑌=𝑃𝑠𝑢𝑏𝑔𝑟𝑎𝑝ℎ	𝑒𝑛𝑑𝑖𝑛𝑔	𝑎𝑡(2,B	)𝑦Mh5+𝑃𝑠𝑢𝑏𝑔𝑟𝑎𝑝ℎ	𝑒𝑛𝑑𝑖𝑛𝑔	𝑎𝑡(2,IY	)𝑦Mh5
79
/IY//B/
/F//IY/
𝑦=e 𝑦>e 𝑦?e
𝑦Mh5

𝛼𝑡,𝑟=𝑃𝑆>..𝑆',𝑠%=𝑆'|𝐗
𝛼3,𝐼𝑌=𝑃𝑠𝑢𝑏𝑔𝑟𝑎𝑝ℎ	𝑒𝑛𝑑𝑖𝑛𝑔	𝑎𝑡	(2,B)	𝑦Mh5+𝑃𝑠𝑢𝑏𝑔𝑟𝑎𝑝ℎ	𝑒𝑛𝑑𝑖𝑛𝑔	𝑎𝑡	(2,IY)𝑦Mh5
𝛼3,𝐼𝑌=𝛼2,𝐵𝑦Mh5+𝛼2,𝐼𝑌𝑦Mh5
80
/IY//B/
/F//IY/
𝑦=e 𝑦>e 𝑦?e
𝑦Mh5 𝑦=e 𝑦>e
𝑦>h5 𝑦?h5 𝑦Mh5

𝛼𝑡,𝑟=𝛼𝑡−1,𝑟+𝛼𝑡−1,𝑟−1𝑦%y(')
85
𝛼𝑡,𝑟𝛼𝑡−1,𝑟𝛼𝑡−1,𝑟−1t 0 1 2 3 4 5 6 7 8
/IY//B/
/F//IY/
Forward	algorithm

•Initialization:𝛼0,1=𝑦=y>,			𝛼0,𝑟=0,𝑟>1•for	𝑡	=	1…𝑇−1𝛼(𝑡,1)	=𝛼(𝑡−1,1)𝑦%y>
for	𝑙	=2…𝐾𝛼(𝑡,𝑙)	=(𝛼𝑡−1,𝑙+𝛼𝑡−1,𝑙−1)𝑦%y
86
/IY//B/
/F//IY/

for	𝑙	=2…𝐾•𝛼(𝑡,𝑙)	=(𝛼𝑡−1,𝑙+𝛼𝑡−1,𝑙−1)𝑦%y
87
/IY//B/
/F//IY/

88
tt 0 1 2 3 4 5 6 7 8
/IY//B/
/F//IY/

89
/IY//B/
/F//IY/

90
/IY//B/
/F//IY/

91
/IY//B/
/F//IY/

•We	will	call	the	first	term	the	forward	probability	𝛼𝑡,𝑟•We	will	call	the	second	term	the	backward	probability	𝛽𝑡,𝑟 92
/IY//B/
/F//IY/
We have seen how to compute this

𝑃𝑠%=𝑆',𝐒|𝐗	=𝛼𝑡,𝑟𝑃𝑠%>∈𝑠𝑢𝑐𝑐(𝑆'),𝑠𝑢𝑐𝑐(𝑆'),…,𝑆^	𝐗
•We	will	call	the	first	term	the	forward	probability	𝛼𝑡,𝑟•We	will	call	the	second	term	the	backward	probability	𝛽𝑡,𝑟 93
/IY//B/
/F//IY/

𝑃𝑠%=𝑆',𝐒|𝐗=𝛼𝑡,𝑟𝑃𝑠%>∈𝑠𝑢𝑐𝑐(𝑆'),𝑠𝑢𝑐𝑐(𝑆'),…,𝑆^	𝐗
•We	will	call	the	first	term	the	forward	probability	𝛼𝑡,𝑟•We	will	call	the	second	term	the	backward	probability	𝛽𝑡,𝑟 94
/IY//B/
/F//IY/
Lets look atthis

𝛽𝑡,𝑟=𝑃𝑠%>∈𝑠𝑢𝑐𝑐(𝑆'),𝑠𝑢𝑐𝑐(𝑆'),…,𝑆^	𝐗
•𝛽𝑡,𝑟is	the	probability	of	the	exposed	subgraph,	not	including	the	orange	shaded	box
95
/IY//B/
/F//IY/
𝑦=h5 𝑦>h5 𝑦?h5 𝑦Gh5 𝑦Hh5 𝑦Ih5 𝑦Jh5 𝑦Kh5

96
/IY//B/
/F//IY/
𝑦Gh5 𝑦Hh5 𝑦Ih5
𝑦Hi 𝑦Ii 𝑦Ji
𝑦Ih5 𝑦Jh5 𝑦Kh5
𝑦Gi 𝑦Hi 𝑦Ii 𝑦Ji
𝑦Hh5 𝑦Ih5 𝑦Jh5 𝑦Kh5
𝑃(																	)𝑃(																	)=	+𝛽3,1

97
/IY//B/
/F//IY/
𝑦Hi 𝑦Ii 𝑦Ji

/IY//B/
/F//IY/
𝑦Hi 𝑦Ii 𝑦Ji
𝑃(																	)𝑃(																	)𝑦Gh5
𝑦Gi=	+𝛽3,1

/IY//B/
/F//IY/
𝑦Gh5𝛽4,1
𝑦Gi𝛽4,2=	+𝛽3,1

•We	will	call	the	first	term	the	forward	probability	𝛼𝑡,𝑟•We	will	call	the	second	term	the	backward	probability	𝛽𝑡,𝑟
111
The	joint	probability
We now can compute this
/IY//B/
/F//IY/

𝑃𝑠%=𝑆',𝐒|𝐗=𝛼𝑡,𝑟𝛽𝑡,𝑟
•We	will	call	the	first	term	the	forward	probability	𝛼𝑡,𝑟•We	will	call	the	second	term	the	backward	probability	𝛽𝑡,𝑟 112Backward algoForward algo
/IY//B/
/F//IY/

•Let	the	posterior	𝑃𝑠%=𝑆'|𝐒,𝐗be	represented	by	𝛾𝑡,𝑟𝛾𝑡,𝑟=𝛼𝑡,𝑟𝛽𝑡,𝑟∑𝛼𝑡,𝑟′𝛽𝑡,𝑟′'¥
/IY//B/
/F//IY/
The	posterior	probability

Overall	training	procedure	for	Seq2Seq	case	1	
•Problem:	Given	input	and	output	sequences	without	alignment,	train	models122
/F/

Overall	training	procedure	for	Seq2Seq	case	1	•Step	1:	Setup	the	network–Typically	many-layered	LSTM
•Step	2:	Initialize	all	parameters	of	the	network	
123

Overall	Training:	Forward	pass
124
•For	each	training	instance•Step	3:		Forward	pass.	Pass	the	training	instance	through	the	network	and	obtain	all	symbol	probabilities	at	each	time

125
Overall	training:	Backward	pass
•For	each	training	instance•Step	3:		Forward	pass.	Pass	the	training	instance	through	the	network	and	obtain	all	symbol	probabilities	at	each	time•Step	4:	Construct	the	graph	representing	the	specific	symbol	sequence	in	the	instance.	This	may	require	havingmultiple	rows	of	nodes	with	the	same	symbol	scores

•Foreach	training	instance:–Step	5:Perform	the	forward	backward	algorithm	to	compute	𝛼𝑡,𝑟and	𝛽𝑡,𝑟at	each	time,	for	each	row	of	nodes	in	the	graph–Step	6:Compute	derivative	of	Loss	𝛻5Z𝐿𝑜𝑠𝑠for	each	𝑌%
126
/IY//B/
/F//IY/

A	key	decoding	problem•Consider	a	problem	where	the	output	symbols	are	characters•We	have	a	decode:		R	RRO	OOOOD•Is	this	the	merged	symbol	sequence	ROD	or	ROOD?
•Note:	This	problem	does	not	always	occur,	e.g.	when	symbols	have	sub	symbols–E.g.		If	O	is	produced	as	O1	and	O2•A	single	O	would	be	of	the	form	O1	O1..	O2•Multiple	Oswould	have	the	decode	O1	..	O2..	O1..O2..
128

We’ve	seen	this	before
𝑋= 𝑋> 𝑋? 𝑋G 𝑋H 𝑋I 𝑋J 𝑋K𝑋M
129
𝑦=cd
𝑦=e
𝑦=f
𝑦=gd
𝑦=h5
𝑦=i
𝑦=j
𝑦>cd
𝑦>e
𝑦>f
𝑦>gd
𝑦>h5
𝑦>i
𝑦>j
𝑦?cd
𝑦?e
𝑦?f
𝑦?gd
𝑦?h5
𝑦?i
𝑦?j
𝑦Mcd
𝑦Me
𝑦Mf
𝑦Mgd
𝑦Mh5
𝑦Mi
𝑦Mj
𝑦Gcd
𝑦Ge
𝑦Gf
𝑦Ggd
𝑦Gh5
𝑦Gi
𝑦Gj
𝑦Hcd
𝑦He
𝑦Hf
𝑦Hgd
𝑦Hh5
𝑦Hi
𝑦Hj
𝑦Icd
𝑦Ie
𝑦If
𝑦Igd
𝑦Ih5
𝑦Ii
𝑦Ij
𝑦Jcd
𝑦Je
𝑦Jf
𝑦Jgd
𝑦Jh5
𝑦Ji
𝑦Jj
𝑦Kcd
𝑦Ke
𝑦Kf
𝑦Kgd
𝑦Kh5
𝑦Ki
𝑦Kj/G/ /F/ /IY/
/D/Cannot distinguish between an extended symbol andrepetitions of the symbol/F/
•/G/	/F/	/F/	/IY/	/D/		or		/G/	/F/	/IY/	/D/	?

A	key	decoding	problem•We	have	a	decode:		R	RRO	OOOOD•Is	this	the	symbol	sequence	ROD	or	ROOD?
•A	solution:	Introduce	an	explicit	extra	symbol	which	serves	to	separate	discrete	versions	of	a	symbol–A	“blank”	(represented	by	“-”)–RRR---OO---DDD	=		ROD–RR-R---OO---D-DD	=	RRODD–R-R-R---O-ODD-DDDD-D	=	RRROODDD•The	next	symbol	at	the	end	of	a	sequence	of	blanks	is	always	a	new	character•When	a	symbol	repeats,	there	must	be	at	least	one	blank	between	the	repetitions
•The	symbol	set	recognized	by	the	network	must	now	include	the	extra	blank	symbol–Which	too	must	be	trained 130

Most	common	CTC	applications•Speech	recognition–Speech	in,		phoneme	sequence	out–Speech	in,	character	sequence	(spelling	out)
•Handwriting	recognition
131

Story	so	far:	CTC	models•Sequence-to-sequence	networks	which	irregularly	output	symbols	can	be	“decoded”	by	Viterbi	decoding–Which	assumes	that	a	symbol	is	output	at	each	time	and	mergesadjacent	symbols
•They	require	alignment	of	the	output	to	the	symbol	sequence	for	training–This	alignment	is	generally	not	given
•Training	can	be	performed	by	iteratively	estimating	the	alignment	by	Viterbi-decoding	and	time-synchronous	training
•Alternately,	it	can	be	performed	by	optimizing	the	expected	error	over	all	possible	alignments–Posterior	probabilities	for	the	expectation	can	be	computed	using	the	forward	backward	algorithm
132

133

E:\courses\LangChain Project\main root\data\ctc_lecture_transcript_part1.txt

فعال کنم خب به نام خدا من حسین رنجبر فارغ التحصیل کارشناسی ارشد و بنده آقای دکتر طاهری بودند تو این راه قراره که توابع و کلاس‌هایی که معرفی شدن توی حالا فریمورک‌های مختلف کراس پایتورچ و ترنسور معرفی کنم

ارائه و اول از همه از ترنسور فلو شروع می‌کنیم و با کلاس ادامه میدیم و در آخر هم پای ترش خواهم گفت خب توی تن سرفلو حالا در کل ما عملکرد توی فاز ترین و تست باید متفاوت باشه یعنی از توابع مختلفی استفاده کنیم خب توی ترین همونطور که دکتر هم گفتن ما باید هم اون ماتریس احتمالا های که آخر شبکه به دست میاد و از یک سافت مکس هم عبور کرده رو به همراه لیبل‌ها به سی تی سی مون بدیم خب تابعی که ما داریم برای ارائه شده تنسور ان سیتی سیلاس هستش

اینام ورودی‌هامونن اولین ورودیمون لیبل‌هاست که خوب چنین ابعادی داره که ابعادش میشه سایز و ماکسیمم سایز لیبلمون فرزند اگه سایزمون ۳ باشه و سه تا جمله داشته باشیم خب این ماکسیمم میشه بیشترین طول لیبل توی این سه جمله اگه فرضا یکیش ۱۰ تا کلمه باشه یکی هم ۱۵ تا ۱۵ بذاریم و طبیعتاً تو هر بچ هم این عوض میشه مثلاً ممکنه این بچه یک باشه ۱۵ بچه بعدی مثلاً باشه ۲۰ دوم لاگیت همون ماتریس احتمالا های هست که داره به هر تایم استپ اون احتمالش تعلقش به هر کلاسی رو مشخص می‌کنه و ابعاد این تنسور هم به این صورت هستش که حالا این میشه ماکسیمم فریم توی اون

خود بچ سایز و تعداد کلاس‌ها و خب یه جمله ۱۵ کلمه‌هاش توی این ۱۵ تا بودن دیگه مثلاً شما کلمه باشه خرج شما کنید مکس مربوطه درسته تا اون لحظه چند شده و بعد تو هر دو اینا بگم مثلاً خب ما چون تنسور نمیتونیم ابعادشو

یه جمله باشه ۱۰ یه جمله ۱۵ باشه همه رو باید یه ابعاد فیکسی در نظر بگیریم اونی که دهه آخرش خب با زیروپد میشه آخرش صفره و همینطور توی میوفته یعنی اینکه مثلاً اونایی که فرزند ۱۰ تا فریمن یکی هم مثلاً ۱۰۰ تا فریمه اون کمتره باز زیروپد میشه و خب اینجا از ما سایز لیبل‌ها رو هم میگیره که مثلاً ما اگه فرزندمون سه باشه مثلاً می‌گیم اولی ۱۰ تا بوده تعداد کلمات دومی مثلاً ۱۲ و سومی ۱۵ تا وقتی ما اینو بهش میدیم خودش میاد یه جوری یه ماسکی می‌ذاره که اون صفرها رو نبینه و خب دقتمون کم نشه و برای خود لاجیتس هم همین اتفاق میفته یعنی میگیم که آقا این ویدیو یا این ویس انقدر مثلاً فریم داشته انقدر تایم استپ داشته که باز بیاد یه ماسک روی لاجیتس بذاره و اون صفرها رو باز در نظر

تایمیجر که اگر تورو باشه که دیفالتشم همینه تصورش اینه که لاجیت ما چنین ابعادی یعنی اولین بعد ما فریم‌هامون می‌شه و دومین بعدمون میشه بک سایز خب اگر فالس باشه اولین تصورش اینه که اولین بعد ما سایزه و دومین فریم حالا من تو اکثر شبکه‌هایی که دیدم سایز بعد اول بوده یعنی خب باید ما فالس بذاریم می‌تونیم هم قبل اینکه اصلاً بلاس به این تابع بدیم ورودیی‌هامونو حالا ابعادو عوض کنیم حالا خیلی چیز مهم هست ممکنه باعث ارور بشه و اینا و این ورودی یونیک کاری که میکنه اینه که وقتی لیبل ها به این صورت هستند که مثلاً اگه چند تا تایم استپ متعلق به یک کلمه یا یک کلاس باشن فرضاً مثلاً سه چهار تا تایم علیان

یه دونه در نظر می‌گیره یعنی تو لیبل فرض می‌کنه که ما علی علی علی نداریم یه علی داریم و اگر خوب لیبلامون طوری هستند که ما یه دونه علی گذاشتیم به جای چند تایم ۳ بعد اینو ترو بزاریم اگر اینطور نبودن بعد اینو فالس در نظر بگیریم و خب بلک ایندکس هم که دیفالتش صفره ولی خب می‌تونیم هم عوضش کنیم بهتره همون صفر بذاریم یه تنسوریه که ابعادش همون به اندازه بک سایزمونه یعنی به اندازه فرضا باز اگه ما سه تا جمله داشته باشیم به ازای هر کدوم شما یه لاسی میده که اونم همون نگتیو لاگه اون احتمالا هستش خب برای فاز تست ما همونطور که دکتر ارائه دادن از بیم سرچ وودر استفاده می‌کنیم و خب فرق

تو بیم سرچ ما چند تا احتمال در نظر می‌گیریم حالا با توجه به اون چیزی که خودمون تنظیم می‌کنیم معمولاً خبری سرچ سریع‌تره ولی خب دقت سرچ بهتر میشه دیگه تمامه ای ۵۱ درصد بی ۴۹ ۲ تای اول گرفته بود بیم بوده ای به سه دهم چهاردهم وصل شده که باید ضرب کنید یه بار ۵۱ بار در اون ۴۹ در نیم و نیم ضرب کنید نگاه میکردید شما چی چون از ای شروع کرده بودید دیگه شانسی نتیجه چی شده

در نهایت نتایج مختلف شدن در هر صورت خیلی متفاوت خب ما برای سرچ چنین تابعی داریم سنسرفلو ان سی تی کد که اولین ورودیش همون لایه سه ما هستش که دقیقاً همون ماتریسی بود که ما توی اسلاید قبلی بهش می‌دادیم و ابعاد تنسورش هم به همین صورت هستش که ما اولین بعدش بیشترین سایز اون

کلاس‌ها که هر جمله یا هر ویدیو مثلاً چقدر فریم داره که باز اگر می‌خوام ما اونجا زیرو پت کرده باشیم بیاد اینجا یه ماسکی بزاره بینویتز هم که میاد مشخص میکنه ما چند تا احتمال در نظر بگیریم خب هر چقدر طبیعتاً این بیشتر باشه زمان رانشم بیشتر میشه و خب ممکنه به جواب بهتری هم برای ما پیدا کنه بعد تاپ پس هم میگه که اون آخرش مثلاً اگه ۵ بذاریم ۵ تا مسیر برتر رو به ما میده می‌تونیم یک بذاریم که بهترین مسیرو با بستگی به مسئله‌مون داره و خب خروجی هم که به ما میده یه تاپلی هست که که فرضاً اگه به اندازه تاپ پس‌ها به ما میاد پنج تا مسیر میده مثلاً پنج تا جمله میده و اون احتمالاشو به ما میده اگر یک باشه که فقط یه دونه به ما میده و توی گ

این پوست همون لاجیست ما هستش که خروجی شبکه این بود که اگر مثلاً اینترو باشه که دیفالتشم همینه میاد یکی می‌کنه بلک ایندکس هم که اینجا دیفالتش اینه کلاس منهای یکه و حالا می‌تونیم تغییرش بدیم خروجی هم اینجا یه دونه هست یعنی دیگه ما تاپ پس نداریم فقط به یه مسیر برتر میرسه و اونم به اون جمله حالا شده رو میده و این لاستیکه هست به دست اومده خب حالا توی کراس برای باز ترینینگ ما چنین تابعی داریم کراس بکند سیتی سی کاست که همونه این زیاد فرقی نمی‌کنه با تنسوررفلو وای ترو همون

ما هستند که دقیقاً مثل قبل ابعادش به این صورتهای خروجی این همون لاجیتس‌های ما هستش که ابعادش به این صورته بازم فرقی نکرده و این دو تا آخرم دیگه مثل همون سنسور فلو باز میایم همون میگیم که یه یه تنسوریه که مشخص کرده که هر ویدیو یا هر حالا ویسمون چند تا چند تا اون لیبلش چند تا کلمه بوده که بیاد یه ماسک روی این بذاره و اینم که میاد مشخص می‌کنه که اون ویدیو و اون ویسمون چند تایم استپ داشته چند فریم بودن و برای فاز تستمون از کراسکن سیتی دکور استفاده می‌کنیم

خب اینجا ما دیگه لیبل نداریم و این وایرترو موند که این چیزمونه همون لاجیتس ماست فکر کنم اینجا اشتباه گذاشتم این این لاجیسته ما باشه آره این باید همون ابعاد یعنی سایز ویدیوها باشه یا سایز ویس‌ها باشه اینجا مشخص می‌کنه چه روشی استفاده باشه از بیم سرچ استفاده میکنه بیس هم که برای اگر این فالس باشه این حالا معنا پیدا می‌کنه و تاپ پس هم که خب اگر گردی باشه این یکه همیشه اگر بیم سرچ باشه خب دست خودمون چند تا مسیر برتر رو به ما بده خب توی پایتون هم فقط اینو بگم که نحوه استفاده توی تنسرفلو و کراس شبیه همه حالا

کدشو با هم می‌بینیم ولی توی پایتون یه مقدار فرق می‌کنه خب یه کلاسی ما داریم توی پای توچ به اسم ترک سیتی سیلاس که خب حالا این بلنک مشخص کننده تعریف کلاس این مشخص کننده حالا ایندکس پلانکه ریداکشن مشخص می‌کنه که اون لاسی که قراره به ما بده با چه روشی به ما بده اگه مثلاً سام بذاریم میاد جمع میکنه توی بک سایزمون مثلاً فرضاً پنج تا جمله رو جمع می‌کنه یه لاس به ما می‌ده می‌تونیم روش‌های دیگه هم استفاده کنیم زیر اینفینیتی هم فکر کنم توی مثلاً اون ویدیوهایی که خیلی کوتاهه یا مثلاً ورودی‌مون خیلی کوتاه هستش امکانش هست که مثلاً این لاس به بی نهایت میل کنه و اونا رو صفر میذاره در نظرش نمی‌گیره یه جورایی خب وقتی ما حالا فراخونیش می‌کنیم دوباره مثل قبل اینپوتمون همون لاجیتسای ما هست تارگت

لیبلامونه ایمپوت لنز میاد مشخص می‌کنه که اینا هر کدوم تو بک سایز چند تا فریم داشتن که ماسکش کنه تارگت لنکس هم میاد همون سایز لیبل ها رو میگه که مثلاً هر کدوم چند کلمه بودن و خروجی هم که به ما میده حالا اگرکشن مین باشه یا حالا میتونه سام باشه همون دیگه لاس توی بک سایز ما میده فقط نحوه استفاده توی پایتون به این صورته که من اینجا میگم چون که اون قراره کدشو ببینیم ولی کد نمی‌بینیم همین لاسی که اینجا به دست میاد و یه بکواردش می‌کنیم خیلی راحت توی تنسرفلو کلاس اینطوری نیست یعنی دقیقاً بعد از اینکه لاس بدست اومد یه بکوارد می‌ذاریم که بتونه شبکه رو ترین کنه خب

یه کدی هست برای تشخیص اسپیچ ما یه دیتا ستی داریم که شامل فقط توی ستینگش این فونتشو بیشتر کنم که چیز میکنه آره خوبه

نشون بدم به این صورت البته دو کلاس نیست حالا جلوتر توضیح میدم که توی حالا در نظر دیگه میاد همینم جدا می‌کنه یعنی یس میشه سه تا وای ای اس حالا توضیح میدم خب بعد از دانلود کردن دیتا ستمون که حالا مثلاً می‌بینید که اون اسم خود فایل‌ها هم یه جورایی لیبلشون هستش که صفرها نو هستش و یکها یس

حالا اینجا کار خاصی انجام نمیدیم در واقع میریم حالا از همین اسم فایل‌ها لیبل تولید می‌کنیم و ذخیره‌شون می‌کنیم من زودتر برم سراغ همون قسمت اصلیشو آماده می‌کنه اینجا مثلاً خب کتابخونه‌ها رو ایمپورت می‌کنیم یه سری اینجا هم قسمت هست که حالا میایم اون لیبل‌هامونو به حالا به هر کدوم از حرفا یا دبلیو ای و اسکن میکنیم که بتونیم استفاده کنیم ۵۴ تا داده ترینینگ داریم و شش تا هم داده ولیدیشن

سخت‌تر بود دقتش خیلی خوب نمی‌شه ولی خب اینجا چون مسئله راحت‌تره دقتش قابل قبول میشه و حالا یه سری فیچر اکسترکت میکنه و اون اکسپکتور گرامشو مثلاً برای یه نمونه اینجا رسم کرده حالا قسمت مهمش اینجا هستش که ما من توی پای ترش گفتم که باید چطور سیتی سیلاس استفاده کنیم بعد از اینکه لاس بدست اومد اونو بکوارد می‌کنیم ولی توی حالا تنسرفلو و کراس ما باید یه تابعی تعریف کنیم یعنی به صورت مستقیم نمی‌تونیم استفاده کنیمش که تو این تابع حالا اول میایم اگه یادتون باشه این تابع از این تابع اصلی که ما داشتیم توی کراس خب چهار تا ورودی داشت اون

چیزامون در واقع لیبلامون لاجیتسمون تعداد سایز یعنی لیبل‌ها و سایز اینپوتمون و خب میایم با توجه به حالا اون لیبل‌هامون و اون لاجیتسمون استخراج می‌کنیم که مثلاً تعداد فریم‌ها و همینطور تعداد لیبلامون مثلاً سایز لیبل‌ها و سایز فریم که چه صورته و اینو بهش می‌دیم بعد از اینکه این تابع تعریف کردیم وقتی میریم حالا خود مدل و تعریف کنیم و بسازیم که بازم از مثلاً چند تا کانولوشن و ال سی ام دو طرفه یعنی استفاده کردیم فقط قسمت آخرش توی مثلاً مدل کامپایل اونجا که اپتیمایز رو می‌ذاریم اینجا باید توی لاس اسم اون تابع رو که بالا تعریف کردیم بذاریم و دیگه

شما بنویسید این اینپوت لکس همون تنسورهای سایز اینپوتمونه و لیبل لنکس هم همون تنسور سایز این چیز خاصی اینا نیست فقط اومدیم داده خودمون یه جورایی مثلا ورودی دیگش رو تنظیم کردیم و خود کراس در واقع حساب میکنه زحمت و برای دیکودشم شبکه من نشون بدم حالا

و توی دکورش یعنی تو فاز تست ولیدیشن حالا همون تابع که من ارائه دادم استفاده می‌کنیم که باز همونو همراه اون سایز ورودی ها حالا و روش که اینجا گرد استفاده کرده وقتی هم استفاده کنیم دیگه نیاز نیست و تاپ پس و مشخص کنیم و خب چون این خود این تابع دو تا خروجی داره که یه خروجیش میشه خود همون جمله پیک شده و خروجی دوم

اولین اولیش استفاده کنیم اگه یک بزنی صفر بزاریم به ما اون جمله رو میده حالا من کدم برای تو فرستادم فکر کنم براتون به اشتراک بذاره نشونی بدم آره اصلی شما تولید خیلی بالاست خیلی خوبه خیلی خوبه نزدیک عالی حالا مثلاً جاهایی که با هم تفاوت

چند تا مورد بود اشتباه تشخیص می‌داد یه چیزایی اونم بیارم برات کد ران بشه آره طولانی خب بریم سراغ نمونه کدی که استفاده وجود

چون پای ترش برای سی تی سی برای دکورش یعنی برای فاز تست یه تابع یا کلاس عمومی نداره فقط توی مثلاً زیر مجموعه تعریف کرده من از اون استفاده نکردم یعنی توی ترینم از پای تورچ استفاده کردم همونی که تو پاورپوینت بود ولی توی تستم از تنسور فلو استفاده کردم یعنی امکانش هست مدل زبان من موضوع پایان‌نامه ارشد هم ترجمه زبان اشاره پیوسته به کمک یادگیری عمیق بودش و حالا اولین مقاله‌مونم که تو همین حوزه هستش

زبان اشاره خوب توسط میلیون‌ها نفر استفاده میشه تو کل دنیا و هر منطقه‌ای هم زبان اشاره خاص خودشو داره و زبان شدن با زبان گفتار فرق داره یعنی هم گرامر متفاوتی داره و هم ممکنه کلمات متفاوت داشته باشه و خب اگر ما یه سیستم زبان اشاره تشخیص زبان اشاره داشته باشیم این شاید کمک کنه به ارتباط افراد ناشنوا و حالا سایر افراد چون اکثر افراد بلد نیستند یعنی یه مترجمی در واقع یه نرم‌افزاری که برای ما ترجمه کنه و اکثر مدلای قبلی که ارائه شده روی ترجمه یا تشخیص ایزوله متمرکز بودن که توی تشخیص ایزوله حالا توی ورودی که ورودی هم می‌تونه ویدیو باشه هم می‌تونه چیزای دیگه باشه فقط

اجرا شده که اینجا مثلاً ساینر اومده کلمه برف رو اجرا می‌کنه خب یک سطح تشخیص دیگه هم داریم به اسم سطح کانتینیوس که خب این نزدیکتره به مسئله واقعی که میاد جمله یا جمله‌هایی که توی ورودی هست رو تشخیص میده و خب طبیعتاً سخت‌تر هم هست این ویدیویی که می‌بینید در دیتا ست فینیکس ۲۰۰۴ هستش که اخبار هواشناسی زبان آلمانیه یه دیتا ست حالا چلنجینگ هم هست کلاً ۶۸۴۱ ویدیو داره ولی خب مثلاً سایز لغاتمون خیلی زیاده ۱۲۳ یکی ما لغت داریم و خب یه سری چالش‌ها ما اینجا داریم مثلاً اولین چالش اینه که اون ساینمون خیلی سریع اجرا می‌کنه یعنی هیچ مکثی بین اون کلمات

داده‌های ترین خیلی اون کمه و این باعث میشه که چند تا کلمه باشن که اصلاً فقط یک بار اجرا شدن تو کل دیتا ست و خب یعنی خیلی مسئله رو سختش می‌کنه خب تو این قسمت قراره که یک مور ادبیات سریع داشته باشیم معمولاً مدلایی که ارائه شده توی تشخیص پیوسته شامل سه تا ماژول هستند اولین ماژول اسپشیال مادلینگ ماژول که میاد اون فیچرهای مکانی رو از هر فریم استخراج می‌کنه که طبیعتاً ما از سی‌ان‌ها استفاده می‌کنیم و جدیداً از سال ۲۰۲۰ هم که ویژن ترنسفور ارائه شده ویژن ترنس استفاده میشه کرد یعنی یه آپشن به اون اضافه شد ولی خب چون ویژ ترنسفور معمولاً داده‌های زیادی می‌خواد برای اینکه به نتایج قابل رقابت برسه و خب دیتا ستی هم که ما داریم که بنچ مارک این حوزه هستش خیلی ویدیو نداره

ما مجبور می‌شیم از سی‌ان استفاده کنیم به طور خاص تو این مسئله من از موبایلت وی تو استفاده کردم چون موبایلت هم سبکه هم دقتش خیلی خوبه این برامون مهم بود که به طور کلی پردازش ویدیو یکم هزینه محاسباتی زیادی داره یعنی هر گروهی هم با هر سخت افزاری نمی‌تونه پرچم انجام بده ما مجبور شدیم رو اچ پی سی شریف پردازش کنیم اونم با بک سایز ۲ یعنی چون سایز بیشتر می‌شد اون ارور اوت آفریوری میداد و ازری جی پی یو بیشتر میشد یعنی خیلی محدودیت داریم و ماژول بعدی که میاد روابط بین فریم‌ها خب چون ما حرکت داریم اینجا یعنی داده‌مون استاتیک نیستش که عکس نیست اینجا حرکت داریم برای حرکت استخراج بشه باید اون فیچرای زمانی هم استخراج کنیم از سمپ مادلینگ استفاده می‌کنن چند تا آپشن داریم آر ان‌ها تمپورال سی ان ان که میاد روی

کرنل زمانی حرکت می‌کنه روی دادمون و خب ترانسفورم را و خب می‌دونیم که ترانسفورمرا چون توی درآوردن روابط بلند مدت عملکرد بهتری دارند نسبت به تمپرال سی ان‌ها و همینطور آرنا ما از ترانسفور استفاده کردیم و توی ماژول آخرم یه ماجول الایمنته دو تا انتخاب داریم مدل‌ها و سیتی‌سی که خب چون تو اکثر مسائل سیکوئنس و سیکوئنس مثل هند رایتینگ ریکاگنیشن و اسپیچ ریکاگنیشن سیتی سیا اومدن دقت‌های خوبی دست یافتن و الان شدن استیت آف دا ما هم از ctc استفاده کردیم و همینطور قابلیت n2 ترینینگ دارن h این قابلیتی نداره خب خب تو این قسمت قراره که اون نوآوری که داشتیم رو بررسی کنیم

E:\courses\LangChain Project\main root\data\ctc_lecture_transcript_part2.txt

توی ترانسفورمر عادی سلف اتنشن کاری که ما انجام میدیم میایم روابط بین کل تایم استپا رو به دست میاریم یعنی فرزند ما یه ویدیو داشته باشم به طول ۱۰۰ فریم میایم اون رابطه کی کوئری بین تمام فریم‌ها رو محاسبه می‌کنیم که این خب خیلی هزینه محاسباتی و زیاد می‌کنه یعنی کامپلکسیتی ما میشه برابر با این مقدار که تی مساوی سایز ویدیومونه و دی هم برابر با فیچر سایزمونه یعنی اون امبد وکتوری که از مرحله قبل که مثلاً همون سی ان ان اومده میشه که اینجا مثلاً برای ما مثلاً ۱۲۸۰ اگه مثلاً که برای موبایلت اینو تولید می‌کنه اگر مثلاً رزنت باشه شاید ۵۱۲ باشه بستگی به اون

زیاد باشه یعنی ویدیومون بلند باشه این کامپلکسیدی خیلی زیاد میشه هزینه محاسباتمونم زیاد میشه و این داستان اصلاً نیازی نیست چرا چون مثلاً فریم یک مربوط به یک کلمه و مثلاً فریم ۱۰۰ به یک کلمه دیگه مربوط میشه خب روابط بین دو هیچ چیزیو برای ما حل نمی‌کنه خب این باعث شد که یعنی انگیزه‌ای شد که ما بیایم یک ماژلی ارائه کنیم به اسم اینتراک گلاس اتنشن که این چیکار میکنه میاد ویدیو رو اول تبدیل به چند تا چانک برابر تقسیم می‌کنه و اون موقع حالا میاد این سلف اتنشن رو مکانیز سلف اتنشن رو هر چانکی اعمال می‌کنه خب حالا سایز چانکا خب میتونه هر چیزی باشه ما اینو آزمایش کردیم و بهترین سایز رو درآوردیم که مثلاً ۱۰ رو تست کردیم ۱۲ رو تست کردیم ۱۴ رو تست کردیم که بهترین

سایز ۱۲ می‌شد حالا از طرف دیگه وقتی دیتا ست رو بررسی می‌کردیم یعنی تعداد فریم‌ها رو تقسیم بر تعداد لیبل‌ها می‌کردیم تا کلمات می‌کردیم اونجا هم میانگین ۱۲ می‌شد یعنی این ۱۲ انگار حالا یه ارتباطی هم با اون داشته و با استفاده از این ماژول پیچیدگی تبدیل میشه به این که دبلیو برابر با سایز چانکمونه که خیلی خیلی کوچیک‌تر از تیه و در کل حالا نتایج نشون دادن که ۲۰ درصد محاسبات اون کم کمتر شده و همینطور مقدار کمی هم دقتمون بهتر می‌شه و خب خیلی خوبه فقط یه نکته‌ای هم بگم اینجا جاش هست یا نه برای حالا پژوهش های آینده من اینجا اومدم چانکا رو برابر تقسیم کردم و خب این خیلی شاید منطقی نباشه چون هر چون هر قسمت یعنی به سیگمنت های مثلاً ویدیو به ۱۰ قسمت تقسیم کردیم

و شاید مثلاً یه پروپوزال جنریتوری باشه که برامون یه سری بیاد مثلاً بگه که اولی مثلاً ۱۰ فریم دومی ۵ فریم این شاید خیلی کمک کنه حالا می‌تونه موضوعی باشه برای پژوهش‌های آینده و خب کلماتی که توی حالا تو جمله‌ها و توی ویدیو استفاده میشه طبیعتاً رندوم نیستن یعنی یه ارتباط معنایی یه ارتباط گرامری با هم دارند فرضاً اگه کلمه ابر استفاده میشه کلمه بارونم تو جمله احتمالش هست که استفاده بشه برای همین این درآوردن این ارتباط‌های معنایی گرامری باعث میشه که دقتمون بیشتر بشه و انگیزه شد که ما بیایم اینترگلاس اتنشن رو معرفی کنیم که باز همه میایم ویدیو رو تقسیم می‌کنیم به چند تا بخش مساوی یهج پول می‌گیریم فرضاً ۱۰ تا هر چانکی مثلاً هر سیگمنتی ۱۰ تا فریم داشته باشه و ۱۰ تا ام وکتور باشه

یه میانگین رو اینا می‌گیریم تبدیل میشیم به یک وکتور و حالا میایم این مکانیزم سلف اتنشن رو رو هر ام وکتور میانگین گرفته شده به دست میاریم و ارتباط بین چانکا رو یا ارتباط بین سیگمنت‌ها رو به دست میاریم کمک می‌کنه که اون ارتباط بین کلمات به دست بیاد ولی خب به هر حال پیچیدگی بیشتر می‌کنه بیشتر می‌کنه خب حالا برسیم به معماری که داشتیم اولش ما یه سیگمنتیشن گذاشتیم که بیاد اون بک گراند حرف فریم رو حذف کنه و خب این باعث میشه که حالا فوکس مدل به خود ساینر باشه به خود اون فرد باشه که خیلی تاثیر زیادی هم داشت دقتمون خیلی بهتر شد با این سیگمنتیشنه باید با توجه به اینکه اون بک یعنی بک گراند ما خیلی پیچیده نبود ساده بود اگه مثلاً پیچیده‌تر باشه احتمالاً تاثیرش بیشتر باشه بعدش موبایللت v2 رو گذاشتیم برای اسپشیال

کالینگ ماژول که ویژگی مکانی استخراج کنه خب توی تمپ ماژولی داریم که شامل اینتر را اینترگلاس اتنشن که خود اینترگلاس اتنشن شامل همون دوتا ماژول بالایی بود که من توضیح دادم یعنی اینستراگلاس اتنشن که میومد سیگمنت می‌کرد بعد رو هر سیگمنت سلف اتنشن رو اجرا می‌کرد و این کلاس همون یه پول میگرفت بعد اون سلف اتنشن اعمال میکرد و در آخرم یه پراجکشن سافت مکس و سیتی سی حالا بعضی از مدل‌ها من دیدم که سی تی سی رو حتی وسطای مدلم استفاده می‌کنن و خب مثلاً بعد از طرف هر لایه‌ای میان سیتی می‌گیرن حالا ادعا کردن که نتایج بهتری میده یعنی اینطور نیست که فقط ما در انتهای شبکه از ctc استفاده کنیم

داشتیم اینجا نمودارهای لاس ترینینگ و همینطور ترینینگ رو داریم می‌بینیم یه نمونه پردیکشن از شبکه هستش که حالا یه سری اختلافات جا انداخته بعد آره اینو تشخیص نداده خروجی ببین ما دوتا ماژول شما فکر کنم اینتگرا ست خب ما میایم مثلاً باز ویدیو می‌کنیم به چند تا قسمت خب فرضا هر قسمتی هم شامل ۱۰ تا فریمه خب که اینا هر کدومش یعنی ام

خام نیستند که از مثلاً سی‌ان اومدن یه میانگین می‌گیریم مثلاً ۱۰ تا ۱۲۸ ۱۲۸۰ تا داریم میانگین می‌گیریم عضو عضو و میشه یه دونه ۱۲۸۰ تا بعد حالا حالا فرزند من اگه ۲۰ تا چانک داشته باشم ۲۰ تا ۱۲۸۰ دارم که رو اینا میام حالا اتنشن اعمال میکنم یعنی میام حجم ویدیو کم میشه حجمش کم میشه آره دیگه به هر حال میاد چیز میکنش دیگه میاد وقتی میانگین میکنه تبدیل میشه به یه دونه ام به وکتور ولی خب چون یعنی اینطور نیست که محاسبات کوتاه کنه ها چون اینم اضافه شده بهش و حالا نتایج اینو میاد جمع میکنه با همون وکتور اولیه اینطور نیست

مقایسه کنیم با سایر پژوهش‌ها اون یعنی مدل پیشنهادی ما توی مدل‌هایی که صرفاً از ویدیوهای rgb استفاده کردن بهترین مدل داره ولی خب به طور کلی استیت آف دالت این مقاله تو استریم اس‌ال‌آره که خب علاوه بر ویدیوهای آر جی بی از داده‌های اسکلتون هم استفاده کرد که ما این کارو نکردیم ولی خب با این حال دقت‌ها یعنی دقتمون خیلی خوب شده به نسبت بقیه مدلایی که فقط از rgb استفاده کرد همین اگه سوالی باشه در خدمتم

دانشگاه صنعتی شریف دانشکده مهندسی مکانیک  طراحی سیستم خودکار تشخیص ایما‌های معنادار بصورت پیوسته با استفاده از یادگیری عمیق و پیاده سازی آن بر روی ربات اجتماعی رسا  حسین رنجبر  استاد راهنما: دکتر علیرضا طاهری استاد درس: دکتر فرزام فرهمند

E:\courses\LangChain Project\main root\data\CTC_Loss_Commands.pdf

Sharif University of Technology
Department of Mechanical Engineering
Connectionist Temporal Classification (CTC)
Social Robotics
Dr. Alireza Taheri
Hossein Ranjbar
May 12, 2024
1

• tf.nn.ctc_loss( labels,
logits,
label_length,
logit_length,
logits_time_major,
unique,
blank_index)
3
Tensor of shape [batch_size, max_label_seq_length]
Tensor of shape [frames, batch_size, num_labels]
Tensor of shape [batch_size]
If True (default), [frames, batch_size, num_labels]
If False, shape is [batch_size, frames, num_labels]
Set the class index to use for the blank label. 
Default = 0
Unique label indices as computed by ctc_unique_labels(labels)
loss:  A 1-D float Tensor of shape [batch_size], containing negative log probabilities.
For training

• tf.nn.ctc_beam_search_decoder( 
inputs,
sequence_length,
beam_width,
top_path)
5
3-D float Tensor, size [max_time, batch_size, num_classes]
1-D int32 vector containing sequence lengths[batch_size]
An int scalar >= 0 (beam search beam width)
An int scalar >= 0, <= beam_width (controls output size)
Returns: A tuple (decoded, log_probabilities)
For inference

• tf.nn.ctc_greedy_decoder( 
inputs,
merge_repeated,
6
Default: True
(Optional). Default: num_classes - 1
Returns: A tuple (decoded, neg_sum_logits)

7
for training
• ctc_loss = tf.keras.losses.CTC(
reduction=‘sum_over_batch_size’,
name=‘sparse_categorical_crossentropy’ )
loss = ctc_loss ( y_true, y_pred )
for inference
• tf.keras.ops.ctc_decode( inputs,
sequence_lengths,
strategy,
top_paths,
merge_repeated)
"greedy" or 
"beam_search"

• Torch.nn.CTCLoss( blank, reduction, zeros_infinity)
ctc_loss = nn.CTCLoss()
loss = ctc_loss( input, 
target, 
input_lengths, 
target_lengths)
8
Output: scalar if reduction is 'mean' (default) or 'sum'. If reduction is 'none‘, output shape will be [batch_size]

E:\courses\LangChain Project\main root\data\CTC_Loss_Example_yes_no_rec.ipynb

'code' cell: '['from google.colab import drive\n', "drive.mount('/content/drive')"]'

'markdown' cell: '['## Download and untar the yesno dataset']'

'code' cell: '['!wget https://us.openslr.org/resources/1/waves_yesno.tar.gz\n', '!mkdir working\n', '!tar -xzvf waves_yesno.tar.gz -C working']'

'code' cell: '['import os\n', 'import re\n', '\n', '# Directory containing the audio files\n', "audio_dir = '/content/working/waves_yesno/'\n", '\n', '# Create a dictionary to store audio paths and text transcriptions\n', 'audio_transcription_dict = {}\n', '\n', '# Iterate through the audio files in the directory\n', 'for filename in os.listdir(audio_dir):\n', "    if filename.endswith('.wav'):\n", '        # Extract the numeric labels from the filename\n', "        labels = re.findall(r'\\d+', filename)\n", '\n', '        labels = [int(label) for label in labels if label.isdigit()]\n', '\n', '        # Convert the numeric labels to "yes" and "no"\n', "        transcription = ' '.join(['yes' if label == 1 else 'no' for label in labels])\n", '\n', '\n', '        # Store the audio path and transcription in the dictionary\n', '        audio_path = os.path.join(audio_dir, filename)\n', '        audio_transcription_dict[audio_path] = transcription\n', '\n', '# Sort the dictionary by transcription (which ensures both lists are in the same order)\n', 'sorted_audio_transcription = sorted(audio_transcription_dict.items(), key=lambda x: x[1])\n', '\n', '# Separate the sorted data into audio paths and transcriptions\n', 'sorted_audio_paths, sorted_transcriptions = zip(*sorted_audio_transcription)\n', '\n', '# Create a text file to store the audio paths\n', "paths_output_file = 'paths.txt'\n", "with open(paths_output_file, 'w') as f_paths:\n", '    # Write each audio path on a separate line\n', "    f_paths.write('\\n'.join(sorted_audio_paths))\n", '\n', 'print(f"Audio paths have been saved to {paths_output_file}")\n', '\n', '# Create a text file to store the transcriptions\n', "transcriptions_output_file = 'transcriptions.txt'\n", "with open(transcriptions_output_file, 'w') as f_transcriptions:\n", '    # Write each transcription on a separate line\n', "    f_transcriptions.write('\\n'.join(sorted_transcriptions))\n", '\n', 'print(f"Transcriptions have been saved to {transcriptions_output_file}")\n']'

'code' cell: '['# @title install required libs and import them\n', '!pip install jiwer\n', 'import pandas as pd\n', 'import numpy as np\n', 'import tensorflow as tf\n', 'from tensorflow import keras\n', 'from tensorflow.keras import layers\n', 'import matplotlib.pyplot as plt\n', 'from IPython import display\n', 'from jiwer import wer\n', '\n', 'from tensorflow.keras.preprocessing.text import Tokenizer']'

'code' cell: '['audio_files_path = "/content/paths.txt"\n', 'texttranscribe_path = "/content/transcriptions.txt"\n', '\n', '# Load the audio file paths and corresponding text labels\n', "with open(audio_files_path, 'r') as f:\n", '    audio_files = f.read().splitlines()\n', "with open(texttranscribe_path, 'r') as f:\n", '    audio_labels_text = f.read().splitlines()\n', '# Create a dictionary with the data\n', "data = {'Audio_Path': audio_files, 'Transcription': audio_labels_text}\n", '\n', '# Create a Pandas DataFrame\n', 'df = pd.DataFrame(data)\n', '\n', 'metadata_df  = df\n', '\n', '# Display the first few rows of the DataFrame\n', 'print(df.head())']'

'code' cell: '['text = audio_labels_text\n', '\n', '\n', 'charlevel=True\n', '\n', '# Tokenize the labels and convert to binary matrix\n', "tokenizer = Tokenizer(char_level=charlevel, oov_token='<UNK>')\n", 'tokenizer.fit_on_texts(text)\n', '\n', 'audio_labels = tokenizer.texts_to_sequences(text)\n', '\n', 'word_index = tokenizer.word_index\n', 'print(word_index)\n', '\n', '# Extract only the characters (keys) from the dictionary\n', 'characters = [char for char in word_index.keys()]\n', '\n', '# Join the list elements into a single string\n', "vocabresult = ''.join(characters)\n", '\n', '# Print the result\n', 'print(vocabresult)']'

'code' cell: '['split = int(len(metadata_df) * 0.90)\n', 'df_train = metadata_df[:split]\n', 'df_val = metadata_df[split:]\n', '\n', 'print(f"Size of the training set: {len(df_train)}")\n', 'print(f"Size of the val set: {len(df_val)}")']'

'markdown' cell: '['## Preprocessing\n', '\n', 'We first prepare the vocabulary to be used.']'

'code' cell: '['# The set of characters accepted in the transcription.\n', '#characters = [x for x in "abcdefghijklmnopqrstuvwxyz\'?! "]\n', 'characters = [x for x in vocabresult]\n', '# Mapping characters to integers\n', 'char_to_num = keras.layers.StringLookup(vocabulary=characters, oov_token="")\n', '# Mapping integers back to original characters\n', 'num_to_char = keras.layers.StringLookup(\n', '    vocabulary=char_to_num.get_vocabulary(), oov_token="", invert=True\n', ')\n', '\n', 'print(\n', '    f"The vocabulary is: {char_to_num.get_vocabulary()} "\n', '    f"(size ={char_to_num.vocabulary_size()})"\n', ')']'

'markdown' cell: '['Next, we create the function that describes the transformation that we apply to each\n', 'element of our dataset.']'

'code' cell: '['# An integer scalar Tensor. The window length in samples.\n', 'frame_length = 256\n', '# An integer scalar Tensor. The number of samples to step.\n', 'frame_step = 160\n', '# An integer scalar Tensor. The size of the FFT to apply.\n', '# If not provided, uses the smallest power of 2 enclosing frame_length.\n', 'fft_length = 384\n', '\n', '\n', 'def encode_single_sample(wav_file, label):\n', '    ###########################################\n', '    ##  Process the Audio\n', '    ##########################################\n', '    # 1. Read wav file\n', '    #file = tf.io.read_file(wavs_path + wav_file + ".wav")\n', '    file = tf.io.read_file(wav_file)\n', '    # 2. Decode the wav file\n', '    audio, _ = tf.audio.decode_wav(file)\n', '    audio = tf.squeeze(audio, axis=-1)\n', '    # 3. Change type to float\n', '    audio = tf.cast(audio, tf.float32)\n', '    # 4. Get the spectrogram\n', '    spectrogram = tf.signal.stft(\n', '        audio, frame_length=frame_length, frame_step=frame_step, fft_length=fft_length\n', '    )\n', '    # 5. We only need the magnitude, which can be derived by applying tf.abs\n', '    spectrogram = tf.abs(spectrogram)\n', '    spectrogram = tf.math.pow(spectrogram, 0.5)\n', '    # 6. normalisation\n', '    means = tf.math.reduce_mean(spectrogram, 1, keepdims=True)\n', '    stddevs = tf.math.reduce_std(spectrogram, 1, keepdims=True)\n', '    spectrogram = (spectrogram - means) / (stddevs + 1e-10)\n', '    ###########################################\n', '    ##  Process the label\n', '    ##########################################\n', '    # 7. Convert label to Lower case\n', '    label = tf.strings.lower(label)\n', '    # 8. Split the label\n', '    label = tf.strings.unicode_split(label, input_encoding="UTF-8")\n', '    # 9. Map the characters in label to numbers\n', '    label = char_to_num(label)\n', '    # 10. Return a dict as our model is expecting two inputs\n', '    return spectrogram, label\n']'

'markdown' cell: '['## Creating `Dataset` objects\n', '\n', 'We create a `tf.data.Dataset` object that yields\n', 'the transformed elements, in the same order as they\n', 'appeared in the input.']'

'code' cell: '['batch_size = 32\n', '# Define the training dataset\n', 'train_dataset = tf.data.Dataset.from_tensor_slices(\n', '    #old(list(df_train["file_name"]), list(df_train["normalized_transcription"]))\n', '    (list(df_train["Audio_Path"]), list(df_train["Transcription"]))\n', '\n', ')\n', 'train_dataset = (\n', '    train_dataset.map(encode_single_sample, num_parallel_calls=tf.data.AUTOTUNE)\n', '    .padded_batch(batch_size)\n', '    .prefetch(buffer_size=tf.data.AUTOTUNE)\n', ')\n', '\n', '# Define the validation dataset\n', 'validation_dataset = tf.data.Dataset.from_tensor_slices(\n', '    (list(df_val["Audio_Path"]), list(df_val["Transcription"]))\n', ')\n', 'validation_dataset = (\n', '    validation_dataset.map(encode_single_sample, num_parallel_calls=tf.data.AUTOTUNE)\n', '    .padded_batch(batch_size)\n', '    .prefetch(buffer_size=tf.data.AUTOTUNE)\n', ')\n']'

'markdown' cell: '['## Visualize the data\n', '\n', "Let's visualize an example in our dataset, including the\n", 'audio clip, the spectrogram and the corresponding label.']'

'code' cell: '['fig = plt.figure(figsize=(8, 5))\n', 'for batch in train_dataset.take(1):\n', '    spectrogram = batch[0][0].numpy()\n', '    spectrogram = np.array([np.trim_zeros(x) for x in np.transpose(spectrogram)])\n', '    label = batch[1][0]\n', '    # Spectrogram\n', '    label = tf.strings.reduce_join(num_to_char(label)).numpy().decode("utf-8")\n', '    ax = plt.subplot(2, 1, 1)\n', '    ax.imshow(spectrogram, vmax=1)\n', '    ax.set_title(label)\n', '    ax.axis("off")\n', '    # Wav\n', '    #file = tf.io.read_file(wavs_path + list(df_train["file_name"])[0] + ".wav")\n', '    file = tf.io.read_file(list(df_train["Audio_Path"])[0])\n', '    audio, _ = tf.audio.decode_wav(file)\n', '    audio = audio.numpy()\n', '    ax = plt.subplot(2, 1, 2)\n', '    plt.plot(audio)\n', '    ax.set_title("Signal Wave")\n', '    ax.set_xlim(0, len(audio))\n', '    display.display(display.Audio(np.transpose(audio), rate=16000))\n', 'plt.show()']'

'markdown' cell: '['## Model\n', '\n', 'We first define the CTC Loss function.']'

'code' cell: '['\n', 'def CTCLoss(y_true, y_pred):\n', '    # Compute the training-time loss value\n', '    batch_len = tf.cast(tf.shape(y_true)[0], dtype="int64")\n', '    input_length = tf.cast(tf.shape(y_pred)[1], dtype="int64")\n', '    label_length = tf.cast(tf.shape(y_true)[1], dtype="int64")\n', '\n', '    input_length = input_length * tf.ones(shape=(batch_len, 1), dtype="int64")\n', '    label_length = label_length * tf.ones(shape=(batch_len, 1), dtype="int64")\n', '\n', '    loss = keras.backend.ctc_batch_cost(y_true, y_pred, input_length, label_length)\n', '    return loss\n']'

'markdown' cell: '['We now define our model. We will define a model similar to\n', '[DeepSpeech2](https://nvidia.github.io/OpenSeq2Seq/html/speech-recognition/deepspeech2.html).']'

'code' cell: '['\n', 'def build_model(input_dim, output_dim, rnn_layers=5, rnn_units=128):\n', '    """Model."""\n', "    # Model's input\n", '    input_spectrogram = layers.Input((None, input_dim), name="input")\n', '    # Expand the dimension to use 2D CNN.\n', '    x = layers.Reshape((-1, input_dim, 1), name="expand_dim")(input_spectrogram)\n', '    # Convolution layer 1\n', '    x = layers.Conv2D(\n', '        filters=32,\n', '        kernel_size=[11, 41],\n', '        strides=[2, 2],\n', '        padding="same",\n', '        use_bias=False,\n', '        name="conv_1",\n', '    )(x)\n', '    x = layers.BatchNormalization(name="conv_1_bn")(x)\n', '    x = layers.ReLU(name="conv_1_relu")(x)\n', '    # Convolution layer 2\n', '    x = layers.Conv2D(\n', '        filters=32,\n', '        kernel_size=[11, 21],\n', '        strides=[1, 2],\n', '        padding="same",\n', '        use_bias=False,\n', '        name="conv_2",\n', '    )(x)\n', '    x = layers.BatchNormalization(name="conv_2_bn")(x)\n', '    x = layers.ReLU(name="conv_2_relu")(x)\n', '    # Reshape the resulted volume to feed the RNNs layers\n', '    x = layers.Reshape((-1, x.shape[-2] * x.shape[-1]))(x)\n', '    # RNN layers\n', '    for i in range(1, rnn_layers + 1):\n', '        recurrent = layers.GRU(\n', '            units=rnn_units,\n', '            activation="tanh",\n', '            recurrent_activation="sigmoid",\n', '            use_bias=True,\n', '            return_sequences=True,\n', '            reset_after=True,\n', '            name=f"gru_{i}",\n', '        )\n', '        x = layers.Bidirectional(\n', '            recurrent, name=f"bidirectional_{i}", merge_mode="concat"\n', '        )(x)\n', '        if i < rnn_layers:\n', '            x = layers.Dropout(rate=0.5)(x)\n', '    # Dense layer\n', '    x = layers.Dense(units=rnn_units * 2, name="dense_1")(x)\n', '    x = layers.ReLU(name="dense_1_relu")(x)\n', '    x = layers.Dropout(rate=0.5)(x)\n', '    # Classification layer\n', '    output = layers.Dense(units=output_dim + 1, activation="softmax")(x)\n', '    # Model\n', '    model = keras.Model(input_spectrogram, output, name="zmasr")\n', '    # Optimizer\n', '    opt = keras.optimizers.Adam(learning_rate=1e-4)\n', '    # Compile the model and return\n', '    model.compile(optimizer=opt, loss=CTCLoss)\n', '    return model\n', '\n', '\n', '# Get the model\n', 'model = build_model(\n', '    input_dim=fft_length // 2 + 1,\n', '    output_dim=char_to_num.vocabulary_size(),\n', '    rnn_units=512,\n', ')\n', 'model.summary(line_length=110)']'

'code' cell: '[]'

'markdown' cell: '['## Training and Evaluating']'

'code' cell: '['# A utility function to decode the output of the network\n', 'def decode_batch_predictions(pred):\n', '    input_len = np.ones(pred.shape[0]) * pred.shape[1]\n', '    # Use greedy search. For complex tasks, you can use beam search\n', '    results = keras.backend.ctc_decode(pred, input_length=input_len, greedy=True)[0][0]\n', '    # Iterate over the results and get back the text\n', '    output_text = []\n', '    for result in results:\n', '        result = tf.strings.reduce_join(num_to_char(result)).numpy().decode("utf-8")\n', '        output_text.append(result)\n', '    return output_text\n', '\n', '\n', '# A callback class to output a few transcriptions during training\n', 'class CallbackEval(keras.callbacks.Callback):\n', '    """Displays a batch of outputs after every epoch."""\n', '\n', '    def __init__(self, dataset):\n', '        super().__init__()\n', '        self.dataset = dataset\n', '\n', '    def on_epoch_end(self, epoch: int, logs=None):\n', '        predictions = []\n', '        targets = []\n', '        for batch in self.dataset:\n', '            X, y = batch\n', '            batch_predictions = model.predict(X)\n', '            batch_predictions = decode_batch_predictions(batch_predictions)\n', '            predictions.extend(batch_predictions)\n', '            for label in y:\n', '                label = (\n', '                    tf.strings.reduce_join(num_to_char(label)).numpy().decode("utf-8")\n', '                )\n', '                targets.append(label)\n', '        wer_score = wer(targets, predictions)\n', '        print("-" * 100)\n', '        print(f"Word Error Rate: {wer_score:.4f}")\n', '        print("-" * 100)\n', '        for i in np.random.randint(0, len(predictions), 2):\n', '            print(f"Target    : {targets[i]}")\n', '            print(f"Prediction: {predictions[i]}")\n', '            print("-" * 100)\n']'

'markdown' cell: '["Let's start the training process."]'

'code' cell: '['# Define the number of epochs.\n', 'epochs = 200\n', '# Callback function to check transcription on the val set.\n', 'validation_callback = CallbackEval(validation_dataset)\n', '# Train the model\n', 'history = model.fit(\n', '    train_dataset,\n', '    validation_data=validation_dataset,\n', '    epochs=epochs,\n', '    callbacks=[validation_callback],\n', ')\n']'

'markdown' cell: '['## Inference']'

'code' cell: '["# Let's check results on more validation samples\n", 'predictions = []\n', 'targets = []\n', 'for batch in validation_dataset:\n', '    X, y = batch\n', '    batch_predictions = model.predict(X)\n', '    batch_predictions = decode_batch_predictions(batch_predictions)\n', '    predictions.extend(batch_predictions)\n', '    for label in y:\n', '        label = tf.strings.reduce_join(num_to_char(label)).numpy().decode("utf-8")\n', '        targets.append(label)\n', 'wer_score = wer(targets, predictions)\n', 'print("-" * 100)\n', 'print(f"Word Error Rate: {wer_score:.4f}")\n', 'print("-" * 100)\n', 'for i in np.random.randint(0, len(predictions), 5):\n', '    print(f"Target    : {targets[i]}")\n', '    print(f"Prediction: {predictions[i]}")\n', '    print("-" * 100)\n']'

'code' cell: '['\n', '#############################################################\n', '################### Give Audio Path And Run #################\n', '#############################################################\n', '\n', 'aud = "/content/working/waves_yesno/0_0_1_1_1_1_0_0.wav"\n', '\n', '#############################################################\n', '\n', '\n', 'def encode_aud(wav_file):\n', '    """\n', '    audio file encoder\n', '    params : wav audio file path\n', '    return : spectogram\n', '     """\n', '    file = tf.io.read_file(wav_file)\n', '    audio, _ = tf.audio.decode_wav(file)\n', '    audio = tf.squeeze(audio, axis=-1)\n', '    audio = tf.cast(audio, tf.float32)\n', '    spectrogram = tf.signal.stft(\n', '        audio, frame_length=frame_length, frame_step=frame_step, fft_length=fft_length\n', '    )\n', '    spectrogram = tf.abs(spectrogram)\n', '    spectrogram = tf.math.pow(spectrogram, 0.5)\n', '    means = tf.math.reduce_mean(spectrogram, 1, keepdims=True)\n', '    stddevs = tf.math.reduce_std(spectrogram, 1, keepdims=True)\n', '    spectrogram = (spectrogram - means) / (stddevs + 1e-10)\n', '\n', '    return spectrogram\n', '\n', '\n', 'aud = encode_aud(aud)\n', 'aud = tf.expand_dims(aud, axis=0)\n', '#Make preds by ai\n', 'pred = model.predict(aud)\n', '#decode and detokenize it\n', 'pred = decode_batch_predictions(pred)\n', 'print(pred)\n']'

'code' cell: '['# @title Save models\n', '!mkdir model\n', 'import json\n', '\n', '# Save the model weights and architecture\n', 'model.save("model/zoomasr")\n', '\n', '\n', '#with open("model/transformer_model_architecture.json", "w") as json_file:\n', ' #   json_file.write(model.to_json())\n', '\n', '# Save the tokenizer vocabulary as a JSON file\n', 'with open("model/tokenizer_vocab.txt", "w", encoding="utf-8") as file:\n', '    file.write(vocabresult)']'

'code' cell: '['# @title load model and tokenizer\n', 'import json\n', 'import tensorflow as tf\n', 'from tensorflow import keras\n', '\n', '# Load the tokenizer vocabulary from the JSON file\n', 'with open("model/tokenizer_vocab.txt", "r") as file:\n', '    idx_to_char = file.read()\n', '\n', 'characters = [x for x in idx_to_char]\n', '# Mapping characters to integers\n', 'char_to_num = keras.layers.StringLookup(vocabulary=characters, oov_token="")\n', '# Mapping integers back to original characters\n', 'num_to_char = keras.layers.StringLookup(\n', '    vocabulary=char_to_num.get_vocabulary(), oov_token="", invert=True\n', ')\n', '\n', 'print(\n', '    f"The vocabulary is: {char_to_num.get_vocabulary()} "\n', '    f"(size ={char_to_num.vocabulary_size()})"\n', ')\n', '\n', '# A utility function to decode the output of the network\n', 'def decode_batch_predictions(pred):\n', '    input_len = np.ones(pred.shape[0]) * pred.shape[1]\n', '    # Use greedy search. For complex tasks, you can use beam search\n', '    results = keras.backend.ctc_decode(pred, input_length=input_len, greedy=True)[0][0]\n', '    # Iterate over the results and get back the text\n', '    output_text = []\n', '    for result in results:\n', '        result = tf.strings.reduce_join(num_to_char(result)).numpy().decode("utf-8")\n', '        output_text.append(result)\n', '    return output_text\n', '\n', '\n', 'def CTCLoss(y_true, y_pred):\n', '    # Compute the training-time loss value\n', '    batch_len = tf.cast(tf.shape(y_true)[0], dtype="int64")\n', '    input_length = tf.cast(tf.shape(y_pred)[1], dtype="int64")\n', '    label_length = tf.cast(tf.shape(y_true)[1], dtype="int64")\n', '\n', '    input_length = input_length * tf.ones(shape=(batch_len, 1), dtype="int64")\n', '    label_length = label_length * tf.ones(shape=(batch_len, 1), dtype="int64")\n', '\n', '    loss = keras.backend.ctc_batch_cost(y_true, y_pred, input_length, label_length)\n', '    return loss\n', '\n', '\n', '\n', '\n', "with keras.utils.custom_object_scope({'CTCLoss': CTCLoss}):\n", '    loaded_model = tf.keras.models.load_model("model/zoomasr")\n', '\n', '\n']'

'code' cell: '['\n', '#############################################################\n', '################### Give Audio Path And Run #################\n', '#############################################################\n', '\n', 'aud = "/content/working/waves_yesno/0_0_1_1_1_1_0_0.wav"\n', '\n', '#############################################################\n', 'import numpy as np\n', '# An integer scalar Tensor. The window length in samples.\n', 'frame_length = 256\n', '# An integer scalar Tensor. The number of samples to step.\n', 'frame_step = 160\n', '# An integer scalar Tensor. The size of the FFT to apply.\n', '# If not provided, uses the smallest power of 2 enclosing frame_length.\n', 'fft_length = 384\n', '\n', '\n', 'def encode_aud(wav_file):\n', '    """\n', '    audio file encoder\n', '    params : wav audio file path\n', '    return : spectogram\n', '     """\n', '    file = tf.io.read_file(wav_file)\n', '    audio, _ = tf.audio.decode_wav(file)\n', '    audio = tf.squeeze(audio, axis=-1)\n', '    audio = tf.cast(audio, tf.float32)\n', '    spectrogram = tf.signal.stft(\n', '        audio, frame_length=frame_length, frame_step=frame_step, fft_length=fft_length\n', '    )\n', '    spectrogram = tf.abs(spectrogram)\n', '    spectrogram = tf.math.pow(spectrogram, 0.5)\n', '    means = tf.math.reduce_mean(spectrogram, 1, keepdims=True)\n', '    stddevs = tf.math.reduce_std(spectrogram, 1, keepdims=True)\n', '    spectrogram = (spectrogram - means) / (stddevs + 1e-10)\n', '\n', '    return spectrogram\n', '\n', '\n', 'aud = encode_aud(aud)\n', 'aud = tf.expand_dims(aud, axis=0)\n', '#Make preds by ai\n', 'pred = loaded_model.predict(aud)\n', '#decode and detokenize it\n', 'pred = decode_batch_predictions(pred)\n', 'print(pred)\n']'

'code' cell: '['# @title io ops\n', '!zip -r yesno_zoomasr_model.zip /content/model']'

E:\courses\LangChain Project\main root\data\ctc_loss_example_yes_no_rec.py

"""CTC_Loss_Example_yes_no_rec.ipynb

Automatically generated by Colab.

    https://colab.research.google.com/drive/19Vsu3xfStqyJc5jDkXbUDAx59aNn3NTv
"""

from google.colab import drive
drive.mount('/content/drive')

"""## Download and untar the yesno dataset"""

!wget https://us.openslr.org/resources/1/waves_yesno.tar.gz
!mkdir working
!tar -xzvf waves_yesno.tar.gz -C working

import os
import re

# Directory containing the audio files
audio_dir = '/content/working/waves_yesno/'

# Create a dictionary to store audio paths and text transcriptions
audio_transcription_dict = {}

# Iterate through the audio files in the directory
for filename in os.listdir(audio_dir):
    if filename.endswith('.wav'):
        # Extract the numeric labels from the filename
        labels = re.findall(r'\d+', filename)

        labels = [int(label) for label in labels if label.isdigit()]

        # Convert the numeric labels to "yes" and "no"
        transcription = ' '.join(['yes' if label == 1 else 'no' for label in labels])

        # Store the audio path and transcription in the dictionary
        audio_path = os.path.join(audio_dir, filename)
        audio_transcription_dict[audio_path] = transcription

# Sort the dictionary by transcription (which ensures both lists are in the same order)
sorted_audio_transcription = sorted(audio_transcription_dict.items(), key=lambda x: x[1])

# Separate the sorted data into audio paths and transcriptions
sorted_audio_paths, sorted_transcriptions = zip(*sorted_audio_transcription)

# Create a text file to store the audio paths
paths_output_file = 'paths.txt'
with open(paths_output_file, 'w') as f_paths:
    # Write each audio path on a separate line
    f_paths.write('\n'.join(sorted_audio_paths))

print(f"Audio paths have been saved to {paths_output_file}")

# Create a text file to store the transcriptions
transcriptions_output_file = 'transcriptions.txt'
with open(transcriptions_output_file, 'w') as f_transcriptions:
    # Write each transcription on a separate line
    f_transcriptions.write('\n'.join(sorted_transcriptions))

print(f"Transcriptions have been saved to {transcriptions_output_file}")

# @title install required libs and import them
!pip install jiwer
import pandas as pd
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from IPython import display
from jiwer import wer

from tensorflow.keras.preprocessing.text import Tokenizer

audio_files_path = "/content/paths.txt"
texttranscribe_path = "/content/transcriptions.txt"

# Load the audio file paths and corresponding text labels
with open(audio_files_path, 'r') as f:
    audio_files = f.read().splitlines()
with open(texttranscribe_path, 'r') as f:
    audio_labels_text = f.read().splitlines()
# Create a dictionary with the data
data = {'Audio_Path': audio_files, 'Transcription': audio_labels_text}

# Create a Pandas DataFrame
df = pd.DataFrame(data)

metadata_df  = df

# Display the first few rows of the DataFrame
print(df.head())

text = audio_labels_text

charlevel=True

# Tokenize the labels and convert to binary matrix
tokenizer = Tokenizer(char_level=charlevel, oov_token='<UNK>')
tokenizer.fit_on_texts(text)

audio_labels = tokenizer.texts_to_sequences(text)

word_index = tokenizer.word_index
print(word_index)

# Extract only the characters (keys) from the dictionary
characters = [char for char in word_index.keys()]

# Join the list elements into a single string
vocabresult = ''.join(characters)

# Print the result
print(vocabresult)

split = int(len(metadata_df) * 0.90)
df_train = metadata_df[:split]
df_val = metadata_df[split:]

print(f"Size of the training set: {len(df_train)}")
print(f"Size of the val set: {len(df_val)}")

"""## Preprocessing

We first prepare the vocabulary to be used.
"""

# The set of characters accepted in the transcription.
#characters = [x for x in "abcdefghijklmnopqrstuvwxyz'?! "]
characters = [x for x in vocabresult]
# Mapping characters to integers
char_to_num = keras.layers.StringLookup(vocabulary=characters, oov_token="")
# Mapping integers back to original characters
num_to_char = keras.layers.StringLookup(
    vocabulary=char_to_num.get_vocabulary(), oov_token="", invert=True
)

print(
    f"The vocabulary is: {char_to_num.get_vocabulary()} "
    f"(size ={char_to_num.vocabulary_size()})"
)

"""Next, we create the function that describes the transformation that we apply to each
element of our dataset.
"""

# An integer scalar Tensor. The window length in samples.
frame_length = 256
# An integer scalar Tensor. The number of samples to step.
frame_step = 160
# An integer scalar Tensor. The size of the FFT to apply.
# If not provided, uses the smallest power of 2 enclosing frame_length.
fft_length = 384

def encode_single_sample(wav_file, label):
    ###########################################
    ##  Process the Audio
    ##########################################
    # 1. Read wav file
    #file = tf.io.read_file(wavs_path + wav_file + ".wav")
    file = tf.io.read_file(wav_file)
    # 2. Decode the wav file
    audio, _ = tf.audio.decode_wav(file)
    audio = tf.squeeze(audio, axis=-1)
    # 3. Change type to float
    audio = tf.cast(audio, tf.float32)
    # 4. Get the spectrogram
    spectrogram = tf.signal.stft(
        audio, frame_length=frame_length, frame_step=frame_step, fft_length=fft_length
    )
    # 5. We only need the magnitude, which can be derived by applying tf.abs
    spectrogram = tf.abs(spectrogram)
    spectrogram = tf.math.pow(spectrogram, 0.5)
    # 6. normalisation
    means = tf.math.reduce_mean(spectrogram, 1, keepdims=True)
    stddevs = tf.math.reduce_std(spectrogram, 1, keepdims=True)
    spectrogram = (spectrogram - means) / (stddevs + 1e-10)
    ##  Process the label
    # 7. Convert label to Lower case
    label = tf.strings.lower(label)
    # 8. Split the label
    label = tf.strings.unicode_split(label, input_encoding="UTF-8")
    # 9. Map the characters in label to numbers
    label = char_to_num(label)
    # 10. Return a dict as our model is expecting two inputs
    return spectrogram, label

"""## Creating `Dataset` objects

We create a `tf.data.Dataset` object that yields
the transformed elements, in the same order as they
appeared in the input.
"""

batch_size = 32
# Define the training dataset
train_dataset = tf.data.Dataset.from_tensor_slices(
    #old(list(df_train["file_name"]), list(df_train["normalized_transcription"]))
    (list(df_train["Audio_Path"]), list(df_train["Transcription"]))

)
train_dataset = (
    train_dataset.map(encode_single_sample, num_parallel_calls=tf.data.AUTOTUNE)
    .padded_batch(batch_size)
    .prefetch(buffer_size=tf.data.AUTOTUNE)
)

# Define the validation dataset
validation_dataset = tf.data.Dataset.from_tensor_slices(
    (list(df_val["Audio_Path"]), list(df_val["Transcription"]))
)
validation_dataset = (
    validation_dataset.map(encode_single_sample, num_parallel_calls=tf.data.AUTOTUNE)
)

"""## Visualize the data

Let's visualize an example in our dataset, including the
audio clip, the spectrogram and the corresponding label.
"""

fig = plt.figure(figsize=(8, 5))
for batch in train_dataset.take(1):
    spectrogram = batch[0][0].numpy()
    spectrogram = np.array([np.trim_zeros(x) for x in np.transpose(spectrogram)])
    label = batch[1][0]
    # Spectrogram
    label = tf.strings.reduce_join(num_to_char(label)).numpy().decode("utf-8")
    ax = plt.subplot(2, 1, 1)
    ax.imshow(spectrogram, vmax=1)
    ax.set_title(label)
    ax.axis("off")
    # Wav
    #file = tf.io.read_file(wavs_path + list(df_train["file_name"])[0] + ".wav")
    file = tf.io.read_file(list(df_train["Audio_Path"])[0])
    audio = audio.numpy()
    ax = plt.subplot(2, 1, 2)
    plt.plot(audio)
    ax.set_title("Signal Wave")
    ax.set_xlim(0, len(audio))
    display.display(display.Audio(np.transpose(audio), rate=16000))

"""## Model

We first define the CTC Loss function.
"""

def CTCLoss(y_true, y_pred):
    # Compute the training-time loss value
    batch_len = tf.cast(tf.shape(y_true)[0], dtype="int64")
    input_length = tf.cast(tf.shape(y_pred)[1], dtype="int64")
    label_length = tf.cast(tf.shape(y_true)[1], dtype="int64")

    input_length = input_length * tf.ones(shape=(batch_len, 1), dtype="int64")
    label_length = label_length * tf.ones(shape=(batch_len, 1), dtype="int64")

    loss = keras.backend.ctc_batch_cost(y_true, y_pred, input_length, label_length)
    return loss

"""We now define our model. We will define a model similar to
[DeepSpeech2](https://nvidia.github.io/OpenSeq2Seq/html/speech-recognition/deepspeech2.html).
"""

def build_model(input_dim, output_dim, rnn_layers=5, rnn_units=128):
    """Model."""
    # Model's input
    input_spectrogram = layers.Input((None, input_dim), name="input")
    # Expand the dimension to use 2D CNN.
    x = layers.Reshape((-1, input_dim, 1), name="expand_dim")(input_spectrogram)
    # Convolution layer 1
    x = layers.Conv2D(
        filters=32,
        kernel_size=[11, 41],
        strides=[2, 2],
        padding="same",
        use_bias=False,
        name="conv_1",
    )(x)
    x = layers.BatchNormalization(name="conv_1_bn")(x)
    x = layers.ReLU(name="conv_1_relu")(x)
    # Convolution layer 2
        kernel_size=[11, 21],
        strides=[1, 2],
        name="conv_2",
    )(x)
    x = layers.BatchNormalization(name="conv_2_bn")(x)
    x = layers.ReLU(name="conv_2_relu")(x)
    # Reshape the resulted volume to feed the RNNs layers
    x = layers.Reshape((-1, x.shape[-2] * x.shape[-1]))(x)
    # RNN layers
    for i in range(1, rnn_layers + 1):
        recurrent = layers.GRU(
            units=rnn_units,
            activation="tanh",
            recurrent_activation="sigmoid",
            use_bias=True,
            return_sequences=True,
            reset_after=True,
            name=f"gru_{i}",
        )
        x = layers.Bidirectional(
            recurrent, name=f"bidirectional_{i}", merge_mode="concat"
        )(x)
        if i < rnn_layers:
            x = layers.Dropout(rate=0.5)(x)
    # Dense layer
    x = layers.Dense(units=rnn_units * 2, name="dense_1")(x)
    x = layers.ReLU(name="dense_1_relu")(x)
    x = layers.Dropout(rate=0.5)(x)
    # Classification layer
    output = layers.Dense(units=output_dim + 1, activation="softmax")(x)
    # Model
    model = keras.Model(input_spectrogram, output, name="zmasr")
    # Optimizer
    opt = keras.optimizers.Adam(learning_rate=1e-4)
    # Compile the model and return
    model.compile(optimizer=opt, loss=CTCLoss)
    return model

# Get the model
model = build_model(
    input_dim=fft_length // 2 + 1,
    output_dim=char_to_num.vocabulary_size(),
    rnn_units=512,
)
model.summary(line_length=110)

"""## Training and Evaluating"""

# A utility function to decode the output of the network
def decode_batch_predictions(pred):
    input_len = np.ones(pred.shape[0]) * pred.shape[1]
    # Use greedy search. For complex tasks, you can use beam search
    results = keras.backend.ctc_decode(pred, input_length=input_len, greedy=True)[0][0]
    # Iterate over the results and get back the text
    output_text = []
    for result in results:
        result = tf.strings.reduce_join(num_to_char(result)).numpy().decode("utf-8")
        output_text.append(result)
    return output_text

# A callback class to output a few transcriptions during training
class CallbackEval(keras.callbacks.Callback):
    """Displays a batch of outputs after every epoch."""

    def __init__(self, dataset):
        super().__init__()
        self.dataset = dataset

    def on_epoch_end(self, epoch: int, logs=None):
        predictions = []
        targets = []
        for batch in self.dataset:
            X, y = batch
            batch_predictions = model.predict(X)
            batch_predictions = decode_batch_predictions(batch_predictions)
            predictions.extend(batch_predictions)
            for label in y:
                label = (
                    tf.strings.reduce_join(num_to_char(label)).numpy().decode("utf-8")
                )
                targets.append(label)
        wer_score = wer(targets, predictions)
        print("-" * 100)
        print(f"Word Error Rate: {wer_score:.4f}")
        for i in np.random.randint(0, len(predictions), 2):
            print(f"Target    : {targets[i]}")
            print(f"Prediction: {predictions[i]}")
            print("-" * 100)

"""Let's start the training process."""

# Define the number of epochs.
epochs = 200
# Callback function to check transcription on the val set.
validation_callback = CallbackEval(validation_dataset)
# Train the model
history = model.fit(
    train_dataset,
    validation_data=validation_dataset,
    epochs=epochs,
    callbacks=[validation_callback],
)

"""## Inference"""

# Let's check results on more validation samples
predictions = []
targets = []
for batch in validation_dataset:
    X, y = batch
    batch_predictions = model.predict(X)
    batch_predictions = decode_batch_predictions(batch_predictions)
    predictions.extend(batch_predictions)
    for label in y:
        label = tf.strings.reduce_join(num_to_char(label)).numpy().decode("utf-8")
        targets.append(label)
wer_score = wer(targets, predictions)
print("-" * 100)
print(f"Word Error Rate: {wer_score:.4f}")
for i in np.random.randint(0, len(predictions), 5):
    print(f"Target    : {targets[i]}")
    print(f"Prediction: {predictions[i]}")
    print("-" * 100)

#############################################################
################### Give Audio Path And Run #################

aud = "/content/working/waves_yesno/0_0_1_1_1_1_0_0.wav"

def encode_aud(wav_file):
    """
    audio file encoder
    params : wav audio file path
    return : spectogram
     """
    )

    return spectrogram

aud = encode_aud(aud)
aud = tf.expand_dims(aud, axis=0)
#Make preds by ai
pred = model.predict(aud)
#decode and detokenize it
pred = decode_batch_predictions(pred)
print(pred)

# @title Save models
!mkdir model
import json

# Save the model weights and architecture
model.save("model/zoomasr")

#with open("model/transformer_model_architecture.json", "w") as json_file:
 #   json_file.write(model.to_json())

# Save the tokenizer vocabulary as a JSON file
with open("model/tokenizer_vocab.txt", "w", encoding="utf-8") as file:
    file.write(vocabresult)

# @title load model and tokenizer

# Load the tokenizer vocabulary from the JSON file
with open("model/tokenizer_vocab.txt", "r") as file:
    idx_to_char = file.read()

characters = [x for x in idx_to_char]
)

print(
)

with keras.utils.custom_object_scope({'CTCLoss': CTCLoss}):
    loaded_model = tf.keras.models.load_model("model/zoomasr")

    """
     """
    )

pred = loaded_model.predict(aud)

# @title io ops
!zip -r yesno_zoomasr_model.zip /content/model

E:\courses\LangChain Project\main root\data\CTC_transcript_part1.txt

اگه قطع شدم بهم اطلاع بدید خب سلام به نام خدا دوستان عزیز ارجمند عرض سلام و ادب خیلی خوش آمدید ما امروز در خدمتتون هستیم با مطلبی تحت عنوان سیتی سیلاس یا کانکشنیست تمپرال کلسیفیکیشن که صحبت میکنیم در مورد چیه و مجدداً برگشتیم به مباحث هوشمند مصنوعی مون و انشالله تو جلسات آتی یه سری مباحثی که اسمش برای خودمون میزاریم مباحث پیشرفته تر مطرح میکنیم و از اینجا به بعدش ممکنه هر چیزی به درد همتون نخوره و بعضیاتون از بعضی از این مواردی که عرض کردیم خدمتتون استفاده بکنید یکی از اون چیزهایی که میتونه به کارتون بیاد سیتی سیلاسه که خدمتتون بیان میکنم کجا کاربرد داره به این اسلاید از آرنن ها من مراجعه میکنم دوباره ما قبلا

واریانت‌های مختلف آرنا را بررسی کردیم وان تو وان رو داشتیم که گفتیم مثل یه شبکه عصبی ام ال پی ساده خودمونه وان تو منی داشتیم و مثال زدیم براتون که کجا کاربرد داره مثلاً یه عکس بهش میدید که توصیف کنید عکس چیه ها شما یه دونه ورودی دادید ولی اون باید برای شما یه سیکونس تولید کنه منی تو وان داشتیم که مثلاً فرض کنید که یه سوال میپرسید طرف باید با بله یا خیر جواب بده یه فیلم بهش نشون میدید باید بهتون فقط یک کار بگه این داره تو فیلم چه اتفاقی میفته مثلا یه کلاسیفیکیشن انجام بده و این منی تو وانن که اگه یادتون باشه خروجی ما تو آخرین در واقع لایه هیدن سبزه داره تولید میشه درسته یه سری منی تو من های داشتیم یه دونه مونده به سمت راست رو نگاه بفرمایید از اونایی که به ازای هر ورودی یک دونه خروجی تولید میشه و یه سری هم منی تو من های از جنس های

براتون صحبت کردیم که اول ما یه سری ورودی میدیم میریم تا یه جایی از اونجا به بعد شروع می‌کنیم خروجی تولید کردن و یه گروه دیگه‌ای باقی موند به نام منی تو منی‌هایی که خروجی هاش هیچ کدوم از اونا نبودن و نظم قبلی‌ها رو ندارن یعنی اینکه از یه جایی به بعد شروع شن و تا آخر باشن یا از اول باشن و تا آخر باشن و می‌تونه کاملاً شلخته رخ بده یعنی هر از گاهی یه خروجی بخواد تولید شه می‌خوایم امروز در مورد این صحبت کنیم که چگونه اینو با آرنا هندل کنیم خب و مثلاً اگه بخوایم باهاش مواجه بشیم شبکه عصبی آ یا چیزی که توسعه دادیم چگونه باید وزنش آپدیت بشن لاس رو چجوری میشه تعریف کرد ولی آخر و کاملا کیفی صحبت می‌کنیم و نحوه پیاده سازیش هم توی حالا کرا و همینطور پایتورچ آقای مهندس رنجبر میان خدمتتون با یه مثالی بیان می‌کنن اما در مورد کاربرد این صحبت کنیم کاربرد این

کجاست و چه ویژگی بارزی داره ویژگی بارزش اینه که اینا اوردر سینکرونوس هستند ولی تایم سینکرونوس نیستند خب یعنی اینکه ترتیب چیزی که می‌خوان تولید کنند با ترتیب ورودی شما سازگاره ولی به ازای هر فریم توی ورودی شما اونا یک فریم تو خروجی معادل تولید نمی‌کنن مثلاً فرض کنید صحبت کردن منه من دارم صحبت می‌کنم و می‌خواید شما کنید من چی گفتم و جمله مو بیان کنید مثلا من میگم سلام اگه تو اور تک حرف و فون و اینا بخواید آوان مراجعه کنید میگید صبح سلام اینجوریه که اول گفته میشه لا بع درسته و من باید تلاش بکنم که پیدا بکنم که کجا تا کجا سر کجا تا کجا لایو کجا تا کجا تنهاست و البته اگه ویس هم مثلاً سلام من مثلاً ۱۰۰ فریم ۵۰ فریم طول بکشه دلیل نداره که ۵۰

سومش به پنجاه سومش به لا و اینجوری بگذره درسته دیگه کجا می‌تونه کاربرد داشته باشه عرض به حضور شما اینکه شما یه مجموعه حرکت‌هایی انجام دادید خب و می‌خواید چیکار کنید وقت ندارید یا هزینه یعنی براتون سخته از منظر هزینه ای که بخواهید جدا جدا ببرید تو اردر فریم و ثانیه که مثلاً این حرکته مثلاً از اینجا تا دو و نیم ثانیه اولش فلان بوده و الی آخر مثلاً یه کاری کردید یکی دویده دور زده پریده خوابیده بلند شده دویده همچین چیزیو دارید ولی کل حرکت مثلا فرض کنید تو۰ فریم رخ داده یا ۱۰۰ فریم رخ داده و شما اینو دارید می‌دونید جمله چیه ولی نمیدونید کجا تا کجاشه طبیعتاً توی در واقع اوردر رو بیارید بالاتر از اون سلام بیاید جلوتر مثلاً جمله‌بندی مثلاً سلام من علیرضا هستم من کلششو به یه شبکه بدم ولی دیگه جدا جدا نکنم از کجا تا کجا سلام

از کجا تا کجا من بود و اینو بخوام واگذار کنم به خودش یه جوری تلاش بکنه اون یه کاری برای من بکنه دیگه توی چه سیستم‌هایی می‌تونه کاربرد داشته باشه توی شناسایی‌های دستخط وقتی یه چیزیو نوشتید با دست خط به خصوص وقتی که زنجیره‌ای و اینا می‌نویسید مثلاً شما جداگانه نیومدید مثلا اس و ال رو کنار هم اس و سی رو کنار هم الی آخر بدید ولی مجموعه از کلماتی دارید که الگوهای مختلفی توشه خب مثلاً ساینس رو دادید که اس و سی اولن بعد یه آی میاد بعد مثلا ممکنه زنجیره‌ای هم نوشته باشه بوک دادید و و الی آخر و بعدا یک کلمه بهش میدید که اصلاً ندیده تا الان و بهش میگید برام بنویس چی بود خب من نوشته‌ای آوردم تو برام تایپش کن در حد حرف به حرف بهم بگو این چیه و اون باید بره پیدا کنه که بگه خب من اونا رو تو ترینینگم دیدم الگو دیدم دیگه اس تنها رو ندیدم سی تنها رو ندیدم ساینس رو با هم دیدمکو دیدم علیو دیدم کار دیدم کت دیدم و و و

چیکار کنم پیدا بکنم اینا کاربرداییه که این مسائل منی تو منی حالا خروج شلخته داره خب یه پرانتزی باز بکنم وارد بحثمون بشیم تو این منی تووانا نگاه بکنید ما تا الان عرض به حضور شما که حالا موسم قفل کرده بخاطر اینکه اجازه بدید ببینم فعلا که قفل عرض به حضور شما که این منی تو وان ها خدمتتون عارضم که اینجوری بود که فقط به ازای آخری به آخری فقط خروجی تولید میکرد درسته یه پرانتزی باز بکنم چون اینجا به دردم میخوره بعضی از کسایی که با منی تو وان ها کار میکن میان چیکار میکنن میان میگن فرض کن تمام سبزها اومدن خروجی تولید کردن نه فقط اون آخری

تولید کرده ولی به سبزهای قبلی هم خروجی از جنس اون آخریه تولید کرده مثلاً اگه کلاسیفیکیشن بوده و تهش می‌خواسته بگه تو این فیلم داشتید می‌دوید همه این آبی‌هایی که تولید میشن همه چی باشن بخوان دویدن بازنمایی کنن خب دیگه خیلی هم بخوایم بگیم نه اون آخریه خیلی مهمتره زمانی که تو لاس بیاریم مثلاً وقتی که لاس نهایی رو میگیم لاس اول باید لاس دوم به علاوه سوم بگیم یه دبلیو برابر دوم چیکار کنیم شروع کنیم کمتر کردن خب ولی قبول دارید که میشد من تمام سبزها رو براش باز دوباره خروجی آبی تولید کنم از جنس منی تو منی های بشه که چی به ازای تک ورودی تک خروجی هم تولید میکنه قبوله یا نه حالا می‌خوام از این ایده اینجا استفاده کنم و بعد وارد بحثمون بشم بچه‌ها بحثی که ما داریم اول ایده رو ببینید همین قدر که عرض کردم خدمتتون این لزوماً به درد همه شما تو چیز نمیخوره و

بعضیاتون ممکنه اصلاً استفاده هم نداشته باشید از این رنگ‌های خود چیزم استفاده کنم رنگ‌های عمومی قرمز سبز آبی باشه ورودی‌ها رو اجازه بفرمایید قرمز بدم بعد چیزا رو سبز میدیم لایه هیدن و سبز میدیم و لایه‌های خروجی هم آبی میدم خب فرض کنید در عادی اینجا قرار بوده تولید شه اینجا قرار بوده تولید شه و اینجا خب برای اینکه اینو به یک مسئله منظم تری تبدیلش کنم با اون ایده استفاده میکنم میگم آقا فرض کنید مثلاً قرار بوده من یه ویس بهش دادم و توش گفتم سلام به سه لا و می‌خوام بشکونم

اینجا تولید کرده باشه که انتهای بوده یا اینجا بوده من قبول دارید می‌تونم با همون الگوئه بگم این دوتا قبلیش هم بهش میگم اینم جز سه بوده قبوله این کلاً این پکیج با هم اولیه بوده توکن اول بوده این دو تا با هم لا مثلاً بوده و این دوت آخری با هم چی بوده بوده یه همچین چیزی خب اینو که قبول داریم که من بعداً بتونم لاسی رو که تشکیل میدم چی باشه لاس که تشکیل میدم یه چیز منظم‌تر حالا از جنس های منی تو منی قدیمی باشه که خیلی مشکلی بر نخوره خب حالا فرض کنید که می‌خوام چیکار کنم می‌خوام که کارمو انجام بدم خب ماجرا اینه که مسئله رو اینجوری میشکونمش بعد وارد بحثش میشیم و چون یه جاهایی شما بک گراند ندارید فقط در حد به معرفی می‌گذره و عرض به حضور شما اگه خودتون خواستید چیکار می‌کنید بعداً مطالعه می‌کنید و شاید بیشتر از اینکه تئوری پشتش چیه اینکه بتونید

علی پیادش کنید براتون مسئله مهم‌تری خواهد بود چون هیچ کدومتون سی تی سیلاسو خودتون کد نخواهید زد که لاستشو بنویسید و از یکی از این فریم‌ورک‌ها آماده مثل مثلاً کراس سنسور فلو پایتور استفاده می‌کنید که همشون توش لاس‌هایی از جنس سی تی سی تعریف شده و ازش استفاده می‌کنیم با توابع مناسب خب ماجرا اینه که فرض کنید من در حد یه سری جمله می‌خوام بدم به چیز به اصطلاح ویس صدا بدم به ورودی توش یه سری جملات بیان میکنم و تو خروجی انتظار دارم تک تک کلمه هایی که اجرا کردمو چیکار کنه برام تایپ کنه مثلا جمله اولم هست مثلاً من علی را دیدم این صوت اوله به عنوان ورودی بهش میدم و این انتظار رو دارم این جداگانه تو خروجی متن من علی را دیدم و تولید کنه برام ها از اونایی که نمیدونم از کجا تا کجاش من بوده از کجا تا کجاش علی بوده یه

من و حسن به کوه رفتیم دوباره خب یه من دیگه باز توش وجود داشت این دفعه حسنی وجود داشت تو قبلی نبود و و حالا تصور کنید هزاران جمله برای ترینینگ دارید که کل دیتا ستتون رو پوشش میده و الی آخر و فرض کنید که چیه کلمات شما تو دیکشنری مثلاً تعدادش مثلاً ۱۰۰ تاست خب من علی تبدیل کن مثلاً این الان کارمون اینه خب من فقط یه پرانتزی هم باز کنم صوت هم برای اینکه به مطلب تبدیل کنیم قبلا در مورد این بهتون گفتم بالا اسپکتروگرم اینه که صوت یه عکس تبدیل میکنه یه محور محور زمان یه محور محور فرکانسسه و بهتون میگه تو هر زمان چه طیف فرکانس های با چه شدتی حضور دارن یه چیز رنگی بهتون میده جان دو بعدی رنگ شدت حالا شدت بگید من رنگ منظورم چیزه منظورم اون شدتشه میتونه سیاه و سفید نشونش بده خب ببینید اسپکتور

یک محور فرکانس یک محور زمان یه صوت کامل تو هر زمان تو هر فرکانس اون شدت رو با یه عدد نشون میدم آره یه همچین چیزی می‌شه مثلاً اسپکت رو گرم بزنم اینا مطلب داره همه چی دارن خب اینا چیزایی از این جنسن اون بالا بالا شکل بالایی که دارید میبینید صوت بر حسب زمانه اون آبیه ولی پایینیه که رنگی رنگی براتون کشیده یا اون سمت راستیه این چیه این عرض به حضور شما که اسپکتوروگرمشه که زمان فرکانس اومده حالا شدت یه چیزی رو تو زمان فرکانس های مختلف نشونتون داده و شما اینو به عنوان ورودی چیکار میکنید میتونید به شبکه های آرنت تو بدید خب آره اکثر بالا پایینی دیگه بالایی که آبیه که خودش بر حسب زمانه شما اول به عکس

عکس فیک اون عکسه رو میدید به عنوان ورودی باز شدت حضور یک فرکانس توی یک زمان خاص مثلا میگن که این فرکانس با چه شدتی حضور داره تو اف تی میگیره حالا خیلی فصل ترنسپورت میگیرن تا جایی که میدونم با اون شدت که حالا خودش عددی که به دست میاره یه عدد مختلطه ولی ابسلوتش میگیرن حالا اگه لازم باشه یه سری تغییراتی روش میدن کلمه صدا تن صدا یعنی چی تن هر فرد رو تشخیص بده احتمالا شما میتونید برید دیدگاه دیگه به اون برسید حالا من کار نکردم بلد نیستم ولی منطقا میشه رسید منط

قبلش میزنم یعنی یه صوت که میاد قبل از اینکه صوت به ورودی بدم اول این عکس را تولید میکنم عکس رو لایه لایه فرض کنید میدم به چیز آره این عکس رو میخوام به متن تبدیل با هر دقتی تخمین بزنند ولی ممکنه یک به حجم خیلی خیلی زیادی دیتا نیاز داشته باشن و تعداد نیرون هاشون خیلی خیلی زیاد باشه حتی ام پی ثابت شده که میتون اثبات ولی کس که کارهای چیز میکن نداریم که بگیم امکان نه نه نیست دیگه دلیلش اینه که من براتون اون سری هم ثابت کردم ما مسائل رو به سه دسته مسائل بین مسائل کلاسسیفیکیشن و مسائل رگریشن شکوندیم ما اون مسائل رو با هر دقتی

خیلی زیاد ممکنه اکسپوننشیالی تعدادش زیاد بشه میشه هر تابعی در عالم شناسایی زیاد دارن مثلاً چند چند میلیارد یا چند صد میلیارد یا چند هزار میلیارد پارامتر دارند و این سبب میشه که توابع فوق فوق پیچیده‌ای رو بتونن مدل فکر نمیکنم کار میکن تو کره کار میکنن و حدس میزنن که اینا اثبات میکن که میشود خب یعنی یا شرایط لازم و کافیش هم حتی ممکنه بگن که حداقل مثلا چقدر داده بخواهیم مثلا ثابت میشه این اتفاق میفته خب ماجرا اینه که بچه‌ها اسپکتور هم که این چجوری به دست میاد و اینا اصلا باز اگر حتی الان نمیدونید چیه یه چیز مهمی نیست چون دستورات آماده وجود داره تو در واقع مطلب پایتون و الی آخر که بزنید براتون بکشه

یعنی در این حده که میاد براتون حوزه زمان و فرکانسو در واقع تشخیص میده تو عکس‌ها شدتشو می‌گیره و الی آخر خب حالا فرض کنید ما یه عکس داریم که معادل عکس من علی را دیدم بوده و اون باید بیاد توکن‌های من علی را دیدم و برام تولید کنه بچه‌ها اینجا با باشید چون برام مهمه فرض کنید که دیتا ستی که من دارم ۱۰۰ تا کلمه داره مثلا فرض کنید که چه میدونم این حالا همینجوری به ذهنم خورد مثلاً این سیستم های ورودی پارکینگ هستن که عکس میگیرن از عکس چیز ماشین خودروی ماشین بعد بالا می‌نویسه ماشین فلان وارد شده خارج شد اون الان عکس گرفته به نوشته تبدیل کرده دیگه به تک تک توکن هاشو شکونده و اینجوریه که خب یه حدی داره دیگه مثلاً من الان ادعا کردم که فرض کنید دیتا چیز دایره لغات من صد تا کلمه داره و از این دیگه تخطی نمیکنه خب این ۱۰۰ تا رو دارم ولی جمله من علی را دیدم چیه مثلاً چند تا از اینا رو داره چهار تاشو داره از این ۱۰۰ تا این من علی

عادی می‌افته اینه که چی شما اینو قرمزها رو ورودی می‌دید سبز میره یه هیدن حساب میشه و میره به آبی میده آبیه باید چند تایی می‌بود اگه مثلاً منی تو وان بود که بعدش من کلاسیفیکیشن کنم بگم چیه باید ۱۰۰ تایی می‌بود باید ۱۰۰ تایی بود که من برم اعتماد بگیرم یا گیریدی نگاه کنم و بدترینش بالاترینشو انتخاب کنم بگم منه دیگه الانم فرض کنید که این اتفاق میفته یعنی آبی و صورتی های که من کشیدم یه چیز ۱۰۰ تایی تولید کردن که از جنس احتمال و سافت مکس زدم جمعشون یک میشه و هرچی بالاتر باشن احتمالشو داره بالاتر میبینه و الی آخر خب برای اینکه با ctc کار بکنید اولین کار جنبی که انجام میدید اینه که تو فرایند ما ترینینگ رو تستمون یه تفاوت های داره تو ترینینگ اون من میدونم جوابش هست من علی را دیدم میام سطر من

علی را و دیدمشو فقط جدا می‌کند اون چهار تا رو می‌کشم بیرون حالا یه لایه جدیدی به وجود میارم از چه رنگی استفاده نکردم مثلاً نارنجی خب یه لایه‌ای به وجود میارم که این دفعه فقط چی داره چهار تا داره و احتمال‌های تولید شده مربوط به جمله ترینینگمو میارم بالا به ازای هر ورودی بچه‌ها من خروجی حتماً دارم با این حقه‌ای که زدم که پرش کردم فضا رو درسته و حتما هم تعداد چند تا شد به تعداد توکن های موجود در جمله ترینینگم شد برای ترینینگ بعدی پنج تایی شد نارنجیم پنج تایی میشه خب حالا اینجا چی شده حالا اومدم احتمالات نه نه فقط میکشید بیرون هیچی در هیچ چیز ضرب نمیک من برداشتم از خوندن تئوری اینه که در هیچ چیز اما عین میکشینش بیرون دوباره هم سافت مک روش نمیزنید سابک زده شده قبلا فقط شما عددشو میکشید بیرون همین حالا میخویم

بعداً یه لاسی تعریف کنم که بره ببینه این خوبه یا نه اون چهار تا عدده خوب در اومدن یا نه که خوب نیستند از اون طریق گرادیان رو اعمال کنه و w های چیزمو آپدیت کنه اول شده ممکنه خیلی بدی باشن درسته و حالا میخوام اینو ببرم جلو حالا احتمال اینا همه عددا از جنس احتمالا دیگه بین صفر تا یکی توی مثلاً معادله من هم توی چیز اول فریم اول هم تو فریم دوم تا تو فریم آخر وجود داره قبول دارید یا نه یعنی من الان یه جدول مثلاً اگه ۱۰ فریم داشته باشم ده در چهار نارنجی رنگ دارن اینو قبول دارید عالی خب این جایی بود که باید بهش میرسیدم من یه ۱۰ در چهار نارنجی جدا کردم حالا می‌خوام بیام رو سیتی سی صحبت کنم که اصلاً این چیه و باید چیکارش کنیم این ۱۰ در چهار رو و چجوری یه چیزی تعریف بکنم یه لاسی تعریف بکنم که

بر اساس این ده در چاره بیاد وزن‌های شبکه‌مون که تو بخش‌های قرمز و سبز و آبی بوده رو اعمال بکنه و انشالله منو به جای خوبی برسونه تعداد ستون‌های عکس مثلاً می‌تونه اون باشه اگر عکس تو یکی یکی ستون ستون بهش بدیم اگه دو ستون دو ستون دو ستون یعنی اومدی دو ستون دو ستون جدا کردی ولی دو ستونش زیر هم بردار کردی خب یه جور دیگه یه معنی دیگه میده درسته یه همچین چیزی اون در ساده ترین حالت فرض کن اکثر ستون ستون دادم بهش ورودی خب به یه جدول نارنجی مثلا چهار در تعداد فریم می‌رسم که اینا اعدادی که توش پر شده بین صفر تا یک اند درسته اگر فرض کنید ما تو نقطه خوب ماجراییم یعنی فرض کنید وزننا به اندازه کافی تو وزن شبکه خوب ترین شدن انتظارمون اینه که چه اتفاقی بیفته نه عدد نگاه این گوشه بالا سمت چپیه بین این چهار تا کدومش بالاتر باشه اون بالاتری

منه بیشتر باشه یکی میرم جلوتر یا باید من باشم یا علی باشه نره را یا دیدم و پررنگ کنه با دوباره میرم سومی یا دوباره باید من باشم یا علی احسنت و یه اتفاقی که میفته یه الگوی این مدلی طوری مثلاً دربیاره فرض کنید بره پیدا کنه که مثلاً اولی و دومی من خیلی توش پررنگ بود سومی علی چهارمی تا هشتمی مثلاً راه و آخریش دهمی دیدم الان یه الگوی مجاز هست یا نیست ممکنه چیز باشه نه علی نه آها اگه اینو پیدا کنه تو ترینینگ که اولش که متداوله اون اشتباه میکنه و اصلا ممکنه تو شروع کنی اصلاً من بالا نباشه یعنی یه چیز دیگه بالاتر باشه و شما با لاس هی گرادیان میگیری هی میری آپدیت میکنی به این نقطه میرسه که چی این باید بیاد اصلاحش کنه تهش ولی باید شما رو به اون جمله من علی را دیدم برسونه یعنی الگو اگه خوب ترین شده باشه

کجا داریم استفاده میکنیم حالا آقای رنجبر میاد براتون توضیح میده توی ترجمه جمله زبان اشاره فرض کنید که یه اخبار ناشنوایان طرف میاد یه جمله رو اجرا میکنه من میدونم جمله این بود که همین مثلا رئیس جمهور به فلان کشور سفر کرد خب ولی نمیدونم از کجا تا کجا رئیس جمهور بود و خیلی هم شاید برام نیار که بیام ببرم در سطح لغت لغت ولی هزاران تا از این جملات بهش میدن که مثلا رئیس جمهور رو تو ۱۰۰ تا ۲۰۰ تا جمله ببین حالا یه جا اول جمله یا وسط جمله ولی خودش بره پیدا کنه ببینه چی بود و این برام بیاد چیکار کنه پیدا کنه از این منظر به اینجور مسائل میگن ویک سوپروایز خب یعنی اینکه نه اصلا آن سوپروایز کامله نه کاملا سوپروایزه یه چیزی بینابین یعنی من جمله من علی را دیدم بهش گفتم ولی بهش نگفتم از کجا تا کجا من و فلانه خب حالا چیکار باید بکنیم بچه‌ها اینجا دیگه یه سری موارد

در واقع حاشیه‌ای پیش میاد که من اجازه بدید رو مثال برم جلو خب و بعضیاشون ممکنه نیاز به بک گراند داشته باشه متوجه نشید و اگه نشدید هیچ ایراد نداره بهتون میگم از کجا برید مطالعه اول گذاشتم یعنی من اول گذاشتمش الان ولی بعدا که میخوام چیزشو آپدیت کنم رند لاس به اون آپدیت کنم میرم تو ستون های آبی صورتیه که جای علی واقعا پنجاهمیه آپدیت میشه آره ولی من به قول شما الان تو نارنجیم منو بالا گذاشتن چون چرا چون میخواستم این الگوی رخ بده یعنی الگوی ولیدی که از بالا گوشه سمت چپ شروع کنم به پایین سمت راست تمام بشه درسته بفرمایید تعریف نه نیست ممکنه تعداد فریمتون چیز نباشه

مثال خودش زده گفته فرض کنید من کلمه بیفی رو میخواستم شناسایی کنم یعنی یه صوتی بوده توش گفتم بیفی و تو در حد فونیم مثلا آوای ب ای ف و ای رو باید برام پیدا می‌کرده عمداً هم تکراری هم داده یعنی مثلاً من می‌تونستم اینجوری بنویسم من علی را در کنار دوست علی دیدم یعنی عمدا دوتا علی توش بندازم این عمدا ای توش باشه خب گفته چیکار کنید همون حرف ما رو زده گفته یه شبکه دارید ورودی دارید قرمزه هیدنش رفته سبزه حساب شده رفته چی حساب کرده به ازای تعداد تمام کلمات دیکشنریتون یه خروجی حساب کرده شما دستی بیاید چی فقط بی فیش بکشید بیرون تا جدول نارنجی ما رو به وجود بیارید و در ضمن نباید بگید چون بیفی دو تا ی داره من یک بار میکشم نه دقیقا چون برام مهمه که این توکن شناسایی بشه باید به همون تعد

فاصله انداخته اگه پشت سر هم بود چی مثلا فرض کن هلو می‌خوام اینو شناسایی کنه حالا اینم بهتون میگم چیکار کنیم فعلاً اینو گوشه ذهنتون بزارید آخرش یه تریک ساده است که توی حالا پیاده سازی هم بهتون میگیم خب کاری که کرده اینه که چی کاری که کرده اومده احتمالاتی که از شبکه پیدا کرده رو عیناً تو اون جدول بالایی که ما جدول نارنجی مون شد کپی کرده تا اینجا قبوله یا نه سوال در حد کلمه تشخیص بله در اینجا در حد آوا بوده من ممکنه آره دیگه الان کار که یوتیوب هست زیرنویس چیز بهتون میده آنلاین بهتون چیکار داره میکنه صوت داره میگیره در حد آوا یا در حد مثلا کلمه بهتون خروجی میده همه اینا شدنیه شما میتونید توکنتون چیه در حد آوا در حد کلمه دو تا من سه تا علی

در واقع فرایند اسپکتور ستون اول من بوده از لحاظ زمانی معادل من هست چون من صوت من نگاه کن صوت من نه صوت من محور تیه دیگه صوت که ضبط میکنم بالاخره من وقتی میگم من علی را یعنی من اول منو میگم بعد علی رو میگم حالا به شبکه دارم میگم ببین تو برو پیدا کن دیگه خودت برو پیدا کن کجا من بوده زمانم مطرحه دیگه بله اصلا کلمه این سیتی مخفف چی بود کانکست تمرال کلاسیفیکیشن تمپرال معنی زمانی داره همون زمان چیز هم ترتیب اردر سینکرون دقیق یعنی رعایت میشه ولی فریم به فریم رعایت نمیشه اگه صوت شما ۱۰۰ فریم داشته باشه اینجوری نیست که از فریم یک باید یک یک آوا فریم دو یک آوا تولید شه ممکنه یه آوا به هر دلیلی سه فریم طول بکشه آره دیگه ارد

بلوک‌های صورتی رو اضافه کردن نه دیگه دوتاشون یکیه الان اون عددی که توی چیز پیدا شده تون برای ای دوبار کپیش میکنید هم تو سطر دوم هم تو سطر چهارم تو لحظه اول خب همون عین همونو گذاشته خب یه همچین چیزی نوشته نوشته وای صف الی آخر خب اوکی حالا می‌خواید اینو برید چیکار کنید یه یه کمک کنید به لاس فانکشن خب که قبلا هم تازه خودمون نزدیم که اینکه بیاد این مسیره رو بره پیدا کنه بچه‌ها چندین راه اینجا وجود داره ما پارسال باید سال توی درسمون چهار پنج جلسه در مورد موضوعی به نام هیدن مارک گفت مدل یا صحبت کردیم که ورژن های غیر دیپ و قدیمی آرن بودن یعنی

اونجا توش تو اونجا یه سری مفاهیم گفتیم که اگه دلتون میخواد با جزئیات بدونید یا این اسلایدها رو با جزئیات ترک کنید باید برید اون فیلم‌ها رو ببینید که اگه خواستید من لینکاشو در اختیارتون قرار میدم ولی شاید نیارزه براتون الان لااقل توی بحبوحه مثلاً امتحانات و اینا و تو اونجا در مورد یه سری مباحث صحبت کردیم یکیش مثلاً موضوعی بود به نام روش ویتربی این کلمه رو به خاطر داشته باشید یا یکیش در مورد الگوریتم فوروارد بکوارد یا الگوریتم فوروارد الگوریتم جلو رو و عقب رو اینا اصطلاحاتی که من اونجا صحبت کردم اگه دلتون میخواد برید بپرسید بدید بخونید خب من باید در حد نیازتون الان بهتون میگم که انشالله بعدش بریم پیاده‌سازی عملیش ببینیم خب عرض به حضور شما اینکه تو روش ویتربی اتفاقی که میفته اینه که میگه ببین تو این ماتریس نارنجیه بالا رو داری خب میگه برو نگاه کن که چه مسیرهای مجازی وجود

از ب شروع بشن به ای آخر ختم شه درسته مثلاً فرض کنید که سه تای اول ب باشه چهارمی و پنجمی ای باشه ششمی اف باشه بقیه اش ای آخر باشه این یه راه دوتای اول بی باشه ای بعداً مثلاً سه تا بعدی یکی بعدیش فلان درسته همه حالت‌ها مجاز خیلی حالت خیلی حالت با یه الگویی به نام داینامیک پروگرمینگ میاد لایه لایه میره جلو میگه که خب من اگه بخوام همه حالت ها رو مستقل از هم فرض کنم کار طولانی میشه لایه لایه میره جلو و میگه برو احتمال مسیرهای مجاز رو برام پیدا کن مثلا فرض کنید هزار تا مسیر مجازه میره تمام اون هزار تا احتمالاشو میره محاسبه میکنه خب اگه لازم باشه و ماکسیممش مثلا فرض کن ۵ هزارمه مثلاً ماکسیمم احتمال اینکه یک مسیر از بی به ای ختم بشه واقعاً تو این اوردرم فکر نکنید مثلا ۲۰ درصد و ۵۰ درصد ایناست مثلاً ۵۰۰۰ خب

E:\courses\LangChain Project\main root\data\CTC_transcript_part2.txt

۲۰۰۰ تا مسیر بعدی ۳ هزارمه بعدی مثلاً یک هزارمه بقیه مثلاً چند ده هزارم چند صد هزارم و اینا چیکار کن میگه برو بهترین مسیر با بیشترین احتمال مجاز رو برام سلکت کن خب و اون معیاره و با توجه به اون بیا یه حقه‌ای بزن عرض به حضور شما که یه چیزی تعریف کن به نام لاس فانکشن و طبق اون بیا لاسو آپدیت کن اینا رو میگم شما نیاز نداره که بدونید چیه یعنی با این خیلی متعجب نمیشید پیشنهاد میکنم دلتون خواست اون اسلاید های هیدن مارکو مدل بندر یا فیلمو ببینید خب و بعدش بیاید به این مراجعه بکنید که کدشو این رو زده مثلاً فرض کنید این قرمزه که براتون کشیدم چیه بهترین مسیر مجازه که در واقع از روش ویتربی به وجود اومده بعد میگه اوکی حالا دیگه دارم انگار ویتربی حرفش اینه که چی میگه اگر قرار بوده باشیم تو این ویسی که بهتون دادم بیفیو گفته باشم

من میگم که باید دوتا اولش ب باشه بعدیش ای باشه بعدیش ف باشه دو تا بعدیش چهار تا آخرم ای باشه اوکی لاس که تعریف این تعریف کن خب به نظر میاد باید شبکه من به سمتی بره که تو دوت اول تو این صوت ب رو تولید می‌کرد خب تو سومی چیو تولید می‌کرد ای رو تولید میکرد درسته و یه لاسی رو تعریف میکنه و بعدش مشتق هم که میگیره ازش میگه برو با این گرادیان برو چیکار کن وزن های شبکه عصبی آپدیت کن که چی که این شبکه وقتی میاد به اینجا میرسه با این داده چی تولید کنه دو تای اولش ب باشه بعدی ای باشه و الی آخر احتمال ب بره بالا درسته یه همچین کاری میکنه بهش میگن روش ویتر یه اتفاقی که تو روش ویتر بی میفته این که اولا شما بین مث اون هزار تا مسیر میاد یکیشو انتخاب می‌کنید که بیشترین احتمال داره ولی لزومی نداره تو واقعیت اون رخ داده باشه خب و دوم که وقتی که لاس رو میخوید آپدیت کنید

جریانش خیلی از درایه‌ها صفرند و یه جایی که فقط غیر صفره و میخواد بره مسیرو مینیموم کنه که این روش اگه استفاده ازش بکنید ممکنه توی مینیمم محلی گیر بیفتید اوکی ها کار ممکنه در بیاره ولی تو واقعیت روش بهتری هم وجود داره که می‌خوایم بهش اشاره بکنیم روش بعدی اسمش اینه که چیکار کنید از تمام ظرفیتتون استفاده کنید خب و اینی که عرض میکنم خدمتتون باز ممکنه غریب باشه نگرانش نباشید خب من اجازه بدید برم به آخر برسم رو آخرش صحبت بکنم که شفاف تر بفهمید چی دارم میگم به یه عکسی برسم به یه عکس خوبی که دلم میخواد خب اوکی میگه که راه بعدی که راه بهتریه و جریان گرادیان را پخش میکنه

هموارتر شبکه‌تونو به روز می‌کنه اینه که عرض می‌کنم خدمتتون همچنان میگه جدول نارنجی رو برای خودتون به وجود بیارید خب که هر کدام یه عددایی توشونه یه پارامتری رو میگه تعریف کن به نام پارامتر آلفا آلفا چیه آلفا خودش دو تا اندیس داره خب آلفا دو تا اندیس داره آلفای تی و r خب یعنی دو تا پارامتر با دوتا شاخص شناخته میشه آلفا یه پارامتریه بیانیه است احتمال اینکه در لحظه تیام المان آرام ظاهر شده باشد نمادی از اینه آلفای دو و سه تو مسئله من علی را دیدم یعنی چی یعنی در زمان در فریم شماره دو توکن شماره سه من که اینجا چیه را باشه تولید شده

با چه احتمالی اتفاق افتاده خب و منطقاً مثلاً اگه می‌خواست جمله با من شروع بشه باید لحظه آخر که شبکه‌تون به نقطه خوبی رسیده باید احتمال آلفای یک و یک چند باشه یعنی تو فریم اول کلمه اول این نزدیک یک شه سه تای دیگه نزدیک چند شن صفر درسته یه همچین چیزی یا آخری وقتی که مثلاً با آلفای توی فریم آخر خونه آخری باز باید چند باشه باز باید یک نزدیک بشه بقیه بالاییاش باید به صفر میل کنن درسته آلفا احتمال اینه بچه‌ها از این جدول نارنجیه میشه آلفا رو پیدا کرد با داینامیک پروگرمینگ خب جدولی هم که برای آلفا پیدا می‌کنید دقیقاً هم سایز نارنجی است یعنی اگه اینجا چهار در ده بود اینجا هم یه دونه چهار در ده دارید بهش میگن جدول آلفا خب ولی فقط نمیاد برای اول و آخر بگه هر جایی میگه مثلاً میگه احتمال اینکه در فریم شماره ۵ توکن شماره یک ظاهر شده باشد احتمال اینکه در

داینامیک پروگرامینگ حل می‌کنیم عدد داریم که از شبکه تا این لحظه به دست اومده حالا خوب نباشه با این فعلا میریم جلو با لاسن هی بهترش خیلی خیلی تو دیواره اگه وقت کنم نشونتون میدم تو گام اولش یه متن بهش داده کلی دور از جونتون زر زده بعد شبکه فقط تولید این همه حرف زد خب یعنی اینقدر تو دیوار چیز میکنه تولید همه چی دیگه داره بهبود پیدا میکنه آلفا نگاه کن آلفا فقط داره محاسبه میشه ولی چون جدول نارنجیه داره خوب میشه و وزن های شبکه دارن خوب میشن آلفا داره بهتر میشه حالا آلفا خواهید دید که توی فرایند چیز آپدیت گرادیانا ورود پیدا میکنه پس من یه جدولی دارم به نام جدول فوارد خب به این میگن فوارد

احتمال اینکه چی در لحظه تیام المان آرون ظاهر شده باشد و در ضمن یه چیزهای اضافه‌تری هم داره مادامی که ورودی اون جمله من علی را دیدم بوده و شما حق داشته باشید فقط از توکن‌های من علی را و دیدن استفاده کنید یعنی جملات تکمیلی بود که دیگه ننوشتم احتمالات شرطی داره خب خب یه جدول تشکیل میدید به نام آلفا که عرض کردم وقتی داینامیک پروگرمینگش میکنن اول ستون اول آلفا را تشکیل میدن بعد هی میرن جلو بچه ستون اول آلفا تو ایده آل چنده یک صفر صفر درسته سطر اول میتونید تا آخر بهم بگید بچه‌ها چنده مثلاً من اگه اینجا مثلاً اینجا احتمال ببخشید اینجا نوشتم یک هم خود چیز میزارم مثلا چهاردهم میزارم حالا یا یک میذاره یه لحظه باید چکش کنم مثلا فرض کنید اینجا چهاردهم بوده مثلاً دو دهم بوده اینجا دو دهم بوده دو دو هشت اینجا میشه دو دهم مثلاً اینجا فرض کنید سه دهم در اومده اینجا یک دهم اینجا یک دهم

الی آخر میره جلو خب حالا احتمال اینکه بعدی محاسبه بشه چنده یعنی احتمال اینکه شما تو خونه تو فریم شماره دو توکن شماره یک باشید چنده بچه‌ها فکر می‌کنید از احتمال چی میدونید آره خونه قبلی یه دونه است الان یه دونه خونه قبلی داره چهاردهم بود ضرب در سه دهم میشه چند میشه ۱۲ درسته ۴ ضربدر سه دهم احتمالش ۱۲ صدمه که شما از اون مسیر برید جلو درسته یه همچین چیزی احتمال اینکه شما خونه اول باشید چقدر بود چهار دهم بود احتمال اینکه تو خونه دوم خونه اولش باشید ۴ ۱۲ صدم اگه احتمال اینکه خونه اول تو دومیش باشید الی آخر این میشه حسابش کرد درسته و یه چیزی هم که وجود داره اینه که وقتی

به یکی می‌خواید مراجعه کنید تو این مسئله خاصی که ما بهتون مراجعه کردیم دو تا پرنت بیشتر نمی‌تونه داشته باشه یعنی یا دقیقاً از قبلی خودش یا از بالایی خودشه قبوله نمی‌تونسته بره از پایین برداره وگرنه شما ترتیب به هم می‌زدید قبول دارید مثلاً وقتی به نقطه راه رسیدم یا قبلش را بوده یا علی بوده یعنی راه خودش بوده ادامه پیدا میکرد یا علی بوده نمی‌تونسته من یا نمی‌تونسته دیدن باشه حله خب عرض به حضور شما این‌جوری جدول آلفا رو پر میکنه اول ستون اولشو پر می‌کنن بعد سطر اولش پر می‌کنن بعد یه فرم می‌نویسن می‌نویسن حالا به ازای هر کدوم از این خونه ها برو این دو تا خونه رو چک کن و ببین مثلا حالا چجوری چه ویژگی دارن چه این ضرب در اینو براتون نوشتیم اگه دلتون خواست نگاه بفرمایید و این جدول رو تا آخر پر کن جدول آلفا محاسبه میشه که آلفا یک مفهوم فیزیکی داره و احتمال وقوع در واقع توکن آرام توی زمان

یه دونه پارامتر دیگه داریم به نام بتای تی و آر بتای تی و آر حرفش شبیه آلفا فقط برعکسی به ماجرا نگاه میکنه میگه احتمال اینکه شما توی مسیری باشید خب که قبلش برام مهم نیست تو لحظه تیام توی المان آروم توکنتون باشه و تا آخر دیگه این جمله من علی را دیدم و اجرا کنید اون چقدره خب برای نگاه میکنه یعنی نگاه میکنه تهش باید به دیدن تمام بشه مثل اینجا میگفتیم با من شروع میشد اونوری یه جورایی نگاه میکنه میگه که از آخر بیای اول مثلاً تو فریم شماره چهار با چه احتمالی شما چیه کلمه را میبینید یه جدول هم داریم که هم سایز باز این جدول نارنجیه و هم سایز جدول آلفاست بهش میگن چی جدول چی بتا که اینم باز تشکیلش میدید با این داینامیک پروگرمینگ باز اینجوری یکی از این نقطه شروع می‌کنید کد زنی اول ستون آخر و

آلفا به طور تشکیل دادیم یه پارامتر تعریف میشه به نام گاما میگه حاصل ضرب آلفا ضرب در بتا احتمال اینکه جمله‌تون من علی را دیدم باشه خب تو هر نقطه و گامای تی و آر میگه احتمال اینکه جمله‌تون من علی را دیدم باشه و در حالی که توی فریم تیام و چی مثلا اون چیز آروم مث احتمال وقوع این رایج چند بوده مثلا میتونید یکی یکی اینا رو تشکیل بدید خب مثلاً اینو می‌تونید با گاما حساب بکنید که با چه احتمالی وقتی من علی را دیدم و بهش گفتم تو فریم سوم منو شنیدی تو فریم چهارم را رو دیدی الی آخر یه همچین چیزی این جدول پر میشه پس جدول گاما هم چیه هم سایز چیه جدول آلفا و بتا اون نارنجی است فقط برای اینکه گام

از جنس احتمال تو ستون یک نمی‌شه میان تقسیم بر جمع آلفا و بتای اون ستون می‌کنند که چی بشه که جمع اون ستونه یک بشه و مفهوم احتمال به خودش بگیره اوکیه پس گاما رو اینجوری تعریف میکنن حالا این گاما میاد تو چی تو لاس فانکشن ما اینجا براتون نوشته نوشته گاما شده چی آلفا و بتای هر خونه تقسیم چی جمع آلفا در بتای اون ستونه قبوله من یه جدول آلفا دارم یه جدول بتا که هم ارز با اون جدول نارنجی خب و اینو محاسبه می‌کنم می‌گه گاما رو که محاسبه کردید جدولشو چجوری حالا انجام یعنی استفاده کن ازش توی آپدیت کردن پارامترهای چیزمون شبکه ریکنت مون میگه لاس اینجوری تعریف کن بشه سیگما دوگانه روی تی و آر گاما ضرب در لاگ وای تی اس آر خب رو این جمع

تمام خونه‌ها یه کانتریبیوشنی تو لاس دارند مثلاً خونه اول بالایی چه جوری وارد میشه گامای ۱۱ شما حساب می‌کنید درسته لوگ وای که تو اون خونه ظاهر شده هم حساب می‌کنید یا خوبه یا بد ظاهر شده اگه خوب باشه که احتمالش یک باشه لوگ چند میشه صفر میشه تو لاست تاثیر نداره میگه خب اوکی وزنه‌های مربوط به من خوبن اگه نه خوب نباشه چی میشه اینجا یه چیزی به وجود میاره که حالا تو مشتقات ظاهر میشه و الی آخر و مشتقشو که بچه‌ها می‌گیرید و بخواید توی در واقع آپدیت کردن برخلاف اون روش ویتر که خیلی صفر داشت یه دونش غیر صفر بود اینجا چی میشه اینجا اینجا دیگه همشون یه چیزی دارن و این گرادیان هموارتره اصطلاحاً برمی‌گرده به عقب که دیگه نمیخوام در مورد اینا صحبت کنم ولی دلتون خواست میتونید مشاهده بفرمایید و در نهایت چی میشه در نهایت وزن شبکه‌تون آپدیت میشن کارایی که می‌کنید اینه که شما

درست میکنید مثلا اینکه فرض کنید که دیتا ستتون مثلاً ۱۰۰۰ تا ترینینگ داره مثلا ده تا ده تاش می‌کنید فقط اتفاقی که میفته اینه که این ده تا لزوماً چی هم سایز نیستند تو زبان برنامه نویسی حتماً این مثلاً کراس و سنسور فلو اینا ازتون میپرسن تو مینی بچت بهم بگو ماکس سایزت چنده خب که مثلا میگید ماکس من ۳۵ فریمه چیکار میکنه حدس میزنید برای اونایی که به ۳۵ نمیرسن با صفرش میکنه ولی بع میفهمه که این مثلاً حالا با یه چیزی پش میکنه ولی بعداً می‌فهمه که از اینا استفاده نکنه خب مینیچ هم که می‌ذاره اینه که گرادیان ها رو که حساب میکنه جمع گرادیان میانگین گرادیان رو میاد برمیگردونه و وزن ها رو آپدیت میکنه میره بچه بعدی میره بعدی هی میره یه پاک تمام میشه اینقدر شما باید برید خب که به یه نقطه خیلی خوبی برسید که چی که دیگه رو ترینینگ تو خوب جواب بده یعنی واقعا اون ضریب های نارنجیه

خوب شده باشم مثلاً جمله من علی را دیدم قشنگ اینجوری تولید کنه من من علی علی را دیدم دیدم دیدم دیدم دیدم یه همچین چیزی تولید کنه و حس کنید که خب به نقطه خوبی رسیده و الی آخر حله این شد ترینینگ ماجرا تو تست یه اتفاق بد میفته شما دیگه لیبل‌ها رو ندارید وقتی یه تست یه جمله بهش میدید میگید برام در بیاد چیکار بکنم اونجا چه پیشنهادی دارید این دفعه دیگه این دفعه دیگه شما نارنجی ها رو ندارید عرض به حضور شما که الان قرمز و سبز ها دارید و قرمز و سبز و آبی صورتی دارید که چی شدن که خوب ترین شدن دیگه و تا به آبی و صورتی می‌رسید مثلاً اینجا دیگه چند تا براتون خروجی تولید می‌کنه ۱۰۰ تا تولید میکنه ولی شما تو جمله‌تون ممکنه پنج تا کلمه باشه پیشنهادتون چیه وقتی می‌خواید جمله تولید کنید به عنوان ماکسیممش ۱۰۰ تا درای است دیگه

سوال برای همه شفاف باشه اینه که الان من شبکه کردم دیگه می‌خوام برم تو تست می‌خوام یه جمله دیگه بگم حسین با علی به بیرون رفتند حالا کلمه‌ها رو جدا جدا تو جملات دیگه دیده ولی این جمله رو عین ندیده بوده و میخواد اینو برام تولید کنه خب دادم به شبکه هم رفته تمام صورتی آبی ها رو تولید کرده که همشون چند چند تا درای اند صد تا صد تایی اند ولی میدونم که مثلاً اولیش مال حسین دومیش علی و و خب چیکار کنم حالا میخوام جمله بسازم چیکار میکنید شما اولیش اینه که گریدی بریم جلو به اولی بالا نگاه کنیم سمت چپ ماکسیمم بگیریم مثلا حسین حسین انتخاب میکنه بعدیش می‌ریم چیه باز فرض کنیم حسین دوباره می‌نویسین حسین خب میریم جلو و انشالله می‌گیم که چی حسین بعدش یه جا و تولید بشه یه جای چند تایی علی تولید بشه فلان فلان به بیرون رفتند

نویسی میکنید مثلا ۳۰ تا حسین نوشته اولش حسین‌های متوالی یکیشو حساب می‌کنید سه تا حسین یک حسین ها حسین و علی به بیرون رفتن درسته یه چیز کوتاه تری به وجود میاد نتیجه اخلاقی جملاتی که از سیتی سی تولید میشن از لحاظ سایزی از جملات ورودی چی اند کوچکتر مساوی بزرگتر مساوی خواهند بود از لحاظ تولیدی لزوما خوب جواب نمیده یه نگاه بندازید این مثلاً من گوگل ترنس رو باز کنم قبلاً هم براتون نوشتم جانم مینویسم چی ام من هستم می‌نویسم ای ام اون نمی‌نویسه من هستم یک می‌نویسم من یک هستم ها این شانس رو به خودش میده که چیزای دیگه هم داشته

ماجرا اینه که تو واقعیت از روش بیم سرچ استفاده می‌کنه بیم سرچ گریدی دیگه نیست میگه تو مثلا ۵ تا ماکسیموم احتمال برام نگه دار زمانی که به اولی میرسه پنج تا ماکسیمم احتمال یه جایی کنار می‌ذاره دومی که میره میشه چی چند حالت اتفاق میفته ممکنه سه تاش از اولی انتخاب شده باشه دوتاش از دومی سه تای اولم دیگه اصلا انتخاب نشن باز دوباره پنج تا بالای کل رو نگه مید یعنی حاصل ضرب احتمال اولی در دومی رو نگه میداره بعد همینطور میره جلو تا روز آخر پنج تا ماکسیمم نگه می‌داره تا برسه به ته و بینش حالا دیگه یکیشو یا بیشترین یا یکیشو سلکت میکنه اینجا دیگه انشالله واقعاً جمله خوبی رو انتخاب کرده خب کاری که توی واقعیت داره اتفاق میفته مثلا حسین مثلا این برای پایان‌نامش استفاده کرده زبان آلمانیه که ترجمه میده بهش جمله میده و اون جمله خروجی تحویل میده

چه شاخصی برای ارزشیابیش داریم دیگه الان اون معنای به اون معنای ثابت مثل سابق اکیوریسی و اینا رو چیکار می‌خواید بکنید چه پیشنهادی دارید مثلاً جمله این بوده من علی را دیدم جمله صحیح این بوده بعد این انواع حالت‌ها دارد بنویسید من محمد را دیدم من علی را مثلا با حسین دیدم من مثلاً به جای علی بنویسه عالی مثلاً فلان یه چیزی فلان و الی آخر اتفاق که میفته شاخص تعریف میشه نگاه میکنن جمله اول چقدر بوده چی بوده جمله‌ای که شما تولید کردید چند تا شاخص رو توش میسنجن یکی اینکه چقدر شما اینزشن اضافه داشتید این کلمه اضافه آوردید که نباید میبود چه دلیشن بیخودی داشتید کلمه باید می‌گفتید که نگفتید و چه کلمات دیگه‌ای که جایگزین آوردید خب و اینا رو چیکار میکنه ورد ارور

ریت یا wr بهش میگن که یه چیز وجود داره یه لایبراری است به نام جیور بهش میگن حسین درست میگن جی آی آر که اون اگه مثلا چیز کنید فراخوانی کنید توی پایتون حساب میکنه شما کد نمیزنید عرض به حضور شما که تو ویکی پدیا هم هست توضیح داده گفته که چجوری به دست میاد گفته که اول تو جمله اولتون بشمارید چند تا کلمه بوده تو جمله دومتون شما چی تولید کردید چند تا دلیشن چند تا اینزیشن اینا داشتید و فلان و فلان چند تا سابتوشن داشتید یعنی یک کلمه بوده که شما جاش یه چیز دیگه آوردید خب و اینا رو برید حساب بکنید هر کیبورد ریتش کمتر باشه برنده است خب و حالا حسین براتون میگه که تو کارش به چه دلی یاری رسید یه ماجرای دیگه هم بگم و سیتی سیلاس رو من تمام کنم پس کلید واژه هامون این شد که یه شبکه تولید میکنیم وقتی که میخویم ترین بکنیم باید

توکن‌های مربوطه شو بکشیم بیرون که اینا رو خود چیز برامون انجام میده شما تو کد که مینویسید شما شماره توکن‌ها رو خودش میکشه بیرون اون جدول نارنجیه رو به وجود میاره بعد عرض به حضور شما که تو ترینینگش چیز میکنید بهش میگید که برو آلفا بتا گاما رو حساب کن که اون خودش حساب میکنه رو گاما میره یه لاست تشکیل میده و برمیگرده و وزن شبکه رو آپدیت میکنه میرسید به یه شبکه خیلی خوب تو شبکه خیلی خوبی رسیدید دیگه تو تست هستید تو تست چیکار میکنید دادن یه چیز طولانی ۱۰۰ تایی میگیرید یا با روش بیم سرچ که پنج تا ماکسیمم بردار تا آخر برو چیکار می‌کنید جمله‌تونو انتخاب می‌کنید حالا سوال آخرم بگم و تمومش کنیم فرض کنید مثلاً شما یه چیزی دست نوشته دارید و اون میخواد به شما تک تک حرف ها رو تایپ شده بده مثلاً شما رو کاغذ یه چیزی نوشتید جلو دوربین گرفتید و اون میخوید انتظار دارید براتون تک تک حرفاش تایپ کنه هلو رسیدید و اچ ای ال ال او دارید چیکار کنیم الان اگه پنج تا ل پشت سر هم

تشکیل بده تشخیص بده تا الان فرضمون بر این بوده که یکیه درسته چیکار کنیم که دوتا بشناسیم جان یه حقه ساده داره یه توکن به توکن‌های خودمون اضافه می‌کنیم به نام توکن بلنک یعنی ۱۰۰ تا کلمه اضافه کنید که البته مثلاً کراس اولی اضافه میکنه حتی بهتون میگه میگه صفر برای منه میگه صفر برای بلنکه بقیه شما کلاساتونو از یک شروع کنید خب حالا اگه به این رسیدید اچ ای ال ال خط تیره ال ال او حالا این چیه این هلو حالا این که میگم معادل هستند کدوما کدوما معادلن بچه‌ها کدوما معادل چون اینا در واقع تو واقعیت ممکنه بهش برسید ها ای خط فاصله خط فاصله ای ای خط فاصله خط فاصله ای خط فاصله خط فاصله خط فاصله a a خط فاصله ای کدام یک با دیگران متفاوت است

همه قبلی‌ها همه با هم یکی‌ان و حالا اینم بهتون باز بگم تو لاسشون تمام چون چارت‌های بالای یکی‌ان لاس هر چهار تا رو با هم جمع میزنه یعنی وقتی که میخواد آپدیت کنه شناسایی کنیم چه ای ای دش چه دش ای دش اینجوری اینا همه ای خالین و بعد که تولید میکنه براتون اون فقط ای می‌نویسه که بهش میگید برام بنویس جمله من چی بود میگه تو اینجا فقط ای تشخیص دادی خب یه نمونه هم بهتون بگم یه استراحتی بفرمایید و بعدش چیز میکنیم عرض به حضور شما که دیگه آقای رنجبر میاد کنارمون و ادامه میده که احتمال مسیر بود بله این احتمال رفته احتمال برگشته بشه نه ترین نیست هر جمله متفاوت عیب نداره ولی خروجی های نارنجی به دست اومده از یارو آلفا دیگه وقتی جدول نارنجی تشکیل شده آلفا ب

تقسیم بدست میاد از همون عددهایی که تو اون جدول نارنجی‌اند برای هر عیب نداره بله دیگه هر آلفای جداگانه گامای خودشو داره با گامای خودش یه گرادیان راه میفته میره یه گرادیانی برای دبلیو های شبکه چیز بدست میاد حالا دیگه چیز دیگه نبود با همین گرادیانه وزن آپدیت میشن تست ما وقتی جمله تست هیچ گرادیان دیگه نداریم که چند تای اول چی دیگه تمام دیگه انشالله آلفاش خوبه یعنی اصلا دیگه چیز میکنم من سرچ میرم دیگه ضرب احتمالا هی دارم ضرب میکنم حالا تو اسلاید حسین یه دونه هست میرسیم بچه‌ها این مثلاً فرض کنید که یکی از مثال های چیزه اسپیچ ریکشن که حالا مثالی که حسین براتون آوردم از این جنسه روی دیتا ستی بوده که این اومده چیز زده سیتی سیلاس زده بعد توضیح داده اولا کلی

چی بوده یه بنده خدایی از روی یه سری متن خونده به مدت نمی‌دونم چند ساعت حالا اجازه بدید تند تند اگه کسی کمکم کنه چشمش ببینه اینتروداکشنشو بریم گفته چی ال ال جی اسپیچ دیتا ست درسته شورت آدیو کلیپس داره که یک سینگل اسپیکری اومده از روی هفت تا کتاب نانفشن خونده صداش موجوده و متن معادلش هم موجوده خب این این جایی که میرسه حالا سیتی سیشو می‌ذارم حسین بگه انشالله تهش فقط می‌خواستم نشونتون بدم اولا اینکه چجوری اسپکتروگرمشو کشیده این سبزه رو این سبز زرد رو ورودی میده ها خب صوته اون پایینیه هستش پلیش هم گذاشته که شما بتونید بشنوید چی بود مثلا بیارم بشنوید

بعد این سبزه زرده که وسطه اون جاییه که ما به عنوان ورودی به شبکه میدیم بعد در مورد مدلشو در مورد سیتی سیلاسش و فلان و فلان اینه اینکه شبکه چه جوری می‌سازه کانولوشن اینا و بعدش ال سی ام میزنه کاملا طبیعی مثلا شما وقتی صوت بدید عکسش کنید اول میتونید از یه کامشن ردش کنید به یک ماتریس برسید که مثلا ام باشه بعد هر ستون اونو به عنوان ورودی سی میشه که در مورد ترینینگ صحبت فقط اینجا ببینید چی تولید کرده بچه‌ها نمونه‌هاشو ببینید نوشته ۳۶۹ از ۳۶۹ خب ریت یک افتضاحه خب تارگت چی بوده باید میگفته اسپشل ایجنت نمیدونم فلان فلان چی تولید کرده اس اس تولید کرده یعنی فقط احتمال شبکه به قدری داغون

بعدی رفته جلوتر خب سه تا اس تولید کرده یعنی اینجوری بوده که اس مثلا یه اس دیگه یا دو سه تا اس دیگه دوباره یکی دوتا دیگه این اصلا خوب نیست ولی لحظه آخرش ببینید تو سه تا باکس های سیاه ببینید اگه بتونید بخواید بزرگش کنم آره طولانی است دیگه هری پا ش دقیقه بعد نوشته که حداقل ۵۰ تارگت اولیه رو بخونید نوشته آدیو فایل ال جی صف تارگت چی بوده سر توماس نمیدونم اور بری از فلان آندتلی پویزن بای فلان درسته زیرش چی تشخیص داده سر اولش چی تشخیص داده به جای اس آی آر سی آر تشخیص داده

خودشه اور بریش خودشه خودشه آندریش خودشه نه می‌دونم باید بستگی داره که در سطح حرف بوده یا نه اگه در ساعت حرف بوده شاید اینقدر ترینینگش قوی باشه اونم حتی بفهمه آره میدونم ولی ممکنه که تو ترینینگش فهمیده باشه که وقتی چه جوری میگن اس وقتی چجوری میگن سیه یعنی اگه دیتا ستش غنی باشه به این نقطه ها میرسه میبینید الان وقتی که به اندازه کافی ترین شده خیلی جای خفنی رسیده ها و با همین سی کار انجام شد بچه‌ها سیتی سی پیپر اولش سال 2۶ در میاد از یک گروه مشترکی فکر کنم توی سوئیس و تکنیکال یورسیونیک بوده دانشگاه صنعتی مونیخ و عرض به حضور شما که تا به امروز به نظرم کار میکنه یعنی شما اگر تو مثلا بچه ها کیا به دردشون میخوره قطعا خانم مهندس تو حوزه ترجمه

جمله زبان اشاره به دردش می‌خوره چون اصلاً تک کلمه بخوایم بهش بدیم کمرشکنه مثلاً ۲۰۰۰ تا جمله‌ای که بخوایم در حد کلمه بشکنیم نمی‌تونیم خب ایشون قطعاً سیتی سیلاس می‌تونه کاندیدای کارش باشه البته یه عده ممکنه ویندوینگ بزننا یعنی همون کارای کلاسیک ساده اینکه یه چیزی دارید سیکونس دارید یه ویندوز بندازید مثلاً با چیز طول ۱۰ فریم بگید آقا چی توش تولید شد بگو دیگه حالا هر چی بود بگو بیا ده تای بعدی ده تای بعدی برو جلو ولی سیتی دیگه هیچ شانس بهش میدید که خودش بره بگه عرض به حضور شما که کسایی که آنالیز حرکت اگه دارید می‌کنید من نمونه کار آقای محمد محمدزاده دیدم دانشگاه آقای دکتر بهزادی پور این بود که مثلاً فرض کنید یه دیتایی داشت که طرف اول دو قدم راه میرفت بعد میچرخید بعد مثلا یه کار دیگه میکرد و مثلا شما این شایدشکونید در تک تک و بخواید کل جمله رو بهش بدید بگید این این مثلاً ۱۰۰ فریمی که بهت دادم این سه تا چهار تا حرکت توش بود خب حالا اونو برو ارزیابی کن

اینا مواردی که بچه‌ها به ذهنم می‌خورد خدمتتون بگم به نظرم تئوریش در این حد بسه و عموماً متوجه شدید انشالله که چه اتفاقی داره پشت سی تی سی میفته و فقط یاد بگیرید ازش استفاده کنید حالا چگونه استفاده کنید ۵ دقیقه بچه‌ها استراحت بفرمایید یه ربع به ۱۲ بیاید که حسین هم یه ۴۰ دقیقه‌ای وقت داشته باشه حالا دو تا موضوع میخواد براتون بگه هم نحوه پیاده سازی سیلاس توی بهتون میگه هم یه مقدار ارائه از پایان نامه خودش داره که بهتون بگه چجوری از این سی سیلاسه استفاده کرد و اینم بشه برنامه امروزمون حالا اگه میخوید متوقف بفرمایید ویدیوتون رو یه بچه پنج دقیقه استراحت بفرمایید یه ربع به ۱۲ همه اینجا باشید که دیگه آقای رنجبر زحمت بکشن شروع بکنن کارو برامون خیلی

E:\courses\LangChain Project\main root\data\GAN_Lab_transcript_part1.txt

داده‌های ام نیست و می‌دونه اینا ۱ و ۲ فلانن گول بخوره و فکر کنه اون دویی که شما ساختید اینجا ساخته میشه بدون اینکه کسی با قلم نوشته باشه چی فرض کنه که این هم دوئه خب اولش که لود کردن در واقع دیتا ست و ایناست و اینکه یه عکس نمونه بهم نشون بده و همون کارهای قدیمیه شما کلاً چند تا چیز اینجا نیاز دارید عرض به حضور شما یکی تابع بل جنریتور یا همون جنریتور خودمونه هادی باشه جنریتور خودمونه که اول گفته یه نویز شیپ ۱۰۰ تایی بردار با صد تا عدد رندوم نرمالستربیوشننی مثلاً از گوسین صد تا عدد میکشه بیرون و با این ۱۰۰ تا میخواد بره در نهایت چیکار کنه یه عکس ۲۸ در ۲۸ در یک تولید کنه خب برای اینکه این کار بکنه دیدید دیگه یه در واقع چیز شبکه داره میسازه لایه اولش دنسه و ریشهپش میکنه به ۱۲۸ تایی بچمالیزیشن میزنه کار خوبیه

توصیه کردن تو پیپرهای اصلی گن که نرمالیزیشن استفاده کنید موفق میشید بعد کاندو دی ترانسپوز میزنه که بزرگش کنه درسته و میره جلو تهش انقدر امکان دودی آخری که میزنه با پدینگ و اینای مناسبی که هست محاسبه باید بکنید که عکس خروجیش ۲۸ در ۲۸ در بیاد این شد چی جنریتور من که قراره چی بشه بعداً پارامترهاش تیون بشن یه چیزی ساختم به نام مود مساوی با تی اف crs مدله اینپوتش نویزه اوت چیه لایه آخر شبکه نگاه بکنید که دو دی ترنسپوز که اون سبب میشه ۲۸ در ۲۸ در بیاد جان نه ده در یک نه بالا نگاه کن نویزش چیز بود ۱۰ ۱۰۰ ببخشید ۱۰۰ ۱۰۰ بود بخونش دیگه آره فرض کن که یه همچین کاری کردی فرض کن اگه ۱۱۰ در دش کردی آره مثلا ده در کردی ۲۸ در ۲۸ با آپشن یا ترانسپ

تنظیم نیست خب یه دونه دارم یه چیز عادی شبکه عادی خودمه یه ۲۸ ۲۸ میگیره بهتون میگه که ریله یا فیک و عرض به حضور شما چند تا کانو دودی عادی زدهلو زده کان دو دی اینجوری تهش هم چی زده آخرینش که نوشته ولیدیتی مساوی و فلان لایه آخرشه ولیتی شود تابع فعال سازیش چیه سیگ یکی یا صفر بهم میده یا فیک یا ریل و تهش گفته که یه شبکه بساز که اینپوتش آی ام جی باشه ایمیج من باشه اوت پوتش چی باشه ولیدیتی باشه اینم برید برای خودتون بخونید جای سخت ماجرا تابع ترینه چجوری این چیز رو ترین کنید شبکه گ کلا دور هم ترین کنید که همون اول دیسکریمتور بعد جنریتور الی آخر

تابع یک ایکس ترین ورودی می‌گیرد نامبرپاکس رو میگیره فلان فلان بعد چیکار میکنه هفت بچ میکنه نصف میکنه مثلاً اگه بخواید بچه‌های ده تایی بهش بدید میگه پنج تا برو ریل بردار پنج تا از فیکای من بردار خب تو هر بچش نصف واقعی میده نصف چیز میده خروجی جنریتور میده که اگه آخرش چیز بخوره گول بخوره خوبه دیگه یعنی نتونه اینا رو از همدیگه تمیز بده خوب نوشته که برای دیسکتور ترین کنید که اول خب دیسکتور وضعش خرابه بزار حداقل چیزای خودشو ترین های خودشو بتونه پیدا بکنه و اینا شما چیز میکنید عرض به حضور شما که اولا از ایکس ترین که واقعی ها بوده چند تا رندوم سلکت کرده از جنریتور هم گفته چند تا برام تو بساز خب نویز ورودی بهش داده گفته چند تا تو بساز درسته و بعد گفته که چیز کن عرض به حضور شما اینا رو کان

زده تنگ هم شافلم کرده که ترینا و چیزا فیکا قاطی بشن و این زده تنگم گفته که آی رو بزار صفر دیسکریمنیتور ترینبل و ترو کن یعنی اجازه داشته باشه ترین بشه وایل آی کوچکتر از ۲۰ فیت کن یعنی چیزش کن شروع کردنش عرض به حضور شما پنج ایپاک برو برو اکیوریسی شو بخون اگر اکیوریسی بالای ۹۰ درصد بود بنویس یکس و بیا بیرون از این وایله اگه نبود یه یکی بهش اضافه کن دوباره تو آی بمون تا کجا تا آی ۲۰ نهایتا این کاملا چی باید بازی کنید باشه ها خوب دیسکتور یه پله وضعش خوب میشه میریم پایین جنریتور برای جنریتور دوباره اینپوت نویز رو میاریم نویز تعریف میکنیم بعد ولید وای رو تعریف میکنم این دفعه یک ولید وای یعنی چی یعنی میخوام بگم نویز های که من میدم به جنریتور بعد تو دادی

۱ خب لیبلش یک شد الان قبلا لیبلش چند بود صفر بود دیگه نویز قبلا جنریتور بازه لیبل یکه باید خروجی جی دی بشه یک لیبل یک بهش میدم بعد بهش گفتم که برو از جنریتور ایمیج بساز دیسکتور و فال کن اینجا مهمه ها خب بعد چیز کن بعد برو شبکه کانباین مدل رو بزن که اینپوتش نویزه اوت پوتش ولیدیتیه ولیدیتی چی بود خروجی دی جی بود نه خود جی یعنی جی رو باز میدادی به دی که دی جی تولید بشه و اونو با یک مقایسه کنید و عرض به حضور شما که مدلتون رو فیت میکنید دوباره اینجا نوشتیم مادامی که آی کوچکتر از نمیدونم فلان است ای بابا ببخشید مادامی که آی

کوچکتر از بیسته بیا برام این کارو بکن اگر اکیوریسیت رسید به بالای ۹۰ درصد دیگه بیا بیرون وگرنه آی تو بیشتر کن و ۲۰ بار تو این حلقه وایله بچرخ و تو این حلقه جیتو قوی کن خب این کارم گفتیم بکنه و بعدش که این کارو کرد تهش دیگه چی عرض به حضور شما که گفته که حالا یه سری چیزا رو برام پلاک کن که ببینم که الان خروجیش هم میبینید دیگه میره تو کد اصلی خب دیگه حالا میگه داده نیست و لود کن ایکس ترین و اینا رو برام بساز و فلان فلان عرض به حضور شما اینجا ته ته باکس شماره چندمه ننوشته دستور تابع ترین رو صدا میزنه نوشته ترین ایکس ترین لیبل فلان این مهمترین جای کد که طولانی تر اینه بعد فقط گفته که یه خط بالاترش گفته که چی ایکس لیبل یک چنده ایکس

فقط ترین بردار که اونم وقتی میخواد فیکشو بسازه بره فقط هشت برات بسازه خب بچه‌ها ما دادیم نگاه اولش این نویزه رو داده خب این ران میشه هیچ مشکلی نداره کد بزنید ران میشه اولش نویزه رو داده بعدش رفته اینو تولید کرده خب دارید میبینید دیگه نه بعد رفته اینو تولید کرده داره میره جلو حالا هی داره میره جلو عرض به حضور شما بعد به اینجا رسیده اینجا مثلاً حالا کم کم دیگه یه هشتی داره ظاهر میشه ولی هنوز قوی نیست اونقدر و با این تعداد ایپاک های که ما گفتیم رفته جلو رفته جلو مثلا حالا برای اینکه هشت تولید کنه میخوام جنریتور عملکردشو بهتون نشون بدم این دیگه نگاه از اینجا دیگه یه جورایی هشت هست دیگه خب حالا از دید ما کم کم که میگم انسان باید ببینه مهم ها شما باید ببینید ببینید که

اعمال چیز شدن ارضا شدن خروجی اصلاً قابل قبوله قابل بحثه یا نه چقدر داره یکی تولید می‌کنه یعنی یه چالشی که مثلاً یه هشت همیشه یک ۸ تا رفته پیدا کرده همیشه اونو فقط بسازتش خب مثلاً اینا بایاس نشه به یه چیزی ببین الان نگاه کنید وقتی رفته جلو داره هشت تاش بهتر میشه و البته اینا باید میگم باید باز بیشتر و بیشتر بحث بشه که آیا چیز آیا این که تولید میکنه خوبه یا هنوز ادامه بدم هنوز کمه و اینجا دیگه خوبه واقعاً چیزایی نوشته که شبیه هشت آدمه یعنی نیست دیگه واقعا هشتش همینه یه همچین هشت اینم جالبه این فیک ها یعنی اصلا کسی ننوشته با خودکار اینو خب و این تونست تولید کنه و موفق شدیم بالاخره یه داده فیک بسازیم و میتونید به اینا فکر کنید این باز هشت خیلی خوبیه تولید کرده این خیلی هشت خوبیه که تولید کرده

و این شبکه‌تونو می‌تونید بردارید باهاش اگرچه خوب چیزه دیگه گفتم شیپشو بهمون بده مثلاً ۲۸ در ۲۸ در یکه که ۵۸۵۱ مثلا الان دارد خب من عرضم تمام الان این کدم باز در اختیارتون قرار میدیم آقای بابایی زحمت بکشید تشریف بیارید در مورد سایکل برامون صحبت کنن دیتا ست حدودی میگم خدمتتون چیه که دیگه توضیحات کد نویسیش با ایشونه ایشون دو نوع عکس داره یه نوع عکس اومده با دست یه سری چیزا رو گرفته مثلاً موبایل لیوان اینا یعنی دست دست یکی توشه یکی از عکس‌هاست که دست هیچکی توش نیست فقط از اون آبجکت است ولی ممکن هم چیز نباشن ها معادل نباشن یعنی اون موبایله اینجوری نباشه یه بار با دست یه بار بی دست ممکنه یه با این موبایل باید دست با یه موبایل دیگه بی دست عکس باشه حالا سوال اینه که شبکه بسازه که عکس دست دار رو بهش بدی بی دستشو بهت بده تحویل یا بی دستش یه دستی بزار اونجا

موبایل لیوانه رو بگیره حالا ایشون برای هدف خودش لپ تاپ خودتونو دارید شیر می‌کنم تو گوگل کلوپ که دیگه همین جا بچه‌ها ضبطشون ادامه پیدا بکنه حالا کد میشه کاستوم مثلا چون که اسم نذاشتیم برای تعریف شده حالا میشه مثلا خودتون شروع بفرمایید توضیح بده و چیز جنرال خدا لازم چشم به نام خدا این شبکه رو من استراکچ ساختارش اینجوری زدم که دقیقا مشابه همون ساختار مقاله

مقاله چون اینا خیلی میشه با ساختارش ور رفت یعنی چه ساختارهای جنراتور باشه چه ساختار باشه یا حالا بخش‌های دیگش اینم باید فانتوم بشه که دقیقا بفهمیم که پارامترها مثلا چجوری باشن بخاطر همون چون ما اونقدر مثلا دسترسی نداریم به کامپیوتر که خودمون اونقدر مثلا ترین کنیم که پارامترهای مناسب پیدا کنیم میشه پارامترهای مناسب که حالا بقیه استفاده کردن مثلا استفاده میکنیم بخاطر همین من حالا اونا توی یعنی خود کاری که کرده بودم توی مقاله اصلی پایتون زده بودن من این کد زدم بعدش اول که به گوگل درایو وصل میشیم چون که ما دیتا ست های که داریم توی درایو گذاشتیم بعد این ست اینستنت نورمالیزیشن رو ما اینجا اد میکنیم چرا چون که این چیزی که مقاله اصلی برای نورزیشن استفاده شده حالا

چیزهایی که اینجا ایمپورت شدن همه چیزایی که قبلا استفاده جدیدی نیستش یعنی شبکه که میسازیم دقیقا با همون چیزایی میسازیم که قبلا استفاده کردیم یعنی ترانسپوز زیروس نمیدونم لیکلو همین اکتیویشن اینا یعنی چیز جدیدی اینجا نداره خب اولتور تعریف میکنیم یه چیزی که من بگم که دیسکاوری که ما اینجا داریم یه مقدار متفاوت هستش که حالا قبلا تعریف شده و اینا چرا چون ما فرضا یه تصویر داریم ۲۵۶ ۲۵۶ ما به جای اینکه بیایم این تصویر رو مثلا تشخیص بدیم که ریل یا فیک یعنی کل تصویری یک یا صفر بدیم اومده کاری که کرده اینه که تصویر رو به یه پت تقسیم کرده اینجا خودمون میتونیم سایز پچ رو بدیم بالا مثلا پ ۱۶ در ۱۶ یعنی ۲۵ ۱۶ کرده این تصویر ۱۶ قسمت

بعدش اومده وقتی قضاوت می‌کنه این تصویرو میاد هر بخش کوچک از پیکسل رو تعیین میکنه که این بخش ریل یا فیکه یعنی به کل ایمیج یه عدد نمیده خروجی که ما داریم اینجا پچ اوت اینجا یه در واقع ماتریسیه به اندازه در پچ یعنی اینه که یک صفر تعیین میکنه که هر قسمت از تصویر ریل یا فیکه بعد قسمت های وسطیش هم که مشخصه کان تو مثلا چهار در چهار بعد ۶۴ تا فیلتر اسلاید دوره مثلا پش سه بعد یعنی تا اینجاش این بوده برای دیسک حالا نسبتا سر روالیه حالا بعدش میریم جنراتور دیفاین میکنیم تعریف کنیم توی تعریف جنراتور من اینو داریم که ما اول میایم

دکتر قبل این تعریف کردن این بود که از هیچی میومد یه عدد تولید میکرد ما یه نویزی بهش میدادیم میکرد عکس حالا نکته اینه که ما اینجا نویز نمیدیم ما اینجا یه عکس میدیم و خروجی عکس انتظار داریم پس اول عکس رو میگیره با این کانولوشن های که میزنه میاد به اینجا یعنی میاد دقیقا کانولوشن میزنیم میایم فیچر عکس در میاریم بعد اینجا یه چند تا بلاک رزنت داریم دلیل اینم که این بلاک میزدیم بخاطر اینه که خب ما میخوایم یه عکس رو از یه دوم ببریم یا حالا ممکنه عکس نباشه یعنی اینم ادامه میگم یا یه چیزی رو میخویم از یه دومین ببریم به دومین دیگه اصلا میخوایم آهنگ از یه صدا صدای نکته اینه که اینجا یه کامپلکسیتی زیادی داره اینجا پیچیدگی زیادی داره و برای اینکه ما بتونیم این پیچیدگی رو از این به باید این وسط

بزرگ نباشه نمیتونه خوب فیت کنه همون اینجا یه چند تا بلاک هم گذاشته که این رزیدنت پلاک‌ها براش ما اومدیم اینور یه دونه جداگانه دیفاین کردیم یه دونه در واقع فانکشن که ما میایم اول عکس رو میگیریم عکس که گرفتیم یه تعداد کانولوشنش اعمال میکنیم بعد خروجی این کانولوشن ها رو با خود عکس ورودی کانتکت نت میکنیم این میشه در واقع خروجی شبکه رضایت ما شبیه خودش هم رد شده است بعدش بعد از شبکه های رزنت حالا نکته اینه که ما اول قبل از اومدیم در واقع شبکه

حالا باید آب دوباره بزرگ عکس ها رو دوباره بزرگ کنیم اینجا هم این دوتا رو متقارن کردیم تا ورودی و خروجی هر اتفاقی که بالا میفته پایین بیفته و این باعث میشه که مثلا ورودی خروجی مون شیپش یکی باشه بعدش این توی اینجا این اتفاق میفته که خروجی که ما داریم یه اوت ایمیج میشه که توی عمل باید حالا از یک دوم دیگه داده ما رو ببره مدلی هم که داریم یه دونه ورودی میگیره یه خروجی میده دیگه به همین خوب نکته حالا کار از اینجا به بعد شروع میشه یعنی کار سایکل از اینجا بعد شروع میشه تا اینجاش اوکی بود روال بود توی سایکل ما در واقع چهار مدل لاس داریم یه لاس مون که همون لاس خود مثل لاس گنه یعنیسه نکته اینه که ما یه تصویری که

داخل کد میگم ولی الان ولی توی ادامه ما توی سایک آتیلاس داریم که این آیدنتیلاس اینجوریه ما میگیم که ما میگیم که ما یه تصویری داریم این حالا ما یه ژنراتور داریم که این جنراتور از دومین در واقع بی میبره به دومین ای از دومین بی میبره به دوم اگر ما به این تصویر ای بدیم این خروجی به ما باید همون تصویر ای بده چون این ورودی که میگیره حالا لزوما بی

نکته اینه که ببره دیگه این باعث میشه که مثلا رنگ مثلا تصویر خروجی رنگشو زیاد آسیب نزنه بعد یه دونه فوروارد لاس داریم که همون چیزی که دکتر گفتن یعنی ما یه تصویری از دومین بی از دوباره یعنی اینکه ما وقتی مثلا ای میدیم و از شبکه میبره به بی حالا بی رو دوباره

نکته ای میدیم رو داریم حالا کاری که ما میخویم بکنیم اینه ما میگیم ای که تولید شده را بیا پیکسل وای با این ای که ما داریم و میدونیم درسته این دوتا با هم مقایسه کن و این اختلاف یعنی

این شبکه ها خوب دونه دونه باید کنیم اصلی نیست ما در نهایت خروجی کل این کارمون اینه چهار تا شبکه یک شبکه میگیریم که جنراتور یعنی اگر دومین بی بهش بده یه شبکه میگیریم که ای یعنی اگر دوم ای بدیم دومین بی بهمون میده یه شبکه میگیریم که دیسک میکنه یعنی تشخیص میده عکس های که از یه عکس از بهش قیفه که یه شبکه از دومین ای بهش تصویر میدیم این فیک ما این چهار تا خب دوتاش اینا دو

باید همزمان کنیم بعد یکی اینه خب یعنی یکی ما که این داستان فرق داریم این دو تای آخر کلا بی میشه مقایسه حالا نکته اینه ما میدونیم که به این شبکه ورودی ای بدیم بی بمونه حالا اگه ما به این شبکه ورودی بی بدیم چه اتفاقی میفته یعنی به این شبکه ورودی بی بدیم

نکته اینه که این شبکه وظیفه اش این نیست که مثلا یعنی یه لات همین پیکس با این مقایسه کنید یعنی این دوتا با هم بایدشن خروجی این باید خودش باشه چرا چرا ساده تر یه نگاهش داشته از این فضا اگر ما اونو بهش بدیم اون بردارش توی فضای سی ما عکس داشتیم خب یه اصل بهش میدادیم همون

ما اینه فقط اون چیزی که می‌خوایم تغییر مثلاً خب یعنی توی عکس فقط دنبال اسبا میگرده دنبال پرتقال میگرده پرت میکنه خب حالا من یک تصویری بهش بدیم که توش اسب نباشه خب پیدا باید خروجی همون تصویر خروجی حالا نکته اینه اگه ما این کار نکنیم خروجی باز بهمون چیز خوبی میده خروجی اوکی میده ولی نکته اینه که رنگا رو دیگه قاطی خوب نمیده یعنی مثلا شما وقتی این کاری که این تصویر خیلی زیادی رنگ ها داره الان مقاله اصلی رو وا کنیم یا نگاه کنید اینجا نشون میده یعنی با جفتش مقایسه کرده با ای و بدون یعنی

ولی اهمیت نباشه این مسئله وقتی ورودی میگیره آره حالا جور دیگه از سوال بپرس جواب خوب نکته اینه که ما حالا فشن تعریف میکنیم به اسم فشن کامپوزیت مدل خب نکته اینه که ما شبکه جنریتور که داشتیم هم داشتیم حالا ما میخوایم اینا رو ترین کنیم برای ترین

در واقع از جنریتور ما نمیتونیم مستقل ترین کنیم باید این شبکه رو تعریف کنیم داخل این شبکه چون باید دونه دونه وارد کنیم داخل این شبکه میگیم آقا مثلا اینجا ما ورودی جن یک رو میگیریم جنریتور دو رو میگیریم یه دیستتور میگیریم و ایمیج شی ما میایم میگیم جنریتور یک رو میخویم ترین کنیم پس با جن با دیسمیتور و دو کاری نداریم اینا ترینبل نیستند بعد میایم میگیم که ما این شبکه مون در نهایت قراره دو تا ورودی بگیره یه دونه این مثلا این دومین بی از دومین دو این از دومین یکه یه عکس از دومین دو میگه یه عکس دومین یک خب اینجا مثلا با یک و دو میدیم اینجا میاد میگه که یه اینپوت تعریف میکنه میاد میگه که ما این اینپوت رو میدیم به جنراتور یک خب یعنی این اینپوت حالا چیه

داریم تصویری که از نوع دوئه نوع دو رو میدیم جنراتور ما به ما خروجی چی میده اوت پوت جنراتور یک رو میده که از نوع در واقع یکه بعد ما میایم یه دیسکور داریم که اینم وارد کردیم این همون یکه خب این دیسکتور یک میاد به ما میگه که این خروجی که ما گرفتیم رییل یا فیک خب یعنی یک یا یک یعنی همون پچ رو به ما میده خروجی خب این میشه نکته اینه که ما توی مدل نهایی مون در نهایت ما یه دونه هم یه چیزی که داریم اینو ریلش داریم یعنی ما میدونیم که این تصویری که دادیم در واقع ریل یا فیکه یعنی ما را داریم بعد میایم این اوت که در واقع داریم ما میدونیم که این عکس که به این دادیم ریل مثلا خب میایم یه دونه ماتریس یک* یک رو میایم با این خروجی که از این داریم یعنی اون پی یک تشخیص داده که هیچ اومد صفر تشخیص داده میایم از اینا مین اسکرش میگیریم

میگیم که ما میایم حالا از نوع یک خب از نوع یک میایم میدیم به شبکه در واقع یک جنریتور مدل یک میدیم از نوع یک خروجیش باید چی باشه باید همون اوت پوت آیدی باشه که همون یک باشه حالا نکته اینه که اوت آییدی رو ما میایم با همین ورودی یعنی با همین این مقایسه میکنیم که باید در واقع با هم یکی باشن دیگه باید ارور ش می کنیم و حالا توی فوروارد مییم چیکار میکنیم ما این خروجی که داشتیم از یک این بود ما دو دادیم این شبکه خروجی به ما یک داد خب حالا نکته اینه اگه ما این یک رو دوباره بیایم به مدل دو بدیم باید خروجی دو بده حالا این مدل این دو باید با ورودی که به این یک دادیم یکی باشه این ورودی که به این دادیم این بود دیگه یعنی این

بعد با هادی با این یکی باشه این دوتا که اینجا ما اینم به عنوان ورودی داریم اینو به عنوان ورودی داریم اینم که به عنوان خروجی حساب کردیم ما با در واقع مقایسه این دوتا دوباره میشه بعد یه بارم میایم میگیم حالا ما میایم این نوع یکو میدیم به مدل جن دو جنریتور دو ما همون نوع دو تغییر حالا نوع دو رو میدیم به یک بهمون نوع یک تحویل میده این نوع یک که به ما تحویل داده با این یک اصلی که ما بهش دادیم باید مینیمم بشه ارورش این میشه چهار تا در واقع لاستر لاس ما این قسمت اصلی کد اینه اینجا متوجه بشین حالا بقیش خیلی مشابه حالا قرار میدیم روی این قسمت سوالی هست چون اینجاش خیلی اصلیش همین اوکی

که ما اینجا داریم از اینجا برداشتیم خب که با ترتیب اعمال میشه دو تا ورودی چهار خروجی این بعد این چهار تا خروجی با چهار تا خروجی لیبل های که ما داریم این چ اصلی داریم یعنی چهار تا خروجی که از کد میگیریم این چهار تا خروجی اصلی خودمون داریم میدونیم که مثلا چی مثلا اینجا این اوت دی رو ما خودمون داریم میدونیم که اگه مثلا بی دادیم این میشه ماتری ۱۶ در ۱۶ یک همش یک یا اگه فکر ۱۶ همش صفر بعد مییم خروجی که از این کد گرفتیم اینشو با اونی که

E:\courses\LangChain Project\main root\data\GAN_Lab_transcript_part2.txt

همونجوری مقایسه میکنیم و با این ضریب یعنی با این نسبت‌ها اعمال می‌کنیم دیگه بعدش حالا یه تعداد فانکشن داریم که از استفاده میشه نتیجه الان همراه هم نیست حالا عکس بالا دست ماجرا درسته آره این عکس دارند این پایین عکس آره دست توش نیست

الان یعنی که الان دادم الان خروجیم خیلی خوبه خب ولی همچنان اون چیزی که میخوام نیستش دلیل هزارتا از ۱۴۱ تا دستار۹۹ تا بدون دست نه جای دیگه هم گرفتم همه جا گرفتم بعد اینا خب نکتش اینه که حالا اینو من خیلی ترین کردم خیلی کردم ولی همچنان تو اون سطحی که میخوام نرسیده باید داشته یک ماه ترین شه چون که شبکه که ما داریم لحظه این جابجا نمیشهش من

خود ترین است خب ما میایم چیکار میکنیم حالا اینجا کاری ندارم ما میایم ما یه فانکشن تعریف کردیم جنرال ریاضی نداشت این چیکار میکنه برای ما یه تعداد سمپل واقعی به صورت رندوم از دیتا ست که داریم از البته ای که حالا نوع ای دیگه برای ما یه تعداد سمپل واقعی تولید میکنه و خروجی به ما یه دونه این سمپل ها رو میده که این ایگرگ ها که این ایگرگ چیه این ایگرگ عملا همون ماتریس یک* یک ۱۶ در ۱۶ ۱۶ یک خب بعد ما میایم همینو یه بار هم برای بی انجام میدیم یعنی داده های واقعی و یک ماتریس های یک

بی میایم این داده های ریل که اینجا دادیم یعنی گرفتیم میدیم به این جنراتور بهمون فکر میده فکر ای میده و داده های بی رو میدیم به این ژنراتور یعنی ای تولید میکنه بی تولید میکنه و این هم که میشه ماتریس های که توش پر صفره دیگه بعد حالا ما از این استفاده میکنیم میایم این تیکش حالا فعلا فکر فرصت بشه بگم ما از این استفاده میکنیم چجوری ما میایم کامپوزیت ها رو ترین میکنیم به این صورت که ما قرار بود که ما به اینا دیل بدیم یه فیک بدیم ریل ها رو میدیم فیک ها را میدیم بعد حالا چیزایی که ما خودمون داریم یعنی ما میدونیم که مثلا این ایکس ریل وی این ماتریس های اند که یک* یک دیگه مثلا البته این ماسه ۱۶ در ۱۶ که پر یکه این همین تصویره اینه این همین اینه اینم که دوباره همین اینه

اینا رو بهش میدیم که در مقایسه با اون چیزایی که داخل شبکه حساب کردیم با اونا مقایسه کنه بعد اینجوری میاد کامپوزیت ترین میکنه یعنی اینجا چون ما فقط مدل ای رو اینجا گذاشته بودیم مدل میکنه بعد اینجا میاد ترین میکنه فقط روی این دیتاها ما اینو گذاشتیم توی فرم توی حلقه گذاشتیم که اون تعداد که میخوایم اینتر میشه این داخل میشه بعد همین کار برای این یکی مدل میکنیم دیگه یعنی میایم مدل بی رو حالت تعیین میکنیم به این شکل که اینجا این مدل بیت میشه از میشن بعد دیگه از اینجا به بعدش هم که دیگه اینا همه فانکشن از اینجا به بعدش دیگه فانکشن دیگه اعمال میکنیم تموم شما

'code' cell: '['from keras.datasets import mnist\n', 'from keras.layers import Input, Dense, Reshape, Flatten\n', 'from keras.layers import BatchNormalization\n', 'from keras.layers import LeakyReLU\n', 'from keras.models import Sequential, Model\n', 'import matplotlib.pyplot as plt\n', 'import numpy as np\n', 'import tensorflow as tf\n']'

'code' cell: '['# load the images into memory\n', '(X_train, trainy), (X_test, testy) = mnist.load_data()\n', '# summarize the shape of the dataset\n', "print('Train', X_train.shape, trainy.shape)\n", "print('Test', X_test.shape, testy.shape)"]'

'code' cell: '['# Display one of the images\n', 'plt.imshow(X_train[0])\n', "plt.axis('off')  # Hide axis\n", 'plt.show()']'

'code' cell: '['#Define input image dimensions\n', '#Large images take too much time and resources.\n', 'img_rows = 28\n', 'img_cols = 28\n', 'channels = 1\n', 'img_shape = (img_rows, img_cols, channels)']'

'code' cell: '['def build_generator():\n', '    noise_shape = (100,) # 1D array of size 100 (latent vector / noise)\n', '    img_shape = (28, 28, 1) # Shape of the image\n', '\n', '    # input layer for the noise\n', '    noise = Input(shape=noise_shape)\n', '\n', '    # generator network\n', '    den = tf.keras.layers.Dense(256, activation=tf.keras.layers.LeakyReLU(alpha=0.1))(noise)\n', '    den = tf.keras.layers.BatchNormalization(momentum=0.8)(den)\n', '    den = tf.keras.layers.Dense(512, activation=tf.keras.layers.LeakyReLU(alpha=0.1))(den)\n', '    den = tf.keras.layers.BatchNormalization(momentum=0.8)(den)\n', '    den = tf.keras.layers.Dense(1024, activation=tf.keras.layers.LeakyReLU(alpha=0.1))(den)\n', '    den = tf.keras.layers.BatchNormalization(momentum=0.8)(den)\n', "    den = tf.keras.layers.Dense(np.prod(img_shape), activation='tanh')(den)\n", '    den = tf.keras.layers.Reshape(img_shape)(den)\n', '\n', '    # integrating\n', '    model = tf.keras.Model(inputs=noise, outputs=den)\n', '\n', '\n', '    return model']'

'code' cell: '['def build_generator():\n', '    noise_shape = (100,) # 1D array of size 100 (latent vector / noise)\n', '    img_shape = (28, 28, 1) # Shape of the image\n', '\n', '    # input layer for the noise\n', '    noise = tf.keras.layers.Input(shape=noise_shape)\n', '\n', '    # generator network\n', '    den = tf.keras.layers.Dense(7 * 7 * 128, activation=tf.keras.layers.LeakyReLU(alpha=0.1))(noise)\n', '    den = tf.keras.layers.Reshape((7, 7, 128))(den)\n', '    den = tf.keras.layers.BatchNormalization(momentum=0.8)(den)\n', "    den = tf.keras.layers.Conv2DTranspose(64, kernel_size=(5, 5), strides=(2, 2), padding='same', activation=tf.keras.layers.LeakyReLU(alpha=0.1))(den)\n", '    den = tf.keras.layers.BatchNormalization(momentum=0.8)(den)\n', "    den = tf.keras.layers.Conv2DTranspose(1, kernel_size=(5, 5), strides=(2, 2), padding='same', activation='tanh')(den)\n", '\n', '    # integrating\n', '    model = tf.keras.Model(inputs=noise, outputs=den)\n', '\n', '    return model']'

'code' cell: '['gan =build_generator()\n', 'gan.summary()']'

'code' cell: '['def build_discriminator():\n', '    img_shape = (28, 28, 1)  # Assuming this is defined somewhere\n', '\n', '    # Define input layer for the image\n', '    img = tf.keras.layers.Input(shape=img_shape)\n', '\n', '    # Define your discriminator network\n', "    dis = tf.keras.layers.Conv2D(128, kernel_size=(3, 3), padding='same')(img)\n", '    dis = tf.keras.layers.BatchNormalization()(dis)\n', '    dis = tf.keras.layers.LeakyReLU(alpha=0.1)(dis)\n', '\n', "    dis = tf.keras.layers.Conv2D(64, kernel_size=(3, 3), padding='same')(dis)\n", '    dis = tf.keras.layers.LeakyReLU(alpha=0.1)(dis)\n', '\n', "    dis = tf.keras.layers.Conv2D(32, kernel_size=(3, 3), padding='same')(dis)\n", '    dis = tf.keras.layers.LeakyReLU(alpha=0.1)(dis)\n', '\n', '    dis = tf.keras.layers.Flatten()(dis)\n', '    dis = tf.keras.layers.Dense(16, activation=tf.keras.layers.LeakyReLU(alpha=0.1))(dis)\n', '    dis = tf.keras.layers.Dense(8, activation=tf.keras.layers.LeakyReLU(alpha=0.1))(dis)\n', '    dis = tf.keras.layers.Dense(4, activation=tf.keras.layers.LeakyReLU(alpha=0.1))(dis)\n', "    validity = tf.keras.layers.Dense(1, activation='sigmoid')(dis)\n", '\n', '    # Combine the input and output into a model\n', '    model = tf.keras.Model(inputs=img, outputs=validity)\n', '\n', '    return model']'

'code' cell: '['dis =build_discriminator()\n', 'dis.summary()']'

'code' cell: '['def train(X_train, epochs, batch_size=256, save_interval=50):\n', '\n', '\n', '    half_batch = int(batch_size / 2)\n', '\n', '\n', '    for epoch in range(epochs):\n', '\n', '        # ---------------------\n', '        #  Train Discriminator\n', '        # ---------------------\n', '\n', '        # Select a random half batch of real images\n', '        idx = np.random.randint(0, X_train.shape[0], half_batch)\n', '        imgs = X_train[idx]\n', '\n', '\n', '        noise = np.random.normal(0, 1, (half_batch, 100))\n', '\n', '        # Generate a half batch of fake images\n', '        gen_imgs = generator.predict(noise)\n', '\n', '        # Train the discriminator on real and fake images, separately\n', '        #Research showed that separate training is more effective.\n', '        x_dis_train = np.concatenate((imgs, gen_imgs), axis=0)\n', '        y_dis_train = np.concatenate((np.ones((half_batch, 1)), np.zeros((half_batch, 1))), axis=0)\n', '\n', '        indices = np.arange(x_dis_train.shape[0])\n', '        np.random.shuffle(indices)\n', '\n', '        x_dis_train = x_dis_train[indices]\n', '        y_dis_train = y_dis_train[indices]\n', '\n', '        # Train the discriminator\n', '        i = 0\n', '        discriminator.trainable = True\n', '        while i < 20:\n', '            d_history = discriminator.fit(x_dis_train,\n', '                                          y_dis_train,\n', '                                          #batch_size=batch_size,\n', '                                          epochs=5,\n', '                                          verbose=0\n', '                                         )\n', "            d_loss = d_history.history['accuracy'][-1]\n", '            if d_loss > 0.90:\n', "                print('yes')\n", '                break\n', '            i += 1\n', '\n', '\n', '#And within the same loop we train our Generator, by setting the input noise and\n', '#ultimately training the Generator to have the Discriminator label its samples as valid\n', '#by specifying the gradient loss.\n', '        # ---------------------\n', '        #  Train Generator\n', '        # ---------------------\n', '#Create noise vectors as input for generator.\n', '#Create as many noise vectors as defined by the batch size.\n', '#Based on normal distribution. Output will be of size (batch size, 100)\n', '        input_noise = np.random.normal(0, 1, (batch_size, 100))\n', '\n', '        # The generator wants the discriminator to label the generated samples\n', '        # as valid (ones)\n', '        #This is where the genrator is trying to trick discriminator into believing\n', '        #the generated image is true (hence value of 1 for y)\n', '        valid_y = np.array([1] * batch_size) #Creates an array of all ones of size=batch size\n', '\n', '        # Generator is part of combined where it got directly linked with the discriminator\n', '        # Train the generator with noise as x and 1 as y.\n', '        # Again, 1 as the output as it is adversarial and if generator did a great\n', '        #job of folling the discriminator then the output would be 1 (true)\n', '        noise = tf.keras.layers.Input(shape=(100,))\n', '        generated_img = generator(noise)\n', '\n', '        discriminator.trainable = False\n', '        validity = discriminator(generated_img)\n', '\n', '        # The combined model (stacking generator and discriminator)\n', '        combined_model = tf.keras.Model(inputs=noise, outputs=validity)\n', '        combined_model.compile(\n', '            optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),\n', '            loss="binary_crossentropy",\n', '            metrics=["accuracy"]\n', '        )\n', '\n', '\n', '\n', '        i=0\n', '        while i < 20:\n', '            g_history = combined_model.fit(input_noise,\n', '                                           valid_y,\n', '                                           #batch_size=batch_size,\n', '                                           epochs=10,\n', '                                           verbose=0\n', '                                          )\n', "            g_loss = g_history.history['accuracy'][-1]\n", '            if g_loss > 0.95:\n', "                print('no')\n", '                break\n', '            i += 1\n', '\n', '\n', '        r, c = 1, 5\n', '        noise = np.random.normal(0, 1, (1 * 1, 100))\n', '        gen_imgs = generator.predict(noise)\n', '\n', '        # Display one of the images\n', '        plt.imshow(gen_imgs[0])\n', "        plt.axis('off')  # Hide axis\n", '        plt.show()']'

'code' cell: '['(X_train, trainy), (X_test, testy) = mnist.load_data()\n', '\n', '# Convert to float and Rescale -1 to 1 (Can also do 0 to 1)\n', 'X_train = (X_train.astype(np.float32) - 127.5) / 127.5\n', '\n', '#Add channels dimension. As the input to our gen and discr. has a shape 28x28x1.\n', 'X_train = np.expand_dims(X_train, axis=3)\n', '\n', '\n', '# Build and compile the discriminator first.\n', 'discriminator = build_discriminator()\n', 'discriminator.compile(\n', '    optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),\n', '    loss="binary_crossentropy",\n', '    metrics=["accuracy"]\n', ')\n', '\n', '#build and compile our Discriminator, pick the loss function\n', '\n', '#SInce we are only generating (faking) images, let us not track any metrics.\n', 'generator = build_generator()\n', 'generator.compile(\n', '    optimizer=tf.keras.optimizers.Adam(learning_rate=0.0002),\n', ')\n', '\n', '##This builds the Generator and defines the input noise.\n', '#In a GAN the Generator network takes noise z as an input to produce its images.\n', 'z = Input(shape=(100,))   #Our random input to the generator\n', 'img = generator(z)\n', '\n', '#This ensures that when we combine our networks we only train the Generator.\n', '#While generator training we do not want discriminator weights to be adjusted.\n', "#This Doesn't affect the above descriminator training.\n", 'discriminator.trainable = False\n', '\n', '#This specifies that our Discriminator will take the images generated by our Generator\n', '#and true dataset and set its output to a parameter called valid, which will indicate\n', '#whether the input is real or not.\n', 'valid = discriminator(img)  #Validity check on the generated image\n', '\n', '\n', '#Here we combined the models and also set our loss function and optimizer.\n', '#Again, we are only training the generator here.\n', '#The ultimate goal here is for the Generator to fool the Discriminator.\n', '# The combined model  (stacked generator and discriminator) takes\n', '# noise as input => generates images => determines validity\n', '\n', '# The intended number for generation (0-9)\n', 'X_train_label_1 = X_train[trainy == 8]\n', '\n', 'train(X_train_label_1, epochs=100, batch_size=32, save_interval=10)']'

'code' cell: '['X_train_label_1.shape']'

"""GAN_MNIST.ipynb

    https://colab.research.google.com/drive/1EGAfWYMcYSw61xbWQPfKMvjhHkCpmajd
"""

from keras.layers import Input, Dense, Reshape, Flatten
from keras.layers import BatchNormalization
from keras.layers import LeakyReLU
from keras.models import Sequential, Model

# load the images into memory
(X_train, trainy), (X_test, testy) = mnist.load_data()
# summarize the shape of the dataset
print('Train', X_train.shape, trainy.shape)
print('Test', X_test.shape, testy.shape)

# Display one of the images
plt.imshow(X_train[0])
plt.axis('off')  # Hide axis

#Define input image dimensions
#Large images take too much time and resources.
channels = 1
img_shape = (img_rows, img_cols, channels)

def build_generator():
    noise_shape = (100,) # 1D array of size 100 (latent vector / noise)
    img_shape = (28, 28, 1) # Shape of the image

    # input layer for the noise
    noise = Input(shape=noise_shape)

    # generator network
    den = tf.keras.layers.Dense(256, activation=tf.keras.layers.LeakyReLU(alpha=0.1))(noise)
    den = tf.keras.layers.BatchNormalization(momentum=0.8)(den)
    den = tf.keras.layers.Dense(512, activation=tf.keras.layers.LeakyReLU(alpha=0.1))(den)
    den = tf.keras.layers.Dense(1024, activation=tf.keras.layers.LeakyReLU(alpha=0.1))(den)
    den = tf.keras.layers.Dense(np.prod(img_shape), activation='tanh')(den)
    den = tf.keras.layers.Reshape(img_shape)(den)

    # integrating
    model = tf.keras.Model(inputs=noise, outputs=den)

    noise = tf.keras.layers.Input(shape=noise_shape)

    den = tf.keras.layers.Dense(7 * 7 * 128, activation=tf.keras.layers.LeakyReLU(alpha=0.1))(noise)
    den = tf.keras.layers.Reshape((7, 7, 128))(den)
    den = tf.keras.layers.Conv2DTranspose(64, kernel_size=(5, 5), strides=(2, 2), padding='same', activation=tf.keras.layers.LeakyReLU(alpha=0.1))(den)
    den = tf.keras.layers.Conv2DTranspose(1, kernel_size=(5, 5), strides=(2, 2), padding='same', activation='tanh')(den)

gan =build_generator()
gan.summary()

def build_discriminator():
    img_shape = (28, 28, 1)  # Assuming this is defined somewhere

    # Define input layer for the image
    img = tf.keras.layers.Input(shape=img_shape)

    # Define your discriminator network
    dis = tf.keras.layers.Conv2D(128, kernel_size=(3, 3), padding='same')(img)
    dis = tf.keras.layers.BatchNormalization()(dis)
    dis = tf.keras.layers.LeakyReLU(alpha=0.1)(dis)

    dis = tf.keras.layers.Conv2D(64, kernel_size=(3, 3), padding='same')(dis)

    dis = tf.keras.layers.Conv2D(32, kernel_size=(3, 3), padding='same')(dis)

    dis = tf.keras.layers.Flatten()(dis)
    dis = tf.keras.layers.Dense(16, activation=tf.keras.layers.LeakyReLU(alpha=0.1))(dis)
    dis = tf.keras.layers.Dense(8, activation=tf.keras.layers.LeakyReLU(alpha=0.1))(dis)
    dis = tf.keras.layers.Dense(4, activation=tf.keras.layers.LeakyReLU(alpha=0.1))(dis)
    validity = tf.keras.layers.Dense(1, activation='sigmoid')(dis)

    # Combine the input and output into a model
    model = tf.keras.Model(inputs=img, outputs=validity)

dis =build_discriminator()
dis.summary()

def train(X_train, epochs, batch_size=256, save_interval=50):

    half_batch = int(batch_size / 2)

    for epoch in range(epochs):

        # ---------------------
        #  Train Discriminator

        # Select a random half batch of real images
        idx = np.random.randint(0, X_train.shape[0], half_batch)
        imgs = X_train[idx]

        noise = np.random.normal(0, 1, (half_batch, 100))

        # Generate a half batch of fake images
        gen_imgs = generator.predict(noise)

        # Train the discriminator on real and fake images, separately
        #Research showed that separate training is more effective.
        x_dis_train = np.concatenate((imgs, gen_imgs), axis=0)
        y_dis_train = np.concatenate((np.ones((half_batch, 1)), np.zeros((half_batch, 1))), axis=0)

        indices = np.arange(x_dis_train.shape[0])
        np.random.shuffle(indices)

        x_dis_train = x_dis_train[indices]
        y_dis_train = y_dis_train[indices]

        # Train the discriminator
        i = 0
        discriminator.trainable = True
        while i < 20:
            d_history = discriminator.fit(x_dis_train,
                                          y_dis_train,
                                          #batch_size=batch_size,
                                          epochs=5,
                                          verbose=0
                                         )
            d_loss = d_history.history['accuracy'][-1]
            if d_loss > 0.90:
                print('yes')
                break
            i += 1

#And within the same loop we train our Generator, by setting the input noise and
#ultimately training the Generator to have the Discriminator label its samples as valid
#by specifying the gradient loss.
        #  Train Generator
#Create noise vectors as input for generator.
#Create as many noise vectors as defined by the batch size.
#Based on normal distribution. Output will be of size (batch size, 100)
        input_noise = np.random.normal(0, 1, (batch_size, 100))

        # The generator wants the discriminator to label the generated samples
        # as valid (ones)
        #This is where the genrator is trying to trick discriminator into believing
        #the generated image is true (hence value of 1 for y)
        valid_y = np.array([1] * batch_size) #Creates an array of all ones of size=batch size

        # Generator is part of combined where it got directly linked with the discriminator
        # Train the generator with noise as x and 1 as y.
        # Again, 1 as the output as it is adversarial and if generator did a great
        #job of folling the discriminator then the output would be 1 (true)
        noise = tf.keras.layers.Input(shape=(100,))
        generated_img = generator(noise)

        discriminator.trainable = False
        validity = discriminator(generated_img)

        # The combined model (stacking generator and discriminator)
        combined_model = tf.keras.Model(inputs=noise, outputs=validity)
        combined_model.compile(
            optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),
            loss="binary_crossentropy",
            metrics=["accuracy"]
        )

        i=0
            g_history = combined_model.fit(input_noise,
                                           valid_y,
                                           #batch_size=batch_size,
                                           epochs=10,
                                           verbose=0
                                          )
            g_loss = g_history.history['accuracy'][-1]
            if g_loss > 0.95:
                print('no')
                break
            i += 1

        r, c = 1, 5
        noise = np.random.normal(0, 1, (1 * 1, 100))

        # Display one of the images
        plt.imshow(gen_imgs[0])
        plt.axis('off')  # Hide axis
        plt.show()

# Convert to float and Rescale -1 to 1 (Can also do 0 to 1)
X_train = (X_train.astype(np.float32) - 127.5) / 127.5

#Add channels dimension. As the input to our gen and discr. has a shape 28x28x1.
X_train = np.expand_dims(X_train, axis=3)

# Build and compile the discriminator first.
discriminator = build_discriminator()
discriminator.compile(
    optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),
    loss="binary_crossentropy",
    metrics=["accuracy"]
)

#build and compile our Discriminator, pick the loss function

#SInce we are only generating (faking) images, let us not track any metrics.
generator = build_generator()
generator.compile(
    optimizer=tf.keras.optimizers.Adam(learning_rate=0.0002),
)

##This builds the Generator and defines the input noise.
#In a GAN the Generator network takes noise z as an input to produce its images.
z = Input(shape=(100,))   #Our random input to the generator
img = generator(z)

#This ensures that when we combine our networks we only train the Generator.
#While generator training we do not want discriminator weights to be adjusted.
#This Doesn't affect the above descriminator training.
discriminator.trainable = False

#This specifies that our Discriminator will take the images generated by our Generator
#and true dataset and set its output to a parameter called valid, which will indicate
#whether the input is real or not.
valid = discriminator(img)  #Validity check on the generated image

#Here we combined the models and also set our loss function and optimizer.
#Again, we are only training the generator here.
#The ultimate goal here is for the Generator to fool the Discriminator.
# The combined model  (stacked generator and discriminator) takes
# noise as input => generates images => determines validity

# The intended number for generation (0-9)
X_train_label_1 = X_train[trainy == 8]

train(X_train_label_1, epochs=100, batch_size=32, save_interval=10)

X_train_label_1.shape

E:\courses\LangChain Project\main root\data\GAN_transcript_part1.txt

خوب به نام خدا دوستان عزیز و ارجمند سلام وقت همگی بخیر و شادی ما امروز می‌خوایم در مورد شبکه‌های گند صحبت کنیم جزوه‌ای که من استفاده کردم جزوه دیپ جنریتیو مادلینگ درس اینتروداکشن تو دیپ لرنینگ دانشگاه ام ای تی توسط آقای الکساندر امینی و خانمشون آوا سلیمانی ارائه میشه و خب من فقط بعضی از اسلایدهای اینا رو فقط استفاده می‌کنم اگرچه ممکنه یه سری جاها خیلی سعی کنم به زبان ساده تری یه سری چیزا رو در حد فهم خودم بیان بکنم و اگه خدا بخواد برسیم یکی دو نمونه کدم تو این زمینه براتون ران میکنیم قرار نیست این اتفاق به درد همه بخوره اما بشنوید شنیدنش خالی از لطف نیست و اینکه با دانشی که تا الان داشتید چه کارهای عجیب غریبی میشه کرد و به چه دستاوردهایی میشه رسید خب طبیعتاً من همیشه اول ماجرا

یه سایتو به نام دیسپرسنت اگزیست رو می‌خوام یه بار دیگه که قبلاً ممکنه از گذشته به خاطر داشته باشید با همدیگه مرور بکنیم یه سایتیه که وقتی واردش میشید یه سری عکس‌هایی تولید می‌کنه و با هر رفرش شما خب این عکسو عوض می‌کنه و اتفاقی که میفته اینه که هیچ کدوم از این آدما وجود خارجی ندارن خب و این عکس‌ها کاملاً در واقع به صورت فیک تولید شده و البته به جزئیات خیلی توجه شده خب این هنر در واقع ریسرس های محاسباتی و استفاده از الگوریتم های بسیار به روز بوده خواهید دید که یعنی به این نقطه ها رسیدن همچین راحت نیست ولی به هر حال مسیرش میخویم با همدیگه مرور بکنیم و عرض کردم مواردی که اینجا میبینید خب از اینجا نشأت میگیره دیپ جنریتی ماد ها میتونن کاربردهای مختلفی داشته باشند من راستشو بخواید خیلی نمیخوام بهش ورود کنم شاید پایان باز بذارم برای اینکه خودتون بهش فکر کنید فقط همین قدر

با حوزه‌های جذاب هنری و سرگرمانه اینا شروع کردن به کار و جدی شد داستانشون اما الان تو غیر حوزه‌های سرگرمی هم میشه ازشون کارکرد گرفت نمونه تولید عکس‌های فیکه ویدئوهای فیکه صداهای فیکه اینکه فلان خواننده مرحوم هنوز مثلاً داره ازش صدا میاد بیرون اینا با تکنیک‌های جنریتیوه که یک یکی از روش هاست ما میخویم در مورد اون صحبت کنیم در واقع این باز اسلاید ها با همین شروع میشه اینکه میگه فکر می‌کنید کدوم از این عکس‌ها واقعی‌ان و مشابه همین چیزی که من خدمتتون نشون دادم اینا با شبکه های جنریتی معادل شدن اگرچه نمیدونم از چه سایتی بودن و هیچکدوم واقعی نیستند یه مقدمه‌ای داره در مورد سوپروایز و آنسروایز لرنینگ و فرق اساسیش اینه که توی سوپروایز لرنینگ شما لیبلی ندارید و کاربردهایی مثل خوشه بندی یا در واقع کاهش ابعاد و اینا رو داره

و یه مقدار در واقع چیزی صحبت می‌کنه چرا باید از مادلا استفاده بشه عرض به حضور شما عرض کردم علاوه بر اون ابعاد سرگرمیش اینکه شما یه سری جاها ممکنه بتونید دادگانتونو غنی‌تر و وسیع‌تر کنید به خصوص جاهایی که مثلاً از چند تا کلاس از یکیش خیلی داده دارید و مثلاً از یکیش خیلی داده ندارید و میخوید برای منظور خاصی استفاده کنید شاید روش‌های جنریتیو یا مولد به شما کمک کنند که برای اون دسته و کلاس در واقع با داده های کمتون یا کمترتون بتونید داده جنریت کنید و بتونید بعدا کارهای مقایسه بیشتری داشته باشید بله ولی آره ولی مثلاً منظورم تو آن بالانس و غیر تراز بودن با یک دیتا ست که اون خیلی دیگه مثلا قوی تره ولی اینم در یه حدی داره که بشه کارا رو انجام داد و کاربردهای مختلفی داره مثلاً مثالی که اینجا زده گفته آقا به دیتا ست سمت چپ نگاه کنید همه مثلاً رنگ پوست تقریباً یکسان و همه

خندانه در حالی که تو واقعیت ممکنه شما رنگ پوست‌های متفاوت پوزهای صورت متفاوت و وضعیت‌های مختلفی رو ببینید یا مثلاً توی عرض به حضور شما زمینه رانندگی خودکار توسط ماشین‌های خودران نوشته خب در ۹۵ درصد مواقع دیتا ست شما جاده های آفتابی صاف بدون بارون حتی بعضاً موجود در در واقع چیز هستند بزرگراه‌ها هستند در حالی که شما ممکنه با داده های هم تو واقعیت مواجه بشید که داده های خیلی نادری باشند ولی باید سیستم شما برای اونم آموزش دیده باشه که کار بکنه و اینجا روش های جنریتیو به کار ما میاد جزوه‌ای که اینجا مشاهده می‌فرمایید دو گونه روش های جنریتی و اساساً بیان می‌کنه که هر دو اساسشون لیتنت وریبل مادلز اند یا لیت وریبل رو ترجمه میتونیم بکنیم متغیرهای نهان خب

و اساس کارشون بر اینه که به جای اینکه به یه چیز ظاهری نگاه کنید اول یه متغیر نهانیو یا پیدا بکنید یا ازش شروع بکنید که اون متغیر نهانه حالا بتونه شما رو به اون در واقع جایی که می‌خواید برسونه و چیز مهمتری باشه که روش های اتوکودر و وریonال اتوک وی یه دسته از اونان و جنریتیو ادرسریال نتورک یا گن ها یه مدل های دیگه که می‌خوایم در موردش صحبت کنیم و در هر دو شکلی که میبینید مستطیل های نارنجی رنگ که توی شکل سمت چپ وسط تصویره و تو شکل سمت راست سمت چپ پایین تصویره اون لیتنت وریبل ما هم یا متغیر نهان ما اند که حالا می‌خوایم ازش استفاده کنیم اساس کارش هم عرض به حضور شما از این نقاشی میشه مثلاً به هر حال توصیف بیشتری کرد اسم نقاشی رو اگه بذاریم راز غار این مدلیه که فرض کنید یه دیواره وجود داره که یه سری زندانی اند و

مجبورند که به این دیوار تکیه بدن و مقابلشونو نگاه کنن یه آتیشی پشت مشتا وجود داره و یه عده‌ای دارن رد میشن و یه سری چیزا دستشونه این زندانیا هیچ وقت واقعی اون ماجرا رو نمی‌بینن و فقط دارن سایه اونو روی دیوار می‌بینن ها حالا ماجرا اینه که چجوری با دیدن این سایه بشه رفت تو لیتن وریبل که اصلی ها باشن و روش بشه حرف های بیشتری زد و از اون حالا به جاهایی که میخویم برسیم خب این در واقع این چیزه برای اینه من روش های اتو ان کد رو میپرم اصلاً کاری ندارم از دلتون خواست به جزوهش نگاه کنید و وی دلتون خواست برای خودتون نگاه بندازید اگر این جزوه خیلی خلاصه است یعنی جزئیات زیادی نمیگه فیلماش هم رو یوتیوب هست درسنامه که خود خانم سلیمانی میدن تو این زمینه مطرحه اما ما می‌خوایم بریم در مورد روش های گن یا جنریتیو

سریال نتورک صحبت کنیم ادور سریال معنی حریفان بودن متخاصم نمی‌دونم دعوایی میده خوب و عنوانش مشخصه که اولاً و نتورکشم تک نتورک نتورک خب یعنی شبکه‌های حریفانه شبکه‌های متخاصم و اینجا میتونید متوجه بشید که اساس کارش اینه که ما دو تا شبکه رو بندازیم جون همدیگه خب یا حداقل دو تا شبکه رو بندازیم به جون همدیگه که بخوان با همدیگه یه رقابتی بکنن و یه چیزی رو برای ما در بیارن خب حالا بحث های علمی تخصصی پشتش وجود داره من اجازه بدید خیلی سعی کنم به زبان ساده صحبت بکنم میگه که اولا یه حس و حالی یه چیزی ازتون بپرسم ببینم قبول می‌کنید یا نه اگر قبول میکنید حالا بعدش میریم اینو میگیم فرض کنید فرض کنید من عکس تمام آدم‌های دنیا رو بگیرم مثل خودمون نمونه‌ش مثلاً ما بیست سی نفری که

یک صفحه دو بعدی یا توی صفحه مثلاً ۱۰۰۰۰ بعدی بیام به ازای هر کدوممون یه نقطه بزارم محور شماره عکس بنده یا از نقطه یک دو اون صفحه بتونید بعداً منو باز تولید کنید بسازید مثلاً شما بشی یکی دیگه و الی آخر حس و حالی ازتون می‌پرسم فکر می‌کنید که انسان‌های دنیا نقطه‌هاشون میشه یعنی هر کی یه جا میفته یا نه به نظرتون یه مرز پیوسته ای ممکنه با حالا مثلاً مرز خیلی عجیبی باشه از لحاظ انحنا و اینا ولی وجود داره پیوسته که همه آدم های دنیا اونجا بیفتن حس و حالتون چی میگهچ فرض کنید چرا خیلی مناسبی انتخاب شدن حس و حالتون آیا می‌پذیره که یک فضای پیوسته‌ای باشه که هر نقطه‌ای تو اون بردارید یه آدم باشه حالا یه آدم‌هایی که تا این

خلق شدن ها یا آدم‌هایی هستند که چی می‌توانستند خلق بشوند ها یه همچین چیزی و پیوسته است حس و حال آدما میگه پیوسته پرنده‌ها پیوسته باشند خب و حتی مرزهایی وجود داشته باشه که مثلاً گنجشک و کبوتر جدا بشن یا به یه پرنده هایی برسیم که یه چیزی بینابین اینان که حتی ممکنه تو واقعیت هم دیده باشیم خب و اگه فضاها رو بکشی بیا فضاهای منیفولدای خیلی خیلی خیلی عجیب پیچیده برسیم شبیه اون چیزی که سمت راست کشیده و اسمشو گذاشته اکس خب حالا ماجرا اینه که من توی روش‌های گند نمیتونم مستقیم اون منیفولد اکس رو پیدا کنم یه حقه میزنم میگم از یه نویز ساده زد شروع میکنم یه سوال پرسید چند جلسه قبل گفتم تا گن صبر کن گفت آقا ما تا الان همیشه وقتی عکس بهش میدادیم میومدیم با شبکه کوچیکش می‌کردیم به یه عصاره می‌رسیدیم آیا برعکسش میشه رفت جلو یعنی عصاره رو بدیم برسیم به عکس اصلی پاسخش اینه که بد میشه خب و

ساده عصاره که همون زد باشه و البته ما از نویز شروع می‌کنیم میریم جلو و به یه چیز پیچیده‌تر می‌رسیم که ما رو بندازه تو اون فضای ایکس آبیه که در حالت عادی نمی‌دونستیم دیستربیوشنش چطوریه یعنی با نویز تلاش می‌کنیم و یه سری سمپل خودمون رو تو اون بندازیم و انشالله که جواب بگیریم خب یه چیزی داریم یه شبکه‌ای داریم به نام شبکه جنریتور که با جین نشونش بدیم و این شبکه اصلی ماست ولی خوب ماجراش اینه که در حالت عادی اگر بخواهید از یه نویز شروع بکنید و جنریتور شما یه عکس خوب براتون تولید کنه با چی میخوید مقایسهش کنید لاس شما چه خواهد بود ها یه عکس تولید شد اون موقع بگید چیه این عکس خوبه یا بده چجوری میخوید مقایسهش کنید برای اینکه این لاسه رو یه جورایی براش بسازن از یه شبکه متقابل استفاده میکن به نام شبکه دیسکریمتور یا تمیز دهنده خب که قراره این دو تا به جون هم بیفتن و خلاف جهت همدیگه عمل کنن خب

اساس کار گنو تو این تصویر می‌بینید و کل چیزی هم که باید ببینید بدونید فقط تو همین تصویره من تلاش می‌کنم کل درس همین الان بگم مثلاً تو دو سه دقیقه خب اساس کار در واقع شبکه‌های گن این مدلیه میگه شما یه نویز دارید خب که میتونه مثلا چه میدونم اولش ۱۰ بود ۲۰ بعد داره ۲۰ تا عدد رندوم مثلاً با میانگین صفر از دیستربیوشن نرمال گوسیه با انحراف معیاری یک گزینش می‌کنید خب ۱۰ تا ۲۰ تا ۱۰۰ تا می‌دید به یه شبکه‌ای و یه جورایی مثلاً به یه عکس فرض کنید ۳۰ در ۳۰ درش میارید خروجی شبکه جی یه عکس ۳۰ که این چیه عکس فیکیه که شما تولید کردید خب و می‌خواید ببینید این چقدر خوبه یا نه طبیعتاً شبکه جی باید ترند بشه دیگه حالا بهتون میگیم باید چیکارش کنیم یه شبکه دیگه می‌سازید به نام شبکه دیسکریمتور که با دی نشونش میدن و معادل تمیز دهنده معنیشه خب این

دو گونه ورودی می‌تونه از شما بگیره یا عکس‌هایی که شما با جی تولید کردید یا عکس‌های واقعی بگیره مثلاً فرض کنید من می‌خوام یه سری کاریکاتور بکشم ۱۰۰۰ تا ۱۰ هزار تا کاریکاتور رو دارم و می‌خوام کاریکاتورهای فیک بکشم خب ۱۰۰۰۰ تا کاریکاتور به عنوان عکس ایکس ریل دارم و هر تعداد دلم بخواد که حالا ده هزار تا ۵۰۰۰ تا ۱۰۰۰ تا می‌تونم با چی جنریتور تولید کنم شبکه دیسکریمتور وظیفهش اینه که چیکار کنه عکس واقعی رو که بهش میدید بهتون بگه واقعی اند عکس فیک بهش میدید بهش میگه فیک دیسکریمتور در حالت عادی یه شبکه عادی خودمونه مثلاً کانولوشنیه چند لایه می‌زنید لایه آخرش هم سافت مکسه چیزه سیگمایده یه بله یا خیر یک یا صفره یک یعنی که چیزیدکستون رییل بوده صفر یعنی فیک بوده خب حالا دیه لحظه اول نرمال چیز شده رندوم اینشیالایز شده جی هم لحظه اول رندوم اینیشیالایز شده هدف چیه

هدف اینه که دیه تا جایی که میتونه درست بگه که فیکاوریلا کدومن هدفش اینه که دی رو گول بزنه و ایکس‌های فیکی تولید کنه که دیگه نتونه بگه فیکه و اینجا در واقع مقابله بودن و دعوا راه میفته خب حالا در مورد اینکه چه جوری ترینش کنیم صحبت می‌کنیم چون شما احتمالاً دید نداره چه‌جوری پیاده‌ش کنید خب خب ماجرا اینه که ماجرا اینه که این کلیات بحث رو شنیدیم من یه بار صحبت می‌کنم بعد حالا میریم روش جزئیات بیشتر رو نمونه و اینا می‌بینیم خب بفرمایید نه حالا فیدبک از وایz نیست داستان های که هنوز هم چلنج ها که باید بالاخره دی و جی رو چجوری آپدیت کنیم چون دو تا شبکه خب اگه بخوایم علمی صحبت بکنیم خب اگه بخوایم علمی صحبت بکنیم عرض به حضور شما که این عکس رو به خاطر بسپارید یا من

کریم بگیرم یه لحظه می‌خوام به خاطر تو میمونه یا یه بار دیگه بکشمش می‌خوام بیارم تو ویندوز ژورنال خب این عکس رو بچه‌ها یه بار دیگه یه بار دیگه فقط چشمی ببینید که یادتون باشه اینجوری بود که با نویز شروع می‌کردم نویز از جی میگذشت جیه برای من خروجی تولید میکرد معادل اون خروجی دقیقاً با همون سایزش مثلاً اگه ۲۰ در ۲۰ باشه عکس ریل داشتن و اینا رو می‌دادن به یه شبکه‌ای که فقط به من با سیگمای تهش میگفت که درسته و حالا می‌خوام در مورد این صحبت بکنم ببینید جانم در حساب میشه نه هر دو الان سوپروایز خب هر دو سوپروایزن دی بهش بله بله بهش میگیم میگیم برو ترین شو به جی حالا یه جور دیگه حرف میزنیم اجازه بدین اینو اول همین سوالی که پرسید رو بگم بعد چیز کنم ادامه بدم در مورد ریاضی صحبت کنیم ببینید این شبکه

یا شما در جا می‌خواید چیزش کنید حالا لاست فانکشن یا آبجکتیو شو بهینه کنید یا نه فرق کاس فانکشن آبجکتیو چیه آبجکتیو تا به هدف کاسپانکشن تا به هزینه است ما دوست داریم چیو چیکار کنیم کاس فانکشن مینیموم کنیم آبجکتی ماکسیموم کنیم یه راهش هم اینکه کاست آب منفی هم بگیریم دیگه ها خب حالا بستگی داره که اینجا آبجکتیو برای شما مثال بزنم یا چیز به اصطلاح کاستوم آبجکتیو دی اینه که چی عکس تشخیص بده و عکس های فیک درسته آبجکتیو میشه اینجوری نوشت حالا این اکسپکتد ولی یعنی اکسپکتیشن زمانی که داده ها رو از عکس های واقعی در میارید اینه که ال ان خروجی دی باید چی باشه باید ماکس یک بشه این آبجکتیو

آبجکتیو دیه خب این این بره به سمت یک خب عرض به حضور شما که این باز بره به سمت ماکسیمم شدن و در ضمن چه اتفاقی بیفته عکس‌هایی که از دومین p زد میان چه اتفاقی براشون میفته به سمت چی برن سفت برن یعنی لاگ یک منهای دیجی چی بشه ماکسیمم بشه درسته یعنی جی زد بره به سمت صفر ها و عرض به حضور شما که و لاگ یک منهای این بره به سمت چیز شدن حالا آبجکتیو که این ماکسیمم بشه یه همچین چیزی باید جمع این دو تا می‌خوام با هم اتفاق بیفته به سمت صفر یعنی اینکه اون چیزی که جی تولید کردم تشخیص بده فیک احس اونی که جی تولید کرده رو دی تشخیص بده که فیک خب از طرفی

عرض به حضور شما آبجکتیو جی چیه آبجکتیو جی چیه اینه که برخلاف دی یه دیدگاه اینه که بگیم ایه چیزایی که از اکسپکتیشن چیزهایی که از دومین زد برداشته یک منهای دی جی منفی ماکسیمم بشه یا یه دیدگاه اینه که بگیم لوگ دی جی ماکسیمم بشه قبوله یعنی دی جی بشه یک برای آبجکتیو جی خب گیم یا بازی یا تقابل به وجود میاد خب پارامترهای دی و جی باید چجوری توسعه پیدا کنند وقتی که با هم میبینیمشون با هم میبینینشون آبجکتیو نهایی سیستم

اینجوریه اگه میشد حل تحلیلی براش ارائه داد اینه که ما البته تحلیلی حل نمی‌کنیما باید پارامترهای شبکه دی و جی جوری انتخاب می‌شدند تتای جی رو بذارید تمام پارامترهای شبکه جی مثلاً تمام دبلیوها و یاس‌هاش و تتای دی هم بزارید تمام دبلیوها و بایاس های چی شبکه دیسکریمتور باید جوری انتخاب می‌شدند که اکسپکتیشن ایکس های واقعی وقتی میاد لاگ دی ایکس به ازای تتای دی ماکسیمم بشه و همینطور وقتی از دیستربیشن زد میاد لاگ یک منهای دی تتای دی جی تیتا زی روی زی چی بشن باز این برای دی ماکسیمم و برای جی چی بشه مینیمم بشه اگه مثلاً دی یه دونه پارامتر داشت کلا شبکه

پارامتر بود آبجکتیو رسم می‌کردید و تتای دی و تتای جی رو رسم می‌کردید کدوم نقطه نقطه جذاب ما بود یه نقطه‌ای می‌خوام که نسبت به دی ماکسیمم نسبت به جی مثلا مینیموم باشد کجا میشه از چه جنسیه نقطه زینی سدل پوینت پس آبجکتیو من اینجا به ازای یک ماکسیمم یا یک مینیمم نیست این نقطه‌های صدل پوینت جذابی رو می‌خوام پیدا کنم که این اتفاق براش بیفته خب ولی ما اینو تو واقعیت اینجوری حل نمی‌کنیم بسته حل نمی‌کنیم تو واقعیت ما چه‌جوری حل می‌کنیم تو واقعیت این کارو می‌کنیم اول جی و دی و اینشیالایز میکنیم دو تا شبکه خب که دوتاشون تو دیواره خب جی و فیکس می‌کنیم یه پارامترهاش دست نمیزنم بلدید چیکار کنید ترینبلش اگر لازم شد فالس میکنید یا اینکه اصلا وارد بازیش نمی‌کنیم به دی چی ورودی می‌دید فرض کنید که ۲۰۰ تا عکس ورودی میدید که ۱۰۰ ت

کاریکاتورهای واقعیت ۱۰۰ تاش کاریکاتورهایین که جی از زی تولید کرده مثلاً من یک بار زدو دادم چی یه بردار ده در یک از چیز نرمال سی گرفتم و به یه جی دادم که تونسته یه عکس ۳۰ در سی برام تولید کنه عکس‌های ۳۰ درسی کاریکاتورهای واقعی هم دارد خب میام چیکار میکنم به اون تقریباً عرف به اون اندازه‌ای که از ریل دارم فیک تولید می‌کنم مثلاً ۱۰۰ تا از این ۱۰۰ تا از اون لیبل چی میزنم یک میزنم لیبل واقعا صفر میزنم یعنی سوپروایزش میکنم میدم به دی میگم دی تو برو یه چیزی تنظیم بکن که اینا رو یک تشخیص بدی اینا رو صفر خب و برو جلو یا یه ای پاک یا ممکنه بیشتر برم اوکی دی تا یه جایی میبرم که او تا حد خوبی یا حد کفایت کننده روی ۲۰۰ تا داده خوب جواب بده فیکسش میکنم حالا فریزش میکنم حالا باید برم سمت جی

فریز شده حالت قبلی یعنی دی که یک بار آپدیتش کردی بده به اون دی که فریزش کردی یه لیبل بهت میده باید چند بهت بده باید یک بهت بده باید یک بهت بده پس شبکه جی باید جوری ترین بشه که وقتی تولید کرد دی جی بشه یک خب پس اون ولی دی خودش نباید پارامترهاش عوض شه که اینجا تو کدهایی که می‌نویسید میاید درسته دی جی رو حساب میکنید و لاسش با این مقایسه میکنید که یک ولی خود دی رو ترینبلش فالس میکنید تا دیگه دی آپدیت نشه جی آپدیت میشه اینجا و این برنامه رو انقدر ادامه می‌دید تا انشالله به جای خوبی برسید خب یه جایی که حس کنید داده هایی که دارید تولید میکنید معقوله جای خوب نهایی هم

دیگه نتونه بین ریل و فکر تشخیص خوبی بده و ۵۰۵۰ هم بگه که در نهایت چیز کنید به اصطلاح یعنی میگن خرش کنیم دی رو می‌خوایم فولش کنیم خب و گیجش کنیم و نتونه بفهمه چی واقعیه چی در واقع فیکه کلاً خیلی ایدئال من اینه که تمامی عکس هایی که تولید می‌کنم توسط جی دقتش بره به سمت ۱۰۰ یعنی وقتی دی جی روش اعمال میکنن ها و توی دی هم دقت ها مثلا باشه مثلا اون رندوم بگه هست یا نیست یعنی نتونه تقریباً تخمین بزنه که چه اتفاقی داره میفته الان باید هر چی از دقت صفر نتونه تشخیص بده وقتی که وقتی که میخوید دی ترین کنید ترین تمام شد تمام شده

شبکه رسیدیم به ته شبکه رسیدیم وقتی جید عکساش تولید میشه دی ۵۰۵۰ بگه فیکه یا ریال یا به اون نقطه برسه یعنی کلاً یا نه یا شاید بد گفتم شاید ۱۰۰% خودم شک کردم به سمت بالا دیگه تا حد امکان بره به سمت بالا خب و در نهایت ما دی رو میندازیم دور دی فقط نقش جی بازی کرد یعنی یک مسئله سوپروایز رو که نمیدونستیم آدما چجوری کاریکاتور چجوری اند با یه دیقه زدیم براش یه طوری تعریف کردیم دیگه پاک میکنیم میندازیم کنار و از جی استفاده میکنیم کلا از این به بعد خب این از این این کلیات ماجراست حالا یه سری مباحث پیش میاد و جزئیات حالا میخویم در مورد اینا صحبت کنیم یکی اینکه دی و جی عرفاً باید از یک چیز باشن اوردرراف باشه تعداد پارامترها متغیرهاشون نباید

خیلی قوی یا جی خیلی قوی باشه مثل یک معلم و شاگرد خب اگه شما یک معلم خیلی خیلی خیلی قوی سختگیر انتخاب بکنید مثلاً یه میلیون تا پارامتر داشته باشه ۵۰ هزار تا احتمال داره هیچ‌وقت اون بهش نرسه خب اینی که دی و چند تا ایپاک بدیم جی و چند تا ایپاک بدیم یعنی من که یه دور دی رو دارم آپدیت می‌کنم بعد میرم جی دوباره میرم دی دوباره جی چیکار کنم این واقعا محل یعنی چیز ها جای بحث داره هنوز که هنوزه دارن روش کار می‌کنن یه سری مقالات نوشتن یه عده نوشتن یه مرزی بزار خیلی نرید جلوتر یه عده مثلا نه پنج پاک ده پاک میرن تا دیه به اندازه خوبی قوی بشه چون لااقل ایکس که بتونه بگه یکه چون وقتی اولش رندوم ایکس نمیتونه بگه یک ها و بعدش بیاین سمت چی اینا جای اعرابه و خیلی جا بازی داره یعنی برخلاف قبلیا هایپر پارامترهایی که دستتونن و حقه هایی که باید بزنید تا به نتایج خوب برسید خیلی زیادترن برای بخواید یک ممکنه به علت محدودیت منابع محاسباتی و دو به علت پیچ

از آب و گل درش بیارید این طرحتونو خوب و ولی به هر حال این اتفاقی که پشت ماجرا میفته خب این بفرما هر وقتی اولش حداقل درست کنه بعد با هم ترین یعنی چی اگه بخواید دو خب یعنی اگه بخوای آبج آبی من بزاری باید حقه کد زنی بلد باشه که اینو برات پیدا کنه خب باز دوباره اینم دو مرحله اش میکنه تو واقعیت درسته یه تابعی مینویسیم که ترینه که من اتفاقاً نمونه کدی که براتون آوردم همینه یه تابع تهش دادیم دستی نوشتیم ترین

ولی اون دو مرحله‌ای میاد می‌کنه یعنی بالاخره یه مرحله اول جنریتور و میچرخه ولی من با هم دیدنشو با هم بودنش که همزمان دقیقاً همین آبی رو که نوشته بودم شاید مثلا اینم الان روش های به روزترشه خب داره استفاده میکنه اشکال هر کسی از دیت نه میدونم ولی نگاه کنید زمانی الگویی که گفتم اول که میخوید بدید دی تعیین کنه ما با جی ثابت یه سری عکس تولید میکنیم میدیم به دی اینقدر دی رو میزنیم تو سر کلش که قوی شو آقا ریل ها را ریل واقعا تشخیص بده چون حالا فیک ها رو که خب رندوم اولش میگه ولی احتمالا ریل ها رو بتونه بگه یکم احتمال داره واقعا باز فیک ها رو راحت تر بتونه بگه صفر چون خیلی فرق میکنه بعدش چیکار می‌کنید حالا دیگه قوی

رندوم خودش یه خروجی تولید می‌کنید بعد خودش که لاست نداره میدید به دی دی باید اینو یک تشخیص بده میگیم جی و جوری تغییر بده که خروجی سبب بشه دی اینو یک تشخیص اینقدی میرید جلو تا به همون عرض کردم به یه نقطه آره نمیدونم موازی یا نه شاید مثلاً از دید من سری یعنی یه جی و فریز کردید دی رو میبرید جلو یه جا دی و فریز میکنید جی اگر قوی میشن نمیدونم خب اینجا همون جایی که احتمالا مقالات میگن پاک از اون یعنی نیازی نیست خیلی شاید همین حرفی که ما زدیم و بیان میکنه میگه آقا اول جنریتور شما چیز میکنه داده های

برداشته که خیلی پرت و پلان بعد چند تا داده واقعی نشونش میدید و دیسکریم میاد ترین میشه انقدی ترین میشه که سبزها رو یک و نارنجی‌ها رو چی احتمالشو صفر تشخیص بده بعد جنریتور حالا نوبت جنریتور قوی بشه صورتیاشو میاد نزدیکتر به سبزه برمی‌داره خب چون فهمیده حالا دی قوی بغلشه بعد انقدری میزنه تو سر کله خودش که سوئیچ میکنه و فلان فلان در نهایت داده‌هاش انقدی می‌افتن تو هم یعنی جنریتور شما اینقدر قوی میشه که وقتی داده های خوبی انتخاب میکنه قاطی سبزها اند و دیگه دیسکتور کلا کم میاره و الی آخر و در نهایت هم چیکار می‌کنید در نهایت هم بعد از اینکه به نقطه خوب رسید رو میندازید دور کلا با جنریتور به زندگیتون ادامه می‌دید خب استفاده نکنید مدل های ترین شده دیگران استفاده کنیم مثلا موبایل

موبایل آیا کاریکاتور یک تشخیص میده یا نه یعنی احتمال از صفر صفر اینشیالایزش کنید واقعا اگر شبکه خوبی دارید خوب استفاده کنید ولی ماجرا اینه که سوال من دقت کنید بچه ها سوال من الان این بود یه مشتی کاریکاتور دارم بهش گفتم تو هم برای من کاریکاتور بکش ولی فعلا بهش نگفتم کاریکاتور چی بکش و اینا مسائل جداین یکی یکی میخوام بهش وارد شم خب و اینی که دیسکریمتور باید بتونه کاریکاتورهای واقعی رو بگه کاریکاتورن همون اولش و

E:\courses\LangChain Project\main root\data\GAN_transcript_part2.txt

نویز بدیم عکس‌های واقعی نه عکس عکس تولید میکنه چی میخوای مقایسه کنی لاست چیه لاست شبکه آپدیت کنم صحبت کنم جی چجوری اینجوریه ما تا حالا همش اینجوری بودیم خب ما همه از بزرگ به کوچک میومدیم الان چجوری از کوچک به بزرگ بریم در موردش صحبت کنیم هر چیز برای هر عکس نویزی فرض کنید این شکلی درست نه اینجوریه که کلا مثلا شما یه عکس ۳۰ صد در صد میخوای بسازی تو خروجی جی هیچ لزومی نداره اولش ۳۰ در ۳۰ تا یعنی ۹۰۰ تا عدد رندوم انتخاب کنیم تو یک چیز کوچک مثلا ده تایی ۲۰ تایی ۱۰۰ تایی انتخاب می‌کنی بعد با آپولوشن ها اینا رو بزرگ میک تا برسی به ۳۰ درصد خب این ۳۰ رو حالا رسیدی میخوای شبکه تو آپدیت کنی باید یه لاس داشته باشی لاس فانکشن چی خواهد بود من عرض کردم دی فقط در واقع کمکی لاس

که من دی جی رو پیدا کنم و بهش بگم این باید جی باید تو انقدی قوی بشه که دی جی یک باشد خب بچه‌ها این شهود گرافیکی بهتون می‌خواد بده میگه که زد که همون لیتنت اسپیس باشه دنیای بعضاً قابل تفسیر و جذابیه خب میگه یه نقطه توش انتخاب کنید فرض کنید به یه جنریتور خیلی خوب و قوی رسیدیم که میتونه پرنده تولید کنه یه یه نقطه تو فرض کنید اینجا دو بعدی بوده از یه نرمیشن دو بعدی یه نقطه انتخاب میکنید و اینو میدید به جیتون و یه عکس پرنده براتون تولید میکنه که الان دارید پرنده رو میبینید خب میگه یه زد دیگه تولید کنید یه پرنده دیگه میشه قبلی مثلا چه میدونم قد بلند بود سیاه بود این جدید قد کوتاه رنگی رنگی خب میگه که فضای بین این زدهایی که اول همدیگه رو به هم وصل میکن هم خب وقتی یه زدی برداری بدی به

خوب ترین شده باشه باز همون داستان منیفول پیوسته است که خودتون حس و حالتون گفتید و باز میره پرنده تولید میکنه ولی پرنده‌ها شروع می‌کنه عکسشون یکی یکی عوض شدن و یه جایی به هم تبدیل میشن از پایین سمت چپ به پایین سمت راست نگاه کنید پایین سمت چپ و پایین سمت راست دو لبه بوممونن یکم که مثلاً زدشو تغییر دادم به سمت اون یکی حرکت کردم پرنده مثلاً قدش داره کوچیک‌تر میشه بعضی روش داره به سمت شما برمیگرده کم کم درسته بعد تو اون وسطیه یه عکس البته یک نامناسبه خیلی وسطی این چهارمی از سمت چپ نامناسب شده پنجمی از سمت چپ یا چهارمی از سمت راست در واقع یه پرنده قد کوتاه سیاه شده که داره به سمت چپ نگاه میکنه و بعدش که رفته جلوتر چی شده رنگی هم شده که داره به سمت چپ نگاه میکنه یعنی این مسیر زده قابل راه رفتنه قابل تفسیره خب و این لیتنت اسپیس خیلی جذاب و خوبیه که

داستانی که گفتم آدم‌های دنیا رو ممکنه بتونیم کلی آدم دیگه که الان وجود نداشتن چیکار کنید پیدا بکنید خب این ماجرای اول که ما فقط عرض کردیم مثلاً یه مسئله‌ای از این جنس داشتیم یه دسته کاریکاتور داریم بهش می‌گیم یه شبکه جنریتور می‌خوام که کاریکاتور برام بکشه ولی بهش نگفتم کاریکاتور چی بکشه خب یا یه مشت صدا و ویس دارم از فلان خواننده میگن آقا یه ویس از این خانم خواننده برام تولید کن ولی دیگه نمیدونم محتواش چی باشه درسته و فقط قراره صدا رو رعایت کنه اما گام های بعدی که تو واقعیت اتفاق میفته و خدمتتون بگم اولین ماجرا اینه که این عکس های که دیدید تولید کرده بودن مثلاً فرض کنید هزار در هزار پیکسل خب و خیلی عکسای باکیفیتی بودن که چه میدونم این دیسپ پرسنت اگزیستر تولید میکنه این عکسایی نیست که شما بتونید با یه شبکه گن عادی ببرید جلو قبل این ادامه بدم بچه‌ها در مورد چی صحبت بکنم

بزرگش کنم خب یه ماژولی توی چیز وجود داره تو کراس خب به نام عرض به حضور شما ترانسپوز کامپولوشن ترنسپوز کان بعد تایپ کردن حالا تو ترانسپوز لیر مثلا خب این اینجوریه که می‌نویسید کان دو دی ترنسپوز و از شما چی میگیره شبیه عادی فیلتر میگیره دو نوع پدینگ دو نوع پدینگ داره عرض به حضور شما که درست دارم میگم دیگه نه یه پدینگ میتونن حالا دو نوع پدینگ کلا براشون تعریف میشه من سعی میکنم نشونتون بدم حالا دلتون خواست برید اینجا رو نگاه کنید چون چاره‌ای ندارید که از آپشن یا ترانسشن استفاده بکنید تا زدتون که اول مثلاً ۱۰ در یک یا پنج در پنجه باید بیارید به مثلاً یه

سی در سی تبدیلش کنید و خیلی هم لازمه که تنظیم کنید عکس دقیق بزرگ بشه یعنی اگه عکس ۳۰ در سیتون خاص بشه ۴۰ در ۴۰ شما باید تو پارامترهای کانولوشن ترانسپوزتون دست ببرید خب من ترانس ترنس پوزد کانولوشن بیارم عرض به حضور شما که یه سایت خیلی خوبی بود یه فرومی بود فیلتر یعنی الان باز نمیشه چند تا چیز دیگه رو بیارم بهتون نشون بدم خدمتتون عارضم که یه عکس خوبی انتخاب کنم ببینم دارم می‌گردم خب آها این مثلاً یکیش خب بچه‌ها عکس سمت چپ به عکس سمت راست نگاه کنید عکس شما اولش دو در دو مثلاً زد صدای شما اند خب یه فیلتر سه در سه روش انداختید و می‌خواید ترنسپوز کامولوشن بزنید فعلا فرض کنید

فعلاً فرض کنید که پدینگ و اینایی هم نداریم خب چه جوری رقم میخوره میگه بیا خونه اولشو خونه اول سمت چپیه رو در تک تک سه در سه ضرب کن حله بزار توی پک پچ سه درسه بالای سمت راستتون که عکس خروجیتون عکس خروجیم الان قراره گنده‌تر از ورودیم بشه بغلیاشو چه‌جوری حساب می‌کنید خونه دومه که آبی نشونش داده رو چیکار کن فکر می‌کنی دوباره در هر نقطه ضرب کن کجا بنویس دومی اولین ستون اینو بزار توی ستون دوم اون عکسه و با درای قبلیش جمع بزن خب دومیشو بزار توی ستون سمت ستون سوم عکس سمت راسته و باز با درایاک قبلی ناشی از قرمز جمع بزن ستون آخر که چهارمش به دست میاد چیه جدیده دیگه هیچکی اورل نداشته حله متوجه شدی چی

عکس خوب پیدا کنم دیگه خب اینجا الان اینجوری نگاه کنید اول خونه قرمزه رو یه سه در سه می‌سازید استراید دو دارید دو تا می‌پرید جلو دومیه رو آبیه رو در سه در سه ضرب می‌کنید ۹ تا عدد دارید نه تا رو می‌ذارید روی عکس جدیده فقط اگه زیرش عکس داده قدیمی داشتید چیکار میکنید جمع میزنید بعد دوباره دو تا میاید پایین همین کار برای دوت خونه پایینی اینم انجام می‌دید حالا چه اتفاقایی میفته کانولوشن چیز ترانسپوز کانولوشن رو باید بازش بکنیم بفرمایید شما خارج بشه بذار بشه دیگه جی قراره دیگه اینقدر بره قوی بشه که بره شما رو مپ کنه از فضای گاوصی به یه فضای دیستربیشن جدیدی که اصلا نرمال نیست مثلاً ممکنه دیستربیشن آدم

دستگاه ۱۰ هزار بعدی واقعا نرمال نباشه با یه چیز پیچیده عجیب غریب منیفولد عجیب غریبی باشه خب و این اتفاق این کارو برای ما انجام بده دیگه اگه هرچی هم دیتا ست غنی‌تر باشه این چیز میکنه این شانس اینو داره که هی بره بیشتر بگرده و جیشو قوی و قوی تر بکنه و به اون منیفولده نزدیکتر بشه بچه‌ها این می‌تونید کانولوشن ترنسپوز چند تا اتفاق میفته من همینجوری بیان کنم دو نوع پدینگ داره یه پدیده داره وقتی میزنن برخف پددای قبلی که بود یه صفر اضافه میکردیم یه سطر و ستون از هر طرف عکس تولیدی کم میکنه این یه نوع پدینگشه یه پدینگ دیگه هم داره که یه ستون صفر و یه سطر صفر به سمت راست و چپ عکس تولیدی اضافه میکنه خب نه دور تا دوررا یه ستون سمت راست عکس یه ستون پایینش حالا یه نقطه جدید خودم دارم دیگه صفر اضافه میکنه این

تو فیلم‌های علی قدمی که توضیح داده از پارسال هست من چیز داریم چون این یکی از این فروم‌هایی که اینو داره راستشو بخواید فیلتره و من الان نمیتونم تو گوگل عکسشو پیدا کنم که بهتون نشون بدم همه حالت‌هاشو نوشته خب همه حالت‌های مختلفشو نوشته این آها اینه پیداش کردم اگه بقیش هم بیاره این مثلاً بچه‌ها نگاه کنید عکس سبزه اولیه آبی تولید شده آبی کمرنگ کله آبی پررنگ تولیدیه الان کل سه درصد استراید یک پدینگ صفره چی باید تولید کنه چند در چند دو در دو بهش بده چند در چند بهتون بده باید چهار در چهار بده منطقی نیست انشالله که هست درسته این اگه ویزیت بزنم این سایت خوب است که میخوام فکر کنم بالا نمیاد جانم با فیلتره هیچی حالا برید سایت برید بقیشو نگاه کنید خب لطفاً

چیزتون استرایدتون چند باشه پدینگ داشته باشید یا نه عرض به حضور شما در مورد پدینگ و اوت پوت پدینگ صحبت می‌کنه پدینگه اونیه که یه لایه صفر از خروجی کم کن مثلاً پدینگ یک باشه باید خروجی الان اون چند در چند بشه به جای چهار در چهار دو در دو بشه یعنی یه لایه از صفر یه لایه کلاً از سطرها و ستون ها از دو طرف کم میکنه یعنی دو تا ستون کم میشه اگه پدگه یک باشه اگه اوت پوت پدگه یک باشه چیکار میکنه یه لایه صفر به سمت راست یه لایه صفر به پایین عکس آبی اضافه میکنه یعنی میشه ۵ در ۵ آبی پر رنگه جان نه برای اوت پوت پدینگ اضافه میکنه پینگ عادی حذف میکنه دوتاشو داره این کاربردهایی داره که چیز کنید چون سایزتون تنظیم کنید اینجوری که باز باید بریم جزئیاتشو بخونیم الان خودمم نمیدونم ولی این شانس

چالش‌های کلاً شبکه‌های گن اینه که شما باید همیشه خروجیتون جوری تنظیم بشه که با ورودی چیزتون ترینتون یکی باشه با ورودی دیتا ست اصلی‌تون دقیقاً باید یکی باشه خب بچه‌ها تا حالا داشتیم در مورد گن عادی صحبت می‌کردیم اولین چالشی که وجود داشت این بود که گن عادی نمی‌تونست یه عکس هزار در هزار رو به راحتی براتون اینجوری تولید کنه یه ایده اومد به نام پراگرسیو گروینگس یا بهش میگفتن که اینجوری بود که از عکس چهار در چهار شروع می‌کرد اول دیسکریمتور و جنریترش جوری ترین میکرد که چهار در چهار رو بتونه فیک و ریلش از هم تشخیص بده بعد هشت ولی آخر بزرگش می‌کرد تا در نهایت این چند مرحله گنش آورد بالا تا بتونه به چی۲۴ در۲۴ برسه که هیچ بعید نیست که اگر این در واقع دیسپرسنت نات اگزیست اساس کارش دیفیوژن نباشه و گن باشه هیچ بعید نیست که این کارو کرده خب

عرض به خدمت شما ماجرای بعدی که یه سایت دیگه‌ای بود نمی‌دونم بتونم پیداش کنم اینه که دش بینش وجود داره این یه سایت دیگه است ماجرای بعدی شبکه‌های ۳۰ گنگ یا کاندیشن که این خیلی جذابه ببخشید داره طولانی میشه من آقای بابایی هم گفتم زحمت بکشن برای سایکل گند بیان اون دیگه اند چیزیه که می‌خوام بهتون بگیم دیگه بیشتر از این خودمون خودم دیگه من سوادشو ندارم خیلی هم جذاب کاندیشنال گن یه مقدار صبور باشید بخاطر همین عرض می‌کنم کاندیشنال گن حرفش اینه که شما حق دارید تعیین کنید که خانم میخوید تولید کنید یا آقا خب میخوای سنش تو چه رده‌ای باشه میخوای جنسی میخوای ملیتش چی باشه و این رفرش بکنیم و چرا ایمیل زدم الان تصاویر قابل پخش نباشه خب عرض به حضور شما میل اینو زدیم و خب

قبلا بهتون گفتم اگر بیاید نژادشو چیز بزنید میدلست بزنید ده بار رفرش کنید ۶ تاشونو میگید من دیدم تو دانشگاه تو خیابون این پسر خالم اینجوریه یعنی خیلی بعضیاشون خودی‌اند حالا ببینم چی در میاد نه نیست آره می‌تونیم بزنیم ولی ولی چند تا بزنم میدلست حالا جالبه من سری قبلی تو سه تای اول دو تا بچه ها خدایی به نظر من معتقدم هممون اینو دیدیم خب یه همچین چیزی خب بحث سیگن یا کاندیشنال گنج چیه کاندیشنال گن حرفش اینه که تو قبلی من بهتون گفتم کاریکاتور بکش دفعه بعدی میگم کاریکاتور منو بکش خب حالا باید چیکار کنیم که اینو بفهمه چیکار کنم که مرد بکشه چیکار کنم که ایشین بکشه میگه شما باید یه چیزی به نام

کاندیشن باشه رو یه جایی تو شبکه جی و دی کانکت یا فیوز کنید با داده‌ها مثلاً کجا همون لایه اول فرض کنید که نویز شما ۱۰ در یک بوده ۴ تای دیگه هم شما اضافه کن که چهار تا صفر و یک باشه مثلاً صفر اولش نماد اینکه آقا یا خانوم صفر دومش نماد اینکه مثلاً رده سنی چند مثلا رده سنی چه می‌دونم فلانی و فلان اینجوری بنویسید یا ایشین باشه یا نباشه و الی آخر اینجوری اضافه کنید می‌تونم لایه اول نباشه بره وسطای مثلاً شبکه جی چون سه لایه است لایه دومش بره مثلاً یه سی از این جنسی کانکت بشه یا جمع بشه یا مثلاً فرض کنید که می‌خواید عکس شما رو بدید کاریکاتور بکشه خب عکس من عکس صد درص مثلاً یه ۲۰۰ در دویسته میام چیکارش میکنم اول برای خودم از یه کانولوشن رد میکنم تا به یه عصاره مثلاً ۵۰ تایی برسه این ۵۰ تایی رو یا میام با نویز لایه اولش یا نه با دوباره

ادامه بده یعنی یادش بمونه که یه عصاره‌ای از عکس منم دریافت کرده بفرمایید همین اتفاق است مثلا اولین توصیه‌ای که می‌کنن اینه که فیچرهاتون کنید خونه زد اضافه کنید مثلا بگی یک نماد عکس منه دو نماد عکس فلانی تا ۱۵ برم خب این یادش میره بعداً آره بهتره که وان هات بیاد بهتره که تعدادش مثلا اگه میشه از یک بیشتر باشه مثلاً اگه عکس میخوید بهش بدید عکس از یه کانولوشن عادی خودمون دو سه لایه رد کن عصاره رو بهش بده یا جمع بزن همین که میگی مثل پوزیشنال ام مثلا یه صد در یک از عصاره عکس خودت تولید کن تو شبکه هم رفتی جلو به یه ساعت در یک رسید این دو تا

اینجوری اعمال کن حالا اینو کجاها دیدید کاندیشن اعمال شه تو این ابزارهای که اینور اونور دارید میبینید برعکسشه اینکه من اگه تایپ کنم یک جنگل فلان برام بکش خب این کاندیشن باید بهش بدی دیگه جنگل فلانو که حالا این کپشن چیست کاندیشنش از جنس تکسته حقه داره که چجوری بیاری تو این فضای زده و کانکت کنید ولی بالاخره اونم همینه باید از یه شبکه بگذرونید یه امبدینگ خوبی ازش در بیاد اون امبگه رو بدید به زد و بعد بره تو جنریتور و جنریتور بعداً بره اینا رو بسازه جان عوض نه میتونه تو لاست نیاد میتونیم لاس دستی ما میتونیم چیزای دیگه هم اضافه کنیم بهت میگم آره مثلا اگر میخوای منظورت اینه که

عکسی که جنریتور تولید کرده رو پیکسل وایز از مثلاً عکس خودم کم کنم بعد بگم فلان داشته نگاه کن هم دارم به جی میدم هم به دی میتونم بدم کاندیشن رو دو جا دارم بهش میدم که شبکه یاد بگیره اینا رو رعایت کرده میتونید شما دست ببرید تو لاس ولی ماجرا اینه که من فقط سوال درست متوجه شده باشم یکی از مشکلات کلاً شبکه گن اینه که تهش حتما باید یک انسان یعنی شما باید نظر بده که این خوب بود یا نبود یعنی اون ممکنه مثلاً به این شرط چیزه رسیده باشه که جی به نظرتون دی جی مثلاً دقتش صده ولی نگاه میکن چیز خوبی نیست و نمیدونید مگه دی یا جی چه تابعی داشتن که دی جی داره یک میده یادتونه مثلاً یه سری چیز میذاشتی نویز میذاشت میدادیم به ام نیست بعد مثلا میگفت چهار نوشتی همچین

بله نه این نیست ولی ولی مثلا الان سوال داره به این عوض میشه که فرض کنید مثلا آیا این کاریکاتور من هست یا نیست ولی کاریکاتور من بودنشو خدمتتون عارضم که فقط یه چیزی آها اجازه اجازه اجازه اجازه بده اینا برن جلوتر میخوام بگم ممکنه پرد باشه خب یعنی شما الان متوجه شدم نگاه کن برای اینکه بدونم این کاریکاتور علی رو کشیده یا نه قبلش باید کاریکاتور محمد و عکس ممد بهش بدن بله پیر بهش بدم خب درست میگم بعد عکس محمد و بدم به جی کاریکاتورشو تولید

میزاره فقط اینه که فقط اینه که بگم کاریکاتور علی رو بکش خب قبلش من تو ترینینگ چی داشتم ببینید شبکه بعدی که معرفی میکنه و سال ۲۰۱۷ حدوداً اومد یه پیپری بود اسمش برای خودم نوشتم عرض به حضور شما که اسم پیپر بودشن یه شبکه بود که مثلا چیز رو میداد همه خیلی عکسای مختلفی پیر داشت جفتی مثلا عکس واقعی خیابونو داشت عکس فرض کنید که این سیستم این سیمنتیشنش هم داشت که مثلاً این چیزه جاده است یا فلان یه دونه داشت عکس هوایی واقعی و اون نقشه هست که خلاصه شدشو بهمون میدن خب اینا رو پردش

ترین پردش موجود بود جفت اینا فکر می‌کنم تو ترین میرن خب یعنی مثلاً میگم کاریکاتور ممد و ممد اگه من موجود دارم جفتش میره تو ترین فقط اینکه چه جوری میره یه لحظه الان شک دارم که مثلا باید بگه اینا پرت شک کردم این تیکشو نمیگم آره آره فیک هست یا نیست حالا میخوام آره اگر قرار باشه مثلا شما محمد شما اگه میدونید بگو کاندیشن بگو این که مثلا فرض کن من میخوام آقا میخوام بگم کاریکاتور منو بکش خب تو ترین چی بهش دادم شما بله عکس خروجی

من عکس ممد و کاریکاتور ممدو دارم عکس ممدو میدم به گنم به جنریتیوم تا فیک تولید کنه فیک ممدو تولید کنه کاریکاتور ممدم بهش میدم میگم این دوتا رو با هم مقایسه کن ببینم خودش هست یا نیست که اینجا به لاسم مثلاً کاری که میتونم بکنم پیکسل وایز بگم بیاد پیکسل تولید شده عکس خودتو با پیکسل کارییکاتور واقعی از هم کم کن به توان دو برسون جمع اینو بگیر اینو مینیمایز کن خب درست گفتم یعنی پس پس شما پرد استفاده کردید فرد نفهمیده چرا دیگه الان فهمید که نگاه کن عکس عکس محمد که دادیم به جنریتور رفت یه فیکی از یه فیکی تولید کرد بعد واقعی محمد پیرد محمد هم داشتم که کاریکاتورش بود این دو تا رو با هم مقایسه کرد داد به دی تو لاس دی مثلاً فرض کن که پیکسل وایز هم

پس اون حالتش باید سه دسته باشه فیک واقعیه و مرد واقعیه آها یعنی باید خوب شاید شما دیگه اینو با یه شبکه نرید یعنی مثلا شاید شبکه های تو در توش کنند نمیدونم خوب ولی اینکه ما باید کاری کنیم که شبکه‌ای که بخوایم مرد تولید کنیم با کاندیشن مرد فقط دیگه بره کان یعنی مرد بودن عکس و چک کنه همزمان اینکه فیک هست یا ریله یعنی نیاد دیگه به قول شما چند حالتش کنه دیگه اضافه میشه آره لاس که اضافه میکن چون الان دستی کاری که آقای بابایی میخواد براتون نشون بده که سایکل حالت خفن ترین حالت ممکنه تو لاسش چند تا جمله است خب حالا این تیکشو بچه‌ها نمی‌دونم باید

به نظرم میاد تو کاندیشنال گن به نظرم میاد که حالتی که پرده اینه که شما به اصطلاح صورت مسئله رو گفتیم عکس واقعی رو میدیم کاریکاتور ما رو بکشه شما تو ترین هم دارید مثلاً ۱۰ هزار تا عکس واقعی دارید که کاریکاتور معادلش موجوده عکس واقعیتون رو می‌دید به جنریتورش جنریتور یه کاریکاتوری براتون می‌کشه کاریکاتور رو با کاریکاتور واقعی میدید به دیسکریمتور یه لاسی براش مینویسید که مثلا این باید پیکسل وایز یکی باشن یا نباش مثلا یه همچین چیزی و عرض به حضور شما که به جایی که دیگه به نقطه خوبی رسید حالا دیگه عکس خودتونو بدید انشالله چی کاریکاتور شما رو تولید کرده خب پس اینم شد کاندیشنال گن که این کار هم برنده شد مثلا اینا دسته هایی که داشتم مثلا عکس های واقعی عکس هوایی مثلاً واقعی رو میداده باید هواییش میکشیده هوایی رو می‌داده باید واقعیشو میکشیده و میتونسته مادامی که

غنی بوده شبکه‌های گنی داشته که این کارو کرده و آخرین چیزی که می‌خوایم در موردش براتون صحبت کنیم یه چیزی به نام سایکل خب سایکل گن دیگه اون چیزیه که تهیه که ما بلدیم شما پرت عکس ندارید یه مشتی کاریکاتور دارید یه مشتی عکس واقعی دارید که اینا اصلاً دو به دو هم یکی نیستند یعنی لزوماً کاریکاتور براش عکس واقعی نیست چون عکس واقعی براش کاریکاتوری نیست یه مشتی اینجا دارید یه مشت اینجا مثلاً فرض کنید یه مشت عکس اسب دارید یه مشتی گورخر خب و می‌خواید کاری کنید که هر جا این اسبه تو عکس واقعیتون گورخرش کنه یا گورخره اسبش کنه حالا یکیشو انجام بده براتون به این کار میگن سایکل نمونه واقعیش هم کجا بوده در واقع اونجایی بوده که الکساندر امینی نمیدونم جلسه اولشو دیدید یا نه که یه ویدوی فیک از اوباما میاره هم تصویری هم صوتی ایشون با سایکل گن برید جلو این داده های صوتی خودشو گرفته که میشه پایینی داداش صوتشو که داره اسپ

عرض به حضور شما میره چیکار میکنه فیک اوباما رو تولید می‌کنه خب و بعد فیک اون اسپکتروگرم اوباما رو صوتیش می‌کنه دیگه ما بشنویم همین کارو برای تصویر می‌تونه انجام بده و اینجا میتونید همون دیفیک برید دیگه این جای اون بذاره اونا جای این بذاره خب میدونم دارید به چه چیزهایی شومی فکر می‌کنید ولی ولی کلا این با سایکلگن انجام میشه اساس کار سایکلگن باحاله اینو ببینید میگه چیکار کنیم ببین مثلاً من فرض کنید که از دنیا عکس واقعی یه چیزایی دارم کاریکاتور یه چیزایی دو به دو یکی نیستند این عکس رو بدم کاریکاتور بکشه کاریکاتور بدم عکس واقعیش میکشه یا مثلا عکس زمستونو بهار رو به اندازه کافی دارم خب ولی نه مثلا از یه منطقه ندارم هم زمستون هم میخوام اینجا زمستون اینو بدم بهار برام بکشه همونجا رو یا بالعکس اینا رو دیدید دیگه تو ای پی از پای مختلف اینا سایک چجوری انجام میشن اولاً اینجا

در واقع دو تا شبکه حالت دوتا دو نوع شبکه گن داره که در کل ۴ تا در واقع شبکه نتورک نورال نتورکی داره شما باید ترین کنید یه شبکه شبکه‌ای که دومین ایکس رو ببره به دومین وای یعنی مثلاً فرض کنید اگه عکس واقعی رو ببره به کاریکاتورها خب اسم جنریتورشو گذاشته جی و دیسکریمتوری که تشخیص بده شما رفتید تو اونو گذاشتید دیوار یه شبکه دیگه میسازه که وای رو براتون بیاره به اکس به اسم جنریتورشو گذاشته اف و دیسکریمتورشو گذاشته dx چهار تا در واقع شبکه باید ترین کنید که بتونید از این برید رویای ما اینه که اف جیx چی باشد اف جیx چی بشه رویای ما اینه که بشه اکس ها یعنی اینکه یک بار من از ایکس برم تو وای با جی بعد با

حالا برای اینکه اینو چیزشو بنویسن در واقع لاس فانکشنشو بنویسن عرض به حضور شما که در حالت عمومی سه تا بخش لاس داره یه بخش لاست داره برای شبکه جنریتور اولی که توش جی و دی وای میاد میشه مشابه اونی که من اونجا براتون نوشتم یه لاست داره برای اینکه چی لاس اول چیو داره میگه لاس اول اینو میگه که وقتی جی ایکس تولید شد چقدر از دومین وای چقدر به دومین وای شبیه شبکه گول میخوره حس میکنه از وای یه لاس می‌نویسه که جمع میزنه باهاش که شبیه باز دوباره لاس گنه این دفعه برای f و دی اکس مینویسه که شبکه ببین چقدر تولیدی های وای هست دومین اکسه و یه لاس نهایی داره که میگه چقدر اف جی اف در واقع جی وای شده اکس و چقدر جی ببخشید چی گفتم جی اکس افش

و چقدر جی اف اکس بشه وای اف جی و اینکه اینم بشه چیکار کنند نورم توان دو یا نور یکشو بگیرن دیگه درسته اینا رو چهار تاشو با مثلاً همه این که گفتم با هم جمع میزنند و شبکه رو تریل میکن و تهش اگه این کارو بکنید که محمد یه نمونه کد برایون آورده سایکل این کار میکنه حالا نمونه اش براتون میگه و هدفگذاریش اینه عادی شما از نویز زد شروع میکنید میرید تو دومین وای توی شبکه های سایکل از یه جای منیفولد پیچیده ایکس شروع می‌کنید می‌خواید برید به وای یا برگردید که نمونش همون ترنسپورینگ اسپیچ بوده که خود الکساندر امینی این کار انجام میده و فیک خودش صحبت کرده و خودش از خودش فیلم گرفته بعداً ویدئوی فیک اوباما تولید شده که هم در واقع تصویری بتونی

با حالت چهره خودت اونو بسازی هم صدات اون باشه که الان تعداد اپ‌های زیادی هستند که این کارو می‌کنن بچه‌ها تئوری‌های ما در مورد گند تمام شد یعنی بیشتر از این راستشو بخواید احتمالاً خودمم بلد نیستم خب ولی در مورد گند چند تا ماجرا وجود داره اولاً سختی همگرایی داره به شدت خب یعنی ممکنه اصلاً هیچ‌وقت همگرا نشید دوم اینه که ممکنه منابع محاسباتی زیادی بخواد یعنی مثلاً چیزی که محمد براتون میاره الان با ۲۰۰ ای پاک تو کد نوشته خودش میگه حداقل هزار تا رو میخواد خب و عرض به حضور شما که بعضی وقتا تنوع اشکال تولید شدش یه سری محدودیت های داره به خصوص تو گنای عادی مثلا متوجه شده بودن روزهای اول که وقتی مثلاً اینا تولید میشه شما که بهش نگفته بودید مثلا چشم سمت چپ و راستش متقارن باشه در حالی که مثلاً انسان ها باید چشمماشون یکی یه رنگ باشه ها البته عادی گوش هاشون مثلا باید یه شکل متقارنی باشه ولی شما هیچ جا به این نگفته بودید و ممکن بود اینا رعایت نکنه خب که دیگه چی شد که دیگه یه دونه دیگه رفرش

E:\courses\LangChain Project\main root\data\GAN_transcript_part3.txt

عرض حضور شما که هندی شما ۱۱۵۰ دقیقه چیکار می‌کنید می‌خواید ۱۰ دقیقه استراحت کنید بیا ادامه بدیم پس استراحت بفرمایید ۱۲ ما تا ۱۲ و نیم میریم دو تا کد بهتون نشون میدیم یکی در مورد گن عادی اینکه رو ام نیستیم چجوری داده های فیک امروز نیستیم و یکی هم سایک زدن یه کاندیشن هم فیلمشو براتون گذاشتیم خب ۲۰ دقیقه فیلمه و عرض به حضور شما که اگه دلتون خواست اینا رو رعایت بفرمایید اینا چیزن به نظرم ازبکستانی بچه این شوهر خاله کیه

'markdown' cell: '['# BERT\n', '\n', 'Default version of BERT trained by google.']'

'markdown' cell: '['## huggingface with pytorch backend']'

'code' cell: '['import torch\n', 'from transformers import AutoModel, AutoTokenizer']'

'code' cell: '['device = "cuda" # the device to load the model onto']'

'code' cell: '["tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')\n", 'model = AutoModel.from_pretrained("bert-base-uncased")\n', 'model.to(device)\n']'

'code' cell: '['text = "Replace me by any text you\'d like."\n', '\n', "encoded_input = tokenizer(text, return_tensors='pt').to(device)\n", '\n', 'encoded_input']'

'code' cell: '['output = model(**encoded_input)']'

'code' cell: '['output[0].shape']'

'markdown' cell: '['## huggingface with tensorflow backend\n', '\n', 'TF models are converted from pytorch into tensorflow with libraries like ONNX. For full access to all model components and layers it is better to use PyTorch.']'

'code' cell: '['from transformers import BertTokenizer, TFBertModel\n', "tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')\n", 'model = TFBertModel.from_pretrained("bert-base-uncased")\n', '\n', '\n', 'text = "Replace me by any text you\'d like."\n', '\n', "encoded_input = tokenizer(text, return_tensors='tf')\n", 'output = model(encoded_input)\n', '\n', 'output[0].shape']'

'code' cell: '['model.config']'

'markdown' cell: '['# VIT\n']'

'code' cell: '['!pip install datasets']'

'markdown' cell: '['## With PyTorch backend']'

'code' cell: '['from transformers import AutoImageProcessor, ViTForImageClassification\n', 'import torch\n', 'from datasets import load_dataset\n', '\n', 'dataset = load_dataset("huggingface/cats-image")\n', 'image = dataset["test"]["image"][0]\n', '\n', 'image_processor = AutoImageProcessor.from_pretrained("google/vit-base-patch16-224")\n', 'model = ViTForImageClassification.from_pretrained("google/vit-base-patch16-224")\n', '\n', 'inputs = image_processor(image, return_tensors="pt")\n', '\n', 'with torch.no_grad():\n', '    logits = model(**inputs).logits\n', '\n', '# model predicts one of the 1000 ImageNet classes\n', 'predicted_label = logits.argmax(-1).item()\n', 'print(model.config.id2label[predicted_label])']'

'code' cell: '['# logits for 1000 classes of imagenet dataset\n', 'logits.shape']'

'markdown' cell: '['## With tensorflow backend.\n', '\n', 'Note that this version is specifically finetuned for image classification. For base model without classification head use `TFAutoModel`.']'

'code' cell: '['from transformers import AutoImageProcessor, TFViTForImageClassification\n', 'import tensorflow as tf\n', 'from datasets import load_dataset\n', '\n', 'dataset = load_dataset("huggingface/cats-image")\n', 'image = dataset["test"]["image"][0]\n', '\n', 'image_processor = AutoImageProcessor.from_pretrained("google/vit-base-patch16-224")\n', 'model = TFViTForImageClassification.from_pretrained("google/vit-base-patch16-224")\n', '\n', 'inputs = image_processor(image, return_tensors="tf")\n', 'logits = model(**inputs).logits\n', '\n', '# model predicts one of the 1000 ImageNet classes\n', 'predicted_label = int(tf.math.argmax(logits, axis=-1))\n', 'print(model.config.id2label[predicted_label])']'

E:\courses\LangChain Project\main root\data\huggingface_transformers_bert_vit.py

"""Huggingface_Transformers_Bert_ViT.ipynb

    https://colab.research.google.com/drive/1EZWlJFt01vZ95eeqNLBbpKVNmOLJPzaL

# BERT

Default version of BERT trained by google.

## huggingface with pytorch backend
"""

import torch
from transformers import AutoModel, AutoTokenizer

device = "cuda" # the device to load the model onto

tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')
model = AutoModel.from_pretrained("bert-base-uncased")
model.to(device)

text = "Replace me by any text you'd like."

encoded_input = tokenizer(text, return_tensors='pt').to(device)

encoded_input

output = model(**encoded_input)

output[0].shape

"""## huggingface with tensorflow backend

TF models are converted from pytorch into tensorflow with libraries like ONNX. For full access to all model components and layers it is better to use PyTorch.
"""

from transformers import BertTokenizer, TFBertModel
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = TFBertModel.from_pretrained("bert-base-uncased")

encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)

model.config

"""# VIT

"""

!pip install datasets

"""## With PyTorch backend"""

from transformers import AutoImageProcessor, ViTForImageClassification
from datasets import load_dataset

dataset = load_dataset("huggingface/cats-image")
image = dataset["test"]["image"][0]

image_processor = AutoImageProcessor.from_pretrained("google/vit-base-patch16-224")
model = ViTForImageClassification.from_pretrained("google/vit-base-patch16-224")

inputs = image_processor(image, return_tensors="pt")

with torch.no_grad():
    logits = model(**inputs).logits

# model predicts one of the 1000 ImageNet classes
predicted_label = logits.argmax(-1).item()
print(model.config.id2label[predicted_label])

# logits for 1000 classes of imagenet dataset
logits.shape

"""## With tensorflow backend.

Note that this version is specifically finetuned for image classification. For base model without classification head use `TFAutoModel`.
"""

from transformers import AutoImageProcessor, TFViTForImageClassification

model = TFViTForImageClassification.from_pretrained("google/vit-base-patch16-224")

inputs = image_processor(image, return_tensors="tf")
logits = model(**inputs).logits

predicted_label = int(tf.math.argmax(logits, axis=-1))

E:\courses\LangChain Project\main root\data\Images_edit_introduction.ipynb

'code' cell: '['import cv2\n', 'import matplotlib.pyplot as plt\n', '\n', 'image_path="/content/drive/MyDrive/SCR_1401_2/SCR_1401_2_photo_1.jpg"\n', '\n', 'my_image=plt.imread(image_path) #RGB\n', 'grayscale = cv2.cvtColor(my_image, cv2.COLOR_RGB2GRAY)\n', '\n', 'plt.imshow(my_image)']'

'code' cell: '['import numpy as np\n', 'from scipy import ndimage\n', '\n', '# Define filter kernel\n', 'kernel = np.array([[0, 1, 0],\n', '                   [1,  -4, 1],\n', '                   [0, 1, 0]])\n', '\n', '# Apply filter to image\n', 'filtered_img = ndimage.convolve(grayscale, kernel)\n', '\n', '# Display original and filtered image\n', "plt.subplot(121), plt.imshow(grayscale,cmap='gray'), plt.title('Grayscale')\n", 'plt.xticks([]), plt.yticks([])\n', "plt.subplot(122), plt.imshow(filtered_img), plt.title('Filtered')\n", 'plt.xticks([]), plt.yticks([])\n', 'plt.show()\n', '\n', "cv2.imwrite('my_fil.jpg',filtered_img)"]'

'code' cell: '['#my_image = cv2.cvtColor(my_image, cv2.COLOR_RGB2BGR)\n', '#b, g, r = cv2.split(my_image)\n', '\n', '\n', '# # Display each channel\n', "plt.subplot(141), plt.imshow(my_image), plt.title('Original')\n", 'plt.xticks([]), plt.yticks([])\n', "plt.subplot(142), plt.imshow(my_image[:,:,0],cmap='Reds'), plt.title('Red channel')\n", 'plt.xticks([]), plt.yticks([])\n', "plt.subplot(143), plt.imshow(my_image[:,:,1],cmap='Greens'), plt.title('Green channel')\n", 'plt.xticks([]), plt.yticks([])\n', "plt.subplot(144), plt.imshow(my_image[:,:,2],cmap='Blues'), plt.title('Blue channel')\n", 'plt.xticks([]), plt.yticks([])\n', 'plt.show()\n']'

'code' cell: '["cv2.imwrite('ax.jpg',my_image[:,:,1])"]'

E:\courses\LangChain Project\main root\data\images_edit_introduction.py

"""Images_edit_introduction.ipynb

    https://colab.research.google.com/drive/1GkM1MDGoXjIsM9Y5mvwliHPEN3SpvmY_
"""

import cv2

image_path="/content/drive/MyDrive/SCR_1401_2/SCR_1401_2_photo_1.jpg"

my_image=plt.imread(image_path) #RGB
grayscale = cv2.cvtColor(my_image, cv2.COLOR_RGB2GRAY)

plt.imshow(my_image)

from scipy import ndimage

# Define filter kernel
kernel = np.array([[0, 1, 0],
                   [1,  -4, 1],
                   [0, 1, 0]])

# Apply filter to image
filtered_img = ndimage.convolve(grayscale, kernel)

# Display original and filtered image
plt.subplot(121), plt.imshow(grayscale,cmap='gray'), plt.title('Grayscale')
plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(filtered_img), plt.title('Filtered')

cv2.imwrite('my_fil.jpg',filtered_img)

#my_image = cv2.cvtColor(my_image, cv2.COLOR_RGB2BGR)
#b, g, r = cv2.split(my_image)

# # Display each channel
plt.subplot(141), plt.imshow(my_image), plt.title('Original')
plt.subplot(142), plt.imshow(my_image[:,:,0],cmap='Reds'), plt.title('Red channel')
plt.subplot(143), plt.imshow(my_image[:,:,1],cmap='Greens'), plt.title('Green channel')
plt.subplot(144), plt.imshow(my_image[:,:,2],cmap='Blues'), plt.title('Blue channel')

cv2.imwrite('ax.jpg',my_image[:,:,1])

import cv2
import imutils
from playsound import playsound
import keyboard

#def move_the_head():

lastperd=np.array([21])
pred=np.array([23])

# get the reference to the webcam
CAMERA = cv2.VideoCapture(0)

CAPTURE_WIDTH = 900
ROI_LONG = 250 # Region Of Interest
MARGIN = 50
TOP = MARGIN
RIGHT = CAPTURE_WIDTH - MARGIN
BOTTOM = TOP + ROI_LONG
LEFT = RIGHT - ROI_LONG

model = load_model('MNIST_model.h5') #MNIST_model_original

while(True):
    _, frame = CAMERA.read()
    frame = imutils.resize(frame, CAPTURE_WIDTH)
    # frame = cv2.flip(frame, 1)
    (height, width) = frame.shape[:2]

    # Add rectangle to original frame
    cv2.rectangle(frame, (LEFT, TOP), (RIGHT, BOTTOM), (0,255,0), 2)

    # Cut ROI and preprocess
    roi = frame[TOP+2:BOTTOM-2, LEFT+2:RIGHT-2]
    gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY)
    _, gray = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY_INV) # need fixes
    cv2.imshow("ROI", gray)

    # Predict and show prediction
    gray_small = imutils.resize(gray, 28)
    gray_small = gray_small.reshape(1,28,28,1)
    pred=model.predict(gray_small)
    pred=np.argmax(pred,axis=1)
    print("{}".format(pred))

    if(keyboard.is_pressed('g')):#(pred!=lastperd):
        try:
            playsound('{}.wav'.format(pred))
            #move()
            lastperd=pred
        except:
            pass

    #pred = model.predict_classes(gray_small)[0]
    LABEL_TEXT = str(pred)
    LABEL_COLOR = (0,255,0)
    cv2.putText(frame, LABEL_TEXT, (LEFT, TOP-7), cv2.FONT_HERSHEY_SIMPLEX, 1, LABEL_COLOR, 2)
    cv2.imshow("Frame", frame)

    # if the user pressed "q", then stop looping
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

E:\courses\LangChain Project\main root\data\LLM-Part1_transcript_part1.txt

به نام خدا دوستان عزیز ارجمند عرض سلام و ادب وقت همگی بخیر با نگاه مدل‌های بزرگ زبانی در حد معرفی و همینطور کاربرد دوستان ازمون خواستن یه مقدار سعی کنیم به اپلیکیشن های جدید حوزه رباتیک مراجعه کنیم با حالا یکی دو تا از رفقا هم کردیم تصمیم گرفتیم که تو این دو جلسه اینجوری برای شما صحبت کنیم که اسلاید آماده شدن ما امروز رو سعی میکنیم به معرفی ها بپردازیم اگرچه ظاهرشو نگاه میکنید تاثیر تو حوزه رباتیک نداره ولی مجبوریم اینا رو بدیم و بعدش جلسه بعدی بگیم که خب چجوری میشه از

مسیر این مدلی ما انتخاب کردیم خدمتتون مدل زبانی چیه و همینطور یا مدل های زبانی بزرگ چی هستند به مفهوم خیلی خیلی مهمی به نام سوپروایز لرنینگ مراجعه میکنیم که یکی از در واقع تکنیک های بود یکی از اتفاقاتی بود که سبب شد تو حوزه مدل های زبانی انقلاب به وجود بیاد که چ ضلع اون مربعی بود که تونست این اتفاقات تو یک سال و نیم اخیر برای ما به وجود بیاره و بعدش در مورد این صحبت می‌کنیم که وقتی شما یک مدل زبانی رو دارید اگر بخواهید تغییرش بدید چه راه های پیش روتونه آیا به صرفه است که یک مدل

یک میلیارد پارامترها رو کلاً بکوبید یه میلیارد پارامترشو عوض کنید یا نه یا اینکه اگر نمی‌شه یا شیشه رو چون نداریم چیکار میشه یک مدل چند صد میلیونی پارامتر در اختیارمون باشه ولی تسک ما را حل نکنه و من بخوام حل کنه چیکار باید بکنم چه جوری باید پارامترهاشو باید بردارم چه تکنیکی میتونم بزنم که روش‌های ادپترز و لورا رو خدمتتون معرفی میکنیم و اون میشه پکیج آموزشی مدل های بزرگ زبانی برای شما و جلسه بعدی اپلیکیشن ذهنتون تجسم بکنید که از این تکنیک های که گفتیم میشه استفاده کرد و در ضمن یه حاشیه‌ای هم وجود دارد که این در واقع چیز ما سرفصل های امروز اول اینکه یک لنگویج مادل یا یک مدل زبانی چیه خب این وقتی هم در واقع به عرض کردم رباتیک اجتماعی نداره و حتی وقتی به دیپ لرنینگ هم لزوما نداره یعنی از قدیم

مدل‌های زبانی اصطلاحا مدل‌های احتمالاتی هستند که به هر دنباله انتایی از کلمات یا توکن‌ها یک احتمال نسبت میدن احتمال اینکه w۱۰ رو ببینم چنده مثلاً اول کلمه من رو ببینم بعد علی رو ببینم بعد را بعد دیدن ها اگر بتونیم یک احتمال به این نسبت بدید شما یک مدل زبانی دارید که این میتونه معنیش از این باشه که برای استفاده بشه که داشته باشید بر اساس اینکه تا اینجا جمله را دارید کلمه بعدیتون چی باشه از اون مدل زبانتون استفاده کنید بیشترین احتمال رو بگیرید یا اینکه وسطش یک کلمه خالی بندازن مثلاً میگن که من به قدری نقطه چین بودم که می‌توانستم یک مرغ کامل را بخورم این نقطه حدس بزنید چی بوده کلمه گرسنه بوده و شما برای ذهنتون یه همچین مدلی دارید الان یعنی با توجه به جمیع کلمات یه کلمه‌ای انتخاب می‌کنید از بین دایره لغاتی که

مدل‌های زبانی قراره این کارو بکنه خب خدمت شما عارضم که مسئله بعدی در واقع چیزه کار کردن تو حوزه مدل‌های زبانی که در سطح کلمه یا عبارت یا جمله یه چیزهایی داریم و فرض کنید از تکنیک‌های ماشین لرنینگ استفاده کنیم همیشه اولین کاری که تو ماشین لرنینگ کلاسیک اینه که چی میبردیم توی فضایی به نام فضای فیچر یا فضای ویژگی که تو اونجا می‌تونستیم یه کار خوب انجام بدیم مثلا سگ و گربه رو از همدیگه شناسایی کنیم شناسایی کنیم قیمت خونه رو تخمین بزنیم تو مدل های زبانی هم شما کاری که باید بکنید اینه که چی باید یک جورایی مفهوم کلمات رو ببرید توی فضایی که قابل چی باشه حرف زدن باشه ولی آخر که قبلا بهتون گفته بودیم فضای ام نشون میده ما اول کلمات یا عبارات یا توکن هات در واقع کد میکنیم در ساده ترین حالت مثلاً می‌گیم که آقا اگه من ۵۰ هزار کلمه داره دیکشنری یه ۵۰ هزار

هیچ دو کلمه‌ای ارتباط معنایی با هم ندارند همه فاصله‌شون یکه درسته و من اینو اول برای در واقع چیز در نظر گرفته بودم حفظ عدالت بیداری نسبت به کلمات ولی واقعیت اینه که من اگه بخوام تو معنا و توی چیز اینا به همدیگه ارتباط پیدا بکنم و نزدیکای کلاس پی رو انتخاب بکنم فضای کوچتری ببره که فاصله کلمات تغییر بکنه و در ضمن کلمات از یک جنس بیان نزدیک هم وایستند اتفاقاتی که تو افتاد مثلا ۲۰۱۳ خب و بعدش حالا اینم کافی نیست من تو جمله پاراگراف میخوام ببینم کلمه جمله من دقیقا

و اینجا دیگه حالا از روش‌های رشد و شبکه‌های مبتنی استفاده کو سوال بپرسید جواب عرض به حضور شما که دو تا جمله بهش بگو بهت بگه که این دو تا جمله با هم همستان خلاف جهت ارتباط درسته یا یه متن بهش بگی تو چه حوزه‌ای بود اخبا گرفته حوزه دسته بندی کنید سیاسی ورزشی و و

داشته باشید موبایل بخرید یا نخرید با توجه نظر بخواهیم رد تاریخی ازش بگیریم خوب اولین اتفاقی که پیش جهش به وجود آورد داستان ها میاد به دنباله انتهایی توکن ها احتمال نسبت متن ۱۰۰ هزار کلمه داشتید به ماشینتون ساده ترین کاری که میتونید بکنید موبایل سه تا چیکار کنه یه متن ۱۰۰ هزار کلمه‌ای بهش داد

سلام چیز مثلا کتاب فارسی کتاب اون نمیاد مبل پیشنهاد بده بعدش میکنه فارسی دانشکده مکانیک و پیشنهاد اول شده حالا دوتایی ها را میبینه خب که اولیش کتاب بوده احتمال بعدیش چند میشه توگرم ها خب و اینا چیزایی بود که قدیم با اینا شروع می‌کردن می‌رفتن

معنا رو در نظر نمیگرفته درسته تاثیر نهاد در نظر روش های دیگه میاد تا تقریبا حوالی ۲۰۰۳ که آقای بنجیرو میاد یه مدل نتورک ارائه میده که یک زورش زیاد میشه و ادعا می‌کنه که من فراتر از یک حالت جمله بندی عادی مثلا میگه که اگه جمله بهش بدید ممکنه شبکه منینگ هم بتونه براتون پیش بینی کنه یعنی جمله‌ای که

فعل بوده من یه فعل دیگه‌ای از یه جنس زمان دیگه‌ای بذارم کارش حتی عوض بکنه ولی همچنان مشکلات جلوتر ۲۰۱۳ خوبی برای کلمات خوب به هم نزدیک باشند روزهای هفته کمپانی های کامپیوتری و و و دیگه از ۲۰۱۸ به بعد با در واقع ظهور ترنسرها و شبکه برت که میاد دیگه یه دفعه جهش پیدا میکنه و میرسیم به پریترین لنگویج مادلا یا مدل های زبانی که از قبل شدن و حالا هی هم دارن رشد میکن و سوپر لارج دارن تبدیل میشن با تعداد فوق وحشتناک تخ

۱۵۰۰ میلیارد پارامتر داره یا یک و نیم تریلیون پارامتر وزن شده و بتونه هزاران کارو برای شما چیکار کنه خب همونطور که عرض کردم خدمتتون مثلاً کلمه شیر سلطان جنگل است شیر آب خراب شده یا از سوپر مارکت شیر پاکتی خریدم اینا توی خیلی از روش‌های قدیمی فرق شیر معلوم نمیشه تو فضای ۱۰۰۰۰ کلمه‌ای یه چیز داشته یه وکتور ۱۰ هزار تایی داشته که هیچ فرقی نمیک کدوم جمله است ولی همانطور که دیدید هی وقتی لایه لایه میرفتیم بالاتر تمام کلمات من جمله شیر عوض میشد و اونجا به میرسید که دیگه تو لایه آخرش انتظار داشتیم بین این سه تا فرق قائل بشه یعنی شیر تو این سه تا جمله سه تا چیز کاملاً متفاوت در میاد و توی فضا جاهای مختلفی با همدیگه میفته خدمت شما عرضم که لارج مدل

مدل‌هایی که تو اردر ۱۰ میلیارد پارامتر به بالا یا بعضیا میگن یک میلیارد پارامتر به بالا داشته باشند نمیدونم لامادو لاماسه اینا که مثلاً از هفت هشت میلیارد پارامتر شروع میشن ۱۷۵ میلیارد پارامتر بود عرض کردم ۱۵۰۰ میلیارد پارامتر لاما از ۷ میلیارد هست تا حدود ۷۰ میلیارد پارامتر به این میگن چی میگن شبکه های بزرگ مدل های بزرگ زبانی چه اتفاقی افتاد که مدل های بزرگ زبانی تونستن ظهور پیدا بکنن چهار تا اتفاق با همدیگه در کنار هم ثبت شد مدل های بزرگ زبانی رخ بده یکی اینکه دسترسی به داده زیاد شد داده آدما فهمیدن داده ها ارزشمندن و باید یه کاری می‌کردن که اینا رو

وجود داشت و دو تا تکنیک دیگه‌ای که اگر نبودن نمی‌گیم به مدل‌های بزرگ زبانی نمی‌رسیدیم اما ممکن در واقع اختراع شبکه‌های ترانسفورمر بود که امکان پردازش‌های سری و خیلی به ما می‌داد و یه دفعه سرعتش نسبت به النا خیلی خیلی خیلی بیشتر شده بود و مکانیزم همه به همه توجه و یک هفته دیگه به نام چی سلف سوپروز لرنینگ که اگر وجود نمی‌داشت باز چی میشد داستان میشد کتاب در مورد هر کدوم از کوچولو کوچولو صحبت میکنه خدمتتون عارضم که شما اگر به چیزا نگاه بکنید به این دو تا نمودار نگاه بکنید تا مدل های المو که حدود ۲۰۱۸ اوایل ۲۰۱۸ اومدن ببینید بیاید جلو تعداد توکن های که استفاده می‌کنند مثلاً تو اردر یک میلیارد بوده تا جیpt

بیش از ۱۰ به توان ۱۲ مثلا میرسه و یه دفعه یه جهش عجیبی توشون به وجود میاد همینطور توی تعداد پارامترها قدیم مثلا فرض کنید که تا مثلاً چرا روش هر شبکه‌ای که میاد بچه‌ها معمولاً یه دونه ورژن اسمال میزن لارج اینجوری خب ورژن مختلف شما میزنند اکسترا لارج یا لارج مثلا الم حدود چند هشت پارامتر داشته که میشه ۱۰۰ میلیون خبرش اینه gpt ۳ و فراتر از سه که اومد یه دفعه این عدد جامپ کرد مثلاً از ۱۰ به توان ۱۰ هم رد کرد خب و یه دفعه سبب شد که یه سری اتفاقاتی بیفته که حالا در آینده چیکار میکنیم در واقع اشاره میکنیم و اما یکی از اون چهار تا اتفاقی که سبب شد مدل بزرگ زبانی رشد کنن مفهومی به نام

سوپروایز لرنینگ ماجراش اینه که نه سوپروایز نه آن سوپروایز همه می‌دیدند که کلی داده تو دنیا تو اینترنت اطراف ما وجود داره که لیبل نداره و این سوال بود چه جوری ازشون استفاده کنیم خب مثلاً فرض کنید که فقط من برم یه میلیون تا عکس یا ۱۰۰ میلیون تا عکس از گوگل دانلود کنم ولی ندونم یعنی برچسبی نداشته باشم که این اسب گوسفنده فلانه فلانه چه‌جوری می‌شد از این استفاده کرد یا این همه مثلاً نوشته تو اینترنت بود چیکار میکردن ازش از مفهومی به نام سوپروایز لرنینگ استفاده کردن سوپروایز لرنینگ من یه تفاوتی که قائلم میگه نه سوپروایز یعنی شما جایی مثلاً عکس گاو بهش ندادید و براش بیان کنید که این گاوه نه کاملاً آن سوپروایزه ها با یه چیز کمکی شما لیبل براش تولید می‌کنید که این مثلاً گاوه مثلاً اگه صداش توی فیلمی بیاد و این صدا رو بگیرید صدای ما بیاد مثلاً این چیکار

کاری که می‌تونستن بکنن اینه که بیان مثلاً بگن که مثلاً فرض کن جمله ترانسپرز رو در نظر این تلاش از خودش استفاده می‌کردن لیبل نداشتم یا داشتم کلک میزدم و لیبل بهش میدادم تو حوزه مثلا تکست اینجوری بود متن بزرگی داشتن از نکست توکن میکردم با کلمات قبلی خودش و به این می‌گفتن آقا تو با این برو پریترین بشو یه مدل بیا بالا حالا من بعداً اگه بخوامش میکنم برای کار خودم و دیدم که با همین داده های اینترنت دارن به دقت های

فرض کنید شما یه مجموعه عکس‌هایی داشته باشید از اینترنت اصلا ندونید اونا چی اند چجوری میتونید یه مثال بزنم چیزتون آماده کنم من می‌خوام یه شبکه داشته باشم که برام کلاس انجام بده خفن‌ترین شبکه‌ای که ما دیدیم دیگه خیلی خفن بود که هنوزم در واقع جز یکی ازش استفاده میکنم خب اون زمان اومده بودن روی دیتا ست ایمیجنت که مثلاً یه میلیون و خورده‌ای تا عکس بود ترین کرده بودن کلی وزن به ما داده بودن ما فرض کنید مثلاً می‌خواستیم ببریم برای شناسایی مثلاً در و پنجره و نمیدونم تیر برق دانشگاه ازش استفاده کنیم چیکار میتونستیم بکنیم اول

آماده استفاده کنیم یکی دو تا لایه آخرشو ببریم کلاس‌های مورد نظر آخر که چیکار کنه به من همون سه تا کلاسو بده چون اعتقاد داشتم که چی لایه اولش خیلی چیز خوبی یاد گرفته که اینجام به دردم میخوره حالا فرض کنید که شما وزن رزنت رو بهتون نداده بودم فقط اینترنت داشتید مثلا ۱۰۰ میلیون تا عکس چیکار میتونستید بکنید هیچ لولی هم نداشتید اصلاً نمی‌رسید چی پرنده مثلاً حیوونه چی فلانه چه ایده‌ای دارید برای از این داده یه جوری استفاده کنید چیکار کار بهتون پیشنهاد بدم عکسا رو همه رو داره بیاید همشون مثلاً روتیشن اضافه کنید یعنی یه دونه عکس واقعی دارم یه دونه ۱۰ درصد روتی شده یه شبکه شبیه رزنت بیارم بالا برای خودم که بگم این ۱۰ درجه روتیشن ببینم تو بیا بهم بگو ده یا اون

اضافه میکنم برام رسید فقط پایین نگاه میکنم انشالله که لایه اولش خوب کار کرده عکس اینترنت دوستی استفاده کردم خب این سلف سوپروایز لرنینگه تو حوزه ایمیجه تو حوزه متن گفتم چیکار کنیم از خودش استفاده کنیم اینقدر بسازید بسازید تا به یه مدل خوبی برسه حالا نگاه کنید یا تسک شما را انجام میده یا نمیده اگه نداد آیتیون می‌کنید برای تسک خودتون اول میکنیم بعد

چند صد میلیون پارامتر رو اینشیالایز بکنیم جلو تا به یه جای خوبی برسید الان شبکه خوب تشخیص بده حالا چیکار کنم برای کلاس ولی خوبیش اینه که از آنبل دیتاهای موجود در اینترنت نهایت سوء استفاده رو کردی همین کاری که الان ما کردن رفتن از هرچی متن کرده بودن استفاده کردن لیبل هم نداشتا از خودش گفتم یه مدل فعلا بیاد بالا خب حالا من نگاه میکنم انجام میده یا نمیده اگه داد خیر و برکت اگه نداد چیکار میکنم یه جوری فاین میکنه که این کار برام بکنه درسته

آینده هوش مصنوعی دنیا دیگه نمی‌تونید بی‌خیالش بشید میگه شما یک همچین تصویری بهتون نشون بدن خب مثلا کلاس شبکه عادی کلاسیفیکیشن بدید نهایتاً به شما میگه کیک درسته خب قابل خوردن بیشتر از بهتون نمیگم ولی فرض کنید شما می‌خواستید بدونید این کیک گیلاس روشه اگر با چاقو ببرن کجاهاش بریده میشه چند لایه فرض کن که مثلاً خامه و شکلات و فلان داره و تو اردر مثلاً بعضا پیکسلی روش حرف بزنید با این عکس کلی محتوا تولید کنید این هیچ رقم با داده های سوپروایز نمیشه انجامش داد درسته اینکه آدم بکارید که بشینه برای این عکسه مثلاً هزاران جمله بنویسه

این اتفاق افتاده گفتم دو نوع شبکه‌های معروف داریم یکی شبکه‌های مس لنگویج مادلن که برت معروف‌ترینشونه اواخر ۲۰۱۹ اومد ماجرا این بود که رفت کلی داده ترین برداشت متن کرد کاری که میکنه تو ورودی یه جمله بهش می‌دید چند تا کلمشو میندازی بیرون مسکش می‌کنید پاکش میکن مثلا نوشته نقطه چینستنت این جای نقطه چین ستاره میزاری اون باید ستاره شما پیش بینی کنه و به این نقطه از عرفان می‌رسه کهچال و پیشنهاد میکنه خب و تو اینجوری بود شبکه اش که حدود ۱۵ درصد

خروجی شبکه اختلاف فاحش همه رو این مدلی شد که واقعا همچین چیزایی میتونه کار کنه که دیگه حالا به صورت خیلی خیلی جدی این اتفاق مطرح شد به جز لنگویج یه چیزی داریم به نام کازا لنگویج مادلینگ یا همون شبکه های اتوریسیو که تا انتهای اول بهش بدی چیکار کنه نکست توکن پردشن براتون انجام بده بهش بگیدسیستنت بعدیش بگه چی هی با اینایی که دارید اینو بگه که gpt اینا از این جنس و gpt اینا فقط دیکودر ترنسفور ندارن دیکودر دارند فقط فعال شما رو میاد شروع میکنه یکی یکی تولید کردن هی از خروجی خودش

سری زمانی دنباله میدید اون اولین اتفاقی که ازش میگذره چیه کشف میشه به یه ماتریس بردارهای حالا کوچکتر فشرده میشه کد میمونه یه عصاره تولید میکنه که من ماتریس در واقع کی و ولیوش ازش میخوام اگه دیکود داشته باشم تو دیکودرم چیکار میکنم ورودی بازدم کیو ولی اینو میگیرم و حالا اتنشن به اون رو انجام میدم و در نهایت چیکار کنم کارمو انجام بدم مثلاً اینجا تسک

ترجمه زبان انگلیسی تولید بشه که این مسیر رو رفته که قبلا دیدید و اساس کار ما توی لارج لنگویج مادل‌ها و همینطور ویژوال لنگویج مادلا و چیز آینده روش صحبت کنیم و کاربردهای رباتیک اینا رو بگیم همشون کلاً شبکه‌های مبتنی بر ترانسفورمن که اینا توشون رخ خدمتتون عارضم که یه مقایسه فقط برای خودتون داشته باشید اینه که عرض به حضور شما دیتا یعنی شبکه های جی پی تی و اینایی که اومدن هر کدوم اولاً چه سالی ترند شدن چند تا پارامتر داشتن اینجا نوشته شده مثلاً gp ۱۷۵ میلیارد پارامتر داشته gpt دو که سال ۲۰۱۹ اومده یک و نیم میلیارد پارامتر داشته دیتا ست های که روشون ترین شدن مثلا چه میدونم دیتا ست فرض کنید سی فور بوده که ۳۶۰ گیگا توکن داشته

برای همه مجاز نیست و اینجا براتون نوشته شده که رو چقدر داده اومدن بالا خدمتتون عارضم که مثلاً من یه جا دیدم برای یکی از این شبکه‌های مطمئن نیستم الان جمنای یه جاش خوندم ۶۵ ترابایت داده داشته برای اینکه ترین کنه خودش یا نه و عرض به حضور شما اینا بسیار هم چیزن اشتهاشون بالاست چون تعداد پارامترهاشون اور چند میلیارد و چند ده میلیارد و الی آخر بالاتره چیزه ماجرا اینه که هرچی داده بهشون بدین نه نمیگن و میخورن سعی می‌کنن یه مدل بهتری ارائه بدن باز یه مفهوم دیگه که باز خیلی سریع می‌خوام فقط معرفیش کنیم ازش بگذریم مفهوم توکنایزره که یک مفهوم خیلی تخصصی تو حوزه نشنال لنگویج

بالاخره وقتی ورودی می‌گیریم در حد کرکتر بگیریم در حد کلمه خیلی جذاب نیست ای و بی و سی و اینا بگیری چون مفهوم خیلی دیگه نمیتونه کنار خودش نگه داره ورد هم که بگیرید خب دیدن که خیلی چیز تمیز در نمیاد یه چیزی بینابین درآوردن که ما الان خیلی کار تخصصی روش نداریم اینکه توکنایز می‌کنن مثلاً فرض کنید پلیینگ مثلاً پلیشو یک کلمه میگیرن آی ان یه توکن دیگه خب که ممکنه تو فیلمی که بهتون معرفی کردیم از اونجا یه اشاره کوچیکی بهش میکنه دیده باشید خب که کلاً قبل از اینکه وقتی اینپوت تستتون رو میدید اول توکنایزش می‌کنید بعد میریم وارد حالا امینگ و ترنسفورمش میکن فرض کنید این تیکه داره برای ما انجام میشه یا اینکه توی عکس مثلاً این وی آی تی بهتون گفتیم روش ژ ترنس گفتیم عکس رو چیکارش کنیم و تو توکنایزش کنیم پچ پچ کنیم پچ ها میشن یه توکن ما ما

داستان چه معماری‌های معروفی تو حوزه لارج لنگویج مادلا داریم سه تا معماری معروف داریم یا انکرین که شبکه برت درباره نمونه یا روبرتا روبرتا شبکه‌ای که روبرت با داده‌های بیشتری شده و ربات تر شده خب خدمتتون عارضم که بست لنگویج مادله اینجوریه که گفتم یه جمله بهش بدید ۱۵ درصد کلمات که شما برداشتی خالی کردید اون برای شما تخمین بزنه خب شبکه‌های دیکودر آنلی داریم که جی پی تی ها همشون از این جنس کلا دیکودرن و انکر آن تو ترین شدن خیلی استیبل تر از شبکه های ان کد خب راحت تر و بهتر و بهتر سایزشون بالاتر بره این برای کلاسسیفیکیشن استفاده میشه یه متن بهش اخبار چیه

چه ویژگی جذابی تو شبکه وجود داره تولید میکنه داشته باشد بفرمایید وحشت نمیتونه مگر ایجنت های جدید اگر برسم جلسه آینده که قابلیت سرچ هم بهش اضافه میکنه یعنی میگه ببین برو گوگل سرچ کنید یعنی وزنش فریزه ولی قابلیت های میده به اینکه برو از کنار این ابزارها استفاده کن مثلاً تورات برو از اینم کمک بگیر این کار جذاب از چند تا چیز این کد را چیان شبکه‌هایی هستند که خب

E:\courses\LangChain Project\main root\data\LLM-Part1_transcript_part2.txt

خوب حل بکنه و شبکه برت تی فایو و ممکنه جی تی آی ورژن پایین تر یا لاماهای مثلاً ورژن حتی شبکه‌هایی هستند که چیزشون موجوده‌ها وزن‌هاشون همه جا موجوده در اختیارتون قرار داده میشه فکر نمی‌کنم ۳ و نیم به بعد قطعا نمیدن بهتون جایی خودشونه سر رو نمیدونم ولی لاما کلا بعضی هاش آزاده شما قدرت حافظه داشته باشید میتونید هم دانلود کنید مدل چند صد میلیون پارامتر داره که اینا رو بهتون حالا آقای چیز احتمالا میان مثالی که براتون حل میکنم آقای سهرابی‌پور براتون خب عرض به حضور شما اینم باز تاریخچه زمانیشونه که از

۴ ماه اول سال ۴ ماه دوم چهار ماهه سومش مثلاً چه شبکه‌هایی اومدن و هی رفته جلو تازه این تا انتهای ۲۰۲۳ هست ۲۴ جزش نیست جاهایی که می‌بینید یه چیزی زرده دورش یعنی پابلیک پابلیک کامل موجوده می‌تونید دانلود اینجا میتونید ببینید که متاد بیرون اومد دیگه درسته و همینطور gpt که الان دیگه به فور رسیده و هی داره میره جلو جلوتر و خیلیی‌ها هستن که دارن مدل‌های جدید این مدلی میدن بیرون و می‌تونید ازش استفاده ۷ میلیارد پارامتر دانلود می‌کنید دیگه اگه دلتون میخواد برید لایه آخرشو بندازید دور لایه آخر خودتون

خوانی داره کار میکنه خب یکی از کارهایی که باید بکنه مثلاً بچه‌ها نارسا خان مثلاً باید بتونن فرض کنید که حرف های آخر این چهار تا کلمه‌ای که بهشون میگم با هم بچسبونن یه کلمه بسازم مثلاً ما اینو به مدل های زبانی که میدادیم با وجود که واقعاً ببخشید هیچ دیوونه نبوده قبلش این مدل زبانی کنه این میفهمید تقریبا حل میکرد دیگه دقیقش کنیم چیکار میتونیم بکنیم یه هزار تا مثال اینجوری آماده بکنیم براش با روش‌هایی که بهتون میگم به جای ۷ میلیارد پارامتر مثلاً ۷۰۰ هزار تاشو عوض میکنیم و میبینیم این تسک رو دقیق آماده آماده خوب انجام میده ممکنه البته یه سری تسک های دیگش ممکنه یه کوچولو خراب‌تر بشه ولی برای ما مهمه چون تسک من الان مهم اینه که این کار برام خوب انجام بده دیگه خب بهتون میگم الان بهش میرسیم که این ۷۰۰ اگه مثلاً توی ۷ میلیارد تا

امروز برسیم بخش اول تمام کنیم بخش جلسه بعدیمون کلاً توی فضای تخیلی کاربرد یعنی چیزه هیجان انگیز از اونایی که میشنوید یه مقدار اول پیدا می‌کنید که ما چرا این کارا رو نمی‌تونیم بکنیم ولی از اونور هیجان هم داره که چه کارهایی میشه با تلفیق و صوت و اینا انجام داد یعنی بپردازم بخاطر همین سرعت گرفتم بچه‌ها یک مفهومی که شبکه‌های در واقع زبانی کلا هر شبکه میشه ازش انتظار داشت شبکه‌های خیلی قوی مفهومی به نام فیو شات لرنینگ خب فیوچات لرنینگ حرفش چیه حرفش اینه که آیا میشه با تعداد کمی نمونه نشون دادن به یک مدل بعد یه تکی ازش سوال بپرسید بتونه جوابتونو بده یا نه مثلاً تو حوزه ایمیج میتونه چی باشه فرض کنید که

زبان ایرانی چینی هندی اینا ترین شده یه مثلاً فرض کنید روستایی توی آفریقای جنوبی پیدا میشه که یه زبان دیگه‌ای برای خودش داره خب و یه عدد نماد دیگه‌ای داره مثلاً برای اعداد یک تا نوش هیچ چیز دیگه‌ای استفاده می‌کنه چهار تا دونه عدد یک اینو دارید چهار تا دونه بعد می‌خواید بگید که من این چهار تا رو بهش نشون بدم آیا پنجمی بیاد این میتونه بفهمه که اون یک زبان فلان روستای فلان آفریقای جنوبی بود یا نه خب اگه این فهمید بهش میگن با چهار تا نمونه نشون دادن از اون موفق شد چیکار کنه این کارو بکنه یه قابلیتی که ال ام ها دارند و فوق عجیب بود برای آدم ها مثل همین عرض کردم مثال همین مجتبی شهاب که ما می‌دادیم می‌گفتیم ما کلمه انتهای کلمات بهش بچسبون به اون خروجی میداد و درست میداد خب زیرو شات لرنینگه بدون اینکه هیچی شما قبلا تو این حوزه بهش ترینینگ داده باشید

کلاسیفیکیشن فرض کنید که من یه سری حیوون دادم که کلاسیفایی برام بکنه توی ترینینگ ست هم عکس زرافه رو هیچ وقت بهش ندادم ولی تو کلاسیفیکیشنش تو لایه در نظر گرفتم یا نامردی کردید یا عمدا نشون ندادید حالا این چجوری بازی رو شات بفهمه مبنای از لحاظ مبنایی کی میتونه اینو متوجه بشه هیچ زرافه ندیده بعد یه عکس زرافه بیاد این بتونه بگه زرافه است کی ممکنه این اتفاق بتونه رخ بده بقیه رو داره نه یک برای زیرو شات شما یک اینفورمیشن یا اطلاعات اضافی باید بهش داده

زرافه شتر گاو پلنگ است حیوانی است که از یک بر شبیه شتر است از یک بر شبیه همچین جمله داده باشه یه توصیف متنی ولی یک دونه زرافه بهش نشون ندادیم یا مثلاً گورخر بگید و این انتظار داشته باشید که راه راه بودن و یه جایی پیدا کرده باشه چون از چیزای دیگه شبکه ترین شده باشه اسپ هم یه جای دیگه پیدا کرده باشه این دوتا رو تهیه هم ببینه زیر شات لرنینگ به شما بگه چی این گورخر خب ها به ستون سمت راست نگاه کنید گفته ترنس انگلیش تو فرنچ دو نقطه چیز اینتر زده خب به یه شبکه چیز لارج مدل مثل جیpt این زیر شاید هیچی این فقط یه جمله یه جمله فقط کمکش کرده گفته ترن انگلیش امیدواره که این جی پی مفهوم اینو بفهمید و بعد گفته چی بفهمه که اینم تازه باید برگرده اگه میخواست ل

دو نقطه یه کلمه‌ای داده جلوش معادل فرانسه نوشته دوباره یک کلمه انگلیسی داده معادل فرانسه دوباره یکی دیگه داره انگلیسی شات لرنینگه سه تا نمونه به انگلیسی از انگلیسی به فرنچ برام ترجمه کن درسته حالا اگر شما از شبکه‌تون انتظار داشته باشید با همین شات جواب بده بهتون خب بهش میگن مفهوم این کانتکس لرنینگ اصلاً شما به شبکه دست نمی‌زنید انجام میدید الان شما فقط از شبکه انتظار دارید شما خروجی بده و امیدوارید یعنی چشم امیدتون به اینه که این بازی رو لرنینگ کار برای شما دربیاره خب اما میشه چیکار کرد میشه وزن های شبکه رو آپدیت کرد دو سر بوم من برای شما توصیف بکنم که بهتون بگم هیچ‌کدومش برای ما خوبیم وسطش یک سوم اینه که به هیچ وزن شبکه دست نزنید شبکه همین که هست با همین قابلیت شمایی که خودتو و

محدودیت‌هاش بساز چیکار کن خروجی ابزار داریم انقدر که بتونیم مثلاً ۷ میلیارد و ۱۷۵ میلیارد یا ۱۵۰۰ میلیارد پارامتر رو چیکار کنیم که منطقی هم خدمتتون گفتم میزنید ابروشو درست کنید چشمشو کور می‌کنید مثلاً میاد فقط تسک شما نهایت خوبه عمل میکنه همه چی یادش میره همه مفاهیم اینکه ما چیکار کنیم که با یک انتخاب بهینه از در واقع پارامترهای شبکه بتونیم فا کنیم برای تسک خاص خودمون مثلاً همون کاری که گفتم آقای شهاب تو ذهنش انجام بده ولی مثلاً یه مدل زبانی جلوشه فرض کنید چه برد حدود چند صد میلیون پارامتر داره و چیکار کنه که این

عادیتون همون با مفهوم گرادیان و اینا هی نمونه بهش بدید و آپدیت کنید که حالا بهتون میگم انتخاب این چیزی که باید از تست های قبلی یاد گرفته باشه کلمه ترنس یعنی چی انگلیش تو فرند یعنی چی انتظار داریم اینو یاد گرفته باشد دقیقا اگر بهش نمیگفتی دیگه منطقاً می‌ نوشت چیز اینتر میزدید نباید چیزی میداد اینو حداقل بهش بده بین اللهی ولی ولی این کانتکس لرنینگ چیزی بوده که خودشون هم هاج و واج موندن یعنی خودشون هم فکر نمی‌کردن اینقدر شبکه‌ها قوی باشن یک مفهوم یه مفهوم دیگه مفهوم ایمرجنت باز دوباره از اون

یعنی ظهور یه سری اتفاقات تو قبل از هیچ تغری نبوده بعد از اینکه دیتاشونو از یه عددی بردن بالاتر خودش ظهور پیدا کرده مثلا این به این عکس دی نگاه کنید که persian qa یه شبکه مثلا فرض کنید جی پی تی مثلا سه قبل از اینکه با تعداد داده‌های ۱۰ به توان ۲۲ تا مثلاً داده ترینش بکنن نمیتونسته جواب فارسی بده دقتش ۲۵ درصد بوده تعداد داده‌هاشونو بردن ۲۴ تا هیچ فرقی تو فرایند ترینینگ ش نبود دقت شده ۵۵ و این اتفاقات عجیب غریبی که داره ظهور میکنه تو فقط با رشد دادگاه زیاد میدن به شبکه زور شبکه میره بالا کلاً خب و این پدیده به نام ایمرجنت و این چیزی که واقعاً داره رویت میشه و الی آخر

خیلی زیادی یاد میگیره ارتباط پیدا میکنه و به چیزهایی داره میرسه که ما فکر می‌کنیم مدل سوال فارسی بهش ندادیم این رفته ارتباطات عمیق زبانی پیدا کرده یعنی مثلاً فهمیده که وقتی این مدل فارسی ترجمه کرده برای خودش این از نهاد فعل فاعل مفعول تشکیل شده بعد علامت سوال من باید اینجوری برم جوابشو بدم اینو از کجا یاد گرفته انگلیسیه از رو اون رفته دیده من اینجوری تولید کرده و خفنی به نظر میاد که هرچی دارن فقط مدل را میبرن جلوتر داره زورشم بیشتر میشه معضلی که از ته ماجرا بهش داده کم آوردن از هر چیزی داشتن خرج کردن حالا احتمال داره مثلاً نسل بعدی واقعا این باشه داده‌های خالی زیاد داره میده که ما نداریمش

ساعت‌ها آدم‌ها با همدیگه مکالمه دارند در روز ولی هیچکی از این استفاده نمی‌کنه خب باز که هست تو آموزه‌های دینی ما هست که همه اینا نگه داشته میشه قیامت لحظه به لحظه ثانیه به ثانیه چیزی که گفتی مهمه تو میگیرن خب اینو فرض کنید نصب مجوز بگیرن بیان کلی مثلاً میکروفون نصب کنن تو کل عالم داده رو بگیرن بعد دوباره می‌تونن به شبکه‌های عجیب غریب تر برسن و و و یعنی الان داده کم آورد استفاده کردن ویدیو هم داشتن استفاده کردن بعضی ها مجوز نگرفتن از کتاب های آدما از فیلم های هالیوود و و و استفاده کردن کسی اجازه نگرفته کسی شبکه ترند شده یه غولی شده الان برای خودش همه چیو می‌تونه بگه حتی زیر اشاره آره دیگه مقالات استفاده می‌کنن الی آخر و اما بریم سر اصل ماجرامون این ماجرای علمیه تنها ما

خیلی راحت‌تره و استیبل ترن توی توسعه ورت رفت ولی مثل تی فایو هم داریم که بردنشون جلو و سوال ما اینه که ما دنبال یک راه حل بینابینی هستیم نه میخویم شبکه داشته باشیم که به هیچیش نتونیم دست بزنیم که هرچی اون میگه زورش همونه که اون به ما داده نه اینکه ما بکوبیم از اول بسازیم خب مفهوم پیدا میشه به نام پارامتر افشن اگر تمام شبکه را بکوبید دوباره بسازید یعنی معماری دست نزدید ولی همه اون ۱۷۵ میلیارد پارامتر یا همه اون ۱۰۰ میلیون پارامتر دست بزنید بهش میگن اگر این اصطلاح رو جایی دیدید یعنی تمامی ها رو تغییر دادید فول

کی منطقیه که انجامش بدیم هم داده تو اشل خود اونا داشته باشیم خب بعضی وقتا ما ریسرس محاسباتی داریم داده به اون اندازه نداریم روش‌هایی هستند به نام پارامینگ از بهتر عمل میکنه مثلا شما ۱۰ ۰۰۰ تا دارید نتیجه میگیرید چرا چون داده های کم خطر زیاده تو واقعیت بد عمل میکنه ولی پارامتر بهتون می‌گیم که خیلی افشنت عمل میکن و بهینه عمل می‌کنن با یه تعداد داده خیلی خیلی خیلی کمتر تو اوردر یک تا ۵ درصده کل جاده‌های شبکه شما پایین شبیه اونه حالا سوال اینه آیا بهترین

مجهز به این روش‌های پپت شدن مجهز به پخت شدن در واقع خیلی خیلی خفن‌تر از خود حالت عادی و یه پله خفن تر از قدیمی و پیاده سازی اما چرا اصلا ما به پفت نیاز داریم چرا مسئله پارامتر افشن مهمه چرا مهمه بچه ها چرا ما باید شبکه بتونیم کنیم چون تسک‌هامون مدام عوض میشن تسک های جدید ظاهر میشن که تا دیروز اصلاً فکرشم نمی‌کردیم وجود داشته باشن عرض به حضور شما یه سری کارها لازمه که

تسک‌های ریزتر بشکونه و بره جدا جدا انجام بده اینه که چیز بکنه مثلاً میگم فرض کنید شعوری پشتش نبود یه مشت نوشته بوده این رفته یه چیزایی یاد گرفته مثلا وسط راه یاد گرفته فحش هم بده بعد شما مثلاً می‌خواید آقا یه مقدار رعایت بکن مثلاً یه همچین چیزایی باید چیز بذارید که وقتی خروجی تولید یه جایی هم مثلاً ببندی و فلان و اینا و این الاینمنت ها و تغییرات لازمه انجام بدید و کلاً ترنسفر لرنینگ کردن هم به تسک های جدید هم به مدالیتی های جدید یعنی تلفیق نوشته عکس فیلم الی آخر در کنار همدیگه سبب میشه که ما به پفت احتیاج داشته باشیم اما سوال یه عده گفتن ما بیایم چیز کنیم مثل حالت عادی ترنسفر لرنینگ از آخرین لایه بگیریم بیایم عقب مثلاً یه شبکه برتو بگیریم اول فقط لایه آخرشو

خودش حدود ۱۰ به توان ۸۰ خب بعد مثلاً ۱۰ به توان شش تاشو که تیون میکردن میدید نسبت به پولی فا ۱۰ درصد پایین تر خب ولی بد نبود ها مثلا شبکه فقط لایه چند تا لایه آخر که حدود یک میلیون تا پارامتر بوده فقط ریتیون می‌کردن ۹۰ درصد دقت رو می‌رسیدن بعد آوردن ۱۰ به توان هفت تاش کردن دیدن اومدن بالاتر ولی دیدن زمانی که بخوان به دقت کولیفای برسن باید چیکار کنن تو اردر ۱۰ به توان هشت تا باید پارامتر

با حدود ۱۰ به توان ۵ تا پارامتر کردن به همون دقت و یک سوال مطرح شد که چیکار میکنه آیا ما لازمه که از لایه آخر بیاریم عقب یا میشه حقه‌های دیگه‌ای زد و کارهای دیگه‌ای کرد همین قدر بدونید که پس روش‌های در واقع ترنسفر لزوما بهینه ترین نیستند اما دنبال پارامتر افشنت متدها هستیم در یک نگاه بچه ها اون سه تا چیزی که می‌خوام خدمتتون بگم اینجا براتون آوردیم سه تا روش پت می‌خوایم بهتون بگیم که اینا می‌تونن تکی استفاده شن و می‌تونن هر سه تاشون با همدیگه استفاده شن و هر کدومشون در عین اینکه تعداد پارامترهای کمی از شبکه رو میکن دقت قابل ملاحظه‌ای میارن بالا یک روش اسمش هست ادپتر که

شبکه‌های چیز عادی ترانسفورمر عادی بعد از اینکه اتنشن و فیت فوروارد نتورک داشتیم یادتون بود میرفت با خودش جمع میشد و بعد از نتورک‌ها می‌گذشت یه سری باکس های قرمز رنگی اینجاهایی که من بهت میگم اضافه کن خب یکی بعد فوروارد نتورک ها اضافه کن حالا تو ورژن اولیش بعد اضافه کرده بعدش دیدن که حتی اینم بردارم اون بالایی رو فقط بزارم خوبه بهتون میگم چیه یه روشی داریم به نام سافت خب که تو ورودی تغییرات به وجود میاره من این سوال ازتون بپرسم به زیرو لرنینگ فرض کنید به چیز به مثلاً یه ال می‌ید ترنس انگلیسی دو نقطه چیز اینترزنید یک کلمه آیا امکان شما میتونستید عوض بکنید که باز هم این کارو بکنه آره مثلاً پلیز

کاملا ممکنه تغییر بکنه یه عده‌ای دستی اومدن روی این کار کردن چه پرامتی بدیم دقت تسکمون میره بالاتر یعنی ایده دادن که من مثلاً چند تا جمله پیشنهاد بدم یا الگوهایی پیشنهاد دادن که اگه این کارو بکنیم دقت شبکه‌های عمیق همیشه دنبال کنن همه چیو کاری کنن که حتی این هم در بیاد توی روش سافت اینجوری میکنه که میاد به ورودی چند تا توکن اضافه تر اضافه میکنه که این قرمز ترینبلن مفهومش این میشه که جمله‌ای که شما دادید چون چند تا هم اون ترین آورده انگار جمله‌تون رو تغییر داده مثلاً جمله شما واقعاً این بوده ترن دیسپ انگلیش یا فرام انگلیش تو فرنچ ولی اون با توکن های که آورده مثل این بوده که

دیده که این بهتر کار میکنه که حقه میزنه و چند تا توکن اضافه میکنه تو ورودی و مثل اینکه جمله شما را عوض میکنه یه روش که داستان عوض میکنه و هر سه تای اینا میتونه با هم حتی استفاده بشه و اینا در واقع مهمترین متد های معروف ترین و الان کلاً دارن از اینا استفاده میشه عرض به حضور شما که یه ده دقیقه استراحت بفرمایید ساعت ۱۱:۴۰ برگردید من تمام می‌کنم و آقای سهراب میگم بیاد حالا بخش اول کد شما تشریف بیارید چیز به درد بفرمایید خیلی سریع بگم سه تا روش معروف داره زدید

اولین روش بسیار کارا بود و تو اون عکس دیدید که در مقابل جزئی بسیار بسیار قوی عمل می‌کرد روش به نام اضافه کردن ماژول‌های ادپتر حرف یادتونه یه بخش در واقع چیز داشتید سل داشت فوروارد نتورک میشد میگه بیا بعد سلف اتنشن و بعد نتورک یه همچین شبکه بزار که اینجا نشون دادم خب یعنی اینجا که قبلا هیچی نبوده شما ادپتر بزار و حالا خود ادپتر چیه خود ادپتر یک شبکه دو لایه است میگه مثلاً فرض کن که توکن

بردار هزارتایی بهت رسیده اول کوچیکش کن مثلاً بکنش ۱۰ تا ۵۰ تا بعد یه مثل جلو چیزی روش بزن و دوباره برگردونه به هزار کاری که میکنید اینه حالا تو شبکه بیا اینو این ادپترها رو به تمام ماژول‌های انکودرتون اضافه کنید و سایر وزن های شبکه رو فریز کنید این دفعه دیگه برخلاف ترانسفر لرنینگ که لایه آخر یکی مونده به آخر دوتا فریز میکرد یه چیزهای فریز داره یه چیزایی چند صد میلیون پارامتر یا جی پی تی ولی آخر یا چند میلیاردشون هدفرا چی میشن یه سری تعداد پارامتر محدودی که رفتن وسط شبکه چی شدن جا شدن و شما فقط می‌خواید اینا رو تیون کنید تا اون تسک مورد نظر شما انجام خب پس یه

در ضمن ادپتر علاوه بر این شبکه فوروارد یه دونه چی هم داره اسکیپ کانکشن هم داره که قبلش بیاد و بعدش وصل کنه حالا فرض کنید یه شبکه گرفتید برای مثال زدید خوب میخوید اول شبکه فعلا کارهای قبلی خودش بتونه انجام بده شبکه با چه وزن های چیز میکنید اینشیالایز میکنید نزدیک چند نزدیک تا چه اتفاقی بیفته مثل اینکه وجود نداشته باشه یعنی فاز چیز هست فاز مستقیمش وجود نداشته باشه چه اتفاق خوبی میفته تمام تسک های قبلی یادشه حالا میگه شروع کن حالا

خرابکاری میکنه یه مثال بزنیم اگه شما یه دونه ۱۰۰ تایی داشته باشید خب بعد ببر چند تا ده داره چند تا پارامتر اضافه میکنه بایوس رو ولش کنید یه ۱۰۰ تا رفتید به ۱۰ تا این چند تا بهتون میده هزار اینجا داره ۱۰ برگرد یه ۲۰۰۰ تا پارامتر به تعداد ضربدر دو هم بکنید میشه ۴۰۰۰ تا به تعداد ماژ این کد دارید و تعداد پارامتر می‌بینید که در کل مثلا ۴۰۰ هزار تا در حالی که

تلاش میکنه خروجیش خیلی غافلگیر کننده نباشه برای ورودی بالایی یعنی ماهیت یه دلتایی به خودش میگیره اینکه نسبت به اون لحظه دستش رسیده تغییراتی هم بده جزئی که چی بشه که بعدی که داد بالای غافلگیر نشه بتونه تسک های مثلا چیزهای قبلی خودش تا حد امکان داشته باشه خب و این ماجرا سبب میشه که چون ادپترها بعضی وقتا قابلیت این دارند که ترین شد برش دارید یه جای دیگه یه روزی استفاده کنید مثلا میگم یه شبکه دارید یه تسک یک من درآوردی مثل اون

عوض میکنید چی میشه ۲۰۰ میلیون خب و کسی که یک دست انجام میدید و در ضمن ممکنه شما به درد دیگران بخوره جوری که دارن جاهایی بارگذاری بکنید که توی پیاده سازی بیخیال ش بریم جلو یه مطالعاتی هم انجام شد که دیدن حتی بعد چیز هم نیاز نیست سل پشن هم بزاری همین فقط بده نتورکی هم بزاری هم به همون کیفیت خوب کار انجام میده یه مثال ببینید از ادپترها گفته مثلاً یه بار برت لارج رو برداشتم خب

داشته باشند ۹ تا ۲۰۰ میلیون تا ترین کرده تا به دقت توتال ۸۰.۴ درصد برسه همین کار رفته با ادپتر انجام داده کلا دو درصد پارامترها از لحاظ حجم درگیر بودن به دقت ۷۹.۶ خب فقط جا داده و فقط ادپترها رو ترین کرده با دقت نزدیک به همون کاری که کرد رفته چیکار کرده کار خب عرض به حضور شما باز دوباره مثال های دیگه که تو ادپتر هست دیدن که وقتی رفتن لایه‌های آخر شبکه را ترین کردن

از مثلاً ۱۰ به توان ۷۰ با دقت ۷۸ درصد رفتم در حالی که با ادب ۵ تا پارامترم هنوز دقته بهتر از با اون تعداد داده دارند زمانی خیلی موفقه که داده‌هاشم خیلی زیاد باشه اگه داده‌هاتون کم باشه خطر داره رو ادپتر واریانت های مختلفی زده شده یه آقایی به نام فایفر توی دانمارک گروهشون خیلی توی زمینه کار کرده اومده مثلا همین پیشنهاد داده که آقا بعد چیز جا بدید بخش جا بدید در ضمن اون جایی که میرفت بای پس میشد قبل عدن نور بزارید دیگه بهتر میشه با چیز رفته با سعی و خطا دیگه اون اسکیپ کالکشن رو اگه به جای قبلش بگیرید دقت شبکه بالاتر میره فقط تنها جایی که در واقع ترین میشه این بخش بالاییه ماژول های اینکودر یا دیکودره یه بخش پایینش کامل فریز شده

E:\courses\LangChain Project\main root\data\LLM-Part1_transcript_part3.txt

باید وایسه خروجی هدهای مختلف کانکت بشن درسته که بعد بیاد ازش استفاده کنه این فرقیه که اساساً داره با اون دو تا روش دیگه‌ای که می‌خوام خدمتتون عرض کنیم و حتی دیدن استفاده کنند زبان محلی تو شیلی که دیتا ست خیلی خیلی کمی هم داشته با تعویض فقط کردن مثل انگلیسی حلش کرده بودند و دیدن که اینا از جاهایین که میتونید تعویضش بکنید و مثلا یه سری مفاهیم مثل اینکه تو اون جمله کی نهاده کی فلانه تو چیزهای دیگه دیده شده باشه و این فقط ارجاع بده به اون تسک خاص اون زبان خاص خوب و احتمالا این کار بتونید انجام بدید موضوع

یکی ببینیم سرما خوردم الان عرض کردم خدمتتون اینه که ازتون پرسیده بودیم به نظر عوض کنیم ممکنه نتیجه تغییر کنه همتون شهودی گفتید که بله ماجرا اینه که تو سافت کاری که داره وارد شبکه ترانس بخش اضافه میکنه کنار اون چیزایی که شما دادید خب شما نوشتید ترنس تو انگلیش این چند تا چهار تا خونه دیگه هم اضافه می‌کنه مثلاً تو اردر ۵۰۰ تا هم باشه کافیه ۱۰ تا دونه توکن بگذارید

درصد پارامتر فقط تو شبکه فاینتیون میشن و دیدن که همین کارو که می‌کنن دقت می‌ره بالاتر و یه سری تسک‌ها رو می‌تونن چیکار کنن به خوبی انجام بده یه چیز دیگه داریم از سافت یه کوچولو خفن‌تره بهش میگن پریفیکس و اون حرفش اینه که فقط نیاد تو ورودی شبکه این توکن ها رو اضافه کن برو تو ورودی هر لایه توکن اضافه کن یعنی حتی لایه یکت عوض شد یک سری توکن های ورودی میاد اونجا هم باز دوباره چیکار کن دوباره بیا توکن جدید بهش بده و این تا آخر شبکه برو جلو و حتی دیدن باز دوباره توی سری تسک های مثل سایزیشن یا تکست تو تیبل دقتش از پولیفاتیون روی اون شبکه بالاتر رفته تعداد داده های محدودی که داشته و اتفاقی هم که میفته معادل ریاضیش اینه که میاد به

کوئری و ولیو احتمالاً به ماتریس دبلیو ماتریس پی و ولیوهایی که بود کیو ولیو داشتن میرفتن زرد میشد ادامه میداد چند ستون اضافه کردیم که اون ستون و این ستون دستی اضافه کنید و اینو بکنید شما شبکه خواهید داد و دقتش خیلی خوب میشه و آخرین روشی که می‌خوایم بهتون بگیم یه روش حرف حسابش هم اینه میگه شما کی و ولیو داشتید که میرفت دات میشد این دبلی برو اصلاحش کن این w تمام پارامترهاش با یه دلتا دبلیو جمع بزن ولی اینجوری که من میگم این کار بکن w ممکنه ۱۰۰ باشه یعنی چند تا پارامتر داره ۱۰۰۰۰ تا

ماتریس چاق و لاغر در نظر بگیر اولی باشه ۱۰۰۰۰ در ۲ فرض کن بعدی باشه ۲ درصد خب اول که میاد به دو تبدیل بشه به صد دوباره و چیزی که تولید میشه ۱۰۰۰۰ تاییه و این بره با اون در واقع چیزهای معادل در یارو ولیو جمع بشه ها اضافه کنه خب و این فقط ترین بزار w فیکس کن مثلاً رفتی با رفتی جلو دبلیو کو فیکس بکن ولی اجازه بهش بده به موازی دبلیو یه تغییراتی رخ بده wو به علاوه دلتا دبلیو بشه تو هر درایهش اون دلتا چجوری گفتیم به دست میاد یه ماتریس آ و بی شما تریل کن که وقتی ایکس میاد

ورودی اول در آ ضرب بشه ابعادش کوچیک بشه بعد دی درش ضرب بشه بزرگ بشه این هم سایز میشه با w جمع بشن و اینو بده تا آخر برو دیدن این کارو که می‌کنن باز دوباره دقت‌های عجیب غریب می‌گیرند و فقط همین قدر به من بگید الان فرض کنید باز مثل قبلی ۱۰۰% در دو داریم ماتریس یه دو درصد چند تا پارامتر داریم کلاً ۴۰۰ تا تک دونه داریم برای دبلیو کوکی مثلاً ۴ تا تک با همین تعداد در واقع دبلی ها دیدن تغییرات عجیب غریب رخ می‌ده مثلاً فرض کنید که روش لورا رو که زدن روی مثلاً دیتا ست چرا ویکی اسql دیدن که با تعداد مثلاً ۱۰ به توان هفت تا پارامتر دقتش از حالتفیکس بهتره از عادت از ادپتر دار بهتره ولی آخر خب و خوبیش اینه که

داشته باشید یه بار دیگه مرور بکنیم ادپترا می‌رفتن کجا می‌رفتن بعد فیت فوروارد می‌نشستن تو هر لایه لوراها چیکار می‌کردن w رو اصلاح می‌کردن با یه دلتایی جمع می‌زدن و پریفکسیونینگ چیکار میکرد یا فقط به ورودی ها میومد چند تا توکن اضافه میداد شما داشته باشید خب کلا اگر استفاده کنید تعداد پارامتر شبکه که استفاده میشه زیر ۵ در درصد تعداد شبکه های تعداد شبکه‌های پارامترهای شبکه را دست میزنید ولی واقعاً می‌تونید با دقت و عجیب غریب برسید به خصوص وقتی تسک های جدید میخوید بهش یاد بدید که قبلاً ندیده و از مدل‌های زبانی استفاده کنید البته با توجه به محدودیت‌های فعلی سخت افزاری نرم افزاریمون کسایی که فایل میکن ودارن شبکه برت و تی فایو و اینا رو دست میزنن

دانشگاهی می ارزه یا نه یا اینکه بزنیم نگاه کنید که اصلا دستش نزنید با خودش برید جلو یا اگه می‌خوایدش بکنید روش شبیه ترنسفر لرنینگ بد نیست نمیگم می‌کشتتون ولی روش بهینه‌تر وجود داره روش‌های لورا چیز هدف و پریفشون اینه که شبکه رو یه جایی کوچولو

لول هد مثلاً ورود می‌کنه خب و این تغییرات رقم میزنه و این اتفاقاتی که باید به خاطر بسپارید تا انشالله جلسه بعدی تو کارهای ازش چیز کنیم دیگه استفاده بکنیم معرفی کنیم یادتون بیاد که اینا چی بودن عصبی ماتریس همونه دیگه ماتریس دبلیو همونه شبکه عصبی اول میکنه بعد بزرگ میکنه حالا روش تحقیق کردم جالبه گفتن آیا این دلتا دبلیو که داره اضافه میشه صرفا داره چیز هایلایت میکنه یعنی تو تسک های قبلی میاد فقط پر

واقعا مفاهیمی از تسک جدید بکنید چون اول شبکه می‌خواید تغییر نکنه یعنی صفر باشه تاثیرش بخش بیش خود صفر میزارن استفاده کردید خود دبلیو برت بیاد بالا ولی به مرور زمان چی میشه وارد بشن تغییر من برداشت خودم شخصی میگم یکی دو تا چیزهایی که حاشیه خوندم یا شنیدم کنارش یکی در مورد این جمله را اضافه کنم مطالعه کردم دیدم لایه آخر خیلی تاثیرشون بیشتر از عدد لایه

افت کیفیت کار داریم و به نظر میاد لایه آخر دستگاه خیلی مهم میشن که همه واریانت‌هایی که به ذهنشون خورده رو زدن گفتن ثابت باشه برای چی باید این جمله صفحه اینجا باشه شاید اونجاتر بیفته بهتر باشد میخواستم بگم این تفاوت ذاتی شبکه‌های فعلی اون با قبلی قبلی یک لایه رو فریز میکیم اینجا این کارو کرده که وسط وسطاش محاصره میشه لایه های قابل ترین شدن با لایه های غیر قابل شدن و این ترید شده ها یاد میگیند که ورودی و خروجی که میدن تحویل تو اشل قبلی باشه یعنی باید یاد بگیرند که چیزی که میدن تحویل بالایی تغییرات

شبکه خیلی هوشمند میشن برای اینکه ماژول‌های قابل چیز باشد برداشتن اینزرت کردن باشند یعنی ماژول‌های هوشمندی که می‌تونند کارهای دست نمی‌زده ولی الان این کار میکنن برداشت شخصیت خب بچه‌ها من تا این لحظه اجازه بده متوقف کنم آقای تشریف بیارید تا ۱۲: نیم بچه‌ها اگه امکان داره تشریف داشته باشید من خودم جلسه دارم ولی ما یک جلسه دیگه بیشتر نموندیم حیفه واقعا برسیم همه اینا رو وقت گذاشتیم حالا محمد هم زحمت کشیده کلی

دسترسی بدم به اشتراک خود در خدمت سلام عرض می‌کنم همگی

مرور میکنیم با پکیج ترن انجام بدیم استفاده میکنه موقع ری استارت بکنید بعد ادامه ادامه بدید تا بتونید ازش استفاده کنید وگرنه توی بخش آخر ارور میده برای اینکه اگر حالا این بخش آخر توضیح میدم اول که مربوط به حالا یه سری غذا ۱۰۱ غذا یه نمونش اینجا هست و حالا لی

پایین همبرگر نوشته دیتا ست خیلی راحته صرفا اسم دیت انتخاب برمیدارید بعد میشه سریع انجام بشه یه تعداد انتخاب انجام دادیم که حالا تست نمونه دیدیم حالا تاب برای اینکه حالا

لیبل رو حالا یه آیدی خروجی کلاً کار می‌کنه اینکه پچ پچ میکنه عکس رو نیاز نیست از این کارا بکنیم یه پروسسری همراه با خود مدل معرفی می‌کنن لود میکنیم افراد همون چیزی که مدل ورودی بدیم بدست میاد سه مدلی هم که انتخاب کردیم اینه ۱۶ در ۱۶ عکسامون باید 24 باشه روی نت ۲۱ کلاس شده اینجا حالا یه کاری که خوبه که بکنیم برای زمانی که میخویم بکنیم برای اینکه خیلی سریع مدل

خود عکس‌هایی که دارن تبدیل می‌کنیم نرمالایزش میکنیم که سریع انجام بشه تعریف میکنیم که انجام بدیم براتون نوشته ولی خب روالش خیلی ساده است چیز پیچیده ای نداره زمانی که میخویم در واقع انجام بدیم خب باید یه بچ بکنیم که بعد اونا رو بچه ها رو به مدل بدیم یه دونه کلاس تعریف کالکتور که فقط به پایین تر که ببینید کلاس که بدیمش خودش

پیچیده‌ای نداره خود ترینینگ اول مدل رو لود میکنیم در مورد لورا صحبتی نمی‌کنیم لود کردن مدل بالاتر اسم مدلی که تعریف کردیم حالا توی ها میتونیم نمونه اش ببینیم اینجا میتونیم بیاید داخل سایت فیس مدل سرچ بکنید نشده اینجا

روی هدف الان میاد

تبدیل بشن آره اسم مدله بعد خب اینجا وقتی که لودش میکنیم میگه که یه سری از وزن ها به صورت رندومشالله شدن باید از مدل استفاده کنید دلیلش اینه که اضافه شدن چون این کار میکنه به صورت خودکار خود پکیج ترنس میاد یه سری هد اون هدی که روی

انجام بدیم خب بعد از اینکه حالا مدل لود کردیم حالا الان بهش برمیگردیم یه تابعی کلاس ترینر باید تعریف کنیم که مدل را بهش میدیم بالاتر الان باید تعریف بکنیم دیتاچ بکنه تستمون با توجه به اینکه مدل اصلی ما شماره توکنایز باید بده و اون هم متریک ما که حالا پایین شده اینجا برای حساب میکنه خب برگردیم سراغ مهمترینش هم

آپلود میشه اینجا باید اون دایرکتوری اون اسمی که می‌خواید رو بهش بدید داخل ممکنه استفاده نشن یا می‌تونید بهش بگید که حالا استفاده حذفشون بکنه یا نکنه استراتژی اینکه داخل این پایین که داره چیز میکنه هر مرحله کار انجام که استراتژی همون بحث حالا سیو کردن مدل شما هر چند سیو میکنم که باین تا آخرش که بشه از بعدش سا ترین ولیشن

بیشتر برای زمانی که مدل شما بزرگ خیلی بزرگ نمی‌تونید انتخاب بکنید استفاده می‌کنیم به این شکل است که ۴ تا استپ صبر می‌کنه اون گرادیان‌هایی که در محاسبه میشن رو با همدیگه جمع میکنه بعد از اون چهار تا تموم شد تقسیم انجام میده این کمک میکنه که اگه سایزمون کوچیکه یک مقدار دقتش پایین تر میاد ولی خوب در واقع کمک میکنه که انجام میشه خیلی زیاد بکنیم مدل بزرگ باشه مشکل

دیتاکالیتور نه بر اساس این چیزی که ما اینجا تعریف کردیم معمولا مدل اجازه شروع مشخص مدل انتخاب کردم مدل مختلف

سمت چپم دستگاه مختلف تعریف می‌کنیم در نهایت به ۹۱ درصد دقت بود همچنان بشه حدود ۱۶ دقیقه ۱۶ دقیقه طول کشید اینم حالا برای اینکه مدلتون آپلود بشه روی ازش استفاده بکنیم خب یک خروجی هم از مدل ببینیم مدلی که به صورت شده یک دونه عکس برداشتیم که حالا اسمش اینه حالا تلفظشو نمیدونم

ادامه بدید اینجا اول پروفسور رولود میکنیم بعد روی اپلای میکنیم که در واقع همون کار پس سازی و دیتا تبدیل کردن روی هاپ و حالا این مربوط پای که در واقع لاجیک ها را میگیریم میتونیم کلاسی که حالا بیشترین احتمال رو داره انتخاب بکنیم و در نهایت هم لیبل نهایی را که این بار درست چیز کرد حالا برای یک روش ساده تر هم اینه که از استفاده

کلاس ما دوست داریم به اون حالت برسه ۹۲ قبل رسیدیم کامل لود بکنیم و

باید بسازید یا رایت یا حالا هر چیز دیگه بهش بدیم وقتی که این کار میکن اون چیزی که اول بود اینجا که لود بکنیم که را بکنید یه حالا یه چیزی برای شما باز کپی بکنید وقتی این کار بکنید دیگه شما را میشناسه که شما هستید اکانت دارید و با این توکن اصلی میتونیم مدل سراغ مراحلی که انجام خیلی مشابه هم هست توضیحات هم هست خودتون بخونید

اضافه بشه انجام میدیم تعریف میکنیم اینجا در واقع بخشی که متفاوت است شروع اول اینکه یه تابع تعریف کنیم برای اینکه تعداد پارام را به ما بده کل پارامتر درصدی که این دو تا با هم دارند زمانی که مدل را به صورت عادی لود بکنیم که

تعداد پارامترها حدود شروع میکنیم حالا ساخت اضافه بکنیم اول از همه باید یک کانفیگ تعریف بکنیم استفاده کنیم از لو استفاده کردیم این همون رنگ ماتری چاق و لاغ است استفاده ۱۶ اینجا انتخاب ۱۶ آلفا در واقع پارامتر اسکیلینگ زمان ما در واقع به این معنی است که

E:\courses\LangChain Project\main root\data\LLM-Part1_transcript_part4.txt

برای اینکه مقایسه بکنیم حالا کی یا چیزهای اضافه کنیم شبکه عصبی شبکه اضافه بکنیم باید نخواستیم تاثیری نمیذاره ماژول اون که اضافه میشه توسط خود زمانی که مدللود میکنیم اگر این رو اضافه نکنیم اون پارامتر فرض نمیخو

یک هم بزاریم بازم نسبتا خوبی میرسیم یعنی نیاز نیست بزرگ باشه توضیحاتی که بخونید در مورد خود لورا وکتور دوباره تعریف میکنیم که ما بسته خیلی بالاتر ببریم با توجه به اینکه کمتر میخوید انجام بدید پارامترهایی که میخوید استفاده کم میشه از ۸۰

جلسه چیزی که حالا کامل مشابه همدیگه اند فقط اینجا ۱۶ کردیم مدل ۳۲ لود میشن اینجا حالا ۱۶ انتخاب میکنیم سایز مدل کوچک شبیه هم اینجا فقط وجود داره اینه که لیبل ها هم باید بهش بده چون حالا این ساختار خود

خیلی متفاوت رو خودمون تعریف میکنیم که ما می‌خوایم در واقع تبدیل انجام میدیم چون فکر میکنم دلیلش اینه که اون خیلی که اضافه کردیم جدا از مدل حساب بشه اونجا زمانی انجام میدادیم خودش متوجه میشد که این کار باید بکنیم الان خیلی نداره و دوباره تعریف میکنیم دو مدل رو بهش میدیم تعداد فریم و تست دوباره که بسته

عوض میکنم مقایسه ولی خوب با این حال دقت خواهد رسید بعد دوباره اینجا مدل آپلود میکنیم یه چیزی که وجود داره اینجا ما مدل مدلینگ را آپلود بکنیم مدل بیس ما یک چیزی ما یک سری ماژولرا استفاده کردیم اضافه کردیم ما فقط سیو میکنیم و زمانی استفاده وصل میکنیم و چیزمونو انجام بدیم و چیزی هم که گفتم برای اینه که اینجا میبینید که وقتی دانلود شده کلا سه

مدل باید دانلود بکنیم مدل اصلیمونم که خب چک اصلی کرد با آپلود کرده مدل اضافه میکنیم اضافه میشن و در نهایت میرسیم به مدل پتمون که حالا میخویم انجام بدیم یه عکسی حالا اینجا هست که مشابه حالا یک نمونه هم از کلاس که بازم درست پیش بینی کرده نکاتی که وجود داره اینه که خب لورا حجم که ما در واقع در نهایت ذخیره کردیم خیلی کم شده مگابایته

یک چیز دیگه‌ای هم که هست ترینینگ اینجا ۵ دقیقه شده ۱۵ دقیقه توضیحاتی در مورد خود اون آر و پارامتر اسکیلینگ آلفا دادم و همین خیلی ساده داریم تلاش کردیم تست خیلی سریع خدمتتون معرفی کنیم و یه نمونه اجرای همینجوری خیلی سخت چند خط جزئیات البته دارند وقت بگذارید ولی

ویدیو های واقعی چه ربات های مجازی ولی اینجوری نیست که بتونیم بهش برس دانش صحبت بهشون بگم که کلا ها وارد بشن

برای چیزهای مختلف خودشون یه سری نمونه کد در اختیار میزارن لازم نیست همیشه از صفر بنویس دانشگاه استفاده بشه ولی فعلا یه مقدار زود آقا عرض خاصی جلسه بعدی باز خواهیم شد

E:\courses\LangChain Project\main root\data\LLM-Part2_transcript_part1.txt

به نام خدا دوستان عزیز ارجمند عرض سلام و ادب و احترام وقت همگی بخیر شادی خیلی ممنون بابت حضورتون که امروز جلسه آخر جلسه آخر حضوری مونه و میخویم مبحث به کارگیری موجوداتی که عمری کمتر از یک سال و نیم دارند و توی حوزه رباتیک اجتماعی یا کلاً هوش مصنوعی ببینیم و در حد توان هم سعی میکنم اینا رو ارائه بدم یه مقدار سرعت میگیرم بیشتر فقط برای اینکه شما بشنوید همچین چیزهایی وجود داره و ممکنه به جزئیاتش ورود نکنیم به دو دلیل یکی اینکه وقتش نداشته باشیم یکی اینکه تسلط کافی رو من ندارم یعنی اینکه خود منم در واقع تازه با بعضی از اینا اسماً

توانم خدمتتون ارائه امروزها می‌خوایم صحبت کنیم که اصطلاح مدل زن که با ویژن لنگویج الا شروع میکنیم حالت تاریخی داره ولی بعدش مراجعهین که واقعا از استفاده میکنیم که فقط من باید برم یه ویدیو رو در واقع با فلش جابجا کنم حد فاصله استراحته خدمتتون نشون میدم جلسه

امسال تعریف بشه یه همچین چیزایی می‌خوایم انجام بدیم ولی اینکه چقدر خوب در بیاد خودمونم الان نمیدونیم باید بریم مطالعه میکنیم که با چشم بازتری واردش بشیم ولی چیز جذابی برای اینکه ایجنت های رباتیکی داشته باشیم که از مالتی مدال در واقع ورودی ها استفاده بکنند و خروجی های از این جنس داشته باشند و از استفادهتی یعنی چی زمانی که ورودی خروجی یا هر دوشون از جنس های متفاوتی باشند میگن شما تو مطالعات مالتی قرار دارید مثلا فرض کنید ورودی تو تصویر باشد عکس میدادیم میگفتیم زیرش توضیح بنویسید یا عکس بدیم

عکس تولید کن یا اینکه عکس و نوشته بدیم یه سوال ازش بپرسیم در عکس زیر چند تا تخم مرغ عکس ورودی یه نوشته ورودیه خروجی باید یه عدد از جنس تکست بده اینا همه از جنس چی‌اند مطالعات مالتی مدل حالت‌های مختلفی برای مالتی مدل ها دیده شده اون چیزی که ما امروز می‌خوایم در موردش بحث کنیم تککسچوالی مادل یعنی اینکه حتماً توی ورودی از نوشتار استفاده میشه به اون چیزم مدل مدل حالا الم من حتما بخش زبانی داره ولی حالت های دیگه هم دیدن که ما الان بحثی روش نمی‌کنیم و هر کدوم میخوید میتونید بخونید انواع شبکه های که توسعه پیدا کرده از گذشته تا به امروز میتونید روش مطالعه بفرمایید خب خدمتتون عارضم که ما اجازه بدید چند تا درس بگیریم از اتفاقاتی که تو حوزه هوش مصنوعی افتاده

سال ۲۰۱۲ به اینور که الکس نت اومد به نظر می‌رسه که ویژن یه دفعه رشد کرد ۲۰۱۵ که رسیدن با در واقع رشد تولد و بعدش تقویت اونا ویژن به یه نقطه خیلی خفنی رسید به نقطه هایی که لرنینگ می‌تونست تو حوزه مثلا فراتر از انسان عمل کنه ولی اون زمان‌هایی که هنوز بین ویژن صوت و تکست خیلی اصطلاحا اتحاده به وجود نیومده فکر میکردن فقط دارن برای حقه خیلی ساده که سیگنال صوتی و اسپکتروگرم ازش بگیرید و به سود و عکس تبدیلش کنید یه سود تبدیلش کنید فکر شما دیگه بقیه از تکنیک های چی برید جلو برید جلو حالا یه اتفاق دیگه که افتاد و باز دوباره رفت جلوتر حوزه ان پی زد جلوتر و بقیه حالا

انجام بدن بعد در آینده‌اش یه عده اومدن خب اینا رو زدن تنگ هم گفتن که ما برای چی هر مدل زبانی یه کار فقط بتونه انجام بده یه مدل خوب بیاریم بالا که ده تا کارت با هم بتونه انجام بده بعد تازه داستانی که یه سری اتفاقاتی مثل ایمرجنت رخ میداد تو جلسه گفتیم وقتی تعداد شبکه های تو مدل ظاهر میشد که قبلا با همون روش ظاهر نشده بود و فقط حجم زیاد دادگان و ترینینگ زیاد اونو به وجود آورده بود و خودشون هم خیلی دلیلش نمیدونستند و این داستان یونیفاید کردن یکپارچه کردن این ماجراها بود که منجر به تولید مثلا شبکه های مثل جیpt شد و در نهایت هم رفتن سمت اینکه یه جنرال پرپسستنت تولید کنند که حالا ابعاد مختلف

مطرح شد که وایسا مثلاً ما سعی کن به چه میدونم یه سری چیزا رسیدیم یه سری در واقع شبکه‌هایی از قدیم رسیدیم مثل رزنت و اینا که خوبن چه جوری میشه از ایده‌هایی که توی مسیر رشد ان ال پی رخ داد ما هم استفاده کنیم و ویژن اون قوی کنیم مثلا فرض کنید که همونطور که تسک های متنوعی اند میتونه باشه میتونه ترنسشن باشه میتونه نمیدونم مثبت یا منفی فلان موبایل خب اومدن تو شبکه های یونیفاید اومدن چیکار کردن کاری که همه اینا رو با هم انجام بده دیگه یعنی یه شبکه باشه که هر کدام میپرسین جوابشو بده خب به این فکر کردم که شاید توژن هم بتونیم همین کار کنیم یعنی شبکه بیاریم که نه فقط کلاسسیفیکیشن بکنه کارهای دیگه هم بکنه کارهای ویژ ها چی اند کلاسیفیکیشن که دیگه عصر الاغ

یکیش از حضور شما که خدمتتون عارضم می‌تونست چیز باشه در حد پیکسل بگه که این مثلاً تو این عکسه اینجا متعلق به گربه بوده اینجا متعلق به کوه بوده اینجا متعلق به چمن بوده خب و انواع تسک‌های دیگه‌ای که می‌شه تو حوزه چیز تعریف کرد مثلاً عرض به حضور شما که ویژوال کو که بهتون گفتم عکس بهش بدید یه سوال ازش بپرسید ایمیج کپشنی که عکس نوشته بشه تسک های در واقع یا ویژ یا دستگاه مالتی مدال باشه و یه عده داشتن به این فکر می‌کردن که چجوری از ایده که تحول الل ما داده رخ میده استفاده کنیم برای ویژش اینو بیاریم بالا و حالا سبب شد که مثلاً حدود ۲۰۲۱ شبکه به نام کلیپ بیاد بالا که اساس کارش ایده می‌گرفت از مدل های زبانی ولی توش نبود به اون معنا که از جی پیt یا لاما

از اینجا داستان و اون چیزایی که تا به امروز ادامه پیدا کنه و به یه نقطه های جذابی برسه که آخر ماجرا رو اول بگم این که شما تا الان تو حوزه‌های کاری خودتون تو حوزه کار کردن با ادوات مکانیکی ربات ها همه چی از جنس کد ورودی میدادید واقعا به این نقطه برسید که کلام بگید مثل آدم و اون همه اون کارا رو براتون انجام بده دقیقا کاری که حالا علی میخواد بکنه پزشک اینه که به ربات بگه برو صابون برام بیار همین یه جمله در همین حد بگید خدا نگهدار ربات دیگه باید هزار کار بکنه اینجا باید اولاً متوجه بشه چی گفت برای خودش ترجمه کنه مفهوم بفهمه باید بفهمه که باید بره سمت صابون بعد صابون کجاها میتونه باشه

سرویس بهداشتی تو آشپزخونه آشپزخونه کجاست یا چی میشه که من بدونم اینجا آشپزخونه است و و کوروش به دیوار می‌خواد کاری کنید شما که ایجنتا همزمان با شما باشد تا الان یه چیزی انجام خانمی داره توی فیلم تو درس چیزش همین مباحث ادونسش یه جایی داره دوستی داره فرض کنید اسمش الکسه خب این الکس مثلا ربات تیون میکنه که از اینجا بره اونجا دوباره برش میگردونه دوباره بره فلان جا دیگه میگیره میگه بچه ها نگاه کنید الکس داره بیشتر از ربات کار میکنه خب در حالی که ما هدفمون اینه که الکس برو اینجا برو اونجا فلان فلان و داده‌ها رو بگیره و بندازه توی مدلی که این کار بکنه درسته این رویای ماست که دارم تلاش میکنم بهش نزدیک میشن الان مدل های عرض به حضور شما آخری که گوگل هم داره ارائه

با نام‌های آخر اومده جلو واقعا دارم این حوزه رو می‌درن و گوگل کرده که تو حوزه رباتیک یک موجود بی‌رقیبی بشه که بتونه خیلی از تسک‌ها رو با کمک ایده‌ها همینه اجازه بدید بهش برسیم که چه حقه‌ای می‌تونیم بزنیم خب چه درس های به نظرتون ما گرفتیم و رویه فکری آدما از ۲۰۲۱ به این و این زیر ۳۰ سال اخیر چی بوده برای اینکه بتونن مالتی مدل ها رو بیارن بالا خب و دیگه آخریش که مثلا بلیط دو بوده مثلا ببینید که حالا ظاهرش فقط شاید تو عکس باشه نشونتون بدم که چیکار میکنه سعی میکنه یه حقه ترکیبی بزنه و اینا ولی هنوز

اندازه‌ای که فلامینگو مثلاً اینا دارن دیگه نیست خب خیلی خفن شدن خب بچه ها متناسب مالتی مدل های زبانی فقط نکست توکن بودن دیگه شما تکست ورودی میدادید از جنس تکست خروجی عکس نمیگرفت دیگه فقط نوشت شما

و اینجوری بود که میرفت از تی پی تی استفاده اولین چیزی که می‌خوایم در موردش صحبت کنیم اینه که ما سیر تاریخی دیدیم که چجوری از شبکه ترانس استفاده شد قوی بشن همین مسیر بریم جلو و ویژ لنگویج الا یا ویژ لنگویج مادلا رو که دی ال ام مخففش باشه رو ارائه بدیم پخته ترین ها نیست فقط من سیر تاریخی دارم میگم اینکه چیکار کنیم یه شبکه داشته باشیم که

جاهایی برسیم که مثلاً روزهای هفته کنار هم بیفتند نه تنها از این خفن تر این جمله با این جمله کنار هم یا این دوتا خیلی با هم فاصله دار بیفتند یه عده به این فکر کردن آقا اگه برای تکست همچین فضایی مثلا ده هزاری وجود داره که اینا رو میشه کنار هم قرار داد و متضاد قرار داد شاید برای ویژه هم وجود داشته باشه بریم پیدا کنیم یه چیزی پیدا کنیم که عکس مثلاً حیوونا یه جا بیفته عکسای میوه ها یه جا بیفته ایده اینه دیگه درسته آیا میشه این کارو کرد یا نه دیدن که بله میشه اولین شبکه معروف‌ترین شبکه‌ای که زدن و روش چند تا واریانت اومد و هنوز هم که هنوز کار می‌کنن شبکه‌ای بود به نام کلید خب که مخفف اگه اشتباه نکنم

شبکه معروفی بود که اومد و چند نوع واریانت روش زدن انواع اسم ها داره که با همدیگه میبینیمش این کلیپ ایدش چی بود خفن‌ترین شبکه کلاسیفیکیشن که تا به اون روز اومده بود چی بود رزتی بود که روی ایمیجمنت اومده بود بالا داشت حدود مثلا چه میدونم یک و نیم میلیون دو میلیون تومن عکس داده بودند که لیبل یعنی یکی آدم نشسته بود یه مشت آدم بیکار نشسته بودن برچسب زده ولی ما با خودشون گفتم کلی چند چند ده برابر چند هزار برابر عکس تو اینترنت داره خب خیلی بیشتر داریم ولی اینا لیبل لزوما نیستند چیکار کنیم از این اتفاقی که سوپر لرنینگ بود توی ال ما استفاده میشد از هر متنی از کلمه بعدی

کلی از این پیرها رو جمع کردن عکس و نوشته عکس و نوشته هر عکسی یه چی داشت یه نوشته داشت شبکه کلیپ چیکار میکرد شبکه کلیپ یک شبکه دوال انکودر بود یه اینکودر داشت که عکسو از توش رد میکرد تا بره به یک چی برسه حالا بردار چکیده و عصاره هزارتایی از یه ورم یه شبکه میداد اون متنی که شما داشتید که باز به یه امبگه یه بردار مثلاً هزارتایی دیگه اوکیه حالا حرف حسابش چی بود می‌گفت من یه سری لیبل هم ندارن اینا دیگه چیکار باید بکنم یه حقه میگ ببین من میام ۲۰ هزار تا ۲۰ هزار تا ۳۰ هزار تا ۳۰ هزار تا از این پیرها رو می‌گیرم تو بک سایز های تو یک بک سایز تو ۳۰ هزار تا

عکس رو از یک ترانسفورم رد می‌کنم که بخش ایمیجم باشه نوشته از چی از یک ترانسفورمر تا دوتاشون به یه امبدینگه مثلاً هزارتایی فرزند جوری تعریف می‌کنم که دات این در دات این بره به سمت یک خب دات این با دات بقیه بره به سمت صفر دور بشه به این می‌گفتم کانترستینگ لرنینگ یه لیبل مجازی فیک داشتیم جمله اولش برن خیلی به هم شبیه بشن این عکسه با ۲۹۹ تا دیگه بره تا حد امکان دور بشه دوباره عکس دوم با جمله معادلش خیلی به هم نزدیک بشن و با بقیه دور بشن یه لاس اینجوری زد آقا این کار که کردن به این نتیجه رسیدن که اوکی من فقط بچه‌ها دقت کنید یک چیز نیست خب توکن کل ام کل جمله اول ها اینجوری نیست که جمله اول اگه خودش ۲۰ تا کلمه داره

سگی در بیابان در حال دویدن است هزارتایی داره ۱۱ این باید بره چی بشه لاسی که تعریف می‌کنه برای اینا یک بشه و داتش با بقیه صفر بشه که یه چیزی شبیه نیاوردیم و به این میگن کانتراست خب حالا بین بچه مصطفی نوروزی که مسیریابی ربات انجام میدن از این استفاده کردن به شبکه خیلی خوب رسیدن خب شبکه‌ای که قابلیت زیر و شات داشت مثلاً زرافه بهش نشون نداده بود تا الان ولی زرافه رو میداد البته تو کلاس‌هاش یه جایی برای زرافه دیده بود شانس اینکه زرافه رو بدون اینکه قبلا دیده باشه شناسایی کنه وجود داشت حالا تو تست فکر می‌کنید چجوریه فرض کنید

۲۰ روز شاید بیشتر از ۲۰ روز روی مثلاً ۵۰۰ تا کامپیوتر با جی پی یوهای فوق خفن ران شده یه چیز عجیب غریبیه خب که تازه اولیشو کلیپ بعداً واریانت خوبیش این بوده که دیگه نیاز باشه آقا می‌خواید تست کنید چیکار می‌کنید دیگه شما تو تست نوشته بیابانه گل حتی خیلی تخصصی گل رز هلندیه چیکار می‌کنید فکر می‌کنید سوالم گل رز هلندی میاد بگید که چیه کلاسیفای کنید شبکه کلیپتون ترین شده به ذهنتون میخوره که تکست معادلی ندارید میرید تکستون رو میدید به

تمام کلاس‌هایی که شما دارید مثلاً ۲۰۰۰ تا ۵۰۰۰ تا کلاس باشید تک تک اون ۲۰۰۰ تا ۵۰۰۰ تا را از تکست انکرتون رد می‌کنید تا هر کدوم یه ام بدین بهتون دات میکنید نگاه کدومش بیشتر میشه و اتفاق عجیبی که افتاد دیدن که زیر که دارن میکنن مثلا روی دیتا ست ایمی چت خورده درصد دقت دارند خب اصلا شبکه های شات نداشتن شما نمیتونستی بهش گل رز هلندی و نشون ندی ولی ازش بخوای خب بعد تازه اومدن چیکار کردن اومدن یه حقه زدن که بتونن مقایسه کنن اومدن به مثلا نمیدونم شبکه های قدیمی یه چیز اضافه کردن یک اضافه کردن این لایه آخرش پاک کردن با یه لایه خطی جایگزین کردن و دوباره مثلا ترنسفر لرنینگ کردن مثلاً دیدن تو وان شات لرنینگ رزنت دقتش

شبکه چیز بود دو تا شبکه ترنسفور حالا بخش ایمیلش میتونست باشه بخش بالاش که ترنسپری و این میرفت این میرفت یه جوری خروجی بود براش که کمک کرد یه لاس فیک براش به وجود آورد که چیز کنه که یارو کنه فقط اینا رو ترین کنه ولی دیگه بعد که عکس میخوای بدی کلاس کنه تو دیگه لیبلی نداری

اونی که بالاتر میشه جواب البته این حالت با یک دونه زدن کلمه فراتر از اون ۱۰ تا مثلا ممکنه

کلاسی که میخوای داشته باشی حتما باید توی زمان ترینینگ بالاخره یکبار دیده باشه چون باید بتونه براش یه چیز تولید کنه یه دونه باید بتونه تولید کنه مثلا نمیتونه زرافه رو اصلا تو نوشتار بهش نداده باشه باید داده باشه یه جایی متن ضعیف کلمه در بیاره هزارتایی در بیاره تو تستش که بعدا دات کنه با اون یکی سامانه که قبلا دیده بودم الان نمیدونم چقدر استفاده میشه قبلا خونده بودم دیدید مثلاً یه سری مجموعه های هستند مجموعه صنعتی که شما وقتی وارد شی چیز تصویر ورودی تو میگیره یارو میکنه اجازه میده که در باز کنه اتومات یا نه فکر می‌کنید مثلاً چیکار می‌کردن اینا وقتی میخواستن بزنم ایده کان تو ذهنتون بیارید چی ذهنتون می‌خوره می‌خوام کارت وسیله

شبکه میکنه که یه ایده خیلی خام اینه که عکس مثلا محمد از مقابل و محمد از بغل دارم دات کنی خودش هزار یعنی خودشه اگه نشد این نیست ولی واقعیت که تو دنیای واقعی هیچ وقت اونی که شما به چشم میبینید ارتباطش خوب نیست همیشه باید برید چی از یه شبکه رد کنید به یه امبدینگ غنی برسه مثلاً از یه شبکه طوری میتونستم ردش کنن یه هزارتایی برسه اون هزار تایی ها را دات میکردن پیر خودش با خودش باس زیاد میکردن و با بقیه چی کمش میکردن حالا شما اومدی جلو عکس وایستادی یه دونه عکس قبلا بهش دادی عکس جدیدتو

عکس چیز استفاده شرکت بره یه صد تا کلاسه تهش امlp ترین میکنه ترنسفر همه رو فریز میکنه و یک بار هم با اون میره چون شبکه های قبلی هیچ نبودن این می‌خواسته یه چیزی ارائه بده که بتونه مقایسه کنه

لایه آخر جدید با تعداد کلاس‌های ما بذاره و لایه آخرشو فقط چیکار کنه و دیده که با این کار کردم خوب در نمیاد خب کلیپ که اومد یه دفعه یه تحولی به وجود آورد که تونست حجم زیادی از دیتا ست موجود در اینترنت استفاده کرد ولی به هر حال نمیتونست همه تصویر با هم حل کنه همین اومدن چند تا تسک با هم بهش دادن مثلا بالای ۳۰ تا تسک به خوبی تونست حل کنه کلیپ تو مود دیفالت خودش نتونست حل کنه ملت شروع کردن انواع کارها روش کردن من جمله تغییر دادن آبجکتیو فانکشن ها فقط به این در واقع کلمات نگاه کنید کلیپ اوا فیلیپ ریجن کلیپ

تغییر دادن لاسا با تغییر دادن آبجکتیو فانکشن های رو کلید نگاه کنید اگه خواستید یکیشو فقط بین اینا ببینید پیشنهاد یادتونه چیکار میکرد یه سری جمله بهش میداد ورودی ۳۰ درصد کلمات پاک میکرد و تخمین بزنه درسته بعد شما یه سوال ازش میپرسید باید در قالب برت میپرسید مثلا کو داشتید مثلا به انs نقطه چین بعد میزدی یاد گرفته بود که اون کلمه جا خالی را پیش بینی کنه دیگه حالا انشالله که یس و نوش درست برای شما پیشبینی می‌کرد خب و این کاری که مثلاً توبا کردن این بود که یه دفعه تعداد پارامترها رو بردن بالا یه میلیارد تا و از ایده چیز استفاده کردن ایده

استفاده کردن عکس‌ها رو پچ پچ کردن بعضی از پچ‌ها رو انداختن بیرون بعد گفتن که تو یاد بگیر چیزایی که ما انداختیم بیرون بازسازی کنیم بعد شبکه خیلی قوی شد و یه دفعه به شبکه رسیدن به اسم اوا که می‌تونست تسک‌های ویژن رو با هم حل کنه یعنی چند تا کار با هم بکنه نمیدونم چیز بکنه عرض به حضور داشته خب از منظر آرکتکچر کلاژدها قابل بررسی مثل کلیپ بود که دیدیم یه عده اومدن شبکه های ان کد یا پیژن پیشنهاد دادن که حالا باز در حد ساده فقط به هر کدوم اشاره می‌کنیم یکی از شبکه های که باز دوباره دقت آنچنان بالایی نداره مرز دانش نیست ولی شروع خط فکری بود یه شبکه‌ای بود به نام سین خب حرف حسابش چی بود خیلی ساده به داستان نگاه کرد و منطقی هم هست که نسبت به بعدی ها که میگن دقتش خوب

تلاش می‌کنم یه ترن مپی براش پیدا کنم که معادل بشه بیفته اونجا مثلاً عکس سیب وقتی ورودی میدم یه امبدینگ ۱۰۰۰۰ تایی براش به وجود بیاد بیفته نزدیک کلمه سیب تکست ده هزار تاییه طبیعتاً یه مپینگ لازم داره دیگه ها با چیز شبکه های کامولوشن میزنه میاد عکسشو پچ میکنه و اینو به شبکه میده و مثلاً چی فرض کن ۹ تا توکن تولید میکنه این ۹ تا توکن فعلا تو فضای ایمیج باید چیکار کنید باید یه ترنسفورمیش پیدا کنید که شما رو ببره تو فضای تکست یه فضای ترنسفورمیش در واقع اینجا داره پیدا میشه میومده کانکت

تولید شدن و ترانسفورم شدن دیگه انگار رفتن تو فضای کجا فقط ماجرا اینه که سختی پیدا کنید که عکس سیبو میدی و پچ پچش می‌کنی به ۹ تا چیز می‌شکونی این ۹ تا چیز کنار هم انگار یه جمله است دیگه یه ترانسفورمیشن خوب پیدا کنید که جمله‌ای که از پچ های سیب تولید شده با اون جمله‌ای که در واقع در توصیف اینه تقریبا یه جا بیفته یا معادل بشه یه فضا بیفته و اینا رو کنار هم می‌داده یعنی توصیف عکسی که رفته تو فضای متن به همراه متن واقعی رو می‌داده وسی تلاش می‌کرده جمله بعدی تولید کنه مثلا فرض کنید کل عکسو می‌داده کلمه اول باید مثلا الان دو تا سگ خب مثلاً جمله باید این تولید میشده دو سگ قهوه‌ای و سفید داشتن توی مثلاً جاده خاکی می‌دویدن

E:\courses\LangChain Project\main root\data\LLM-Part2_transcript_part2.txt

اول به نظر میاد که کل عکسو می‌داده و استارت توکنو می‌داده اون باید چیکار میکرده تو رو تولید می‌کرد بعد تو رو می‌داده به این به همراه اون ۹ تا پچه باید داگز تولید میکرده ولی آخر می‌رفته تا آخر جلو که این دیگه این شانس رو به وجود آورده که بتونه ویژوال کو انجام بده یعنی عکس بهش بدید یه سوال بپرسی عکس می‌شده بخش پچ اولش سوال جوابی که تولید می‌کرده می‌شده چی به وجود میوم نماد جواب اون سؤاله دیگه درسته و این اولین شانس که براتون به وجود حقه‌ای که میتونستید بزنید تا ویژوال کوسشن حل متوجه شد خب این البته سیم بعدی داره که معلوممه خیلی توقعش بالاست یعنی در واقع سریع

به هم بچسبه یعنی خود تکست رو نیاد درجا بچسبون به خیلی دیگه که خود اینو این کارو بکنیم مثل همون میمونه که دو تا عکس شما را اول دادیم گفتیم همین دوتا عکس دات کنیم اگه بالا شد خودتی اگه نشد خودت نیستی خب ولی به هر حال برای شروع شبکه بعدی شبکه کوکا بود که عرض به حضور شما خدمتتون عارضم که باز از کانت لرنینگ توش استفاده میکرد و این دفعه مثل سین ولی یک حرفه ای تر چیکار می‌کنه مثلاً یه عکس بهش دادی

فضای غنی شده خودش بره اوکی تکستتون چیکار می‌کنید از یک مدل زبانی میگذرونید تا اونم به شما یه ان کد از خود تکست بده ولی تا اینجا تکست هنوز عکس رو ندیده چطوری بود عکس تا یه چیز در حالی که اینجا اینجوریه که تست برای خودش میره بالا یه چند لایه میره بالا ایمیج هم چند لایه میره بالا حالا دو تا چیز غنی شده داره خب بعد چیکار میکنه اینجا یه حقه‌ای می‌زنه که یه شبکه‌هایی هستن به نام گروه وی آی تی نمی‌دونم اسمشو شنیدید یا نه میگه که ببین مثلاً عکسون فرض کنید ۱۶ تا پچ داره خب طبیعتاً باید من ۱۶ تا داشته یا یه

میگه ببین من کاری می‌کنم که همیشه این خروجی عکس‌ها به مثلاً ۱۰ تا در واقع ام بدین طور بشکنه همیشه عددش ۱۰ باشه صرف نظر ویدیوتون چند فریم باشه میگه چیکار کن یه سری توکن لرنb بزار تو شبکه واقعا میشه میره به تمام اون مثلاً فریم چیزهایی که از فریم ها در آمده توجه میزنه خب و با یه مکانیزم یه در واقع چیز میکنه جمع جبریشون رو پیدا میکنه و ترین میشه که مثلا میگم اون ده تا میشه ۱۰ تا عصاره مثلاً اولیش میشه سه برابر فریم اول به علاوه دو برابر دوم به علاوه هفت برابر دهمی

عصاره اول دوم تعداد دایره‌های آبی مثلاً فرض کن ۱۰ تا چیز خوب که عصاره به وجود میاد و فرقشم با قبلی اینه که صرف نظر از که عکستون ویدئوتون چند در چند یا چند فریم باشه چی میشه اینجا همیشه شما چی دارید یه تعداد توکن ثابت دارید مثلاً ۱۰ تا دونه حله که این ۱۰ تا دونه عرض کردم اومده با یه سری توکن های لرنبلی که رفتن به عصاره های اتند کردن توجه کردن و یه سری محاسبه در شدن و یه چیزی خروجی به دست اومده خروجی غنی شده این آبیه رو اینجا دارن حالا وقتی که این آبیه رو که عصاره ایمیجم باشه با شبکه یونی مدالم که از خروجی های شبکه های چیز میاد

چه عکسی می‌خواد حرف بزنه و سوال جواب بده اینجا دیگه شبیه چی میشه اینا کی و ولیو شبکه دیکودره میشن اینجا هم که ورودی‌های دیکودر خودش اومده بالا میاد هر جمله که میخواد بکنه با این آبی ها آبی ها میرن به چیزا ساخته بشه برای لاسش دو تا لاس در نظر میگیره یک لاس کانتراست لرنینگ داره مثل قبلا تو بچش نگاه میکنه مثلا فرض کنید هزار تا عکسه بعد کاری میکنه که نوشته این عکسه به این عکسه نزدیک و از سایرین دور بشه خب یک کلاسش اینه یک کلاسش هم اینه که باز دوباره یک توکن سی الs و یه توکن ببخشید این

دستی به خروجی ایمیجه و خروجی تسته یه توکن دستی به نام cls به نام نارنجی اضافه میکنه کاری میکنه که این دو تا نارنجی خروج‌هاشون برای پیرها به هم نزدیک و برای غیرها چی باشه از هم دور باشه که چی من جمله رو تو ترینینگ دارم تا ته دیگه میدونم وقتی تو داگزه باید بعدیش چیه ظاهر بشه رانینگ کلمه بعدی تولید مثل قبلا که این تلاش کنه خروجی ران تولید کنه درست بعد که رانینگ تولید شد چی بعدی میشه این باید تولید بشه و این دو تا لاس که با همدیگه جمع میزنه شبکه به نام کوکا به وجود میاد که خیلی دقت مناسبی داشته و عرض به حضور شما میتونسته تسک های ایمیج بیس رو انجام بده من جمله و الی آخر حتی فکر میکنم میتونسته انجام بده یعنی که عکس بهش بدید

شما دارید صحبت میکنید خب سه تا آدم تو تصویر آدم قرمز بره اونو ببره بیاره بیرون یه شبکه بتونه فکر میکنم شبکه های از این جنس یا حالا برای نسل بعدی قطعا میتونست فکر میکنم میتون انجام چی کارهای بعدی عرض به حضور شما که کلا ها زمانی که اومدن اینجوری بودن اگه بخوایم خلاصه‌شون کنیم یه عده اینجوری بودن که از ایمیج و از تکست جداگانه هر کدام از رد میکردن تنگ هم میزدند و سریع لاس رو حساب میکردن یعنی

شبکه‌هایی بودند که شبکه‌های فیوژن بهشون می‌گفتن قبل از اینکه در واقع به لاس برسند خروجی ایمیج کد و خروجی تکست ان کد رو با همدیگه فیوز میکردن مثل اینجا که اومدن و اینا و تلفی میکردن بعضی از شبکه بودن ایمیجر و تکست ورودی رو تو ان کد میدادند قاطی میشد تلفیق میشد و در نهایت از تلفیقی تلاش میشد که دیکودر جنریشن انجام بشه و خروجی تولید کنه جواب سؤونو بده توصیف عکس بده مثلاً فرض کنید شما یه عکس گربه و سگ دادید که دارن با هم بازی می‌کنن بعد تو تستش نوشتید که دیسکرایب کن مثلا این عکس مثلاً int

ولی آخرین چیزایی که اومد که یه پله خفه تا اینجا بچه‌ها اسمی از ها نیست درسته مستقیما در مورد چیزا حرف داره میزنم هیچ وقت نگفت که از جی پی تی استفاده کن از لاما استفاده کن نسل آخری که اومده کار میگه آقا برای چی از ال ام های که موجودن استفاده نکنیم اینایی که روی چند ده ترابایت از اینترنت ترین شدن و همه چی رو بلدن یعنی تو تکست دیگه دویدن دیگه همه چی رفتن دیدن و میگه که چیکار کنید شبکه های نوع آخر بهشون میگن ادپت که استراحت میدیم و در موردش صحبت میکنیم اینجوری که بخش ایمیجش که میاد ان کد میشه بخش تکستشو ممکنه وارد یه ال ام بکنند خب و

کانکتورهای بین خروجی عکس و خروجی تکست و چیکار کنم یه کانکتورهایی به وجود بیارن اون کانکتورها چی شد از لاین خودش بره بالا یا با شبکه هایی که من از صفرش میکنه چند صد میلیارد پارامتر داره ولش کن بزار بره فقط خروجی های اینا رو برای اینکه به هم دوخت کنم دستی و اون کانکتور میکنم اد میزدیم فلان و اینا یه همچین چیزی فقط و اساس کارشون اینه و خیلی هم قدرت هاشون زیاد شده این چیزایی که الان صحبت کنیم ۱۰ دقیقه دیگه از این جنس یه دقیقه استراحت بفرمایید ۱۰:۳۵ دقیقه تا ساعت ما ادامه میدیم و بعدشم آقای چیزو

سلام مجدد عرض به حضورتون که نوشته‌ای نداره کجا باید بنویسه که خب عرض به حضور شما که سلام مجدد خدمتتون عارضم که رویای ما افق ما دورنمای ما یه همچین دو تا وویی که روز اول بهتون نشون دادیم دوباره امروز با همدیگه مرور کنیم اینکه چگونه در واقع دنیای مدرن هوش مصنوعی که الان بحث ها داغه

فیلم اینجوریه که به این ربات یک تکست فقط گفته شده برو چیپسو برام بیار برو چیپسو برام بیار خدایا این اتفاقایی که می‌افته اینه که مجموعه کارهایی باید بکنه باید مفهومی بفهمه چی گفته شد بعد بفهمه برای اینکه این تسک رو حل کنه باید چیکار کنه باید چند تا فصل بشکونش خوب برای در واقع چیپس رو بیارم اول اینکه باید چیپس رو پیدا کنن اصلاً چیپس چی هست به سمتش حرکت بعد وقتی نزدیک شدن بگیرمش این گرفتم خودش یه اکشن خب و تازه مطمئن باید باشم که گرفتمس وارد چیزش میکرد اذیتش می‌کرد یه بار دیگه پول رو بیارم پیداش میکنه چیپسه رو میره چیپس رو برداره

داشته خب این نقطه برسه این رویای آدم ولی این فیلم های که دارید میبینید در حضور شما بیشتر کار بچه گوگل درسته اینا خوب اولا خیلی رویاییه اینا فقط در واقع چیزهای موفق سناریو موفق دارن بهتون نشون میدن پیک های مختلفی اومد تو این زمینه ها ارتباط پیدا میکنه کلا به حالا چی بهشون بگو ایجنت های مجهز به ها همچین چیزایی و این کارهایی که بتونن انجام بدن

شما بنویس من میخوم چه کارهایی باید انجام دهم این واقعا الان این کار میکنه شماره مویسه که این کار بکن درسته بعد چیکار میکن حالا برای بقیه چک کنید مثلا فرض کنید میگه به سمت اون حرکت کن چیپس حرکت آره چیکار میکنیم میتونید ابزارهای مختلفی که دم دستتون رو صدا بزنید دمت گرم

آخر و از اون استفاده میکنم چیکار کنه بره این کار را انجام بده خب تو لول اولش تنها کاری که میکردم این بود فقط چیکار کنه تسک ها رو بشکونه به چهار پنج تا کار مختلف و دیگه وقتی انجامش میداد دیگه نداشت یه پله دیدن تسک انجام نشه مشکلی به وجود بیاید هیچ وقت نمیفهمه اومدن فیدبک میدادن یعنی چی یعنی این با ویژن خودش میرفت یه کاری انجام میداد که انجام شده خبر موفقیت انجام دادم که اگه لازم شه اون دوباره ریپ کنه برای شما ها و این پیپر های مختلفی زدن خیلی هم جدید ۲۰۲۱ شروع شده داره میاد جلو و کلا دو سه سال عمرشه و عرض کردم الان به آر تی ایکس رسیده

ببینید چیز میکنه طرف براش تایپ میکنه که نوشابه من ریخته چیکار کنم چی چی همچین چیزی نوشته اون میشکونه اول یک فایند کوک اول میرم مشابه پیدا میکنم دو پیک آپ کو برش میدارم ساب تسک داره میش تری گو توشک سطل آشغال اونجا تا اینجا تا اینجاش انجام چهار میدم اسفنج رو پیدا میکنم

۵ می‌گیرمش یا ۶ پلان برات میارم خب یه همچین چیزی اومد خب که مثلا اولا اولویت بندی چاپ دستگاه چیکار کنه بعد از کجا بدونه که کسی موفق بود یا نبود فکر میکنم اگه اشتباه نکنم با چه احتمالی انجام بده و اینا یه چیزایی بوده که توش لحاظ میکردن و فیدبک می‌دادن به جان اجازه بده من برای خودم یه چیزایی نوشتم ببینم از شما که به این میگن ایجنت ها خوب سیکن از سمتژن هیچ فیدبکی به مدل داده نمیشده

سمت چپیه پایین خالیه بالا راست کنم بالاتر از سیکن باشه چون اون نمودارهای نگاه کن قرمزه که سمت راست تصویرش آورده و ویژنش توشه فکر کنم بالاتر یعنی فکر کنم مونولوگه مطمئن نیست یا مونولوگ بود پس من اشتباه نوشتم اینا دیگه خفن تر شده عرض به حضور شما که این سمت چپیه پس یه الگوریتم به روزتری بود که محمد میگه و اون یکی دیگه سمت راستی بالا ضعیف تری بود بین ارتقاش دادن ولی آخر ببینید اتفاقی که میفته آخر

استفاده کنید برای سه تا اتفاق باید رقم بخوره یکی اینکه شما باید داشته باشید یعنی وقتی یک جمله کوتاهی میگید اون در حد یه انسان بتونه اگه لازم شد به ۱۰ تا ۱۰۰ تا زیر تسک بشکونه قبوله یا نه مثلاً شما به یه آدم وقتی آقا لیوان آب برام بیاد یا مثلاً لیوان قرمز خیلی چیزای دیگه تو خودش نهفته است آقا تو راه میری زمین نخوری لیوانای دیگه روشکونی لیوان آبیه رو برداری برو آب کن اونجا آب و و بیاری دست من برسونی ولی تو همین چند تا جمله چیزه میگ فقط یک ایرانیه که میتونه فرایند نمیدونم برو و این کار را انجام بده و ۱۰۰ هزار اینم بشور و بخر و بعد اینو به من برسون تو یک کلمه بگه اومدیا دقیقا

تعریف کرد باید بدونه که خوب انجامش داده یا نه و کجاش گیر کرده تو چه مرحله گیر کرد یا نتونست انجام بده لازم باشه پلنینگشو عوض کنه فکر اساسی بکنه مثلا گرفتن رها کردن برو به سمتش حرکت کن به مانع نخور درسته میتونه چیزهای ساده ساده باشه که وقتی تسک پیچیده شما میخوید انجام بدید همه این کار کنه حالا برگردیم سر درسمون عرض به خدمت شما که خب ما آخرین ورژنی که میخویم بریم سمتش اینه که واقعا از های قوی استفاده کنیم مدل

فکر می‌کنم که یه همچین چیزی وجود داره نمونه‌های دیگه‌ای که باز ما هست عرض به حضور شما مثلا چیز بدید عکس بهش بدید بگید چند تا سیب تو تصویره یه عکس بهش بدید نمیدونم یه ستون کادر قرمز آورده گفته بگو تو اون ستون قرمز چه اتفاقی افتاده یه عکس بهش داده گفته برو باندینگ باکس بکش دور آدماش و موقعیت دقیقا همون کار لوکالیزیشن برام انجام بده نوشته ها این کار برام بکن همچین و این عکس رو ورودی زده و ایندا

کار می‌کند باز دوباره از ساده‌ترین ایده شروع می‌کنیم که بهترین ایده نیست ولی در واقع را دست ترین ایده بوده مدل فروزن مدل فروزن حرفش این بوده که شما وقتی یه عکس میدی و یه نوشته خب برای نوشتتو برو از یک المان قوی رد کن و در ضمن هم نکن خب ولی یک ویژن اینکودر داشته باش که این عکسه که میره توش به یه چیزی تبدیل بشه که از لحاظ توکنی هم سایز توکن های خروجی المنت بشه و با اون قابل رقابت بشه یعنی یه جورایی اکثر بردی تو اون فضای ۱۰۰۰۰ بعدی المنت که این بره بهش بچسبونه و فقط این بخش تو آپدیت شه مثلا با صورت اول مثلا تولید شود بعد اسمال رد بوت آن حرف حرف تولید شه یا اگه سوالی پرسیدید عکس و سوال به عنوان ورودی شروع

انگار به جمله شما یه چند تا توکنی که از عکس اومدم میچسبونه و اینو میره از یک باز دوباره رد میکنه و براتون تلاش میکنه تولید کنه حالا تو ترینینگ بهش دادید یه سری چیزها را انشالله بگید که چیکار کنه انجام بده این اولین ایده بود که اومد و واقعاً هم همین به ذهن می‌خورد دیگه یعنی شما فضای ۱۰ ۱۲ هزاری خوب دارند تلاش بکنید که چی عکس هم ببری تو همون ۱۲ هزار بعد و انشالله بگی که اون چیزی که من بردار پیدا کردم با این هم سایزه یا این در کنار هم انگار به یک کلمه فکر جمله فکر تولید شده که در کنار همدیگه توکن ها میتونن این مفهوم پیچیده رو با همدیگه براتون پیدا کنن

شبکه قابلیت پردیکشن میکنه در واقع داره به سوال شما جواب میده این بوده که هواپیما رو داده بعد سوال پرسیده که چه کسی این را اختراع کرد جوابش برادران رایت بعد عکس موبایل اپل رو داده گفته چه کسی این را اختراع کرد این وان شات و این انتظار که بنویسه استیو جابز و داده جان تو تستش احتمالا خوبشو گزارش کرده خب بعد نمیدونم سه تا میوه بهش داده دوتا اول بهش گفته چی اند سومی و چیز کرده گفته تو بگو چیه و مثلاً یکی از اون دو تا قبلی بوده و تونسته بگه دیس گو ما دو تا شبکه بعدی داریم اصلا علاقه نداریم الان

ورود کنیم با جزئیات پیچیده هم هستند خب یکی شبکه فلامینگو اینا حرف حسابشون اینه که درسته در عین حال ظاهرهای شلوغی دارند ولی بخش خوبی از شبکه‌شون فریز شده است خب بخش آبی رنگی که می‌بینید فریز شده است یه بخشی داره که وقتی عکس ازش بهش ورودی اول بخش ویژه شبکه فریز میگذره مثلاً یه شبکه خفن تو این حوزه که قبلا ترین شده یا حتی از اینا پیچیده تر و این میره به یه جایی به میرسه قابل بحث که علاقه ندارم صحبت کنم دلتون خواست برید بخونید فلامنکو یه الگو داره الگوی دیگه داره و اینکه چجوری از این که از این الگویی که از عکسه در

دستم نمی‌زنم به خود دست کاری چیزهایی که بین وزن های که بین وزن های فریز شده محاصره میشدند فقط تلاش خوب جواب بده و عرض به حضور شما دسته آخر بودن در مورد برعکس صحبت کردم الان گفتم دو تا رباتی که دیدید بهشون می‌گفتن پله خفن تر میشه میخوید کاری کنید که ربات شبیه زندگی تو زندگی آدم ورود کنه یعنی با دستورات صوت ویدیو از خودتون بگیرید بگید این کار را بکن تمام شد یا حوصله تایپ ندارید یا وقت ندارید یا مثلاً پروگرم

زبان عامیانه انسانی به یک ایجنت بگید این کارو بکن این ایجنت واقعی و مجازی و سر راهش باید از ایده‌های مختلف می‌تونه استفاده بکنه میتونه فقط در حد پلنینگش استفاده کنه بقیه شد تقسیم کار کنه پول‌های مختلف ابزارهای مختلف جدا کنه یا اینکه شبکه‌هایی باشه که اینتگشن و عکس و تصویر از همون اول در هم عجیب بشه هنوز که کار میشه عمر زیادی هم ندارن کلا زیر دو ساله داره کار میشه و فکر میکنم باید در آینده نزدیک ازش خبرهای زیاد و جدیدی بشنوید و ادعاهای مبنی بر تاسیس است های تو سطح جهانی که ما می‌خوایم ربات های بسازیم که همه کار بکنند برای ما و عرض کردم خانم تنسی الان ادعا کرده که

سرمایه جذب کرده که گفته ما می‌خوایم کاری کنیم که هر رباتی هر کاری دلمون بخواد بهش یاد بدیم یعنی نه محدودیتی برای ربات وجود داشته باشه نه محدودیتی برای انجام آقا من تا اینجاشو نگه می‌دارم عرض به حضور شما که دو تا کار ربع ساعت داریم پیشرفت خودتونه و همینطور دعوت کردن که دانشجویان بسیار خوب پارسال درس ما بودند انجام دادن رو ارائه بدم که چجوری از همون دانش ارتباط ندارد که چجوری

خب آقای خدمت شما خوب حالا چیزی که در واقع یکشنبه دیدیم کاری که خیلی شبیه اونه فقط فقط رو

E:\courses\LangChain Project\main root\data\LLM-Part2_transcript_part3.txt

کامپیوتر مدل زبانی توضیحاتی در موردش خب این نکته که وجود داره حالا مدل زبانی سایز خیلی بزرگه بخاطر همین سرعت عادی مدل که حالا توی را میکنیم معمولا به صورت کامل شدن با به صورت ۳۲ که هر پارامترتون به صورت نمایش داده میشه چهار

هست که حدود ۳ میلیارد پارامتر داره سه میلیارد اگه ضربدر ۴ بکنیم ۱۲ گیگابایت خب حالا روی کلاً بعضیاتون ندارید که این روش را بکنید بخاطر همین بعد از یک سری روش استفاده بکنیم برای اینکه حالا یه جوری سایز این پارامترها رو پایین بیاریم تکنیک خیلی خوب جواب میدهشن هست که به جای اینکه حالا هم به صورت ۳۲ بیتی نشون نمایش بدیم معمولاً اینجوریه که مثلا یه تقریبا هفت

سمت چپ عدد اعشاری میشه در واقع چیزمون و مثلاً ۲۰ رقم برای ۱.۲۳ صدم مثلا بقیه تعداد اونجا هست که خیلی از اینا در واقع نیازی بهشون نداریم می‌تونیم حذفشون بکنیم بخاطر همین یه سری روش معرفی شده روشی میتونه هم در زمان کلینینگ انجام بشه تی یا پست یا پیqوت که بهشزیشن

از اونا استفاده بکنیم و اینجوری سایز مدل را پایین بیاریم حالا روش‌های مختلفی مثلاً اینجا ۸ که معرفی شد مدل زبانی با ۸ بیت نمایش بدیم این باعث میشه که مثلا اگر این مدلی دارید که 4۰۰ فضا میگیره تبدیل بشه به خیلی کوچکتر میشه برای مدل زبانی خیلی شاخص میشه زمانی که شما میخوید مدل لاماس کوچک مدللود بکنید ۲۵ ۲۶ میشه اما زمانی که اینو به صورت ۸ در واقع لود بکنیم هفت میتونیم در واقع بالا بیار دکمه خودش در واقع

خروجی جلسه قبل هم گفتم که یه بار باید نصبش بکنید و استارت بکنید مدل مایکروسافت مدل مایکروسافت فای

۱۶ ۱۶ بیت بدون هیچ مشکلی انجام میده منتها برای بیشتر از اون اینکه حالا ما چیزهای کوچکتر جدید هم داره دو چند مایکروسافت یک هم داشت یعنی شما سه تا مقدار بیشتر نداره مثبت منفی شما هنوز ندید و مدل تقسیم ۳ میشه خیلی کوچیک میشه سایزی که میخواد این دیت رو به صورت اتو ست میکنیم خودش میفهمه که ما چقدر جی پی یو داریم و چقدر جا میشه و بهترین حالت چیه اگر مثلاً ۳۲ جا نشه کوچک تبدیل میکنه به ۱۶ سایز مدل در واقع نصف میکنه

کوچک اگر میخوید که بتونید که حالا کوتو ساپورت میکنه مدل دانلود بشه اما ادامه که جلسه قبلی هم گفتم میکنیم

توکن‌ها بعد از اون کل سکس برنگردونه پارامتری برای خروجی ما چقدر میشه برای استفاده که بررسی کرده بودند که اگر بخواهیم مدل خلاقیت داشته باشه بی نهایت رندوم رندم

تجربه میشه مدل سمت راست که در واقع اشغال شده مدل ما سه میلیارد الان حدود ۱۶ رو

کمتر از ۵ ثانیه شد که حالا جواب خودش

اجرا کردند کل کدی که برای خروجی میگیریم زمانی استفاده

سریعتر باشه می‌خواد چیز بشه در واقع پکیج رو دانلود بکنیم مدل حالا لطف کردم که حالا اسم پکی است طرف یادم نیست که مدل را دانلود میکنیم خود و توی ترمینال حالا

اطلاعات در مورد دادن اطلاعات می‌پرسیم نوشته شده هر یک کنیم بیشتر میشه خروجی ازش پرسیده بود که وب سایت درست بکنیم شروع دادن جواب خیلی مشخص نبود جایی فکر میکنم اینجا به چه شک بود این خیلی گزینه خوبی اگر خودتون استفاده بکنید به صورت لوکال

و بعدش حالا دانلود که داره اینه که خیلی سریعتر پایتون و فای خیلی جواب و

حجمش نزدیک نمیشه دانلود خیلی خوبه فکر میکنم قرار است روی اندروید هم اضافه بشه این مدل

گوگل همون روزی منتشر

در مورد ارائه ویدیو جمع کردند بعد چهار پارسال حدودا آخر یه پروژه استارت کرد که همه گروه‌های رباتیکی که مربوط به گل موبایل ارائه بدن یکجا بکنن

برای ربات هیت باشه یاد بگیره

دانشجو

داشته

ممنونم جلسه

داشته باشیم باز نکرده باشیم

سلام قابل رقابت های کامپیوتری

نوشتن نوشتاری فارسی داره و محاسبات خیلی ساده نرفتیم خیلی ساده توی تمرین واقعا انتظار

ساعت

سریع

از اونجا خانم حسینی در خدمتتون زحمت بفرمایید

در حین فعالیت‌های باربری اول موضوع اصلی هستش و یکی از روش های سنتی که واسه در این روش

یکی شبکه های عصبی استفاده

استفاده کردیم استفاده کردند

E:\courses\LangChain Project\main root\data\LLM-Part2_transcript_part4.txt

استفاده کردیم هستش

مدل مدل ادبیات مقاله قبلی

مدل موازی

معماری هستش که آخر ببینیم

قابل مشاهده است

اضافه کنید

و در نهایت

بپرسید بپرس

import numpy as np 
import os

def load_single_file(file_path):
    npzfile = np.load(file_path,allow_pickle=True)
    npfile=sorted(npzfile.files)
    coordinates=npzfile['arr_0']
    # print(coordinates.shape)
    # print(coordinates)
    return coordinates

def load_all_files(folder , normal_or_flatten):
    coordinates = []
    for filename in os.listdir(folder):
        if (filename[:3]==normal_or_flatten[:3]):
            npzfile = np.load(os.path.join(folder,filename),allow_pickle=True)
            npfile=sorted(npzfile.files)
            C=npzfile['arr_0']
            if npfile is not None:
                coordinates.append(C)

#data=load_single_file("dataset/normal_data1653758215.035879.npz") #dataset/file_moredenazar.npz
#data=np.array(data,dtype=object) # convert list to numpy

data=load_all_files("dataset/","normal") # normal or flatten
data=np.array(data,dtype=object) # convert list to numpy

print(data)

import cv2

from PIL import ImageGrab

cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FPS, 10)
kernel = np.ones((2,2),np.uint8)
num_rec= 0
model = load_model('MNIST_model_with_neg_data.h5') #MNIST_model_original
#model = load_model('MNIST_model_without_neg_data.h5') #MNIST_model_original

    # Capture frame-by-frame
    ret, frame = cap.read()
    #print(frame.shape)
    #frame=cv2.imread("4.png")

    #screen = ImageGrab.grab()
    #frame = np.array(screen)

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    gray= cv2.medianBlur(gray, 3)   #to remove salt and paper noise
    #to binary
    thresh= cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY_INV,3,4) #GAUSSIAN
    thresh = cv2.dilate(thresh,kernel,iterations = 3)
    contours,hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)#_NONE

    if len(contours)>0:
        #cv2.drawContours(frame, contours, -1, (0,255,0), 5)
        # find the biggest countour (c) by the area
        #c = max(contours, key = cv2.contourArea)
        num_rec= 0
        for cnt in contours:
            x,y,w,h = cv2.boundingRect(cnt)
            if (w>28 and h>28):
                if (w<100 and h<100):
                    #cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),1)
                    print(num_rec)
                    roi= thresh[y:y+h,x:x+w]
                    roi=np.pad(roi, 5, mode='constant', constant_values=0)
                    cv2.imshow('ROI',roi)
                    pred=model.predict(gray_small) 

                    if(pred_number!=10 and max_pred>0.90):
                        cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),1)
                        cv2.putText(frame, LABEL_TEXT, (x, y-8), cv2.FONT_HERSHEY_SIMPLEX, 1/2, LABEL_COLOR, 2)

    # Display the resulting frame
    thresh = cv2.resize(thresh, (640, 480))  
    frame = cv2.resize(frame, (640, 480))  
    gray = cv2.resize(gray, (640, 480))  
    cv2.imshow('thresh',thresh)
    cv2.imshow('frame',frame)
    cv2.imshow('gray',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()

'code' cell: '['import matplotlib.pyplot as plt\n', 'from keras.datasets import mnist\n', 'from tensorflow.keras import regularizers\n', 'import numpy as np\n', 'import tensorflow as tf']'

'code' cell: '['# (X_train, y_train), (X_test, y_test) = mnist.load_data()\n', '# npzfile = np.load("/content/neg_with_noise.npz")\n', '# #print(type(mnist.load_data()))\n', '# npfile=sorted(npzfile.files)\n', "# X_N_train=npzfile['arr_0']\n", "# y_N_train=npzfile['arr_1']\n", "# X_N_test=npzfile['arr_2']\n", "# y_N_test=npzfile['arr_3']\n", '# #print(X_N_train)']'

'code' cell: '['# print(X_N_train.shape,len(X_N_train))']'

'code' cell: '['# print(y_N_train.shape, len(y_N_train))']'

'code' cell: '['# print(X_N_test.shape, len(X_N_test))']'

'code' cell: '['# print(y_N_test.shape , len(y_N_test))']'

'code' cell: '['# X_train=np.append(X_train, X_N_train,0)\n', '# y_train=np.append(y_train, y_N_train,0)\n', '# X_test=np.append(X_test, X_N_test,0)\n', '# y_test=np.append(y_test, y_N_test,0)\n', 'npzfile = np.load("/content/minst_with_P&N&noise.npz")\n', 'print(type(mnist.load_data()))\n', 'npfile=sorted(npzfile.files)\n', "X_train=npzfile['arr_0']\n", "y_train=npzfile['arr_1']\n", "X_test=npzfile['arr_2']\n", "y_test=npzfile['arr_3']"]'

'code' cell: '['from sklearn.utils import shuffle\n', 'for i in range(130):\n', '  X_train, y_train = shuffle(X_train, y_train)\n', '  X_test, y_test = shuffle(X_test, y_test)']'

'code' cell: '['y_test.shape']'

'code' cell: '['len(X_train)']'

'code' cell: '['len(X_test)']'

'code' cell: '['# from google.colab import drive\n', "#drive.mount('/content/drive')\n", 'print(X_train.shape,y_train.shape,X_test.shape,y_test.shape)\n', '# np.savez("/content/minst_with_P&N", X_train,y_train,X_test,y_test)']'

'code' cell: '["plt.imshow(X_train[1], 'gray')\n", 'print(X_train[1].shape)\n', 'print("Digit class:", y_train[0])']'

'code' cell: '["X_train = X_train.astype('float32') / 255\n", "X_test = X_test.astype('float32') / 255\n", '#X_train']'

'code' cell: '['from keras.utils import np_utils\n', '\n', 'Y_train = np_utils.to_categorical(y_train, 11) # 10 classes to codify\n', 'Y_test = np_utils.to_categorical(y_test, 11)\n', 'Y_train']'

'code' cell: '['import keras\n', 'from keras.models import Sequential\n', 'from keras.layers.core import Dense\n', 'from keras.layers.core import Activation\n', 'from keras.layers.core import Dropout\n', 'from keras.layers.convolutional import Convolution2D, MaxPooling2D, AveragePooling2D\n', 'from keras.layers.core import Flatten\n', '\n', 'train_T= X_train.reshape(70000, 28, 28, 1)\n', 'val_data=len(train_T)*35/100\n', 'X_valtensor = train_T[:int(val_data)]\n', 'Y_valtensor = Y_train[:int(val_data)]\n', 'X_traintensor = train_T[int(val_data):]\n', 'Y_traintensor = Y_train[int(val_data):]\n', 'testtensor = X_test.reshape(11000, 28, 28, 1)\n', 'print(train_T.shape)\n', 'print(len(train_T)*35/100)\n', 'print(X_traintensor.shape)\n', 'print(len(X_valtensor)+len(X_traintensor))']'

'code' cell: '['img_rows = 28\n', 'img_cols = 28\n', 'kernel_size = 3\n', 'pool_size = 2\n', 'model = Sequential()\n', '\n', 'model.add(Convolution2D(16, kernel_size=(3, 3),input_shape=(img_rows, img_cols, 1)))\n', "model.add(Activation('relu'))\n", '\n', 'model.add(Convolution2D(32, (3, 3)))\n', "model.add(Activation('relu')),\n", '\n', 'model.add(MaxPooling2D(pool_size=(pool_size, pool_size)))\n', 'model.add(Dropout(0.25))\n', '\n', 'model.add(Convolution2D(64, (3, 3)))\n', "model.add(Activation('relu')),\n", '\n', 'model.add(Flatten())\n', '\n', 'model.add(Dense(128)),\n', "model.add(Activation('relu'))\n", 'model.add(Dropout(0.5))\n', "#model.add(Dense(80, activation = 'relu'))\n", "model.add(Dense(11, activation = 'softmax'))\n", 'print(model.summary())']'

'code' cell: '['model.compile(loss=\'categorical_crossentropy\', optimizer=tf.keras.optimizers.Adam(learning_rate=1e-3), metrics=["accuracy"])\n', '\n', 'model_history = model.fit(\n', '    X_traintensor,\n', '    Y_traintensor,\n', '    batch_size=128,\n', '    epochs=9,\n', '    verbose=1,\n', '    validation_data=(X_valtensor, Y_valtensor)\n', ')#24']'

'code' cell: '['preds = model.predict(testtensor)\n', '\n', 'score = model.evaluate(testtensor, Y_test)\n', 'print("Test loss", score[0])\n', 'print("Test accuracy", score[1])\n', '\n', 'plt.figure(figsize=(18,6))\n', '\n', '# Loss Curves\n', 'plt.subplot(1,2,1)\n', "plt.plot(model_history.history['loss'], linewidth=3.0)\n", "plt.plot(model_history.history['val_loss'], linewidth=3.0)\n", "plt.legend(['Training loss', 'Validation Loss'], fontsize=18)\n", "plt.xlabel('Epochs', fontsize=16)\n", "plt.ylabel('Loss', fontsize=16)\n", "plt.title('Loss Curves', fontsize=16)\n", '\n', '# Accuracy Curves\n', 'plt.subplot(1,2,2)\n', 'plt.plot(model_history.history["accuracy"], linewidth=3.0)\n', "plt.plot(model_history.history['val_accuracy'], linewidth=3.0)\n", "plt.legend(['Training Accuracy', 'Validation Accuracy'], fontsize=18)\n", "plt.xlabel('Epochs', fontsize=16)\n", "plt.ylabel('Accuracy', fontsize=16)\n", "plt.title('Accuracy Curves', fontsize=16)\n", '\n', 'plt.show()']'

'code' cell: '['from keras.models import load_model\n', '\n', "model.save('MNIST_model_L6N.h5')"]'

'code' cell: '['from sklearn.metrics import ConfusionMatrixDisplay\n', 'from sklearn.metrics import confusion_matrix\n', 'import matplotlib.pyplot as plt\n', 'import numpy as np\n', '\n', 'y_pred = model.predict(testtensor)\n', 'print(y_test.shape)\n', 'y_pred_plot=np.argmax(y_pred, axis=1)\n', 'y_test_plot=np.argmax(Y_test, axis=1)\n', '\n', 'cm = confusion_matrix(y_test_plot, y_pred_plot)\n', '\n', 'disp = ConfusionMatrixDisplay(confusion_matrix=cm)\n', '#disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=labels)\n', '\n', 'disp.plot(cmap=plt.cm.Blues)\n', 'plt.show()\n', '\n', 'import seaborn as sns\n', "cmn = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n", 'fig, ax = plt.subplots(figsize=(10,10))\n', "sns.heatmap(cmn, annot=True, fmt='.2f')\n", "plt.ylabel('Actual')\n", "plt.xlabel('Predicted')\n", 'plt.show(block=False)']'

"""MNIST_CNN.ipynb

"""

# (X_train, y_train), (X_test, y_test) = mnist.load_data()
# npzfile = np.load("/content/neg_with_noise.npz")
# #print(type(mnist.load_data()))
# npfile=sorted(npzfile.files)
# X_N_train=npzfile['arr_0']
# y_N_train=npzfile['arr_1']
# X_N_test=npzfile['arr_2']
# y_N_test=npzfile['arr_3']
# #print(X_N_train)

# print(X_N_train.shape,len(X_N_train))

# print(y_N_train.shape, len(y_N_train))

# print(X_N_test.shape, len(X_N_test))

# print(y_N_test.shape , len(y_N_test))

# X_train=np.append(X_train, X_N_train,0)
# y_train=np.append(y_train, y_N_train,0)
# X_test=np.append(X_test, X_N_test,0)
# y_test=np.append(y_test, y_N_test,0)
npzfile = np.load("/content/minst_with_P&N&noise.npz")
print(type(mnist.load_data()))
npfile=sorted(npzfile.files)
X_train=npzfile['arr_0']
y_train=npzfile['arr_1']
X_test=npzfile['arr_2']
y_test=npzfile['arr_3']

from sklearn.utils import shuffle
for i in range(130):
  X_train, y_train = shuffle(X_train, y_train)
  X_test, y_test = shuffle(X_test, y_test)

y_test.shape

# from google.colab import drive
#drive.mount('/content/drive')
print(X_train.shape,y_train.shape,X_test.shape,y_test.shape)
# np.savez("/content/minst_with_P&N", X_train,y_train,X_test,y_test)

plt.imshow(X_train[1], 'gray')
print(X_train[1].shape)

#X_train

Y_train = np_utils.to_categorical(y_train, 11) # 10 classes to codify
Y_test = np_utils.to_categorical(y_test, 11)
Y_train

import keras
from keras.layers.convolutional import Convolution2D, MaxPooling2D, AveragePooling2D

train_T= X_train.reshape(70000, 28, 28, 1)
val_data=len(train_T)*35/100
X_valtensor = train_T[:int(val_data)]
Y_valtensor = Y_train[:int(val_data)]
X_traintensor = train_T[int(val_data):]
Y_traintensor = Y_train[int(val_data):]
testtensor = X_test.reshape(11000, 28, 28, 1)
print(train_T.shape)
print(len(train_T)*35/100)
print(X_traintensor.shape)
print(len(X_valtensor)+len(X_traintensor))

model.add(Convolution2D(16, kernel_size=(3, 3),input_shape=(img_rows, img_cols, 1)))

model.add(Convolution2D(32, (3, 3)))

model.add(Dense(11, activation = 'softmax'))
print(model.summary())

model.compile(loss='categorical_crossentropy', optimizer=tf.keras.optimizers.Adam(learning_rate=1e-3), metrics=["accuracy"])

    X_traintensor,
    Y_traintensor,
    epochs=9,
    verbose=1,
    validation_data=(X_valtensor, Y_valtensor)
)#24

model.save('MNIST_model_L6N.h5')

import os
import cv2
import glob
from skimage.util import random_noise
from PIL import Image
from scipy.io import loadmat

# annots = loadmat('DataSet/mnist-with-awgn.mat')

# annots.keys()

# #train_x=annots['train_x']  #'train_x', 'test_x', 'train_y', 'test_y'
# #test_x=annots['test_x']
# train_y=annots['train_y']
# test_y=annots['test_y']

# T_x = np.empty(shape=[60000,28,28])
# TT_x = np.empty(shape=[60000,28,28])
# for i in range(annots['train_x'].shape[0]):
#     train_x=np.reshape(annots['train_x'][i],(28,28))
#     T_x[i]=train_x
#     #cv2.imshow("window_name", T_x[i])
#     #cv2.waitKey(1000) 
#     print(i)
# for i in range(annots['test_x'].shape[0]):
#     test_x=np.reshape(annots['test_x'][i],(28,28))
#     TT_x[i]=test_x
#     #test_x=np.reshape(annots['test_x'][i],(28,28))
#     #train_y=np.reshape(annots['train_y'][i],(28,28))
#     #train_y=np.reshape(annots['test_y'][i],(28,28))
#     #np.append(x[i], train_x)
#     print(i)
# #print(x.shape)
# #print(T_x.dtype) #= cv2.cvtColor(T_x[0], cv2.COLOR_BGR2GRAY)
# #T_x[2]= cv2.adaptiveThreshold(T_x[1].astype('uint8'),255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,3,4)
# #T_x[1]=cv2.threshold(T_x[1], 0, 255, cv2.THRESH_BINARY)
# #plt.imshow(T_x[0])
# #plt.show()
# #np.savez("mnist-with-awgn", T_x,train_y,TT_x,test_y)

# cv2.imshow("window_name", T_x[1])
# #cv2.imshow("window_name1", T_x[2])
# cv2.waitKey(1000) 
# cv2.destroyAllWindows() 
# print(train_x.shape)

# Parameters
# ----------
# image : ndarray
#     Input image data. Will be converted to float.
# mode : str
#     One of the following strings, selecting the type of noise to add:

#     'gauss'     Gaussian-distributed additive noise.
#     'poisson'   Poisson-distributed noise generated from the data.
#     's&p'       Replaces random pixels with 0 or 1.
#     'speckle'   Multiplicative noise using out = image + n*image,where
#                 n is uniform noise with specified mean & variance.

# def noisy(noise_typ,image):
#     if noise_typ == "gauss":
#         row,col,ch= image.shape
#         mean = 0
#         var = 0.1
#         sigma = var**0.05
#         gauss = np.random.normal(mean,sigma,(row,col,ch))
#         gauss = gauss.reshape(row,col,ch)
#         noisy = image + gauss
#         return noisy
#     elif noise_typ == "s&p":
#         row,col,ch = image.shape
#         s_vs_p = 0.5
#         amount = 0.004
#         out = np.copy(image)
#         # Salt mode
#         num_salt = np.ceil(amount * image.size * s_vs_p)
#         coords = [np.random.randint(0, i - 1, int(num_salt)) for i in image.shape]
#         out[coords] = 1

#         # Pepper mode
#         num_pepper = np.ceil(amount* image.size * (1. - s_vs_p))
#         coords = [np.random.randint(0, i - 1, int(num_pepper))
#               for i in image.shape]
#         out[coords] = 0
#         return out
#     elif noise_typ == "poisson":
#         vals = len(np.unique(image))
#         vals = 2 ** np.ceil(np.log2(vals))
#         noisy = np.random.poisson(image * vals) / float(vals)
#     elif noise_typ =="speckle":
#         gauss = np.random.randn(row,col,ch)
#         gauss = gauss.reshape(row,col,ch)        
#         noisy = image + image * gauss

def noisy(noise_typ,image):
    if noise_typ == "gauss":
        row,col= image.shape
        mean = 0
        var = 0.1
        sigma = var**0.35
        gauss = np.random.normal(mean,sigma,(row,col))
        gauss = gauss.reshape(row,col)
        noisy = image + gauss
        return noisy
    elif noise_typ == "s&p":
        row,col,ch = image.shape
        s_vs_p = 0.5
        amount = 0.004
        out = np.copy(image)
        # Salt mode
        num_salt = np.ceil(amount * image.size * s_vs_p)
        coords = [np.random.randint(0, i - 1, int(num_salt)) for i in image.shape]
        out[coords] = 1
        # Pepper mode
        num_pepper = np.ceil(amount* image.size * (1. - s_vs_p))
        coords = [np.random.randint(0, i - 1, int(num_pepper))
              for i in image.shape]
        out[coords] = 0
        return out
    elif noise_typ == "poisson":
        vals = len(np.unique(image))
        vals = 2 ** np.ceil(np.log2(vals))
        noisy = np.random.poisson(image * vals) / float(vals)
    elif noise_typ =="speckle":
        gauss = np.random.randn(row,col,ch)
        gauss = gauss.reshape(row,col,ch)        
        noisy = image + image * gauss

npzfile = np.load("/home/ramanr2/Downloads/mnist_cam_with_localization/DataSet/neg_data.npz")
#print(type(mnist.load_data()))
#print(X_train)

print(X_train.shape,len(X_train))

print(y_train.shape, len(y_train))

print(X_test.shape, len(X_test))

for i in range(len(y_train)):
    X_train[i]=noisy("gauss",X_train[i])
    #X_train[i] = cv2.fastNlMeansDenoisingColored(X_train[i],None,10,10,7,21)
    #cv2.imshow('gray',X_train[i])
    #cv2.waitKey(1000)

for i in range(len(y_test)):
    X_test[i]=noisy("gauss",X_test[i])
    #cv2.waitKey(3000)
np.savez("neg_with_noise", X_train, y_train, X_test, y_test)

# X_train[1]=random_noise(X_train[1], mode="s&p", amount=0.01)
# X_train[1]=np.array(255*X_train[1], dtype="uint8")
# cv2.imshow('gray',X_train[1])
# cv2.waitKey(3000)

# def load_images_from_folder(folder):
#     b=0
#     Error=""
#     images = []
#     gray =[]
#     for filename in os.listdir(folder):
#         b+=1
#         print(b)
#         img = cv2.imread(os.path.join(folder,filename))
#         try:
#             #img=noisy("gauss",img)
#             gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#             #cv2.imshow('gray',gray)
#             # if cv2.waitKey(1) & 0xFF == ord('q'):
#             #     break
#         except:
#             b-=1
#             Error=os.path.join(folder,filename)
#             pass
#         #img1 = img.resize((28, 28))
#         #img1 = cv2.resize(img, dsize=(28, 28))
#         if img is not None:
#             images.append(gray)
#     return images,Error

# images,E=load_images_from_folder("convert")

# imagesnp=np.asarray(images)

# trainx=imagesnp[:10000]
# testx=imagesnp[10000:]
# print(*trainx[0])
# print(imagesnp.shape)
# print(trainx.shape)
# print(testx.shape)
# labels=np.full(shape=imagesnp.shape[0],fill_value=10,dtype=np.uint8)
# trainy_labels=labels[:10000]
# testy_labels=labels[10000:]
# print(labels.shape)
# print(trainy_labels.shape)
# print(testy_labels.shape)
# np.savez("neg_data", trainx,trainy_labels,testx,testy_labels)
# # test_tuple=tuple(testx,testy_labels)
# # coord = [tuple(zip(coord_x, coord_y))]

# print(E)
# n=0

#for img in images:
    #cv2.imwrite("convert/"+str(time.time())+"C.jpg", img)
    #for(len(img[]))
    #print(len(img))
    #if(img[n[]])
#    n+=1
#    print(n)
#coord = [tuple(zip(coord_x, coord_y))]

هادي ويسي
h.veisi@ut.ac.ir
دانشگاه تهران-دانشکده علوم و فنون نوين

روش‌هاي‌آماري‌در‌پردازش‌زبان‌طبيعي:‌مدل‌مخفي‌مارکوف
2
Hadi Veisi (h.veisi@ut.ac.ir)
مدل مخفي مارکوف
معرفی
مثال
تعریف
انواع
3مساله مهم
محاسبه احتمال مشاهده
الگوريتم جلورو-عقب رو 
ديکدينگ(يافتن دنباله حالت ها )
الگوریتم ویتربی
آموزش مدل مخفيمارکوف
برچسپزني پاره گفتار (POS Tagging )بامدل مخفي مارکوف

3
مدل مخفي مارکوف(HMM: Hidden Markov Model)
روشی برای مدل سازی داده های ترتیبی (sequential data)
داده هاي ترتیبي 
نرخ ارز در روزهای مختلف
نمونه های پشت  سرهم سیگنال گفتار، دست نوشته، امضا 
دنباله نویسه ها یا واژه ها در یک متن
دنباله تصاویر پشت سر هم(ویدئو): حرکات انسان
میزان بارش باران در روزهای متوالی سال

4
فرايند ايستان(stationary)
فرآیندی که توزیع توام آن در طول زمان تغییر نکند
در نتیجه پارامترهای آماری مانند میانگین و واریانس هم در طول زمان ثابت می ماند 
فرايند ناايستان(non-stationary)
فرآیندی که توزیع توام آن و در نتیجه پارامترهای آماری در طول زمان تغییر نکند
فرايند ارگاديک(ergodic)
فرآیندی که می توان ویژگی های آماری آن مانند میانگین و واریانس را از روی یک ن مونه 
از آن فرآیند (با تعداد نمونه های کافی ) بدست آورد

5
برخورد با داده هاي ترتیبي 
پیش بینی بارندگی : دنباله ای از بارانی بودن یا نبودن در Nروز گذشته را در نظر می گیریم 
حالت اول: عدم در نظر گرفتن رابطه بین مقادیر پشت سر هم دنباله (فرایند i.i.d  )
در نظر نگرفتن وابستگی بین بارش در روزهای متوالی: عدم استفاده از دانش موجود در دنباله
تنها می توان درصد روزهای بارانی را محاسبه کرد 
حالت دوم: در نظر گرفتن وابستگی بین مقادیر پشت سر هم دنباله (فرایند مارکوف) 
استفاده از  اطلاعات موجود در وابستگی مقادیر

6
زنجیره مارکوف
درجه اول(first-order Markov chain :)هر نقطه(مشاهده) از دنباله  تنها به نقطه 
قبل وابسته است
درجه دوم(second-order Markov chain :)هر نقطه(مشاهده) از دنباله  به دو 
نقطه قبل وابسته است
افزایش درجه زنجیره= افزایش پیچیدگی

Social and Cognitive Robotics, Sharif University of Technology
5
فرض وابستگی هوای امروز به وضعیت هوای دیروز:

7
پیش بیني وضعیت هوا . . .
در نظر گرفتن3حالت(state)مختلف
حالت1(S1 :)بارندگی(برف یا باران)
حالت2(S2 :)ابری
حالت3(S3 :)آفتابی
در نظر گرفتناحتمال انتقال حالت ها (state transition probability)
سوال1 :با فرض اینکه امروز آفتابی است، احتمال اینکه هوای7روز آینده به صورت زیر
باشد، چقدر است؟ {آفتابی، آفتابی، باران، باران، آفتابی، ابری، آفتابی}
سوال2 :امروز بارانی است، احتمال اینکهdروز متوالی بارانی باشد، چقدر است؟
احتمال رفتن از حالت 1
(بارندگی) به حالت 3(آفتابی)

8
سوال1 :امروز آفتابی است، احتمال اینکه هوای7روز آینده به صورت زیر باشد، چقدر
است؟ {آفتابی، آفتابی، باران، باران، آفتابی، ابری، آفتابی}
استفاده از وابستگی درجه1(وضعیت هر روز به روز قبل)
مشاهدهشامل حالت ها و ارتباط بین آن ها
احتمال حالت اولیه
(initial state probability)

9
سوال فوق معادل مشاهده دنباله روبرو است(حالت کلی)  
براي‌حالت‌باراني(S1‌)داریم:‌p1(d)=(0.4)d-1(0.6)که‌برايd=5برابر‌است‌با0.0061
سوال3 :با فرض شروع از یک حالت(مثلاً آفتابی)، متوسط تعداد روزهای پشت سرهم 
آینده که در همان حالت می مانیم، چند روز است؟ 
برابر است با امید ریاضیpi(d)
آفتابي=‌5روز(1/0.2)
بارندگي=‌1.67
ابري=‌2.5
تابع توزیع احتمال دورهd
در حالتi

6
وضعیت هوای چند روز آینده با توجه به وضعیت هوای امروز:

7
احتمال وقوع شرایط هوایی مختلف در روزهای آینده بسته به احتمالات حاکم وضعیت هوای امروز:

10
پیش بیني وضعیت هوا 
در آنچه تاکنون بیان شد: حالت ها با مشاهده ها یکسان بودند
در بسیاری از کاربردها، مشاهده ها با حالت های مساله یکی نیستند 
حالت های اصلی مخفیهستند و باید مشاهده ها را با آنها متناظر کرد 
مدل مخفیمارکوف
Hidden Markov Model

11
گوي و گلدان. . .  
فرض کنید تعدادNگلدان در یک اتاق داریم
در هر گلدان تعداد زیادی گوی رنگی، شاملMرنگ وجود دارد

12
گوي و گلدان
تعدادNگلدان وMرنگ
فرآیند
یک نفر(در اتاقی که ما نمی بینیم )، یکی از گلدان ها را به صورت تصادفی انتخاب می کند 
از داخل گلدان انتخاب شده، یک گوی را بیرون آورده و رنگ آن را اعلام می کند 
گوی را به داخل گلدان مربوطه برمی گرداند 
بر اساس مقداری تصادفی وابسته به گلدان فعلی، گلدان بعدی انتخاب می شود 
مراحل فوق به صورت متوالی تکرار می شود 
دنباله مشاهده: دنباله گوی ها (رنگ ها )  
حالت ها : گلدان ها (از دید مشاهده کننده مخفی است)
انتقال حالت ها : فرآیند انتخاب گلدان ها

13
مشاهده ها توابع احتمالاتي از حالت ها هستند 
دنباله حالت ها قابل مشاهده نیستند (مخفي هستند)
فرض وابستگي درجه اول
مشاهده ها فقط به حالت ها وابسته هستند و نه به همديگر 
متغیر (حالت) مخفی
مشاهده ها

14
عناصر اصلي يک مدل مخفي مارکوف
مجموعه ای از Nحالت
در گوی و گلدان: گلدان ها 
مجموعه ای از Mنماد مشاهده
در گوی و گلدان: رنگ ها 
احتمال انتقال حالت ها 
احتمال جابجایی از یک حالت به حالت دیگر
احتمال اولیه حالت ها 
احتمال انتخاب هر کدام از حالت ها در زمان t=1
تابع توزیع برای نمادkام در حالتjام
تابع توزیع مشاهده ها (مثلاً گاوسی)-احتمال تولید مشاهده ot=vkدر حالتqt=j

15
پس، يک مدل مخفي مارکوف شامل پارامترهاي زير است:
تعداد حالت ها (N )و تعداد نمادهای مشاهده ها (M)
مجموعهMنماد مشاهده
احتمال ها 
A =احتمال انتقال بین حالت ها 
π =احتمال اولیه حالت ها 
B =تابع توزیع های حالت ها 
مراحل تولید دنباله مشاهده                          با مدل مخفي مارکوف
1بر اساس احتمال های اولیه حالت ها، اولین حالت را انتخاب کن، q1=Siو قرار بدهt=1
.2بر اساس تابع توزیع احتمالbi(k)خروجی را تعیین کن،Ot=vk
.3بر اساس احتمال انتقالaijاز حالت فعلی به حالت بعدی برو،qt+1=Sj
.4اگرt<T، قرار بدهt=t+1و برو به گام2

8
11مثالی از نحوه محاسبه پارامترهای مدل مخفی مارکوف با داشتن داده آموزشی کامل(با نظارت)

9

16
مدل مخفي مارکوف نوعي توسعه از مدل مخلوط گاوسي(GMM )است
مدل مخلوط گاوسي(GMM)
معادل با مدل مخفی مارکوف با یک حالت(و چند مخلوط در آن حالت)
مدل کردن الگوهای ایستا
مدل مخفي مارکوف(HMM)
مدل کردن الگوهای ترتیبی

17
چپ به راست(Left-to-Right)
جهت حرکت از یک حالت به حالت بعدی، از چپ به راست است
حرکت بین حالت ها از راست به چپ مجاز نیست 
کاربرد: تشخیص گفتار، تشخیص دست خط 
جهت تولید داده ها فقط در یک سمت است

18
ارگاديک(Ergodic)
حرکت از هر حالتی به هر حالت دیگر مجاز است
کاربردها: بهسازی گفتار، کدینگ
انواع ديگري هم براي ارتباط بین حالت ها ممکن است

19
ارزيابي: محاسبه احتمال مشاهده
با داشتن دنباله مشاهدهO=O1O2…OTو مدلλ، چگونه می توان مقدار p(O|λ)را
محاسبه کرد؟
ديکدينگ: يافتن دنباله حالت ها 
با داشتن دنباله مشاهدهO=O1O2…OTو مدلλ، چگونه می توان بهترین دنباله 
حالت های Q=q1q2…qTرا کهمتناسب با مشاهده است، بدست آورد؟
آموزش مدل
پارامترهای مدلλ(A,B,π)را چگونه بدست آوریم کهp(O|λ)بیشینه شود؟

20
محاسبهp(O|λ)(دنباله مشاهدهO=O1O2…OTو مدلλ)
فرض کنید دنباله حالت های معادل دنباله مشاهده فوق، Q=q1q2…qTباشد
داریم
که(برای یکی از qها)
احتمال تولید دنباله مشاهدات توسط 
حالت های در نظر گرفته شده 
احتمال انتخاب دنباله 
حالت های در نظر گرفته شد ه

21
بنابراين
اما...
محاسبات با این روش بسیار بالاست
اگر یک دنباله30تایی داشته باشیم و تعداد حالت ها 10باشد، محاسبات=20*1030
راه حل : الگوريتم جلورو-عقب رو (Forward-Backward)
مشاهدهO=O1O2…OTرا به صورتO=O1O2…Ot Ot+1…OT می نویسیم 
طول دنبالهتعداد حالت ها 
OTO1 Ot Ot+1
q1 qt qt+1 qT
S
i
 S
j
...
...
...
...

22
الگوريتم جلورو(Forward. . . )
تعریفαt(i) :احتمال بودن در حالتiدر زمانt(حضور در حالتiبعد از دیدنt
مشاهده اول)
شروع از اولین مشاهده و رسیده به مشاهدهtام
با توجه بهαt(i)، می توان αt+1(j)را حساب کرد:
S
i
 S
j
...
...
...
...

23
رابطهαt(i)وαt+1(j)

24
الگوريتم جلورو(Forward :)مراحل
گام اول: مقداردهی اولیه در زمان t=0
برای تمامی حالت ها (از i=1تاN)
گام دوم: محاسبه مقدار αt+1(j)از روی مقادیرαt(i)برای تمامی حالت ها و تمام مشاهده ها 
برای تمامیtها(از t=0تاT)
و برای تمامی حالت ها (از j=1تاN)
گام سوم: محاسبه مقدار p(O|λ)
بار محاسباتي الگوريتم جلورو(Forward)

10
تعریف پارامتر آلفا و نحوه محاسبه آن به صورت بازگشتی

25
الگوريتم جلورو(Forward :)مثال. . .
دو مشاهدهAوB
مدلλ
مطلوب است محاسبه احتمال مشاهده دنبالهO=AAB، یعنیp(O={A,A,B}|λ)
احتمال مشاهده ها در حالت S1=
bjها
احتمال انتقال =
aijهااحتمال اولیه

26
الگوريتم جلورو(Forward :)مثال
αt(i)= α0(0)
αt(i)= α0(1)
α1(0)
α1(1)
α2(0)
α2(1)
αT(i)= α3(0)
αT(i)= α3(1)
0.48*0.4*0.3+0.12*1.0*0.3 = 
(0.48*0.4+0.12*1.0)*0.3=0.09

27
الگوريتم عقب رو (Backward. . . )
تعریفβt(i) :احتمال دنباله مشاهدهot+1تاoTبا فرض بودن در حالتiدر زمانt
(شروع از حالتiو دیدن مشاهده های پایانی )
شروع از حالتiام و دیدن مشاهدهt+1ام تا رسیدن به انتهای دنباله مشاهده ها 
با توجه بهβt+1(j)، می توان βt(i)را حساب کرد:
S
i
 S
j
...
...
...
...

28
محاسبهβt(i)از روی مقدارهایβt+1(j)

29
الگوريتم عقب رو (Backward :)مراحل
گام اول: مقداردهی اولیه βدر زمانt=T
گام دوم: محاسبه مقدار βt(i)از روی مقادیرβt+1(j)برای تمامی حالت ها و تمام مشاهده ها 
برای تمامیtها(از t=T-1تا0)
و برای تمامی حالت ها (از i=1تاN)
بار محاسباتي الگوريتم عقب رو (Backward)
مشابه الگوریتم جلورو(Forward)

30
الگوريتم عقب رو (Backward :)مثال(قبلي)
دو مشاهدهAوBو مدلλ
0.6*0.8*0.4+0.4*0.3*0.7 = 0.276

31
براي محاسبهp(O|λ)
فقط یکی از دو الگوریتم جلورو(Forward  )یا عقب رو (Backward )کافی است
برای حل مساله3به هردو الگوریتم نیاز است

32
حالت های Q=q1q2…qTکه متناسب با مشاهده است، را بدست آورد؟
آموزش مدل
الگوریتم جلورو-عقب ر و

33
يافتن بهترين دنباله حالتQ=q1q2…qTمتناسب با دنباله مشاهده
O=O1O2…OTدر مدلλ
راه حل کامل : بررسی تمام دنباله حالت های ممکن و انتخاب بهترین آنها 
بسیار زمان بر، از مرتبه O(TNT)کهNتعداد حالت ها و Tطول دنباله مشاهده هاست 
راه حل 1 :برای هر مشاهده، یک حالت که به آن مشاهده شبیه تر است، انتخاب کنیم 
راه حل 2 :در هر مرحله، حالتی را انتخاب کن که احتمالαt(i)آن بیشتر است
مشکلات دو راه حل 
تولید دنباله بهینه محلی
ممکن است یک دنباله غیرممکن را ایجاد کند! (دنباله ای که در آن انتقال از یک حالت به حالت دیگر 
ممکن نیست)
راه حل 3 :الگوریتم ویتربی(Viterbi :)بیشینه کردنp(O, Q|λ)

34
تعريفδt(i)
محتمل ترین دنباله حالتی که از مشاهده اول تا مشاهده tام را شامل شده و در حالتiام
پایان یافته است
محاسبهδt+1(j)از رویδt(i)
بیشینه کردن به ازای تمام حالت های i=1تاN
سوال: تفاوت αt(i)باδt(i)؟
در محاسبهαt(i) مجموعکلیه احتمال ها در حالت iام محاسبه می شود 
در محاسبهδt(i) بیشینهکلیه احتمال ها در حالت iام محاسبه می شود

35
محاسبهδt+1(j)از رويδt(i)
مشابه الگوریتم 
جلورو

36
مراحل الگوريتم ويتربي
گام اول: مقداردهی اولیه δها
برای تمام حالت ها 
گام دوم: مرحله بازگشتی
گام سوم: پایان
گام سوم: عقب گرد برای انتخاب دنباله مسیر بهینه 
مشابه الگوریتم جلورو: بیشینه به جای جمع در محاسبه احتمال ها + نگهداری بهترین مسیر
حاوی اندیس بهترین حالت ها

37
مثال: همان مثال قبلي 
مطلوب است یافتن دنباله حالات متناسب با دنباله مشاهدهO=AAB
بنابراین، داریم: q*=S0S0S1
max(0.48*0.4*0.3, 0.12*1.0*0.3)

38
همان مثال قبلي
مقایسهαt(i)باδt(i)

39
استفاده از لگاريتم
به دلیل ضرب مقادیر احتمال ها (که کمتر از 1هستند)، با افزایش طول دنباله مشاهده، 
مقادیر δبه صفر می رسند (underflow)
استفاده از لگاریتم احتمال ، محاسبات را ساده تر می کند : تبدیل ضرب به جمع
تغییر الگوریتم ویتربی: تبدیل ضرب احتمال ها به جمع مقدار لگاریتم آنها

40
مراحل الگوريتم ويتربي در دامنه لگاريتم
گام سوم: عقب گرد برای انتخاب دنباله مسیر بهینه

41
آموزش مدل
الگوریتم ویتربی

HMM Learning
12

42
تعیین مقدار پارامترهاي مدلλ(A,B,π)
هدف: بیشینه کردن p(O|λ) برای داده های آموزش 
پارامترهایی که باید تخمین زده شود
B =پارامترهای تابع توزیع های حالت ها (میانگین و واریانس در صورت نرمال بودن توزیع)
روش: استفاده از تخمین بیشینه شباهت (ML)
اگر دنباله حالت ها را بدانیم، تخمین ساده می شود 
مشکل عدم وجود دنباله حالت ها = متغیر (حالت) پنهان = استفاده از الگوریتم امید بیشینه (EM)
تخمین بهینه نیست: بهینه محلی

Supervised Parameter Learning by MLE
13

14
اما همیشه اوضاع به این خوبی ها نیست... !

43
تخمین بیشینه شباهت(ML )و الگوريتم امید بیشینه(EM)
با استفاده از مقادیر فعلی پارامترها، مقادیر احتمال ها را محاسبه کنید (گام E)
تخمین مقادیر جدید برای پارامترها بر اساس مقادیر احتمال های محاسبه شده (گامM)
تعريف
احتمال بودن در  حالتiدر زمانtو حالتjدر زمانt+1(با داشتن مدل جاری و دنباله
مشاهده ها )
احتمال بودن در  حالتiدر زمانt(با داشتن مدل جاری و دنباله مشاهده ها )

EM Algorithm 
18
تعریف کلی روش امید بیشینه(EM)

44
رابطهγt(i)باαt(i)وβt(i)
1
1
( ) ( | , )
( , | )
( | )
( , | )
( , | )
( ) ( )
( ) ( )
tt
t
t
N
t
j
tt
N
tt
j
i P q i
P q i
P
P q i
P q j
ii
jj
















O
O
O
O
O
بخشی دیگر  از دنباله مشاهده
Ot+1…OT
کل دنباله مشاهده
مربوط به بخشی از دنباله مشاهده
O1O2…Ot
نرمال کننده: جمع همه 
γt(i)ها برابر1می شود

45
محاسبهξt(i,j)
محاسبه بر اساس پارامترهای 
الگوریتم های جلورو و عقب رو

46
با توجه به مقدار احتمال هاي ξt(i,j) وγt(i)داريم
ξt(i,j)  =احتمال بودن در  حالتiدر زمانtو حالتjدر زمانt+1
γt(i)  =احتمال بودن در  حالتiدر زمانt
تخمین تعداد انتقال ها از حالت iدر دنباله مشاهدهTتایی=
تخمین تعداد انتقال ها از حالت iبه حالتjدر دنباله مشاهدهTتایی=
محاسبه پارامترها بر اساس این احتمال ها

47
احتمال اولیه حالتi
تعداد بارهایی که در زمانt=1در حالتiهستیم
احتمال انتقال از حالتiبه حالتj
تعداد حالت ها 
تعداد نمونه های 
آموزشی

48
تابع توزيع. . .
تخمین برای حالت گسسته
حالت پیوسته: هر حالت ترکیبی از Mتابع توزیع است(یک GMM)
هر توزیعی می توان استفاده کرد از جمله توزیع نرمال 
تعداد توزیع های هر حالت 
وزن تلفیق = mixture coefficient

49
تابع توزيع(پیوسته) . . .
پارامترها(برای هر حالت)
وزن تلفیق ها 
میانگین هر توزیع
کواریانس هر توزیع
γt(i,k)  =احتمال بودن در تلفیقkاز حالتiدر زمانt

50
تابع توزيع(پیوسته)
توزیع نرمال

51
الگوريتم آموزش: مبتني بر امید بیشینه (EM)
الگوريتم باوم-ولش (Baum-Welch  = )الگوريتم جلورو-عقب رو 
گام اول: مقداردهی اولیه پارامترها λ(A,B,π)(احتمال اولیه، ماتریس انتقال حالت ها، 
پارامترهای توزیع مخلوط ها )
گام دوم: محاسبه مقادیر احتمال های α،βوξبر اساس مقدار موجود برای پارامترها
λ(A,B,π)(گامE)
گام سوم: محاسبه مقدار جدید پارامترها                       (گام M)
جایگزینی مقدار پارامترها با مقادیر جدید و تکرار الگوریتم
توقف: احتمال شباهت یا تغییرات آن به مقدار معینی رسیده باشد؛ یا حداکثر تعداد تکرار
مي توان نشان داد که

HMM Learning by EM (Baum-Welch)
15
در مجموعه مشاهدات گسسته

17
در مجموعه مشاهدات پیوسته

52
آموزش مدل
الگوریتم باوم-ولش 
(جلورو-عقب رو )

Semi-Supervise Generative Model
19
روش یادگیری نیمه نظارتی در مدل های مخفی مارکوف

20
Normal Distributions and GMM

Gaussian Distribution
20
•فرض کنید توزیع نمونه های موجود به شکل زیر باشد. 
•چگونه می توان آن را با یک توزیعگاوسی چند متغیره مدل سازی کرد؟

Multivariate Gaussian Distribution
21
توزیع گاوسی تکمتغیره:
توزیع گاوسی چند متغیره:
با داشتن تعدادی داده نمونه، چگونه می توان پارامترهای مدل را محاسبه کرد؟

Maximum Likelihood Estimation (MLE)
22

Gaussian Mixture Model (GMM)
23
•آیا مدل کردن این داده ها با یک توزیع گاوسی چند متغیره، مناسب است؟ 
•چگونه می توان آن را با یک مخلوط گاوسی مدل سازی کرد؟

24
قیود:,

25
با توجه به قیود، تابعی که باید کمینه شود:
باز هم ...

26

27
راهکار: بهره گیری از روش امید بیشینه (Expectation Maximization)

EM
28

Clustering: K-means
29

Clustering: GMM
30

53
براي کلمهCAT
مشاهدهها: ویژگیهای گفتار
مدل3حالته
هر حالت معادل یک واج
مدل5حالته برای کلمهCAT
حالتNullمشاهده تولید نمی کنند . از نظر تئوری لازم نیست اما پیاده سازی را راحت تر می کن د
k ae 0.1
0.90.5
0.5 t
0.3
0.7
k ae 0.1
0.90.5
0.5 t
0.3
0.7<null> <null>
1.0 1.0

54
مدل7حالته
حالت ها به صورت مستقیم معادل واج ها نیستند 
ae1 ae2 0.3
0.70.7
0.3 tcl
0.3
0.9k t0.5 0.7<null>  <null> 
0.5 0.1
1.0 1.0

55
مدل سازي گفتار (بازشناسي گفتار)
هر واج(phoneme )یکHMMدارد
تشکیل کلمه با پشت سرهم قرار دادن مدل واج ها 
قابلیت کشیدن يا فشرده کردن داده ها : مدل سازي داده هاي غیرهم طول

57
بیانگر مقولهنحوي که هر کلمه به آن تعلق دارد
مثال
{من، تو، او،...}یک{کتاب، گوسفند، درخت،...}را{دیدم، خریدم، فروختم،...}
برچسپزني (Tagging = )POS Tagging
فرایندانتساب مقوله نحوی به هر کلمه در متن
ورودی: دنباله کلمات
 Input:   Plays                  well                  with    others
خروجی: دنباله برچسپها
 Output: Plays/VBZ well/RB with/IN others/NNS

58
ايده
در نظر گرفتن احتمال وقوعبرچسپها (برچسپهای محتمل) برای کلمات
بافرض داشتن دنبالهکلمات W=w1…wn،دنبالهبرچسپهای T=t1…tnراطوری 
پیدا کنید که P(T|W) بیشینه شود
نحوه محاسبه؟
)|(maxargˆ WTPT
T

)()|(maxarg)()|(maxarg
)(
)()|(maxarg)|(maxargˆ
212121 nnn
TT
TT
tttPtttwwwPTPTWP
WP
TPTWPWTPT


قانون بیز
حذف P(W)تغییری
در بیشینه کردن ایجاد 
نمیکند
Likelihood Prior

59
براي محاسبه نیاز به فرضهاي ساده کننده است
فرض اول: احتمال وقوع یک کلمه فقط به برچسپ آن کلمه وابسته است و مستقل از سایر 
کلمات و برچسپهای اطراف آن است
فرض دوم: دیدن یک برچسپ فقط به برچسپ قبلی آن وابسته است (Bi-Gram)
بنابر این داریم:



n
i
iin ttPtttP
1
121 )|()( 



n
i
iinn twPtttwwwP
1
2121 )|()|( 





n
i
ii
n
i
iinnn ttPtwPtttPtttwwwP
1
1
1
212121 )|()|()()|( 
)()|(maxargˆ
212121 nnn
T
tttPtttwwwPT 

60
مفهوم احتمالP(ti|ti-1)(Tag Transition Probability)
احتمال آمدن یک برچسپ(ti )بعد از برچسپ دیگر(ti-1)
احتمال آمدن«اسم»(NN )یا«صفت»(JJ )بعد از«حرف تعریف»(DT )بالاست
The beautiful story
در پیکرهBrownداریم: P(NN|DT)=0.49
مفهوم احتمالP(wi|ti)(Word Likelihood)
اگر دنبال کلمهای با برچسپ tiهستیم، احتمال اینکه آن کلمهwiباشد
P(is|VBZ) =احتمال اینکه کلمه با برچسپ«VBZ »(فعل حال سوم شخص مفرد)، 
کلمه «is»باشد
در پیکرهBrownداریم: P(is|VBZ)=0.47

61
محاسبه احتمالها
نیاز به یک پیکره متنی داریم که در آن کلمات دارای برچسپ باشند
محاسبه احتمالP(ti|ti-1)(Tag Transition Probability)
مثال: برای محاسبه P(NN|DT)(درپیکره Brown)-برچسپDTبه تعداد116,454آمده است
که بعد از 56,509مورد از آنهاNNآمده است. پس 
محاسبه احتمالP(wi|ti)(Word Likelihood)
مثال: محاسبه P(is|VBZ)(در پیکرهBrown)-برچسپ«VBZ »به تعداد21,627 بار آمده که از
میان آنها، تعداد 10,073کلمه«is »است. پس
)(
)()|(
1
1
1


 
i
ii
ii
tC
ttCttP
)(
),()|(
i
ii
ii
tC
twCtwP 
49.0116454
56509)|( DTNNP
47.021627
10073)|( VBZisP

62
مثال: محاسبه احتمال دنباله براي تعیین برچسپ درست
کلمهraceهم میتواند فعل (VB )باشد و هم اسم(NN)
 Secretariat/NNP is/BEZ expected/VBN to/TO race/VB tomorrow/NR
در نظر گرفتن دو حالت از دنباله حالات برای تعیین برچسپraceدر جمله اول
هر فلش بیانگر یک 
مقدار احتمال است
تفاوت دو حالت در 3مقدار احتمال

63
موارد ابهامدیگر
exceptedمیتواند صفت (JJ)، فعل گذشته(VBD )یا اسم مفعول(VBN )باشد
مقدار احتمال برای 
برچسپ VBبیشتر است

64
محاسبه محتملترين دنبالهاز برچسپها
سادهترین روش: درنظر گرفتن تمام دنبالههای محتمل و محاسبه احتمال هر یک به روش 
بیان شده (Brute Force Search)
بافرض داشتن Nبرچسب وTکلمه، حداکثرNTدنباله ازبرچسبها تولید میشود.
محاسبات بسیار زیاد
روشهای رایج
مدل مخفی مارکوف(HMM: Hidden Markov Model)
میدان تصادفی شرطی(CRF: Conditional Random Field)

65
مدل مخفيمارکوف در برچسپزني پاره گفتار
مجموعه ای از Nحالت= هر حالت بیانگر یک برچسپ
مجموعه ای از Mنماد مشاهده=  هر مشاهده بیانگر یک کلمه
احتمال انتقالحالت ها = احتمال وقوع یک برچسپ بعد از دیگری
در گوی و گلدان: جابجایی از یک گلدان به گلدان دیگر
احتمال اولیهحالت ها = احتمال اینکه اولین کلمه چه برچسپی داشته باشد
در گوی و گلدان: احتمال انتخاب هر کدام از گلدان ها در اولین مشاهده (زمان t=1 )
تابع توزیع برایمشاهده kام در حالتjام= احتمال اینکه برچسپ jام کلمهkامباشد
در گوی و گلدان: احتمال انتخاب گوی kام از گلدانjام

66
برچسپزني پاره گفتار با روش HMM
فاز آموزش
در نظر گرفتنیک واژگان با Mکلمه و مجموعه برچسپهای ممکن (Nبرچسپ)
در نظر گرفتن یکHMMبا تعداد حالتهای برابر با تعداد برچسپها (Nحالت)
محاسبه احتمالهای مدل با استفاده از یک پیکره متنی دارای برچسپ پاره گفتار برای کلمات
احتمال‌اوليه‌حالتها‌(Nمقدار:‌هر‌حالت‌یک‌عدد)
احتمال‌انتقال‌از‌یک‌حالت(برچسپ)‌به‌حالت‌دیگر‌(یک‌ماتریس‌N*N)
احتمال‌داشتن‌هر‌برچسپ‌براي‌هر‌کلمه(یک‌ماتریس‌M*N‌‌)
فاز آزمون(استفاده)
دریافت یک دنباله از کلمات
یافتن بهترین برچسپهای مرتبط= بهترین دنباله حالت در مدل HMM

67
John gave the dog an apple  Verb 
Det Noun
Prop
Noun
John doggave the apple an
PN VB DT N DT N

68
يافتندنباله حالت هاي (برچسپهاي) بهینه براي يک دنباله از کلمات
باداشتن دنباله مشاهده (کلمات) O=O1O2…OTومدل مخفی کارکوف λ، چگونه
می توان بهترین دنباله حالت های (برچسپها) Q=q1q2…qTکه متناسب با مشاهده
است، را بدست آورد؟
مساله دیکدینگ درHMM(مساله دوم)
راه حل کامل: بررسی تمام دنباله حالت های ممکن و انتخاب بهترین آنها 
بسیار زمان بر، از مرتبه O(TNT)کهNتعداد حالت ها (برچسپها) و Tطول دنبالهمشاهده ها 
(کلمات) است
راه حل بهینه: الگوریتم ویتربی (Viterbi)
یک روش برنامه نویسی پویا(Dynamic Programming)
مشابه‌الگوریتمMinimum Edit Distance

69
الگوريتم ويتربي
ماتریس احتمالها
احتمال اولیه حالت s
ماتریس دنباله حالتها
احتمال اینکه کلمه ot
دارای حالتsباشد

70
مثال. . .
جمله: I want to race
4برچسپ(حالت)
VB،TO،NNوPPSS
آموزش: محاسبه احتمالها

71
مثال

72
بازشناسي موجوديت اسمي(NER)
یافتن اسمهای خاص (اشخاص، مکان، سازمان، ...) در متن
حسن روحانی
شرکت مخابرات ایران
بخشبندي عبارات اسمي (BaseNP Chunking)
یافتن عبارات اسمی مرتبط با یک مفهوم(استفاده در تجزیه و بازایابی اطلاعات)
انتساب برچسپهای (B :شروع عبارت،I :کلمات میانی عبارت وO :سایر کلمات عبارت)
[ the student ] said [ the exam question ] is hard
the/B student/I said/O the/B exam/I question/I is/O hard/O
بازسازي حالت(Case Restoration)
در متنی(انگلیسی) فقط با حروف کوچک، نیاز به تبدیل حرف اول برخی کلمات به حرف 
بزرگ (مانند اسامی خاص)

E:\courses\LangChain Project\main root\data\NumPy_SCR_Fa401.ipynb

خوب به نام خدا دوستان عزیز و ارجمند عرض سلام و ادب و احترام در خدمتتون هستیم با معرفی بسیار بسیار مقدماتی از نحوه به کارگیری لایبراری یا کتابخانه open cv در زبان برنامه‌نویسی پایتون که بتونیم توسط اون یک کارهای ساده‌ای رو تو حوزه پردازش تصویر انجام بدیم اما ارتباطش به درس ما چیه در حال حاضر سیستم های اندازه گیری بسیار بسیار دارند از تکنیک های پردازش تصویر استفاده میکن یعنی اینکه مثلا شما سرعت یه خودرو رو بخوان اندازه گیری بکنند با یه مجموعه از در واقع تصاویر پشت سر هم یا ضبط ویدیو از اون یا اینکه بخوان توی خط تولید بدونند که مثلا ارتفاع ستون مایع توی مثلاً بطری چقدره آیا درست پر شده یا نه و یا اینکه توی فلان فضا چند تا از مثلاً فلان الگو وجود داره چند تا آدم چند تا از

مثلاً ظرف اینا وجود دارند الی آخر که میشه همه اینا رو با پرده تصویر انجام داد خیلی خیلی کارها داره میشه تو حوزه خودروهای خودران خودتون برای ما فیلم‌های ضبط کردید که نشون می‌دادید برای اینکه جاده رو پیدا کنه مسیر رو پیدا کنه به عابرهای پیاده نزنه ماشین و به چپ و راست بپیچه لاین عوض کنه به شکل مناسب از یکی از سنسورهایی که ازش استفاده می‌کرد سنسورهای در واقع دوربین های حالا عمق سنج بودن یا دوربین های عادی بودند و مجموعه اینا سبب میشه که خوب حوزه پردازش تصویر بسیار بسیار پرکاربرد باشه به صورت خاص این درس یا دروس مرتبط با این مجموعه توی دانشکده مهندسی برق و مهندسی کامپیوتر حالا دانشگاه های مختلف داره ارائه میشه من جمله شریف اما این دلیل بر این نیست که افراد از شاخه های دیگه با نحوه به کارگیری اون آشنا نباشند یعنی درسته که شاید شما نیاز زیادی هم

داشته باشید بعضی وقتا عمق ریاضی پشت ماجرا یا فرمولاسیون به کار رفته توی اینا رو بدونید اما بد نیست که توانمند باشید با تکنیک‌های مختلف اون و به کارگیری عملی اون در قالب نرم‌افزارهای مختلف کار بکنید یکی از سوپر معروف‌ترین لایبراری ها کتابخانه های موجود که ازش توی پردش تصویر استفاده میشه و در واقع چیز جهانی داره معروفیت جهانی داره یه در واقع لایبری به نام اوپن سی وی اوپن سی وی در واقع فکر میکنم مخفف اوپن کامپیوتر ویژ باشه و یه چیز در واقع حالا اون اوپنش نمادی از باز بودنشه و اینکه بسیار در واقع همه چیش در دسترسه سایتش میتونید ببینید اوپن سیv org عرض به حضور شما تمام مواردی که لازمه توش وجود داره و یک در

هلپ بسیار بسیار مناسبی داره که شما نیازی ندارید هیچ چیزی رو حفظ کنید و میتونید از روی الگوهایی که ما در اختیارتون قرار میدیم الان کوتاه و یا از خود این برید از در واقع آموزش‌های این سایت استفاده کنید چه جوری نصبش کنید و چه جوری راه‌اندازیش کنید و از کجا شروع بکنید و الی آخر عرض به حضور شما الان این انتظار اولیه میره که کسانی که اینجا نشستن یه مقدار از پایتون میدونن یعنی فرض بر اینه که خب اوکی با پایتون آشنتی دارید و دارید میدونید این چجوری توش یک کدهای زدید قبلا اگر چه اوپن سی برای سی پلاس پلاس سی شپ جاوا ولی آخر هم اگر اشتباه نکنم در واقع چیز داره کتابخونه داره و میشه توی اونها هم از اوپن سی استفاده کرد اما الان تمرکز بحث ما روی در واقع چیز به کارگیری توی پایتونه برای اینکه اوپن سی تو پایتون تو راه بندازید خب اول فرض بر اینکه شما یه پایتونی نصب کردید مثلا من عرض به حضور شما پایتون ۳.۹ رو نصب

حالا می‌تونید هر ورژن دیگه‌ای حالا از سه به بالا رو نصب بکنید عرض به حضور شما برای اینکه راش بندازید یکی از دستوراتی که میشه توی ویندوز ازش استفاده کرد در واقع دستور pip instal open cv پایتون که عرض به حضور شما توی این سایت خدمتتون نشون داده شده و میتونید این دستور رو کپی بکنید یا این همین چند کلمه رو یا بنویسینش و کامنت پراپتون رو باز بکنید و اینجا پیستش کنید و اینتر بزنید و اون شروع میکنه براتون اگر در واقع حالا پایتون تو هم درست نصب شده باشه اینو براتون نصب میکنه اگرچه من قبلاً این کارو کردم و همپن سی براتون نصب میکنه و هم نامپای رو که توی کارهای پردش تصویر بسیار بسیار ازشون استفاده میشه حالا با فرض اینکه عرض به حضور شما این اتفاقات افتاده و ما نصب و انجام دادیم بریم ببینیم که چه میشه در حالت عادی با این کار کرد من خیلی فکر کردم که چه

توی زمان کوتاه حول و حوش یه ساعته بیشترین بازدهی رو برای شما داشته باشم آخرش به این نتیجه رسیدم همینی که می‌خوام خدمتتون اجرا کنم اینه من در حد چند خط خیلی خیلی ساده و ابتدایی و اینجا می‌نویسم بعد از یکی از در واقع مجموع داده‌های آماده‌ای که یکی از دوستان ما آقای مهندس فرخ کریمی آماده کردن توی گوگل کلب بهتون نشون میدم لینکشم خدمتتون میدم و اونجا میریم بقیه چیزا میکنیم و سعی میکنیم تند تند تا جایی که ممکنه روشون صحبت بکنیم و دیگه نیازی به نوشتن کد و طولانی شدن جلسه مون نداشته باشه برای اینکه شما اوپن کنید چه توی عرض به حضور شما خود با آوردن در واقع بالا رام کردن پایتون و یا اینکه در قالب یه چیز فایل در واقع کد میتونید با این شروع بکنید ایمپورت بکنید سیv تو رو سیv تو رو ایمپورت بکنید عرض به حضور شما

اگر درست نصب کرده باشید بدون هیچ اروری این اتفاق میفته و دیگه شما میتونید الان از مجموعه بی‌شمار در واقع توابعی که تو حوزه تصویر نوشتن و شما را بی‌نیاز می‌کنند از اینکه بخواید خودتون دستی کد بزنید یا یه سری ماتریس‌ها رو عدد رقم‌هاشو عوض بکنید براتون خیلی از این کارا رو آماده انجام میدن خب طبیعتاً ساده ترین کاری که اولین کاری که باید بکنیم اینه که بتونیم یه عکس رو لود کنیم دیگه ها یه عکس رو بیاریم بالا که بتونیم روش کار انجام بدیم پس طبیعتا اولین دستوری که در واقع باید به کارش بگیریم در مورد لود شدن یا رید کردن یا خوندن یه عکسه خب دستور آی ام جی حالا این آی ام جی مساوی با دستور سی وی2 نقطه آی ام رید خب ایمیج رید پرانتز باز بسته از شما دو تا ورودی میگیره دو تا ورودیش اینجوریه که اولیش باید مسیر عکس

کامپیوترتون و دومیش با یه عدد که مثلاً صفر یا یک باشه مشخص بکنید که اون عکس چه جوری لود شه که اگه یک بزنید عکس رنگی لود میشه و اگر صفر بزنید عکس حتی اگه رنگی باشه سیاه و سفید لود میشه خب من مثلاً یه عکسو عرض به حضور شما بخوام چیز بکنم لود بکنم اینجا تست کجا رفت تست ایمیل اسلش ای دات جی پی جی و به صورت رنگی چیکار می‌کنم لود می‌کنم و می‌ریزمش تو یک متغیری به نام آی ام جی خب در حالت کلی عکس رو میدونید دیگه عکس یه سری در واقع ابعاد طولی و عرضی داره که بهش با نام پیکسل شناسایی میشه اجازه بدید من این

آهنگ الان خدمتتون نشون بدم تو خود البته چیزم میشه دید شاه تو خود پایتونم میشه بازش کرد حالا نشونتون میدم عرض به حضور شما این تست ایمیج رو بیارم من الان این عکسو که حالا یه خاطره‌ای هم دارید ازش احتمالاً توی جلسه اول درس اندازه‌گیری و جزوه جلسه اولمون اینو لودش کردم که یه عکس رنگی باشه اون محصولیه که گفتیم آخر ترم از شما در میاد و خب میخویم حالا روی این یک سری کارا مثلاً انجام بدیم خب این عکس مائه و این عکس یه سری ابعاد در واقع یه سری پیکسل در راستای طولی داره یه سری پیکسل ستونی داره و در مجموع یعنی ببخشید یعنی مجموعه پیکسل داره که با شماره های سطری و ستونی میشه شناساییشون کرد و روشون کار کرد و چون عکس عکس رنگیه هر پیکسل دارای سه تا کاناله که یکیش نماد میزان دخالت رنگ آبیه تو اون عکسه یکیش قرمزه و یکیش هم سبزه که خب سب

در مجموع اون رنگ به صورت یکتا در بیاد و خب اگر از دستور عرض به حضور شما آی ام در واقع ایمیج نقطه سایز استفاده بکنید img نقطه سایز من عکس رو الان ریختم توی متغیر i ام جی میتونید ابعادشو این سایزشو ببینید که میگه اینقدر در واقع داده دارم یه ماتریسیه که حاوی ۱۵۱ هزار و خورده در واقع دهی هستش و اگر بخواهید که به صورت خاص ببینید ماتریس چند در چنده میتونید با دستور آی ام جی نقطه شیپ پیدا بکنید که چنده میگه ۱۷۲ تا پیکسل ۱۷۲ ردیف پیکسل افقی داره ۲۹۳ تا عمودی داره و سه کانال داره که عرض کردم خدمتتون اینه که شما میتونید چیکار کنید عرض به حضورتون برید پیدا کنید که کانال مثلاً آبی و

سبزش حالا هر کدوم چین خب اگه مثلاً من چه می‌دونم بنویسم img فرض کنید مثلا صفر و صفر و صفر رو بزنم imd صفر و صفر رو فقط بزنم یعنی پیکسل اول رو به من البته اجازه بدید خود آی ام جی اگه بزنم مثلا میبینید که در واقع هر کدوم از حالا اون پیکسلاش مثلا چه چیزی دارن چه در واقع مقادیری دارند خب و عرض به حضور شما که مثلاً اعدادی که برای هر چیز به من میده اعدادی که برای هر کانال به من میده از بین صفر تا ۲۵5۵ اند و نماد شدت دخالت عرض به حضور شما اون چیز

شدت دخالت رنگهای تاثیر قرمز و آبی و سبزن توش که از صفر تا ۲۵۵ می‌تونه تغییر بکنه همزمان صفر بودن هر سه تا نماد اینکه اون پیکسل سیاه رنگه و همزمان ۲۵۵ بودنش اونی که دیگه سفید رنگه و تمام نور توش حداکثر شدت خودش قرار داره اونجا و طبیعتاً رنگ مثلاً قرمز خالص اینجوری میشه که دوتاش صفره یکیش ۲۵۵ خب شما احتمالاً اصطلاح آر جیبی رو شنیدید که مخفف بلو باشه اما توی اوپن سی با این فرم فعلیش اینتنسیتی ها به صورت بی جی آر داده میشه یعنی اولی آبیه بعدی سبزه و بعدی قرمزه یعنی رنگ مثلاً ۲۵۵ صفر صفر نماد آبیه حالا این که چجوری میشه آر جیبیش کرد راه‌هایی وجود داره حالا توی کارامون باهاش روبرو هستیم خب خب در این حد الان آشنا شدیم که اوکی در واقع عکس از نظر

این پایتون یا از نظر کامپیوتر صرفاً یه ماتریسه یه ماتریس با کلی عدد دیگه که به ازای هر خونش سه تا عدد به من میده و به ازای تک تک پیکسل‌ها این آرایش سه گانه رو داره عرض به حضور شما خب اینم عرض کردم خدمتتون میشه روش کارهای مختلفی کرد من فقط یه دونشو الان خدمتتون بیان می‌کنم یکی اینکه خب عکسی که داریم یا تغییرات دادیم و چجوری نمایشش بدیم دستور cv2.ir شو ایمیج شو که توش عرض به حضور شما دو تا ورودی میگیره یکی میگه اسم پنجره که باز بکنم بالاش چی بنویسم و چه عکسی رو میخوید براتون عرض به حضور شما چیکار کنم باز بکنم اینکه مثلاً شما می‌نویسید که من می‌خوام عکس ایمیج با آی ام جی رو باز بکنم همون چیزی که ما توی آی ام جی ریختیم و داشتیم روش حساب کتابامون انجام میدادیم بعدا ممکنه یه سری تغییراتی داده باشیم و اسم چیز بالا سرش

ایمیج ۱ خب این معادل این تیکه سبز رنگه معادل اون جاییه که شما تو مطلب مثلاً برای در واقع فیگراتون اسم می‌ذاشتید و اینجا میگید چیو توش رسم کن خب اینو اگه در واقع اینتر بزنید چیکار میکنه برای شما رسم میکنه بالاش نوشته ایمیج یک و این عکس رو اون چیزی که ازش مونده آخرین بار که حالا ما تغییری هم ندادیم و فقط خودش لوت کردیم چیکار میکنه نشون میده میشه کاری کرد که ابعادش قابل تغییر باشه ولی الان مثلا فیکس شما نمیتونید بکشید در واقع ابعادشو تغییر بدید و این الان تو همون تعداد پیکسل های که داده ثابته که توی اوپن سی دستوراتی وجود داره که این قابلیت ها را بهش میده حالا من یه نمونه میخوام الان یه چیزی رو بگم بعدش بریم توی اون کد مثلا اولین کاری که میخویم بکنیم اینه که مثل همون کاری که شما توی پینت و اینا انجام میدید یا پاورپوینت با موس میاید یه سری خط میکشید دایره میکشید مربع میکشید اینو با کد انجام بدید به صورت کاملاً اصولی و بعدا حالا اینا میتونه کاربرد

داشته باشه مثلاً رسم مستطیل رو اینجا بدونید بعداً بهش می‌گید برو نگاه کن هرجا مثلاً عرض به حضور شما مستطیل‌های آبی رنگ با حداقل مساحت مثلاً ۱۰ تا ۲۰ تا پیکسل دیدی رو بیا برای من چیکار کن دورش یه مربع بیار یه مستطیل بیار چون من لازمش دارم این احتمالاً نماد مثلاً فلان چیزه خب یا مثلاً برو من یه عکس مرد یعنی چشم و مردمک چشم و فلان اینا رو با هم بهت میدم شما برو نگاه کن که چی مردمککش کجاست اون دور اونجا برام یه مستطیل قرمز رنگ بیار اون اتفاقی که میفته مثلا شما موبایلتون رو میگیرید از یکی عکس بگیرید میبینید دور چهره ها چی کادرهای قرمز رنگ میکشه خب اینا همون چیزی که شما دارید روی عکس در واقع یه مستطیل رسم میکنید دیگه عرض به حضور شما مثلاً فرض کنید من میخوام یه خط رسم کنم روی خطم میگم که بیا سی وی دو نقطه لاینو خب اجرا بکن این نقطه لاین یعنی که بیا یه خط برام بکش روی چی برام بکش باید یه سری ورودی بهش

میگه روی در واقع عکس img همون چیزی که حالا در قالب لودش کردیم و در قالب یه سری مجموعه ماتریس‌های و فلان و اینایی بود که توی img ریختیمش که همین عکسه بود بیا این تغییر رو بده عرض به حضور شما لاین دو تا نقطه شروع و پایان میخواد میگه از کجا شروع کنم از پیکسل چند و چند و به چه پیکسلی ختمش کنم میگه از پیکسل صفر و صفر شروع کن از گوشه بالا سمت چپ میشه و این شمارنده های پایتون از صفر شروع میشن دیگه خب برخف مطلب که از یک شروع میشه و مثلا به چند ختمش کن عرض به حضور شما به مثلاً پیکسل ۵۰ و مثلاً ۷۰ ختمش کن خب این تا اینجا میگید این عکس این چیز رو برام بکش عرض به حضور شما بعدیش باید یه رنگ رو بهش بدید با چه رنگی براتون بکشه عرض کردیم در حالت دیفالت بی جی آر از شما میگیره اینتنسیتی بلو گرین و رد رو مثلا من اگه بنویسم ۲۵۵ صفر و صفر یعنی چی خط آبی برام

و بعدی ورودی بعدی که ازتون می‌گیره ضخامت خطه مثلاً من ۵ میزارم یا ۴ میزارم خب و بعضی از این چیزا نگاه میکنید ننویسید دیفالت هایی دارند یعنی ارور نمیدن خب ولی بعضی چیزا نه ارور میدن اگه ننویسید که برید تو اون هلپ اوپن سی که خدمتتون نشون دادم تو مجموعه سایتش میتونید بعدا نگاه کنید حالا میگه اینو اینو انجام دادی کجا بریز مثلاً من میگم دوباره بریز توی چی آی ام جی یعنی رو همون عکسه این تغییرات که دیدی باز تو آی ام جی بریز خب و یه سری درایه‌های اون ماتریساش اصلاح میشن عددای دیگه میشن که من بع میخوام چیکار کنم اینو پلات کنم ببینم آیا تغییری کرده یا نه من اینو اینتر بزنم اروری نداد عرض به حضور شما یه بار دیگه چیکار میکنم سی وی دوت دات فلان رو اینو میبندم و عرض به حضور شما اینو یه بار دیگه اجرا میکنم حالا میبینید چه اتفاقی افتاد حالا یه خط آبی با یه ضخامتی چی شده برای من کشیده شده از گوشه بالا سمت چپ اومده پایین

شروع شده و اومده پایین تا یه جایی به اتمام رسیده خب با این توضیحات در واقع توضیحات عمومی دیگه بریم بقیه‌شو از روی نمونه کدهای حالا دوستمون آقای کریمی بگیم خدمتتون که زحمت زیادی کشیدن من این لینکو براتون اینجا کپی می‌کنم توی چت باکس چیز اینجا نگه دارید برای خودتون بعداً استفاده بکنید عرض به حضور شما از گوگل کلب استفاده شده خود اینجا در واقع نیازی نبود شما حتی پایتون هم نصب بکنید از خود پردازنده های گوگل استفاده میکنه روش چیزا لایبری های لازم نصب شده و میتونید همینجا خودتون ران هم بگیرید هر باکسی برای خودش علامت پلی داره و برای اینکه در واقع ران انجام بشه باید شما چیکار کنید اون پلی رو بزنید خب پلی اول که بزنید عرض به حضور شما یه سری فقط لایبراری اوپن کرده یکی ایمپورت سی ویدیو بوده که خیلی خیلی برای ما مهمه یکی نامپای بوده که ما خیلی جاها مجبوریم برای

عکس خالی مثلاً سفید یا سیاه طراحی کنیم بعداً روش کار کنیم یا کلاً فیلتر طراحی کنیم یا ماسک طراحی کنیم مجبوریم که خب از نامپای استفاده بکنیم گفته که نامپای رو من با نام ام پی از این به بعد صدا میزنم عرض به حضور شما مت پلادلیبو استفاده کرده که برای رسم‌هاش بوده اگرچه من دیدید مثلاً توی پایتون خودم از این استفاده نکردم و بعدا گفته من هر جا پی ال تی زدم چیز کن دیگه برام یه گونه از پلاتو رسم کنه معادل همون آی ام شو ما یه جورایی حالا با امکانات بیشتری بعضا و الی آخر گفته پرینت بکن که چه اوپن سیv داری استفاده میکنه گفته ورژن چهار یک دو رو دارم که حالا شما میتونید برید استفاده کنید خب باکس بعدی که ران بکنید عرض به حضور شما رفته چیکار کرده رفته که یه فایل عکسی که در واقع در مورد عکس لیونل مسی بوده رو از اینترنت دانلود کرده گرفته و عرض به حضور شما ریخته توی چی ظرفی به نام مسی

مسی الان یه آرایه است ابعادش ۳۴۲ در ۵۴۸ در سه است یعنی ۳۴۲ تا ردیف پیکسل افقی داره ۵۴۸ تا عمودی داره و سه کانال داره که مخفف همون رنگ‌های آبی و سبز و قرمزش هستند که این شبیه همون لود مان خب پس تا اینجا از الان یعنی عکسی داریم که به نام مسی سیو شده و ما می‌تونیم تغییراتمون روی مسی بدیم عرض به حضور شما بعدیش که ران کنم چیکار میکنه دستور استفاده کرده که جز کتابخانه متلیپ بوده و در کل تونسته برای شما عکس رو رسم کنه فقط اتفاقی که افتاده اینه که برای اینکه این کار را انجام بده با یه در واقع دستوری که تو خودش آماده هست میگه در واقع چیکار کن یک کانورت انجام بده عکس رو از کانال بی جی آر دیفالت ببر به آر جیبی یعنی دیگه نیازی نیست شما یه کد بزنید که فور آی از یک تا

فورجه‌ای از یک تا فلان بیا جای نمی‌دونم درایه‌های rogo b و جاشو عوض بکن و اینا ستون اول و دوم سوم همین دستورات آماده شما باید با یه خط کد بتونید این کارا رو بکنید کسی قرار نیست اینجا دیگه خودش کد بزنه و تا حد امکان چیکار می‌کنه از دستورات آماده استفاده میکنه این دستور این دستور میاد عکس مسیو در واقع کانورت میکنه از کانال بی جی آر به آر جیبی یعنی باز یه ماتریسی بهمون میده که با همون ابعاد و سایز فقط چی شده جای ستون های جای درایه های مربوط به جی آر یه جوری عوض شدن که دیگه اولی شده آر بعدی شده جی بعدی شده بی و این عکس رو به شما نشون داده گفته این عکس حالا گفته چیکار میتونید بکنید اولا دستوری هست به نام آی ام رایت ام رایت عکس رو برای شما سیو میکنه یعنی اینکه بعد از اینکه تمام تغییراتتون رو روش انجام دادید میخوید یه عکس رو برای خودتون داشته باشید دیگه آی ام رایت میگه سیوش کن با نام مسی دات پی ان جی و چی رو و اون چیزی که توی

مسی بوده رو برای من بیا چیکار کن در واقع رایتش بکن ترو داده که بدون مشکل این اتفاق انجام شده و شمام تو کامپیوترتون تو پایتون خودتون اگه انجام بدید تو اون فولدر مربوطه عکس ساخته میشه و عرض به حضور شما اینجام نوشته که اگه ال اس بگیرید حالا دستورات لینوکس نمیدونم چقدر آشنایت دارید لیست بگیرید یا معادل اونایی که توی داس کار کردن معادل دی آی آر اونجاست دیگه میخواد فقط ببینه که فایل مسی دات p جی هم ساخته شده خب همین نوشته که اینم ساخته شده و فلان فاز بعدی که در موردش صحبت می‌کنم همون چیزی که ما در مورد رسم خط و اینا گفتیم نوشته که دراینگ فانکشن و توش چیکارها میتونه بکنه عرض به حضور شما از رسم مستطیل و دایره و بیضیگون و خط و اینا میخواد صحبت کنه این دو تا کد رو در واقع ران بکنم حالا میاد برای من یه سری خروجی بهم میده که میتونم برم ببینم اینجا مثلاً گفته چیکار کن گفته

عکس با ابعاد ۵۱۲ در ۵۱۲ پیکسل با سه تا کانال برام بساز و همشو زیرو بزار ها یعنی چی یعنی یک صفحه کاملا مشکی اینو اگه سیوش کنید بعداً imriteش کنید یه صفحه کاملا مشکی ۵۱۲ در ۵۱۲ پیکسلی به شما میده بعد گفته که چیکار کنید یه بلولاین می‌خوام رسم بکنم این علامت هشتگ یا علامت شارپ که می‌ذارن توی زبان برنامه نویسی مثل پایتون سی شپ و اینا چیزن دیگه نماد کامنتن میگه چیکار کن میگه این آی ام جی بود که من ساخته بودم اول بیا همونی که عرض کردم خدمتتون از پیکسل صفر و صفر شروع کن تا پیکسل ۵۱۵۱۱ یعنی از بالا سمت چپ تا پایین سمت راست رنگ ۲۵۵ صفر صفر رو بزار عرض به حضور شما بی آر جی پس بی جی آر پس بلو خواهد بود با ضخامت پنج و اینو بریز توی آی ام جی یعنی چی یعنی اون صفحه سیاهه الان به چی تغییر پیدا کرد در دیگه الان یه خط آبی هم توش قرار داره علاوه بر اون

بیا یه کارای دیگه بکن باز بریز تو img بیا رکتنگل یا مستطیل بکش چه جوری می‌نویسی چه ورودی هایی میگیره میگه رو چه عکسی اجرا کنم روی i ام جی خب رکتنگلو باید گوشه بالا سمت عرض به حضور شما چپش و گوشه پایین سمت راستشو بدید مختصاتشو که ایکس و وای پیکسل ایکس و وای سمت چپ و راستشو بالا و پایینشو داده چه رنگی براتون بکشم 0255 صفر با ضخامت سه اینم اگه باز اینتر کنیم چی این تغییر رو توش میده که میره تو اون بوم مشکی رنگتون چیز میکنه عرض به حضور شما در واقع یه مستطیل هم رسم میکنه همین کار برای کشیدن دایره و بیضی داریم برای دایره میگه تو رو چه عکسی بکشم مرکز دایره کجا باشه شعاع دایره ام چند باشه با چه رنگی بکشمش و عرض به حضور شما یه چیز دیگه اینجا جلوش نوشته که منفی یک اینا توپش نگاه میکنید حالا حالت های داره که دایره رو تو پر بکشه

توخالی براتون بکشه که این تنظیماتش با یه عدد در واقع با یه چیز گذاشتن یه عدد مشخصی گذاشتن انجام میشه که دایره توپر باشه توخالی باشه همینجور برای در واقع الیپس یا بیضی دارید که علاوه بر شعاع در واقع حالا ما تو دایره یه دونه شعاع داریم اینجا یه دونه عرض به حضور شما شعاع چیز نصف قطر کوچک داریم نصف قطر بزرگ اینا رسم می‌کنید و یه ویژگی که دیگه هم داره میگه تا چند درجه براتون رسم کنم فکر کنم بشه ۱۸۰ تا ۱۸۰ درجه خب صفر تا ۱۸۰ درجه فکر میکنم معادل چیزه دیگه نیم بیضی الان برامون میکشه عرض به حضور شما حالا این باید ببینیم هر کدوم از تنظیماتش چیه مثلاً این صفره آیا زاویه اش با محور ایکس هاست اینو مطمئن نیستم الان خب و یه همچین چیزی پلیگان میشه که کشید باهاش چند وجهی چند وجهی اینه که خب یه سری نقاط بهش میدید مثلاً نقطه اول ده و پنج بعدی بیست و۳ اینا همه بر حسب پیکسل پیکسل در راستای ایکس پیکسل در راستای

و الی آخر و یه دونه با نامپای یه دونه آرایه ساخته به نام پوینت که این پوینت رو داره بعد میگه چیکار کن با دستور پلی لاینز بیا چیکار کن برای ما بهترین پلیگانو ازش بکش عرض به حضور شما باز دوباره اینجا می‌تونید تعیین کنید که نقطه اول و آخر رو به هم وصل بکنه یا نکنه با این حالا ترو و فالسی که نوشتید اینم فکر می‌کنم رنگش باشه که با چه رنگی براتون بکشدتش خب اینم پلی کردیم اینم ران شده الان هنوز ولی جایی نگفتیم نمایشش بده بعد میگه نوشته بهش اضافه کن چجوری نوشته بشه اضافه کنم دستور سی وی دو پوت تکست میتونه نوشته اضافه بکنه توی مطلب ممکنه آشنا باشید چجوری مثلاً ما به پلاتمون تکست اضافه می‌کردیم اینجا مشابه همونه اول شما باید تعیین کنید که فونت نوشتتون چیه بلکه فونت تعیین کنید دستور سی وی2 دات فونت که بزنید خودش تمام فونت های که براش تعریف

یکیشو انتخاب می‌کنید اینو می‌ریزید توی متغیری مثلاً به نام فونت یا هر چیز دیگه‌ای ممد هرچی دلتون می‌خواست می‌تونید بریزید بعد میگه چیکار کن سی وی ۲ تکست کن یه نوشته برام اضافه کن به چی به عکس ایمیج خب چون همیشه باید بهش بگید که رو چی برام اضافه بکن خب نوشتشو گفته open cv برام بنویس عرض به حضور شما میتونستید یه چیز دیگه بنویسید بعد توی مختصات ۱۰ و ۵۰۰ این کارو انجام بده با فونت فونت بنویس با سایز چهار بنویس با رنگ ۲۵۵ ۲۵۵ که سفید باشه بنویس و حالا تنظیمات دیگه هم میتونه داشته باشه میتونم نداشته باشه و همینجا تمام بشه این هم اگه ران بکنید عرض به حضور شما چون نریختیم تو چیزی حالا اینجا هم بهتون نشون داده گفته که آرایه نهایی که دادم یه همچین چیزی خواهد بود که خب نمیذاره البته همه رو ببینید سه نقطه خیلی جاهاش میذاره اگه پایتون آشنا باشید میدونید که حالا بعداً دلتون بخواد ببینید چیکار بکنید و در نهایت میگه چیکارش کن پی ال تی ام شو بکن برام

عرض به حضور شما سی وی ۲.convert کالرش بکن اون img رو کالرشو به چی تغییر بده از استاندارد بی جی آر به آر جی بی تغییرش بده بی جی آر تو rgb بزن و اینجوری چیکار میکنه براتون پلات میکنه حالا اون بوم سیاه رنگ اول که بود اون خطه رو کشید گردالی دایره توپر قرمز رنگو کشید یه مستطیل کشید نیم بیضی براتون کشید اوپن سیv هم اینجاش نوشت و چی در نهایت ختم بخیر شد و تمام شد و شما میتونید عکس رو سیو بکنید یا عرض به حضور شما چیز بکنید دیگه هر کاری دلتون میخواد باز انجام بدید روش مثلا چه اضافه کردن نوشته میتونه برای این باشه که فرض کنید توی عکس شما این قابلیت رو میخوید به نرم افزارتون بدید به صورت هوشمند که براتون بنویسه چه میدونم از این خط تولید داره هندونه رد میشه یا خربزه خب مثلاً دورش مستطیل بیاره و بالاش هی بنویسه که این کدومه حالا رفته پردازش کرده متوجه شده این کدومه و بعد از اینکه متوجه شد اینو اضافه بکنه خب این ساده ترین کاری که میشه کرد دیگه چی

در واقع بیسیک و ابتدایی روی کارهایی که میشه انجام داد خب یکی از کارهایی که میشه کرد اینه که میگه بیام یه پیکسلو بخونم چیزش چنده این حالا من این اشتباه رو کردیم پرانتز گذاشته بودم پرانتز نمی‌خواست یعنی در واقع مثلاً اینجا i ام جی اگه یادتون باشه مثلا میزنید آی ام جی ۱۰۰ و ۱۰۰ به من بده چنده خب آی ام جی ۱۰۰ و صد بهتون میگه چی بهتون میگه که پیکسل صد و صد حالا البته چون از صفر داره شروع میشه 11می و 11می مقدار اینتنسیتی هاش توی بی جی آرش ۱۹ ۳۷ و ۵۴ خب حالا شما اگه جایی دیدید مثلاً سه تا شد ۲۵۵ یعنی رنگ داره به سمت سفید میره اگه سه تاش نزدیک صفره داره رنگ به سمت سیاه میره و این تک پیکسل رو به شما میده که خب چه مقداری داره اوکی این شبیه خوندن یه درایه از یه ماتریس که تو مطلب هم باهاش آشنا دارید میگه پرینت کن پیx رو که بهمون نشون بده ۱۵۷

چیکار کن میگه مسی ۱۰۰ و صد رو بزار ۲۵۵ ۲۵۵ ۲۵۵ میگه آقا من دلم میخواد پیکسل شماره ۱۳ رو من کاری ندارم چه رنگی بوده تو بزار رنگ سفید خب دلتون می‌خواد این تک پیکسل سفیدش کنید بعد میگه پرینت کن مثل صد و صدو که بهتون گفته اول این بوده پی ایکس رو براتون پرینت کردم بعدش شده این حالا اگه تک پیکسل رو عوض بکنید ممکنه خیلی متوجه نشید که عکستون چه تغییری کرده اما تو مثال ادامهش میگه که یه محدوده از پیکسل ها رو عوض کنید میگه آقا به ازای آی از یک تا فلان به ازای جی از یک تا فلان مسی ۵۰ به علاوه آی و ۲۳۵ به علاوه جی رو چیکار کن بکن صفر ۲۵۵ صفر که گفتیم اگه این bgr باشه یعنی رنگ چیز بهش بده سبز بهش بده تو چه محدوده چون محدوده که بهتون گفته و اگه بیاید در واقع پلات کنید باز این شماره ۲۰ و آی ام شو فلان کنید این مسی جدید

ریختیم دوباره تو مسی همون مسی مسی جدیده رو که پلات کنم چی میشه این بالا کله مسی الان چی شده یه مستطیل سبز رنگی به وجود اومده نمی‌دونم الان می‌بینید یا نه موس من روش قرار داره که توی عکس اصلیش وجود نداشته و شما می‌تونید اینجوری چیکار کنید این عکس اصلیش هم بیارم ببینید می‌بینید وجود نداشته خب می‌بینید که چی شده چه اتفاقی افتاده شما میتونید یه مجموعه پیکسل های اونجوری که دلتون میخواد اینتنسیتی رو مقدارشو چیکار کنید عوض بکنید خب عرض به حضور شما اینا رو گفتیم خدمتتون اینکه میگه که شیپ مسی چنده میگه عکس ۳۴۲ در ۵۴۸ در اینقدر پیکسلی با سه کاناله آر جیبیه در کل اینقدر درایه داره عرض به حضور شما بخش بعدی میخواد نشونتون بده که چجوری یه تیکه از عکس رو بردارید بریزید توی عکس دیگه بعد اگه دلتون بخواد کپی پیست کنید روی عکس اصلیمون و چیکار کنید ازش استفاده کنید گفته مسی که خودش یه مجموعه بردار بود برو پیکسل های

۲۴۰ ۲۸۰ تا ۳۴۰ بخش افقیش و ۳۳۰ تا ۳۹۰ بخش عمودیش حالا عرض به حضور شما تا ۳۹۰شو چیکار کن بیا اینو استخراج کن این مسی یه چیز بود دیگه یه ماتریس در واقع سه بعدی بود درایه‌های مربوط به این ایکس و این وای و همه زداشو بریز توی متغیر به نام بال حالا این رفته دیده که این توپ تو این محدوده قرار داره خب چشمی هم میتونید ببینید مثلاً محدوده وایش الان میشه دید دیگه حول و حوش ۳۳۰ تا قبل ۴۰۰ خب و اینو گفته چیکار کن اینو بریز تو بال بال فقط میشه چی اگه بعدا بالا پلات کنید فقط میشه این تیکه توپه که شما جداش کردید و یه مقدار چمن های سبز رنگی که دورشن بعد گفته بیا مسی اون عکس مسی بود درایه اینقدر و اینقدرشو اون مجموعه مثلاً یه جای دیگه شو مساوی بال قرار بده ها یعنی چیکار کن یعنی بیا مثلاً اینجا یه

یه توپ اضافه کن برام یعنی بیا اون مقدار قبلیتو فراموش کن و این چیزی که اینجا دارمو جاش بذار فقط خب طبیعتاً می‌تونید حدس بزنید که این محدوده که شما انتخاب می‌کنید باید سایزش با سایز بال یکی باشه دیگه وگرنه بهتون پیغام خطا میده و بعدشم گفته چیکار کن برام رسمش بکن و این باز اگه اجراش بکنید مشاهده خواهید کرد که چی که علاوه بر این توپه شما یه توپ دیگه‌ای هم خواهید داشت حالا البته یک تمرکز کنید می‌بینید که اینجا رنگ این چمن با این چمن همخوان نیست به خاطر اینکه دقیقاً از همین اینجا بریده بوده خب و میتونین توپ رو هزاران جای دیگه هم توی تصویرتون اضافه بکنید حالا یه جای دیگه یه چیزی داریم که خب برو پیدا کن چند تا توپ تو تصویره یعنی اینم باز اوپن سی قابلیت های به شما میده حالا ببینم میرسیم یا نمی‌رسیم در موردش صحبت کنیم فاز بعدی که میخویم در موردش صحبت کنیم در مورد اسپلیت کردن یا مرج کردن چنل های عکسه که چجوری بیایم در واقع کانال های آبی قرمز و سبز رو از همدیگه

جدا کنیم و یا اینکه نه اگه کانال‌های قرمز و آبی و سبز و یه جوری داریم چه جوری به هم بچسبونیم با یه عکس رنگی تولید بکنیم خب دستور cv۲. اسپلیت چیکار میکنه میاد عکستونو به سه کانال بی جی و آر می‌شکونه من گفتم بریز توی بی و جی و آر یعنی در واقع کانال اول که شکوندی بریز توی متغیر بی بعدی تو جی بعدی تو آر عرض به حضور شما یا مثلاً حالا نمیدونم اینجا پایینش هست یا نه آره البته اینجا هستش میخوام نشون یه چیزی بهتون نشون بدم و دستور مرج چیکار میکنه دستور مرج میاد سه تا مثلا بی جی و آر و چیزشو میگیره به همدیگه می‌چسبونه و یه عکس براتون تولید میکنه شما اگه اینو اول اسپلیت کنید و بی وg وr بعد دوباره b و جی آر رو به هم مرجش کنید دقیقا همون عکسی میشه که قبلاً داشتیم یعنی اگه اسم اینو بذارید مسی یک اسم اونو بذارید مسی دو پلات کنید بغل میبینید هیچ تفاوتی با همدیگه ندارن اگرچه تاکید می‌کنم در حالت عادی ترتیباش rgb

نیستا یعنی شما اگر به جای بی و جی آر حواستون نباشه جی و بی بسازید می‌بینید مسی رو از در واقع لباس آبی اناری میندازید مثلاً توی چی قرمز قناری خب و می‌فرستینش مثلاً به جای چه می‌دونم از بارسلون دیگه می‌فرستینش اینترمیلان و این دیگه رنگ لباسش عوض میشه حالا یه همچین چیزی اگر در واقع میتونید برید ببینید گفته پرینت کن بی و بخش چیزشو بخش آبی رنگشو برای اون رسمش کرده از حضور شما اینجا باز کاری که کرده چیه گفته که حالا یه چیز یه حالا یه بخش های رو مث ایمیج دو نقطه دو نقطه و صفر رو به من بده عرض به حضور شما باز پرینت کن بی رو این به جای در واقع فکر میکنم دستور اسپلیت اومد از این استفاده کرده مشابه اون چیزی که ما تو مطلب داشتیم و

عرض به حضور شما فقط چیز نیستم مطمئن نیستم که این خود اون باشه دیگه چون عرض کردم آر جی بی نیست دیگه این بیه اشتباه یعنی نباید با بلو اشتباه بشه مگر اینکه شما کانورتش کرده باشید به مود آر جی بی خب عرض به حضور شما که مثلاً اینجا چی گفته گفته که تو ۲۴ گفته که مسی دو نقطه دو نقطه دو رو آها نه نه این صفره آره صفره اینجا بی هست دیگه همون ستون اولش این ستون همون درای اولشه پس همون بی رو میده بلو رو میده خب یکش نماد گرین دوش نماد رده خب اینجا چی گفته گفته بیا مسی دو نقطه دو نقطه دو رو صفر بزن یعنی کلا کانال قرمز و صفر کن حالا حتی اگه تو عکس هم وجود داره چی صفرش کن بعد بیا پلاتش کن شما میبینید دیگه تو عکس جدید اصلاً چی فقط دارید تم رنگ های آبی میبینید و سبز ها اصلاً قرمز وجود نداره انگار مسی رفته الانترمیلان و عرض به حضور شما با این اوصاف میتونید چیکار کنید میتونید در واقع این تغییرات هم رو کانال های عکسون بدید

یه بخش‌هایشو سبز حالا قرمز و آبی و سبزشو جدا جدا پلات کنید ببینید و یا اینکه چیکار کنید یا اینکه عرض به حضورتون یه بخششو آگاهانه تغییر بدید و هر اتفاقی که از این داستان می‌خواید رقم بزنید خب یه ماجرای دیگه هست حالا بعضیاش دیگه خیلی تخصصی میشه border اضافه کنید دور عکستون خب که اصطلاحا پدینگ هم بهش میگن من نمیدونم چقدر با حوزه‌های مثلاً دیپ لرنینگ و اینا آشنایت دارید ممکنه اونجا توی پیاده سازی مثلا روش های کامل نتورک اینا رو دیده باشید یا به گوشتون به خورده باشه اینکه مثلاً دور عکس بیاید یه سری چیزهای اضافه یه سری رنگ سیاه مثلا یه ردیف دو ردیف سیاه رنگ سیاه اضافه کنید یا هر رنگ دیگه ای به هر دلیلی نیازتون شده و خوب کاری که میشه کرد اینه که عرض به حضور شما این چیز این چیز رو به شما میده این توانمندی رو بهتون میده اوپن سی که بیاید دور

عکستون یه سری کارا انجام بدید مثلاً یکی از چیزهای خوبش اینه که بیاید کلاً یه مثلاً نوار قرمز رنگ دور تا دور عکس بذارید کلاً ها این کاری که می‌کنیم سه خط اولش رفته یه ایمیجی لود کرده که ما حالا اگه ایمیجمون تو کامپیوتر باشه میتونیم با اون دستوری که نشونتون دادم imd اینو لودش بکنید بعد چیزی که دستوری که به شما اجازه میده بردر براش بسازید یه دستوری به نام کپی میکر border خب حالا من دارم روش وایمیستم هی داره چیز میاد یه چیزای دیگه کپی میک بو کپی میک بردر این دستوره میگه که حالا این نحوه پیاده سازیش هم کلی کلیاتشو بهتون میگم میگه رو چی اجرا کنم میگه رو ایمیج آی ام جی یک اجرا کن اون عکسی که لود شده عرض به حضور شما عموما چند تا عدد ازتون میگیره که از بالا و پایین و چپ و راست تا چقدر میخوید تا چند تا پیکسل میخوید حاشیه داشته باشید و چه در واقع بردر استایلی رو براتون اجرا بکنم کلی بردر استایل توی چیز وجود

اسمش رفلکته رفلکس ۱۰۱ رپ یکیش هم کانستند مثلا این کانستنت رو الان بریم ببینیم همه رو اومده اجرا کرده و پتم کرده‌ها خب همه رو اومده اجرا کرده رو پلات کرده و منم رانش کردم این عکس اولم بوده اوریجینال یه چیزی نوشته گوگل بوده بعد هر کدوم مثلاً ریپلیکیت که اجرا کرده این دور و براش میبینید یه اتفاقایی افتاده ریفلکت عینش چیکار کرده آینه ای شده کانستنت گفته که بیا چیکار کن مثلا یه نوار و چیز برده ثابت قرمز رنگ با این ضخامت دور عکسم اضافه بکن و این عکس جدیدتون رو سیو بکنید چی میتونید در واقع حالا داشته باشین و یه جا عرضه بکنید نشون بدید عرض به حضور شما این سابپلاتش شبیه مطلبه تو این زیر مجموعه p ال تی حالا که لودش کرده بودیم قبلا سابش مینویسه مثلا ما قبلا تو مطلب

دو سه و یک خب یعنی یه چیز دارم ساب پلات ۲ در سه یعنی شش عکسه دارم حالا برو عکس شماره ۱ ۲ تا شششو مقدار دهی کن اینجا نوشته ۲۳۱ همون معادل همونه یعنی یعنی ابعاد من دو در سه است دو تا ستون دارم برو اولیشو چی بزار اونی که اوریجینال بود بزار دومیش چی بزار اونی که ریپلیکیت بود خب و اینا رو حالا میتونید برید نمونه‌هاشو ببینید عرض به حضور شما کار بعدی که میشه کرد یه سری کارهای جمع و تفریق کردن حالا به صورت خاص جمع کردن و تلفیق دو تا عکسه اینجوریه که فرض کنید دو تا یه ایمیج یک رو میگیرید مثل همون عکس مسی خودمون بوده ریختش تو آی ام جی یک یه دستوری داریم به نام فیلیپ خب فیلیپ چیکار میکنه حالا میتونه نسبت به مثلاً محور وای ها چیز کنهکستون رو متقارن بکنه جزئیاتی داره برید تو هلش نگاه کنید اگه این مث یکه رو تغییر بدید چه اتفاقی میفته این الان آی ام جی دو عکس

نسبت به محور وایها فیلیپ می‌کنه یا برعکس می‌کنه خب اگه مثلاً شما تو عکس داشتید به سمت راست نگاه می‌کردید تو عکس عکس دارید به چپ نگاه می‌کنید خب عرض به حضور شما دستور سی وی ۲ ad wited حالا به جز ادویتد یه چیز ساده‌تری هم داره فکر می‌کنم اد خالی بود الان یادم نیست ادویتد چیکار میکنه میاد این دو تا عکسو که آی ام جی یک و آی ام جی دو رو به صورت وزن دار با همدیگه جمع میکنه حالا یه فرمولی داره که چه ضریبی از چه ضریبی از دومی به علاوه ثابت گامایی بیان نمیدونم چیز کن تو اون ماتریس ها رو جمع و تفریق بکن یه ماتریس جدیدی به دست میاد که اسم اینو گذاشته دی اس تی عکس جدیدش بعد گفته دی اس دی رو برام رسمش کن الان گفته که هفت دهم یا ۷۰ درصد تاثیر عکس اولی و ۳۰ درصد عکس دومی که فیلیپ شده عکس اولی بود و بیا برام رسمش بکن که در نهایت چی شده به این عکسه منجر شده نمیدونم این عکسو دیده بودید یا نه توی سایت کورسرا و درس ماشین لرنینگ

اندروئینینگ اگه اشتباه نکنم اونجا من این عکس رو یادمه دیدم و یه همچین چیزی در واقع وجود داره عرض به حضور شما من فقط به زمانمم نگاه کنم حالا در چند دقیقه‌ای باهاتون باشیم ایمیل داریم که چیکار میکنه مثلا فرض کنید شما توی عکس دارید میگید آقا من می‌خوام دور مربع‌های آبیم یه سری چی بیارم مستطیل برام بیار خب و شما چیز کنید عرض به حضور شما آبی ها رو برام جدا کن قرمز ها رو برام جدا کن میخوام ببینم که چیز دارم چند تا آبی دارم یه فیلت بزارم که مثلا فقط آبی ها رو بهم نشون بده اصلا تو عکس هر چیز مثلاً قرمز رنگ مشکی رنگ نشون نده یا بالعکس من میخوام یه سری چیزا رو شناسایی کنم تو عکس از رو رنگشون خب مثلا فرض کنید یه بلز جلوتون گذاشته شده شما با هوش مصنوعی میخوید پیدا بکنید که تیغه قرمز رنگش کجاست تیغه آبی رنگش کجاست مثلاً نوت دوره میفا سیش کجاست و خب ترشولد میذاید میگید که برو

عکس نگاه کن اگر در واقع فلان اتفاق افتاد اینو برای من مثلاً چیکار کن چیز کن اینو جدا کنیم منطقه رو بریز مثلاً توی عکس دیگه یا دورش یه مربع مستطیلی بیاد لازمش دارم به هر دلیل خب عرض به حضور شما که ترشولد باز دوباره اینجوریه که این سه خط اولش رفته یه عکسی از اینترنت دانلود کرده لودش کرده ریخته تو آی ام جی اینجوری اجرا میشه که مثلا گفته رت و ترشه یک و این دستور روش اجرا کن این الانش یک میشه عکس جدیدمون که هولد روش پیاده شده آستانه روش پیاده شده مثلا این چیکار میکنه عرض به حضور شما اینجا اگه اشتباه نکنم میگه عکس رو بگیر فکر می‌کنم عکسش مثلاً حالا احتمالاً سیاه و سفید بوده چی بوده فکر میکنم معنیش اینه که ۱۲۷ آستانمه هرچی بالای این باشه رو ۲۵5۵ بزار هر هرچی زیر این باشه رو مثلاً چی فکر میکنم صفر میزارره خب یعنی اینکه کاملا میخواد رنگ گری

که بگیره تو طیف سفید تا خاکستری و سیاه و اینا رو فقط چیکار کنیم فقط به شما سفید سیاه بده یعنی یا بله یا خیر اوکیه که گفته برای این باید سی وی ۲. tresh_ binary رو ران کنید خب این همونیه که فقط چی میشه دو حالت صفر و یک رو به شما میده یه دونه داریم ترش باینری اینف که اینور اون داستان یعنی اگه قبلاً قرار بود از چیز بعد ۱۲۷ مثلاً سفیدا چیز هرچی مثلاً نزدیک به سفید بود ۱۲۸ معادل ۲۵۵ بشه این دفعه بالعکس هم عمل میکنه و چیزای دیگه‌ای هم داره اگه دلتون خواست میتونید برید ببینید اینجا هم گفته که بیا همه اینا رو اجرا بکن اینا غروفیس های رسمشه چیز خاصی نداره گفته برو پلات کن برامون و در نهایت پی ال تی دات شو بهم نشون بده من اینو ران کنم میتونم بیام ببینم که ببینم نتیجش زیرش چی شده عکس اولم این بوده یه طیف در واقع پیوسته سیاه تا سفید بوده که وسط مساش خاکستری هم دارید میبینید این گفته

عکس برو هرجا دیدی اینتن سیتی یا شدت پیکسلا حالا تو من اینم بگم خدمتتون تو حوزه خاکستری دیگه سه تا کانال ندارم فقط یه کانال دارم عکس‌ها مثلاً اگه ۵۰ در ۵۰ در ۵۰ پیکسله دیگه ۵۰ در ۵۰ در یکه دیگه در سه کانال نیست که rg و b رو داشته باشه خب و عرض به حضور شما که چیکار کن میگه برو اینتنسیتی یا شدت هر تصویر رو ببین اگه ۲۵۵ بود یعنی سفیده اگه صفر بود یعنی مشکیه اگه بینش بود یعنی خاکستری هاست خب میگه برو نگاه کن با این چیزو ترشولد گذاشتم ۱۲۷ هر چیزی زیر ۱۲۷ کن صفرش کن هرچی بالای ۱۲۷ دیدی چی ۲۵۵ش کن سفیدش کن این میشه باینری این باینری این و که بالعکس عمل میکنه هر چیزی بالای ۱۲۷ و عرض به حضور شما سیاه میکنه هر چیزی زیر ۱۲۷ تا سفید میکنه و اونم حالت های دیگهشه که اگه دلتون خواست میرید حالا سرچ میزنید یا رو عکساتون پیاده میکنید تا ببینید چه اتفاقی میفته بحث

شلدینگ داره اینکه به صورت تطبیقی این کارو انجام بده اینا دیگه بچه‌ها جزئیاتیه که الان نمیشه روش بحث کرد نمونه کدش اینجا هستش و عرض به حضور شما میتونید برید دنبال بکنید که چه اتفاقی داره میفته و برید یکی یکی ببینید گفته اگه اورجینال ایمیج هم این بوده باشه یه صفحه سودوکویی که با دوربین مثلاً معمولی عکس گرفتم اگه می‌رفتید با باینری ترشولد گلوبال ترشولدینگ عادی رو انجام میدید همچین عکس بیخودی به ما میداد که کاری نمیشد باهاش بکنیم اما اون چیزی که مثلاً شما توی نرم‌افزار چیز دارین توی نرم افزارهای این عکس می‌گیرید برای اون امتحاناتتونو آپلود می‌کردید کم اسکنر و اینا می‌دیدید که بعضا عکساتون که این مدلی بود و این میومد چیکار می‌کرد و شما باید همچین حالتایی درش میورد خب که مثلاً ادپتیو ترشولد گوسین میزد روش و الی آخر که میتونید برید توی نمونه‌هاش اینا رو ببینید عرض به حضور شما بچه ها اگه اجازه بدید ما یه ربع دیگه ادامه بدیم و

بعدش کلاً حالا تا هرچی رسیدیم و بعدشم به اتمام برسونیم در مورد مطلب بعدی که می‌خوام در موردش صحبت کنیم جومتریک ترانسفورمیشن‌هایی که روی ایمیج میشه انجام داد اینکه میشه سایز عکس مثلاً چند برابر کرد اینکه مثلاً دستور cb2 resize عکس مسی رو میگیره و اف ایکس دو اف وای ۲ یعنی هم در راستای ایکس هم در راستای وای دو برابرش کن حالا باز عرض می‌کنم خدمتتون اینکه چه اینترپولیشنی استفاده کنه خودش یه دیفتی داره ولی به جای اینتر کیوبی شما چندین گزینه دارید یعنی بعد از اینکه مثلا چیز کنید یا تو هلپش نگاه کنید یا اصلا تایپش بکنید آیتم ها رو بهتون میده یعنی سی دو نقطه رو که بزنید بهتون میگه که شما چه گزینه‌هایی رو می‌تونید تایپ بکنید عرض به حضور شما اینا ریخته توی رز و اینو براتون پلات کرده که این از لحاظ پیکسلی اگه اشتباه نکنم باید از هم از در واقع هم از در راستای ایکس هم در راستای چی شده باشه عکس

دو برابر شده باشد خب بیایم پایین‌تر عرض به حضور شما در مورد روتیشن صحبت میکنه دیگه نیازی نیست خودتون بخواید در واقع ماتریس چیز دوران رو بنویسید در بیاد در تک تک درایه‌هاش ضرب بکنید و فلان اینا که بخواد روتیشن براتون انجام بده و کاری که میتونید بکنید اینه که با دستور ایمیج دات شیپ بیاید تعداد شیپ قرار چیکار کنه به ما چیز رو بده دیگه ابعاد عکس رو بده و عرض به حضور شما گفته اعداد به ترتیب تو راه و کالم بریز متغیر رو برای تعداد سطرها متغیر سی او ال اس برای تعداد ستون ها یه ماتریسی تشکیل داده بچه ها این به نام ام که توی کلا ترنس فورمیشن ها تو هم انتقال و هم دوران ما به این ماتریس مشابه ام احتیاج داریم دستوری هم که ازش میخویم استفاده کنیم سیv2 نقطه وارینه خب که توش ام نیاز داره اما ام ام که بالا استفاده کرده چیه

۹۰ درجه داشته باشم دستور گت روتیشن ماتریکس دودی خب بیا به من ماتریس دوران دو بعدی یعنی دو در دو رو برام محاسبه بکن به میزان چرخش ۹۰ درجه اینو نمی‌دونم فکر می‌کنم مرکز دورانشه که مرکز دورانش کجا باشه حول مثلاً نقطه وسط بیا برو ۹۰ درجه بچرخون بعد این ماتریس ام رو بهم بده چیه بعد بیا بزن توی سیم روی عکس مسی ماتریس ام و اجرا کن حالا این ورودی کاز نمیدونم باید بریم بخونیم که این رو چه حسابیه یعنی چه ورودی لازم داشته و فاین یه چیزی می‌خواسته که اینو الان عرض به حضور شما ازمون گرفته و بریز توی دی اس تی و دی اس تی رو چیکار کن برای من نشون بده حالا عرض میکنم دیگه چون رفته تو از p ال تی داره استفاده میکنه آخرش داره چیکارش میکنه

بی جی آر تو آر جی بیش هم میکنه تو پایتون عادی بخواید برید جلو با همون آییم شو خودمون که بهتون گفتم این بدون plt یعنی سی وی دو دادید جلو دیگه نیازی نداره این تبدیل رو بزنید اگرچه عرض به حضورتون باید حواستون باشه که ترتیبتون بی جی آر خواهد بود و نه آر جی بی و این اتفاق سبب میشه که شما عکستون چی بشه به صورت سیستماتیک و کدی ۹۰ درجه بچرخه یعنی میدونم که شما میدونم که میدونید میشه این کارا رو به صورت دستی توی پاورپوینت یا مثلا پت و اینا انجام داد ولی عرض به حضور شما بعضی وقت ها نیاز دارید که کاملا به صورت سیستماتیک این کار انجام بدید که همیشه خودش مثلاً این قالب عکس ها رو این اتفاق رو براشون رقم بزنه جابجاشون کنه دورانشون بده که حالا در مورد چیزاش هم توضیح داده ریاضی داستان چیه اون ماتریس ام در عادی چجوریه که تازه این تو دو بعدش تو سه بعدش هم داریم روتیشن سه بعدی دوستانی که رباتیک کار میکن یا گذروندن عرض به حضور شما

دینامیک پیشرفته رو گذروندم حتماً با این ماتریس‌های دوران آشنا هستند مطلب بعدی که در مورد افغان ترانسفورمیشن کدشو می‌تونید الگو بگیرید اگه دلتون خواست استفاده کنید فقط جهت اطلاعات ترانسفورمیشن‌ها ترانسفورمیشن هایی که چیزن دیگه در واقع سبب میشن که هر دو خط موازی تو حالت جدید هم همچنان موازی باقی بمونند که مثلا یه همچین عکسی رو میگیره میتونه انتقالش بده به یه همچین عکسی بده بهتون تحویل یا پرسپکتیو ترنسفورمیشن هاست که میتونه کجا کمک کنه تو نمونش مثلا دیدید شما عکس کجکی گرفتید از این سودوکو بعد مثلا با تنظیم پارامترهای چیز پرسپکتیو کاری می‌کنید که اینو بگیره شما اینو بهتون بده و این خیلی عکس تمیزتریه برای کار کردن و یا در اختیار دیگران گذاشتن که این اتفاق میتونیم رقم بزنیم عرض به حضور شما مسئله بعدی در مورد چیزه در مورد کلاً کار کردن روی

عکس ساز حالا اعمال فیلترهای پایین گذر بالا گذر هموار کردنشون خب و این مجدداً خودش کلی ماجرای ریاضی پشتش داره یعنی دوستانی که میرن درس تصویر می‌گذارن یه ترم فقط همینا رو می‌خونن که خودشون به صورت ریاضی یاد بگیرن اینا رو انجام بدن یا توی مطلب کد بزنن یا تو هر زبان برنامه نویسی اگرچه عرض کردم اوپن سیv همه اینا رو در اختیار ما قرار داده اینجوری که عکسی لطف کردیم که این عکس گوگل باشه اورجینالش که نوشته ام جی بعد اینجور وقتا یه چیزی نیاز دارید به نام کرنل که یه ماتریس مثلاً اینجا ماتریس پنج در پنج بوده که همه درایه‌هاش یک تقسیم بر ۲۵ بوده یعنی همه درایه‌هاش یک بوده فقط برای اینکه در واقع حالا مجموع مثلاً درایان ماتریس هم یک شده باشه همه رو تقسیم بر ۲۵ کرده یه ماتریس پنج در پنج داریم بعد گفته چیکار کن بعد گفته مثلاً با دستور سی وی2 دات فیلتر توd برو روی عکس ایمیج کل رو اجرا کن اینم واگذار میکنم به خودتون برید

نماد چیه اگه نذارید یا بذارید مثلاً باید جاش چی بزارید چه گزینه‌های دیگه‌ای دارید و سبب میشه که یه سری اتفاقات رقم بخوره براتون و می‌بینید که عکستون از حالت شارپ یه مقدار تار شدن داره چی تغییر پیدا می‌کنه اگر اینو مثلاً عرض به حضور شما به جای ۵ در ۵ مثلاً ۹ در ۹ میذاشت و اینجا تقسیم بر چه می‌دونم ۸۱ می‌کرد اینو پلی کنید چه اتفاقی میفته عکسون باید تارتر بشه خب اینجا داره چه اتفاقی میفته داره میره یک جورایی داره میره چیکار میکنه یه مربع نه در نه میندازه رو عکس اول و میاد در واقع اون کل شما که همه درای هاش بود یک۸ یک ۸ یکمو در مقدار اینتنسیتی هر عکس ضرب میکنه اینا رو با هم جمع میکنه و یه عددی داره میشه که عبارتی میانگین گیری شده از خودش و اطرافیانشه باید سبب میشه که چی

رنگا تو همدیگه برن و این در واقع سبب میشه که چی بشه سبب میشه که شما عکس و تارتر ببینید و ما ایمیج بلرینگ رو داریم که چیکار میکنه میتونه در واقع بلر بکنه عکس و دستور آماده اینجا وجود داره به نام cb2.blere که که در واقع چیز عرض به حضور شما این عکسو برامون مجدداً همون تار میکنه مشابه اون اتفاقی که بالا افتاد باز دوباره میتونید روی این پنج در پنج بازی بکنید اگه سایزش بیشتر بکنید ببینید که تار بودن ماجرا چی میشه بیشتر و بیشتر هم میشه عرض به حضور شما که من اجازه بدین امتحان کنم فکر می‌کنم الان تقریباً تارتر شد خب و دیگه چیزهای دیگه هم هست که دیگه فکر می‌کنم حالا از بحثمون یعنی یه مقدار بحث تخصصی دیگه خب برای اینکه عرض و حضور شما مثلاً نویز های نمک فلفلی رو بگیرید چیکار باید بکنید و

اجازه بدین اینم آخرین مبحثی باشه که میگیم در مورد ترانسفورمیشن‌های لوجیکال باشه که دو تا مفهوم به نام اروشن و دایلیشن یکی چیکار می‌کنه یکی سبب میشه که این عکسو که مثلاً نوشته جی خب با یه ضخامت سفید رنگی رو بگیرید به شما اینو بده خب یه جی نازکتری رو در واقع بده حالا پشتش یه سری مواردی وجود داره که دیگه الان خارج بحثمونه روی این پنج در پنجش اگه بازی بکنید می‌بینید که در واقع یه اتفاق دیگه رقم میخوره مثلا اینجا ۹ در ۹ بزنید عرض به حضور شما که دیگه نامعلوم شد هفت در هفت هم بزنید یه عکس دیگه به شما میده ضخامتش کمتر از حالت قبله بیشتر از حالت ۹ در ۹ برعکس این یه ماجرا است به نام دایلیشن که معنی انبساط رو میده و این سبب میشه که شما این عکس رو بهش ورودی دادید این جی رو بهش ورودی

چیکار میکنه یه همچین چیزی رو به شما میده تحویل و موارد دیگه‌ای هم داره که عرض به حضور شما کاری کنید که توی بخش‌های سیاه رنگ اگه نقطه‌های سفید رنگ افتاد حذف بشن یا توی بخش‌های سفید رنگ اگه نقطه سیاه رنگ افتاد حذف بشن ها که اینا می‌تونه اونجور جاها به کار بیاد و عرض به حضور شما جزئیاتی داره حالا من دیگه متاسفانه بیشتر از این فرصت نمی‌کنم وقت بذارم روی اینا شایدم بعضا نیاز به یه سری مقدماتی داشته باشه خودتون میتونید روی نگاه کنید این که فیلتر چیز کل لاپلاسین رو بزنید که از جنس مرتبه دو مشتق مرتبه دو چه به شما میده یا سوبل رو اگه بزنید چه به شما میده مثلاً سوبل ایکس سبب میشه که خطوط افقی محو بشن خطوط عمودی باقی بمونن سو وای که تو راستای وای مشتق میگیره خطوط افقی رو براتون نگه می‌داره لاپلاسی هم خیلی تمیزتر

مشتق دومه و می‌بینید این عکسو بهش میدید اینو بهتون میده و هی جا کار داره دیگه می‌تونید برید ببینید در مورد hditection‌ها و هیستوگرام‌ها و مواردی از این قبیل که حالا متاسفانه فرصتش نیست و نگاه بندازید و ته ته ماجرا هم چی با اپتیکال فلو تمام میکنه که مثلاً شما بتونید یه ویدئو داشته باشید برید نگاه کنید که مثلاً چه اتفاقی برای چیز میفته یک عرض به حضور شما مثلاً جسم متحرک تو اون تصویر داره میفته که این توی سیالات ما خیلی کاربرد داره تو محاسبه سرعت کاربرد داره و اینا اونجاهایی که دیگه سبب میشه کاملا درک کنید چه در واقع سیستم های پردازش تصویری میتونن به شکل بسیار بسیار جدی وارد دستگاه ها و ادوات اندازه گیری بشن و عرض به حضور شما سیستم های

اندازه‌گیری خیلی خیلی جاهاشون خیلی هاشون لازم دارند که از چیز استفاده بکنن از در واقع سامانه‌های پردازش تصویر استفاده کنند چون دوربین‌های پردازش تصویر ارزونن اما فعلاً مهندس‌هاش گرونن خب از اونور چی لایدار مثلاً سنسوری که خب یه جاهایی دقت‌های زیادی داره میتونه داشته باشه به نسبت عرض به حضور شما پردازش تصویر ولی دوربین سنسورش خیلی خیلی سنسور گرونی یعنی اصلا نمی ارزه که روی ماشین سوار کنن مثلاً فرض کنید که دوربین شاید دونه‌ای مثلاً ۴۰ ۵۰ دلار در بیاد بعد بخوان مثلاً روی ماشین خودرو مثلاً ۶۰۰۰ دلاری حالا پنج تا ۱۰ تا هم نصب بکنن هیچ اتفاقی نمیفته مث ۵۰۰ دلار دیگه بهش اضافه میشه ولی لایه دارا میبینید که مثلا مینیمم هزینه های فعلیشون ۲۰۰۰ دلاره ۴۰۰۰ دلاره بعد شما شش تا سنسور لایدار نمیتونید روی ماشین ۶ هزار دلاری سوار

چند برابر قیمت خودش میشه و ارزش نداره و الان سیاست یه عده از غول‌های این حوزه تو حوزه خودروهای خودران اینه که تلاش کنند مثل آدم‌ها که با چشمشون رانندگی و هندل می‌کنند عرض به حضور شما اونا هم با دوربین‌های چی آر جی بی و آر جی بی دی این کارو انجام بدن خب بچه‌ها خیلی ممنون از حضور و تشریف فرماییتون من صحبت هامو اجازه بدید اینجا تمام بکنم عرض به حضور شما نمیدونم فقط میخوام متوقفش کنم چجوری میتونه این اتفاق بیفته اینو که تصویرمو چیز کنم متوقف کنم این را ببندم حالا آها اینجا رفته قایم شده خودم در واقع بردمش

'markdown' cell: '['# Python Basics\n', 'In this tutorial, we will cover some python basic concepts like data types, conditional statements, loops, containers, functions, and plots.\n', '\n', 'This notebook has been created with the help of the following resources:\n', '\n', '1. Python [Colab Notebook](https://colab.research.google.com/github/cs231n/cs231n.github.io/blob/master/python-colab.ipynb#scrollTo=0vJLt3JRL9eR) from CS231n.\n', '2. Python Tutorial from [W3Schools](https://www.w3schools.com/python/default.asp).\n']'

'markdown' cell: '['## Basic data types']'

'markdown' cell: '['### Numbers\n', 'There are three numeric types in Python:\n', '\n', '* `int`\n', '* `float`\n', '* `complex`']'

'code' cell: '['# Numbers\n', 'x = 5\n', 'y = 2.4\n', 'z = 2 + 5j\n', 'print(x, type(x))\n', 'print(y, type(y))\n', 'print(z, type(z))']'

'code' cell: '['# Math operators\n', '# We have +, -, *, /, **, //, %\n', '\n', 'print(x ** 2)  # Exponentiation\n', 'print(x / 3)   # Division\n', 'print(x // 3)  # Floor Division\n', 'print(x % 3)   # Modulus\n', '\n', 'x += 1\n', 'print(x)\n', 'x *= 2\n', 'print(x)']'

'markdown' cell: '['### Booleans\n', 'Python implements all of the usual operators for Boolean logic, but uses English words rather than symbols (`&&`, `||`, etc.).']'

'code' cell: '['t, f = True, False\n', 'print(t, type(t))\n', 'print(f, type(f))']'

'code' cell: '['# Logical operators\n', '\n', 'print(t and f) # Logical AND\n', 'print(t or f)  # Logical OR\n', 'print(not t)   # Logical NOT\n', 'print(t != f)  # Logical XOR']'

'markdown' cell: '['### Strings\n', 'Strings in python are surrounded by either single quotation marks, or double quotation marks.\n', '\n', '`\'hello\'` is the same as `"hello"`.']'

'code' cell: '["hello = 'Hello'\n", 'print(hello, type(hello), len(hello))\n', "print(hello + ' World!')"]'

'code' cell: '['# Input data\n', "Name = input('What is your name? ')\n", "Age = int(input('How old are you? ')) # casting\n", '\n', '# String format\n', "print(f'Next year {Name} will be {Age+1} year old')\n", "print('Next year {} will be {} year old'.format(Name, Age+1))"]'

'code' cell: '['# String methods\n', '\n', "s = 'Happy new year!'\n", 'print(s)\n', 'print(s.capitalize())\n', 'print(s.upper())\n', 'print(s.lower())\n', "print(s.find('a'))\n", "print(s.count('a'))\n", "print(s.replace('Happy', 'Happyy'))\n", "print('new' in s)"]'

'markdown' cell: '['## Conditional statements']'

'code' cell: '['# Comparison operators\n', '# ==, !=, <, >, <=, >=\n', '\n', 'print(2 < 5)\n', 'print(2 > 1 > 5)\n', 'print(2 >= 2 and 5 < -1)']'

'code' cell: '["a = int(input('Enter integer number a '))\n", "b = int(input('Enter integer number b '))\n", 'if b > a:\n', '  print("b is greater than a")\n', 'elif a == b:\n', '  print("a and b are equal")\n', 'else:\n', '  print("a is greater than b")']'

'markdown' cell: '['We can use short hand if ... else:']'

'code' cell: '['a = 5\n', 'b = 5\n', "print('b > a') if b > a else print('a = b') if a == b else print('a > b')"]'

'markdown' cell: '['## Loop']'

'markdown' cell: '['Python has two primitive loop commands:\n', '* `while` loops\n', '* `for` loops']'

'markdown' cell: '['### While loop']'

'markdown' cell: '['With the while loop we can execute a set of statements as long as a condition is true.']'

'code' cell: '['i = 1\n', 'while i < 6:\n', '  print(i)\n', '  i += 1\n', 'else:\n', '  print("i is no longer less than 6")']'

'markdown' cell: '['With the `break` statement we can stop the loop even if the while condition is true.\n', '\n', 'With the `continue` statement we can stop the current iteration, and continue with the next:']'

'code' cell: '['i = 1\n', 'while True:\n', '  print(i)\n', '  if i == 5:\n', '    break\n', '  i += 1']'

'markdown' cell: '['### For loop']'

'markdown' cell: '['A for loop is used for iterating over a sequence (that is either a list, a tuple, a dictionary, a set, or a string).\n', '\n', 'The `break` and `continue` works here as before.']'

'code' cell: '["l = ['str1', 2, 48.4, 7+1j, True, 2]\n", 'for i in l:\n', '    print(i)\n', '    if type(i) == bool:\n', '        break']'

'markdown' cell: '['To loop through a set of code a specified number of times, we can use the `range()` function.\n', '    \n', 'The `range()` function returns a sequence of numbers, starting from 0 by default, and increments by 1 (by default), and ends at a specified number.']'

'code' cell: '['for i in range(1, 100):\n', '    if i % 10 == 0:\n', '        print(i)']'

'markdown' cell: '['## Containers']'

'markdown' cell: '['Python includes several built-in container types: lists, dictionaries, sets, and tuples.\n', '\n', '* **List** is a collection which is ordered and changeable. Allows duplicate members.\n', '* **Dictionary** is a collection which is ordered and changeable. No duplicate members.\n', '* **Tuple** is a collection which is ordered and unchangeable. Allows duplicate members.\n', '* **Set** is a collection which is unordered, unchangeable, and unindexed. No duplicate members.']'

'markdown' cell: '['### Lists']'

'markdown' cell: '['A list is the Python equivalent of an array, but is resizeable and can contain elements of different types.']'

'code' cell: '["l1 = ['str1', 2, 48.4, 7+1j, True, 2]\n", 'print(l1, type(l1), len(l1))\n', '\n', '# List methods\n', 'l1.append(0)               # Add a new element to the end of the list\n', "l1.insert(0, 'Mohammad')   # Add a new element at the desired index (here 0)\n", 'print(l1)\n', 'l1.pop()                   # Remove and return the last element of the list\n', 'l1.pop(0)                  # Removes a desired element of the list\n', 'print(l1)']'

'code' cell: '['# List slicing\n', '\n', 'nums = list(range(0, 5, 1))\n', 'print(nums)\n', 'print(nums[1:4])\n', 'print(nums[:2])\n', 'print(nums[:])\n', 'print(nums[::1])\n', 'print(nums[::-1])']'

'markdown' cell: '['*Note*: In python, the indices start from **0** (unlike MATLAB that start from 1).']'

'code' cell: '['# Loop over a list\n', "animals = ['cat', 'dog', 'monkey']\n", 'for idx, animal in enumerate(animals):\n', "    print('#{}: {}'.format(idx + 1, animal))"]'

'markdown' cell: '['**List comprehension** offers a shorter syntax when you want to create a new list based on the values of an existing list:']'

'code' cell: '['nums = [0, 1, 2, 3, 4]\n', 'even_squares = [x ** 2 for x in nums if x % 2 == 0]\n', 'print(even_squares)']'

'markdown' cell: '['### Dictionaries']'

'markdown' cell: '['A dictionary stores (key, value) pairs, similar to a `Map` in Java or an object in Javascript. You can use it like this:']'

'code' cell: '['# Dictionary\n', "d = {'person': 2,\n", "     'cat': 4,\n", "     'spider': 8}\n", "d['fish'] = 0\n", '\n', '# Dictionary methods\n', 'print(d, type(d))\n', "print(d['person'])\n", 'print(d.keys())\n', 'print(d.values())\n', 'print(d.items())\n', "print(d.get('dog', 'N/A'))\n", "print(d.get('cat', 'N/A'))"]'

'code' cell: '['# Dictionary loop\n', 'for animal, legs in d.items():\n', "  print(f'A {animal} has {legs} legs')"]'

'markdown' cell: '['### Tuples']'

'markdown' cell: '['A tuple is an (immutable) ordered list of values.']'

'code' cell: '['t = ("apple", 12, False, 2.2)\n', 'print(t, type(t), len(t))']'

'code' cell: '['# Tuple unpacking\n', '\n', 'fruits = ("apple", "banana", "cherry")\n', '(green, yellow, red) = fruits\n', 'print(green)\n', 'print(yellow)\n', 'print(red)']'

'markdown' cell: '['### Sets']'

'markdown' cell: '['A set is an unordered collection of distinct elements.']'

'code' cell: '['# Set\n', 's = {"apple", "banana", "cherry", False, 0}\n', 'print(s, type(s), len(s))\n', "print('apple' in s)\n", "s.remove('apple')   # Remove an element from a set\n", 's.add(2)            # Add an element to a set\n', 'print(s)']'

'markdown' cell: '['## Functions']'

'code' cell: '['# function\n', 'def sign(x):\n', '  \n', '  if x > 0:\n', "    return 'positive'\n", '  elif x < 0:\n', "    return 'negative'\n", '  else:\n', "    return 'zero'\n", '\n', 'for x in [-1, 0, 2.5]:\n', '    print(sign(x))']'

'code' cell: '['def quicksort(arr):\n', '    if len(arr) <= 1:\n', '        return arr\n', '    pivot = arr[len(arr) // 2]\n', '    left = [x for x in arr if x < pivot]\n', '    middle = [x for x in arr if x == pivot]\n', '    right = [x for x in arr if x > pivot]\n', '    return quicksort(left) + middle + quicksort(right)\n', '\n', 'print(quicksort([3,6,8,10,1,2,1]))']'

'markdown' cell: '['### Arbitrary Arguments (*args)\n', 'If you do not know how many arguments that will be passed into your function, add a `*` before the parameter name in the function definition.\n', '\n', 'This way the function will receive a *tuple* of arguments, and can access the items accordingly:']'

'code' cell: '['def my_function(*kids):\n', '  print("The youngest child is " + kids[2])\n', '\n', 'my_function("Ali", "Mohammad", "Sara")']'

'markdown' cell: '['### Keyword Arguments\n', 'We can also send arguments with the key = value syntax.\n', '\n', 'This way the order of the arguments does not matter.']'

'code' cell: '['def my_function(child3, child2, child1):\n', '  print("The youngest child is " + child3)\n', '\n', 'my_function(child1 = "Ali", child2 = "Mohammad", child3 = "Sara")']'

'markdown' cell: '['### Arbitrary Keyword Arguments (**kwargs)\n', '\n', 'If you do not know how many keyword arguments that will be passed into your function, add two asterisk: `**` before the parameter name in the function definition.\n', '\n', 'This way the function will receive a *dictionary* of arguments, and can access the items accordingly:']'

'code' cell: '['def my_function(**kid):\n', '  print("His last name is " + kid["lname"])\n', '\n', 'my_function(fname = "Ali", lname = "Nasiri")']'

'markdown' cell: '['### Default Parameter Value\n', 'The following example shows how to use a default parameter value.\n', '\n', 'If we call the function without argument, it uses the default value.']'

'code' cell: '['def my_function(country = "Iran"):\n', '  print("I am from " + country)\n', '\n', 'my_function()\n', 'my_function("Brazil")']'

'markdown' cell: '['## Classes\n', 'Python is an object oriented programming language. Almost everything in Python is an object, with its properties and methods.\n', '\n', 'A Class is like an object constructor, or a "blueprint" for creating objects.\n', '\n', 'All classes have a function called \\_\\_init\\_\\_(), which is always executed when the class is being initiated.']'

'code' cell: '['# Class\n', 'class Greeter:\n', '\n', '    # Constructor\n', '    def __init__(self, name):\n', '        self.name = name  # Create an instance variable\n', '        # self.greet()\n', '\n', '    # Instance method\n', '    def greet(self, loud=False):\n', '        if loud:\n', "          print('HELLO, {}!'.format(self.name.upper()))\n", '        else:\n', "          print('Hello, {}!'.format(self.name))\n", '\n', "g = Greeter('Mohammad')  # Construct an instance of the Greeter class\n", 'print(g.name)\n', 'g.greet()            # Call an instance method; prints "Hello, Mohammad!"\n', 'g.greet(loud=True)   # Call an instance method; prints "HELLO, MOHAMMAD!"']'

'markdown' cell: '['### Inheritance\n', 'Inheritance allows us to define a class that inherits all the methods and properties from another class.\n', '\n', 'Parent class is the class being inherited from, also called base class.\n', '\n', 'Child class is the class that inherits from another class, also called derived class.\n', '\n', 'Python has a `super()` function that will make the child class inherit all the methods and properties from its parent.']'

'code' cell: '['class Person:\n', '  \n', '  def __init__(self, fname, lname):\n', '    self.firstname = fname\n', '    self.lastname = lname\n', '  \n', '  def printname(self):\n', '    print(self.firstname, self.lastname)\n', '\n', 'class Student(Person):\n', '  \n', '  def __init__(self, fname, lname, year):\n', '    super().__init__(fname, lname)\n', '    self.graduationyear = year\n', '  \n', '  def welcome(self):\n', '    print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)\n', '\n', 'x = Student("Mohammad", "Rasouli", 1400)\n', 'x.welcome()']'

'markdown' cell: '['## Plotting']'

'markdown' cell: '['Matplotlib is a plotting library. In this section give a brief introduction to the `matplotlib.pyplot` module, which provides a plotting system similar to that of MATLAB.']'

'code' cell: '['# !pip install matplotlib\n', '# !pip install numpy']'

'code' cell: '['import matplotlib.pyplot as plt\n', '# from matplotlib import pyplot as plt\n', 'import numpy as np\n', 'import random']'

'markdown' cell: '['The most important function in `matplotlib` is plot, which allows you to plot 2D data. Here is a simple example:']'

'code' cell: '['# A basic plot\n', 'x_vals = [1, 2, 3, 4]\n', 'y_vals = [0, 1, 2, 3]\n', "plt.plot(x_vals, y_vals, label= 'A Basic Plot')\n", "plt.xlabel('x-axis label')\n", "plt.ylabel('y-axix label')\n", 'plt.legend()\n', "plt.title('A Basic Sample Plot')\n", 'plt.show()']'

'markdown' cell: '['With just a little bit of extra work we can easily plot multiple lines at once, and add a title, legend, and axis labels:']'

'code' cell: '['# magic command\n', '%matplotlib notebook \n', '\n', 'x_values = np.arange(0, 2*np.pi, 0.05)\n', 'y_sin = np.sin(x_values)\n', 'y_cos = np.cos(x_values)\n', '\n', "# plt.figure(figsize= (5, 5), facecolor= 'w', edgecolor= 'k')\n", 'plt.plot(x_values, y_sin, x_values, y_cos)\n', "plt.xlabel('x-axis label')\n", "plt.ylabel('y-axix label')\n", "plt.title('Sine and Cosine Plot')\n", "plt.legend(['sin(x)', 'cos(x)'])\n", 'plt.axis([0, 2*np.pi, -1.5, 1.5])\n', 'plt.grid(True)\n', 'plt.show()']'

'markdown' cell: '['We can also control line properties:']'

'code' cell: '['%matplotlib inline\n', '(x1, y1) = ([1, 2, 3, 4], random.sample(range(0, 5), 4))\n', '(x2, y2) = ([1, 2, 3, 4], random.sample(range(0, 5), 4))\n', '(x3, y3) = ([1, 2, 3, 4], random.sample(range(0, 5), 4))\n', '\n', '#plt.figure(figsize= (5, 6))\n', 'line1 = plt.plot(x1, y1)\n', 'line2 = plt.plot(x2, y2)\n', 'line3 = plt.plot(x3, y3)\n', '\n', "plt.setp(line1, color= 'r', linewidth= 1.5, linestyle= '--')\n", "plt.setp(line2, color= 'b', linewidth= 1.5, marker= 'x')\n", "plt.setp(line3, color= 'g', linewidth= 1.5, marker= 'D')\n", 'plt.show()']'

'markdown' cell: '['We can plot different things in the same figure using the subplot function.']'

'code' cell: '['# Subplot\n', 'plt.subplot(2, 1, 1)\n', "plt.plot(x1, y1, color= 'b')\n", 'plt.subplot(2, 1, 2)\n', "plt.plot(x2, y2, color= 'r')\n", 'plt.show()']'

'code' cell: '['# Bar plot\n', '\n', 'x = ["A", "B", "C", "D", "E"]\n', 'y = [5, 3, 1, 4, 7]\n', '\n', 'plt.bar(x,y)\n', 'plt.show()']'

E:\courses\LangChain Project\main root\data\Python_Basics_transcript_part1.txt

نوت بوک پایچارم اسپایدر سابلاین تکست خیلی فرقی ندارن و حالا روی سیستم خودتون می‌تونید نصبشون بکنید و استفاده بکنید یه در واقع آناکوندایکیتور هم هستش که بعضی از این آیدی‌ها رو داره حالا می‌تونید اینجا مدیریتشون بکنید آماده داره اینا رو می‌تونید بدون اینکه نصبشون بکنید ازشون استفاده بکنید محیط‌های آنلاین هم هستند حالا مثل کلپ که مشابه همین هست که امروز ازش استفاده میکنیم ویژگی که این جوپیتر نوتک داره این هستش که اولا اینکه سلول به سلول میتونید اجرا بکنید به طور مجزا میتونید اجراش بکنید هر سلول رو و اینکه یکی دیگه اینکه در واقع می‌تونید تکست رو تصویر بهش اضافه بکنید کلپ هم مشابه هست با این اگه یه اکانت جیمیل داشته باشید در واقع میتونید ازش استفاده بکنید مزیتی که داره اینه که در واقع بار محاسباتی روی سیستم خودتون

از سرورهای گوگل می‌تونید استفاده بکنید و یه جی پی یو رایگان هم در اختیارتون می‌ذاره البته محدودیت داره دیگه در طول روز فکر می‌کنم از ۵ ۶ ساعت بیشتر اجازه نمیده که از استفاده یه سری دیتا تایپ هست توی مطلب توی پایتون که حالا با مطلب هم اشتراک دارند بعضی هاشون از اعداد شروع کنیم همانطور که میبینید سه تا متغیر تعریف کردیم دومی فلوت و سومی کامپلکس با دستور پرینت چاپشون کردیم و با فکشن تایپ هم میتونیم در واقع تایپشون رو نشون بدیم همونطور که میبینید تایپ پنج اینتیجر هست کلاس این تسک تایپ فلوت همونطور که میبینید کلاس فلوت هست و تایپ کامپلکس هم عدد کامپلکس تایپش کلاس کامپلکس است اپراتورهای ریاضی هم مشابه هست با زبان

موارد خاصشو اینجا آوردم توان رو با دوتا ضربدر نشون میدیم تقسیم که با اسلش هست دو تا اسلش میشه در واقع خارج قسمت خارج قسمت ۵ به ۳ الان می‌بینید که شده دو دیگه شده یک و درصد هم در واقع باقی مانده که در واقع میشه ۲ یه حالت کوتاه شده هم داره که توی لوپ و حلقه ازش استفاده کنید برای مثال ایکس که ۵ بوده پلاس مساوی یک میاد ایکس میکنه برای مثلا ایکس ضرب در مساوی دو هم باز همین شکل در واقع ایکس رو ضرب در دو میکنه که شش باشه ضرب در دوش میکنه در ایکس ذخیره اش میکنه میشه ۱۲ یه تایپ دیگه تایپ بولین هست در واقع همون ترو و فالس هستش که در واقع اپراتورهای منطقی رو با این میتونید بسازید ما اینجا دو تا تی و f رو ترو و تعریف کردیم و تایپشون همونطور که میبینید هستش

مثال ازش زدیم اینجا در واقع اندرو باهاش ساختیم تو اند فاست طبیعتاً چاپ میشه فالس دیگه و او رو هم داریم نات تو هم طبیعتاً میشه فارس یه علامتی اینجا هستش در واقع علامت تعجب مساوی همون مخالف یا متضاد هستش در واقع تو مخالف فارسی عبارت درست است بنابراین خروجی این یک خروجی بولین هستش یکی دیگه از دیتا تایپ‌هایی که داریم توی پایتون در واقع رشته استرینگ هستش که حالا سینگل پوشن تعریف میکنیم اینجا الان یه رشته هلو تعریف کردیم با تایپ همونطور که میبینید تایپش رو نمایش دادیم که تایپش اس تی آر هست کلاس s تی آر لنش هم طولشه که فانککشنی هست که طول در واقع استرینگ رو در واقع چاپ میکنه که اینجا پنج بوده دستور در واقع اینپوت رو داریم که میاد چیکار میکنه در واقع یه رشته رو دریافت میکنه در واقع اجراش بکنیم اون رشته رو دریافت میکنه خروجیش همیشه

بهش میدم سنو می‌گیره و مثلاً میگه که سال بعد چه سنی داره در واقع استرینگ هستش و یه نکته‌ای که اینجا هست اینه که ما وقتی که می‌خوایم در واقع یه رشته رو چاپ بکنیم برای اینکه متغیرها رو داخلش مشخص بکنیم چون متوجه که نمیشه در حالت عادی که ما چه متغیری داریم از استرینگ فرمت استفاده می‌کنیم چیکار می‌کنیم دو تا روش داره فرقی نداره اولیش اینه که در واقع شما میتونید استفاده کنید اول کار و متغیرها داخل در واقع آکولاد مشخص کنید که این در واقع متوجه میشه که اون اسم شما یک متغیر نه جزئی از رشته در واقع اینجا اندازه نیم را چاپ میکنه نه خود نیم رو یه روش دیگه هم وجود داره که در واقع جایی که متغیر داریم رو آکولاد خالی بذاریم و بعد

تهش با متد دات فرمت بیایم و به تعداد آکولاده متغیرها را مشخص کنیم یه سری متد داره استرینگ که حالا ما دیگه ازش رد میشیم ولی خب در واقع متد چی هست در واقع یه سری فانکشن هستند که در واقع شما می‌بینید چطور تعریف میشه اسم متغیر رو میارید دات و اسم فانکشن مثلاً استارت آپر چیکار میکنه میاد اون در واقع استرینگ که تعریف کردیم چیکارش میکنه یه متد فایند تعریف در واقع اینجا نوشتیم که در واقع چیکار میکنیم میاد کاراکتر ای رو در واقع ایندکسش رو تعیین میکنه که اینجا چاپ شده چند ۱ چرا ۱ شده بله چون ایندکس در پایتون برخلاف مطلب از صفر شروع میشه خط آخر هم نگاه کنید این در واقع خروجیش که بولین هستش در واقع اینجا نگاه کنید که در واقع استرینگ نیو توی در واقع متغیر اس

موجود داشته یا نه چون وجود داشته یا تورو چاپ می‌کنه اینم در واقع خروجیش بولین هستش خب متغیرهای در واقع گزاره‌های شرطی رو اگه بخوایم بگیم عبور کنیم از دیتا تایپ‌ها خب مثل زبان‌های دیگه مساوی داریم مخالف داریم کوچکتر مساوی کوچکتر مساوی بزرگتر و خوب مثلا یه نمونه‌شو می‌بینید دیگه اگه گذاره ما درست باشه تو چاپ میکنه و غلط باشه یه نمونه از در واقع گزارشی اینجا داریم همونف که همیشه داریم توی زبان های دیگه مثل مطلب اینجا با ایف الف و الس تعیین میشه نکته‌ای که داره اینه که در واقع اینجا ما پرانتز نداریم اصلا یعنی همه چی ما ایندنت مشخص میشه و اون دو تا نقطه رو هرگز نباید فراموش بکنیم ارور میده اگه این دو تا نقطه رو نذارید و نکته اینه که در واقع تعداد ایندنتش مهم نیست مهم اینه که در واقع همشون با هم برابر باشه این که پشتش میز

این از این یه اینو یه فرم در واقع یک خطی هم هست توی یک خط هم می‌تونیم اجراش بکنیم وگرنه همونه ولی تو یک خط می‌تونیم پیداش کنیم از گزارش عبور کنیم حلقه توی پایتون با وای و فور میتونیم اجراش بکنیم حلقه رو وای اینطوری هستش که در واقع یه گذاره مینویسیم و باز دوباره دو تا نقطه مثل همون شکلیه تا زمانی که این گزاره این شرط برقرار هست حلقه تکرار میشه و یه مثال ساده اینجا زدیم آی مساوی یک رو تعریف کردیم تا زمانی که آی کوچکتر از شش هست پرینتش میکنه و هر زمانی که از مساوی کشی شد در واقع خارج میشه از حلقه بریک و کانتینیو را هم داریم مثل مطلب و زمانی که شرط داخل بریک

از حلقه خارج بشه و قبل از اینکه یه مثالی که اینجا زدیم شرط مقابل وایل همیشه اینجا برقرار هست ترو هست زمانی که اون شرطمون برقرار بشه مشابه هست با مطلب کانتینیو هم همین شکلیه دستور فور تفاوتی که با وایل داره این هستش که در واقع این شکلیه که روی یک سیکوئنسی یه تکراری را انجام میده مثلاً اینجا ما یه لیست تعریف کردیم که جلوتر بهش اشاره میکنیم در واقع نکته‌ای که داریم اینه که میاد روی اعضای این لیست تکرار میکنه و برای مثال تو این مثال میاد پرینتشون میکنه و یه شرط گذاشتیم که زمانی که تایپش باشه بریک کنه چاپ نکرده و یه فرم دیگه هم هستش که در واقع یه تعداد مشخصی ما میخویم حلقه تکرار بشه از دستور رنج استفاده میکنیم که الان اینجا اومدیم در واقع از یک تا ۹۹ رو خود ۱۰۰ رو در نظر نمیگیره

از رنج ۱ تا ۹۹ رو اومدیم تکرار کردیم و ضرایب ۱۰ رو چاپ کردیم از دستور رنج استفاده میشه برای اینکه تعداد مشخصی در حلقه تکرار بشه خب ما کانتینر کانتینرها در واقع کالکشن‌ها رو داریم توی پایتون که شامل لیست دیکشنری تافل و ست هستش اینها در واقع می‌تونن مجموعه‌ای از متغیرها رو در خودشون جای بدن در واقع از لیست شروع بکنن تفاوتشون رو جلوتر میگیم در واقع یک کالکشن هست که میتونه در واقع هر متغیر رو داخل خودش جای بده حالا همونطور که میبینید الان ما هم اس تی آر داخلش داره هم در واقع اینتیجر داره هم فلوت داره کامپلکس داره بولین داره مقادیر تکراری میتونه بگیره اوردر داره ایندکس میگیره و دسترسی کامل بهش داریم یعنی میتونیم ادیتش کنیم میوتبل هستش در یک سری متد داره مثل اپند و

به آخر لیست یه مقداری یه متغیر رو اضافه می‌کنه یا مثلاً متد پاپ رو داریم که میاد حذف میکنه یه ایندکس مشخصی رو نکته‌ای که داره اینه که در واقع توی لیست مثل حالا آرایه‌ها حالا که توی نامپایی داریم میتونیم آدرس یه المان مشخص رو تعیین بکنیم با اسلایسینگ یا ایندکس مشابه هست با همون چیزی که توی مطلب داشتیم الان ما اینجا یه در واقع لیست تعریف کردیم رنج در لیست از صفر تا چهار هست تعریفش کردیم میبینید که مثلا اگه بخواهیم در واقع المان یک تا سه رو نمایش بدیم داخل براکت مشخص میکنیم ۱ تا ۴ این چیکار میکنه یک دو و سه رو چاپ میکنه آخری رو باز دوباره در نظر نمیگیره مورد دومی که میبینید در واقع میاد چیکار میکنه وقتی چیزی نمی‌نویسیم از اول لیست در نظر میگیره تا اونجایی که گفتیم یعنی الان میاد صفر و یک رو چاپ میکنه

وقتی ابتدا و آخرش را هم مشخص نکنی پل لیست را چاپ می‌کند و همونطور که گفتیم توی لیست هم طبیعتاً ایندکس از صفر شروع میشه نه از یک لیست کامپرینیشن رو داریم در واقع ما میتونیم حلقه داشته باشیم روی لیست همانطور که گفتم ولی اینجا در واقع مدل یک خطیش رو نوشتیم چیکار کردیم یه لیست تعریف کردیم از صفر تا ۴ اومدیم اعداد زوجش رو انتخاب کردیم و به توان دو رسیدیم ذخیره کردیم لیست دیگه چجوری این کارو کردیم توی یک خط در واقع داخل براکت نوشتیم ایکس به توان دو برای ایکس هایی که داخل لیست نامز هستند و در واقع باقی مانده تقسیم ش به دو صفر است یعنی زوج هستند این فرم یک خطی خیلی رایج هستش که در واقع استفاده میشه ازش دیکشنری رو داریم در واقع تفاوتش با لیست اینه که متغیرش به صورت زوج تعریف میشه یعنی کی داره و ولیو

زوج‌ها رو در خودش ذخیره می‌کنه و در واقع مقادیر تکراری هم نمی‌پذیره این تفاوت دیگرش با لیسته می‌تونیم مقادیرشو آپدیت بکنیم مقدار جدید بهش اضافه کنیم همونطور که میبینید با در واقع با کی‌ها می‌تونیم به ولیها دسترسی داشته باشیم و تایپش هم همونطور که میبینید تایپش در واقع کلاس دیکشنری هست یا کلاس دیکت و با کیس می‌تونیم به کلیدها در واقع دسترسی داشته باشیم و با ولیو میتونیم با مقادیر این دسترسی داشته باشیم آیتم هم جفتشون رو نشون میده ولیو میتونه چاپ بکنه حلقه روی دیکشنری هم مشابه لیست هستش با در واقع با آیتم میتونیم در واقع هم ایندکسشون رو بگیریم یعنی هم کی ها رو بگیریم و هم ولیو ها رو بگیریم و جفتشون تو این مثال چاپ کردیم تاپل یه در واقع دیتا تایپ دیگه هست از کالکشن ها که مقادیر تکراری در واقع قبول میکنه اما ایندکس ایندکس هم داره اما نمیشه ادیتش کرد یعنی در واقع ایم

هستش و زمانی که تعریفش کردیم دیگه نمی‌تونیم تغییرش بدیم که درش ذخیره شده رو و تایپشم همونطور که می‌بینید کلاس تاپل هستش یه دیتا تایپ دیگه هم داریم به اسم ست که در واقع مشابه با در واقع دیکشنری با آکولاد تعریف بشه این مقادیر تکراری قبول نمیکنه و در واقع هم نداره و حالا اینجا همینطور که میبینید یه ست تعریف کردیم و طولش رو مقدارش چاپ کردیم حالا چرا طولش شده ۴ فکر میکنید پاسخ صفر یکی و چون تکراری قبول نمیک با تافل پرانتز

جابجاشونم کرده و چاپ کرده چون اصلاً اردر نداره دیگه خب این از این ما میریم سراغ فانکشن ها فانکشن هم توی پایتون حالا مشابه هست با مطلب تعریف کردیم که باز دوباره دو نقطه رو داره و ایندنت مشخص می‌کنه که چه مقادیری داخل این تابع هست و مقدار ریتر کرده در واقع گفته که مثبت هست یا منفی یا صفر یه مثال دیگه از فانکشن رو نگاه کنیم در واقع یک فشن تعریف کردیم که یه آرایه میگیره و چیکار میکنه مقدار میانیش رو حساب میکنه و یه در واقع یه تابع بازگشتی هستش قبل از اون رو میریزه داخل آرایه در واقع لیست لفت بعد از اون مقدار میانی را میریزه توی لیست رایت و چیکار می‌کنه انقدر این کارو انجام میده از

به صورت بازگشتی تانک کامل این آرایه مرتب میشه از کوچک به بزرگ این از این یه سری حالت‌های خاص داره فانکشن در واقع که حالا من همشو اینجا نمیگم ولی مسئله یه حالتش اینه که در واقع کیبورد هستش در واقع ما میتونیم در واقع فانکشن رو که تعریف کردیم زمانی که داریم فراخوانیش می‌کنیم از در واقع از کیبوردهای خودش استفاده بکنیم این باعث میشه که ترتیب رو هم اگه رعایت نکنیم با ارور مواجه نشیم اگه از اسامی خود آرگمان های تابع استفاده بکنیم یه حالت دیگه هم هستش در واقع وقتی که اینطوری تعریفش توی تعریفش زمانی که مقدار بدیم در واقع به این آرگمان ها به ورودی ها زمانی که فراخوانیش میکنیم اگه مقدار هم ندیم همون مقدار دیفالتش در نظر میگیره همون چیزی که داشته رو که در واقع فراخوانی کردیم و چاپش کردیم همون ایران رو مثلاً

استفاده بکنید نیاز هست که از کلاس استفاده بکنید در کل هم توی پایتون همه چی بر اساس کلاس آخر میشم اول پلات رو بگم اولا که توی پایتون داریم وقتی نصبشون بکنیم استفاده کنیم دانلود میشن و نصب بشه که نصب بشه خودش میره و پیدا میکنه دانلود میکنه و نصب می‌کنه حالا مثلاً اینجا برای پلات از کتابخانه استفاده میکنیم ما این دستور در واقع دانلود و نصبش میکنیم نصبش کردیم یک بار بعداً می‌تونیم ایمپورتش کنیم و استفاده کنیم توی کلاب خیلی از اینا هستند

سیستم خودتون بار اول معمولاً باید نصبشون بکنید نحوه ایمپورت کردن چه جوریه در واقع دو شکل هست که تقریباً مشابه همن و خیلی تفاوت زیادی هم با هم ندارند الان مثلاً اینجا می‌بینید که در واقع من کردم در واقع ماژول پای پلالاتش رو از در واقع من اومدم از یه حالت کوتاه شده استفاده می‌کنیم که در واقع بعداً دیگه کل پای راست را مثلا ننویسیم فرم ساده استفاده کردیم یه فرم دیگه هم داره که مشابه همونه خیلی فرقی نداره در گفتیم و نتیجه یکسان تقریبا نام هایپورت کردیم دوباره نام های کتابخانه که در واقع کاربردش خیلی زیاده اینجا بهش اشاره نمی‌کنیم ولی حالا فکر می‌کنم یه سری فیلم گذاشتم براتون توی سامانه خب ما اینجا یه مثال ساده از در واقع پلات توی پایتون داریم اولا

مطلب نوشته شده مثل همون در واقع اومدیم با دستور ارنج با نامپای دات ارنج اومدیم یه بازه تعریف کردیم و سینوس و کسینوس را تعریف کردیم و با دستور plt.cot اومدیم در واقع این رو رسم کردیم باز مثل مطلب رو میتونید مشخص کنید در واقع محدوده بازه ایکس و ایگرگ رو میتونید با عکس تعیین کنید و در میتونید نشونش بدید حالا من اینو ران بکنم این یه مجیک کامند اینجا گذاشتم وقتی که اینو بنویسید حالتی که توی نوت بوک

یه سری امکانات جدید هم میاره مثلاً می‌تونید زوم بکنید یا در واقع جابجا بشه روی چیز این یه مجیک کامند بنویسید غیر فعالش بکنید باز میتونید در واقع مثل مطلب در واقع رنگ نمودار و نمیدونم در واقع عرض خط ها همه رو تعیین بکنید مارکت میتونید بزارید براش مثل همونه سابلات رو هم داریم باز دوباره

مطلب هستش مثلاً می‌بینید که اینجا یه در واقع دوتایی تعریف کردم اینم مثل مطلب و انواع اقسام دیگه پلات رو هم داریم که می‌تونیم در واقع داکیومتیشن خودش رو ببینید حالا من به کلاس میتونم اشاره کلاس چی هست در واقع هر چیزی که بیشتر چیزهایی که میبینیم آبجکت هستند یعنی چی در واقع اینا با یه سری کلاس ساخته میشن کلاس در واقع کانستراکتور یا بلوپرینتی هست برای ساخت آبجکت حالا چی هست در واقع مشابه با تعریف تابع ما یه سری کلاس داریم تعریفشون بکنیم داخلش یک سری تابع یا متد داره یه سری متغیر یا پراپرتی که چه اتفاقی میفته وقتی من کلاس رو تعریف می‌کنم با یه سری توابع و غیر

اسمی اس جی آبجکت جی ساخته بشه و هر آنچه که درباره هر متغیر یا فانککشنی که توی کلاس هست تو کلاس مثلاً در اینجا هستش برای آبجکت جی هم قابل استفاده هستش یه نکته و همونطور که دیدید وقتی من تایپ هر کدوم از این در واقع دیتا تایپ ها را در واقع پرینت میکردم کلاس و همه اینا خودشون یه کلاس بودن و تقریبا هر چیزی که توی پایتون میبینیم از همین قاعده تبعیت میکنه اینجا در واقع یک کلاس گریتر در واقع یک کلاس ساده تعریف کردیم که یه سری تابع داره داخل تابع تعریف کردیم که در واقع زمانی که لودش در فال باشه همون شکلی

وقتی تورو باشه میاد با در واقع آپر کیس پرینتش می‌کنه یه تابعی که هستش تو همه کلاس‌ها تابع اینیت هستش و در واقع ورودیش یه سلف هست با یه سری متغیر در واقع موقع فراخوانی ازش استفاده نمی‌کنه فقط برای این هستش که در واقع به متغیرهایی که داخل تابع هستند دسترسی داشته باشیم و اینکه هر آن چیزی که داخل تابع اینت هستش به محض اینکه آبجکت تعریف میشه بلافاصله اجرا میشه یعنی هرچی متغیر داره متغیرها نام گذاری میشن و تابع داره اجرا بشه دستور پرینت هم داشته باشم به محض اینکه آبجکت رو تعریف بکنم پرینتش میکنه این تفاوتی هستش که تابعیت داره با بقیه توابع بلافاصله اجرا میشه بعد از اینکه من آبجکت رو تعریف میکنم بدون اینکه فراخوانی بکنم الان مثلا اینجا میبینید که من در واقع تابع گریت رو فراخوانی کردم و خب اجرا میشه ولی

در واقع تابع اینت خودش بلافاصله بعد از اینکه آبجکت رو تعریف کردم اجرا میشه و خب شکل تعریف متغیرها را میبینید چیکار میکنه نیم رو قرار میده با اون ورودی که گرفته به اسم وقتی فراخوانیشم می‌کنم فقط یه ورودی بهش میدم فقط من کاری ندارم این یکی که خیلی کاربرد داره بحث در واقع ارثبری رو هم داریم توی کلاس ها که یک کلاس از یک کلاس میبره توابع یا پراپرتی به چه شکل در واقع من یک کلاس پرسن فرض کنید تعریف کردم در واقع اسم و فامیلی رو میگیره یه کلاس استودنت تعریف کردم با در واقع با متد سوپر دات اینت چیکار میکنم وقتی از این استفاده میکنم داخل تابع اینت این میاد تمامی در پراپرتی و متدهای کلاس مرجع رو به ارث میبره و برای این هم تعریف میشن به علاوه در واقع توابعی که داخل

و همونطور که میبینید من مستقیم از کلاس استفاده می‌کنم در واقع ورودی‌هاش هم ورودی‌های کلاس قبلیه و هم ورودی‌های جدیدی که میگیره و خروجی رو چاپ می‌کنه سوالی اگه از این دارید

E:\courses\LangChain Project\main root\data\Python_Tutorial_Level_0.ipynb

'markdown' cell: '['# Python Tutorial (Beginners)']'

'markdown' cell: '['In this tutorial some basic concepts like variables, loops, conditional statements, and functions will be discussed. we will start with variables:']'

'markdown' cell: '['## Variables']'

'markdown' cell: '['In python, we have 4 kinds of variables: numerical variables, strings, boolean, and complex numbers variables.']'

'code' cell: '['age = 24\n', 'name = "Ali"\n', 'is_student = True\n', '\n', 'print(age,type(age))\n', 'print(name,type(name))\n', 'print(is_student,type(is_student))']'

'markdown' cell: '['We can cast the variable types to each others, meaning that converting the type of the variables using functions below.']'

'code' cell: '['#Casting\n', "x = str(3)    # x will be '3'\n", 'y = int(3)    # y will be 3\n', 'z = float(3)  # z will be 3.0\n', 'n = bool(3)   # n will be True']'

'markdown' cell: '['## Input data']'

'markdown' cell: '['by just one line of code, you can get the input data from the keyboard. Just remember that the type of this data will be string...']'

'code' cell: '['name=input("what\'s your name? ")\n', 'print("Your name is "+name)']'

'markdown' cell: '['## Strings']'

'markdown' cell: '['Strings in python are surrounded by either single quotation marks, or double quotation marks.\n', '\n', '\'hello\' is the same as "hello".']'

'code' cell: '["context='Today is a great day!'\n", "print(context.count('d'))\n", 'print(context.upper())\n', "print(context.find('a'))\n", "print(context.replace('great','greaaaaaaaaat'))\n", "print('great' in context)"]'

'markdown' cell: '['## Math operators']'

'markdown' cell: '['Arithmetic or math operators are used with numeric values to perform common mathematical operations:']'

'code' cell: '['#we have +, -, /, *, //, %, **\n', '\n', 'print(10/6) # Division\n', 'print(10//6) # Floor division\n', 'print(10%6) # Modulus\n', 'print(2**3) # Exponentiation']'

'markdown' cell: '['## Comparison operators']'

'markdown' cell: '['Comparison operators are used to compare two values. The output is a boolean variable.\n']'

'code' cell: '['# <, >, ==, !=, >=, <=\n', '\n', 'print(1>100)']'

'markdown' cell: '['## Logical operators']'

'markdown' cell: '['Logical operators are used to combine conditional statements:']'

'code' cell: '['# and: Returns True if both statements are true\n', '# or: Returns True if one of the statements is true\n', '# not: Reverse the result, returns False if the result is true\n', '\n', 'print(1>0 and 1>2)']'

'markdown' cell: '['## Conditional statement']'

'markdown' cell: '['Python relies on indentation (whitespace at the beginning of a line) to define scope in the code. Other programming languages often use curly-brackets for this purpose.']'

'code' cell: '['# Writing lines of code that convert your score to american scale\n', "score=input('enter your score: ')\n", 'score=float(score)\n', '\n', 'if score >= 16:\n', '    scaled=4\n', 'elif score <= 15 and score >= 14:\n', '    scaled=3\n', 'elif score <= 13 and score >= 12:\n', '    scaled=2\n', 'elif score <= 11 and score >= 10:\n', '    scaled=1\n', 'else:\n', '    scaled=0\n', '\n', '# Using format string to include variables in the string.  \n', 'print("Your scaled score is: {}".format(scaled))\n', '#print(f"Your scaled score is: {scaled}")']'

'markdown' cell: '["The format() method formats the specified value(s) and insert them inside the string's placeholder.\n", 'The placeholder is defined using curly brackets: {}']'

'markdown' cell: '['## while loop']'

'markdown' cell: '['Python has two primitive loop commands:\n', '\n', '--> while loops\n', '\n', '--> for loops\n', '\n', 'With the while loop we can execute a set of statements as long as a condition is true. The while loop requires relevant variables to be ready, in this example we need to define an indexing variable, i, which we set to 1.\n', '\n', '\n', '\n', '\n']'

'code' cell: '['i = 1\n', 'while i < 6:\n', '    print(i)\n', '    i += 1\n', 'else:\n', '    print("i is no longer less than 6")']'

'markdown' cell: '['Note: With the "break" statement we can stop the loop even if the while condition is true.\n', '\n', 'Note: With the "continue" statement we can stop the current iteration, and continue with the next.\n', '\n', '\n']'

'code' cell: '['i = 1\n', 'while i < 100:\n', '    print(i)\n', '    i += 1\n', "    input_=input('Can I stop now??!')\n", '    input_=input_.lower()\n', "    if input_=='yes':\n", '        break']'

'markdown' cell: '['## for loop']'

'markdown' cell: '['A for loop is used for iterating over a sequence (that is either a list, a tuple, a dictionary, a set, or a string).\n', '\n', 'This is less like the for keyword in other programming languages, and works more like an iterator method as found in other object-orientated programming languages.\n', '\n', 'With the for loop we can execute a set of statements, once for each item in a list, tuple, set etc.\n', '\n', 'Note: "break" and "continue" works here as before.']'

'code' cell: '['fruits = ["apple", "banana", "cherry"]\n', 'for i, x in enumerate(fruits):\n', '    print(x)\n', '    print(i)']'

'markdown' cell: '['To loop through a set of code a specified number of times, we can use the range() function,\n', 'The range() function returns a sequence of numbers, starting from 0 by default, and increments by 1 (by default), and ends at a specified number.']'

'code' cell: '['for x in range(100):\n', '    print(x)\n', 'else:\n', '    print("Finally finished!")']'

'markdown' cell: '['The range() function defaults to increment the sequence by 1, however it is possible to specify the increment value by adding a third parameter: range(2, 30, 3)']'

'markdown' cell: '['## Lists']'

'markdown' cell: '['Lists are used to store multiple items in a single variable. Lists are one of 4 built-in data types in Python used to store collections of data, the other 3 are Tuple, Set, and Dictionary, all with different qualities and usage. We can shortly summerize their properties below:\n', '\n', 'List is a collection which is ordered and changeable. Allows duplicate members.\n', '\n', 'Tuple is a collection which is ordered and unchangeable. Allows duplicate members.\n', '\n', 'Set is a collection which is unordered, unchangeable*, and unindexed. No duplicate members.\n', '\n', 'Dictionary is a collection which is ordered** and changeable. No duplicate members.']'

'code' cell: '['thislist = ["apple", "banana", "cherry", 5 , True]\n', 'print(len(thislist)) # returns the length of the list\n', 'print(thislist)\n', 'print(thislist[0:2]) # returns the defined elements of the list\n', '\n', '# Methods\n', "thislist.append('6') # insert the new element at the end of the list\n", "thislist.insert(1,'Ali') # insert the element at the desired index (here 1)\n", 'print(thislist)\n', 'thislist.pop(0) # deletes the defined element of the list\n', 'print(thislist)\n', '\n', 'print(5 in thislist)']'

'markdown' cell: '['#### IMPORTANT Note: keep in mind that in python, the indices start from 0 (unlike MATLAB that start from 1)']'

'markdown' cell: '['## tuples']'

'markdown' cell: '['Tuples are used to store multiple items in a single variable.\n', '\n', 'A tuple is a collection which is ordered and unchangeable.\n', '\n', 'Tuples are written with round brackets.']'

'code' cell: '['thistuple = ("apple", "banana", "cherry")\n', 'print(len(thistuple))\n', 'tuple1 = ("abc", 34, True, 40, "NOT")\n', 'print(tuple1)']'

'markdown' cell: '['## Sets']'

'markdown' cell: '['A set is a collection which is unordered, unchangeable*, and unindexed.\n', '\n', '* Note: Set items are unchangeable, but you can remove items and add new items.\n']'

'code' cell: '['new_set = {"apple", "banana", "cherry", True, 1, 2, 2}\n', 'print(new_set)']'

'code' cell: '["new_set.remove('apple') # we cannot remove by index, because index has no meaning in sets!!\n", 'print(new_set)']'

'code' cell: '["new_set.add('Hi') # we cannot remove by index, because index has no meaning in sets!!\n", 'print(new_set)']'

'code' cell: '['# sample from the set:\n', 'import random\n', 'print(random.sample(new_set, 2))\n', '\n', "print('*******')\n", '# another way: by converting set to list\n', 'print(list(new_set)[0])\n', '\n', "print('*******')\n", '# another way: by iterating over a loop\n', 'for i in new_set:\n', '    print(i)']'

'markdown' cell: '['## Dictionary']'

'markdown' cell: '["Dictionaries are written with curly brackets, and have keys and values. Dictionary items are presented in key:value pairs, and can be referred to by using the key name. in this example, the keys are 'brand', 'model', and 'year. we cannot have several same keys (like year here), and the dictionary will only keep one of them."]'

'code' cell: '['thisdict = {\n', '  "brand": [],\n', '  "model": "Mustang",\n', '  "year": 1964,\n', '  "year": 2020\n', '}\n', 'print(thisdict)']'

'code' cell: '["# adding an element to the 'brand' key\n", "thisdict['brand'].append('Ford')\n", 'print(thisdict)']'

'code' cell: '['# keys of the dictionary\n', 'thisdict.keys()']'

'markdown' cell: '['A function is a block of code which only runs when it is called.\n', 'You can pass data, known as parameters, into a function.\n', 'A function can return data as a result.\n', '\n', 'In Python a function is defined using the def keyword:\n', '\n']'

'code' cell: '['def my_function(x):\n', '    result= 5 * x\n', '    return result\n', '\n', 'print(my_function(3))\n', 'print(my_function(5))\n', 'print(my_function(9))']'

'markdown' cell: '['matplotlib is a strong library for plotting in python. Below is a brief representation of this library, but you can learn more about this on https://matplotlib.org/3.5.3/api/_as_gen/matplotlib.pyplot.html and search for your intended plot.']'

'code' cell: '['import matplotlib.pyplot as plt\n', '\n', 'xpoints = [1, 8]\n', 'ypoints = [3, 10]\n', '\n', 'plt.plot(xpoints, ypoints)\n', 'plt.show()']'

'code' cell: '['import matplotlib.pyplot as plt\n', '\n', '#plot 1:\n', 'x = [0, 1, 2, 3]\n', 'y = [3, 8, 1, 10]\n', '\n', 'plt.subplot(1, 2, 1)\n', 'plt.plot(x,y)\n', '\n', '#plot 2:\n', 'x = [0, 1, 2, 3]\n', 'y = [10, 20, 30, 40]\n', '\n', 'plt.subplot(1, 2, 2)\n', 'plt.plot(x,y)\n', '\n', 'plt.show()']'

'code' cell: '['import matplotlib.pyplot as plt\n', '\n', 'x = ["A", "B", "C", "D"]\n', 'y = [3, 8, 1, 10]\n', '\n', 'plt.bar(x,y)\n', 'plt.show()']'

E:\courses\LangChain Project\main root\data\Pytorch_CNN_Tutorial_SCR.ipynb

'markdown' cell: '['# PyTorch CNN Tutorial - SCR']'

'markdown' cell: '['First of all import all packages needed in this problem.']'

'code' cell: '['import torch\n', 'import numpy as np\n', '# import pandas as pd\n', 'from matplotlib import pyplot as plt\n', 'import seaborn as sns\n', 'from torch.utils.data import Dataset, TensorDataset, DataLoader, random_split\n', 'import torch.nn as nn\n', 'import torch.nn.functional as F\n', 'import torchvision\n', 'import torchvision.models as models\n', 'from sklearn.metrics import (accuracy_score, confusion_matrix, precision_score,recall_score)\n', 'from torchvision.transforms import ToTensor, Resize, Lambda, RandomHorizontalFlip\n', 'from collections import Counter']'

'markdown' cell: '['## Load CIFAR10 dataset:\n', '\n', 'In the first step, load CIFAR10 with torchvision and split it to train, valid and test data. Also in this step, convert each label to onehot vector with lambda function.\n', '\n', 'At the end, visualize one sample of each class in CIFAR10 dataset randomly.']'

'code' cell: '['# number of mini-batch size:\n', 'Batch_size=32\n', '\n', '# Define input image size\n', 'img_size=(32,32,3)\n', '\n', '# Selecting the appropriate training device:\n', 'device = "cuda" if torch.cuda.is_available() else "cpu"\n', 'print(f"Using {device} device\\n\\n")\n', '\n', '# Define a train and test Transform to resize image and convert to tensor:\n', 'train_transforms = torchvision.transforms.transforms.Compose(\n', '        [Resize([32, 32]),\n', '         RandomHorizontalFlip(),\n', '         ToTensor()])\n', '\n', 'test_transforms = torchvision.transforms.transforms.Compose(\n', '        [Resize([32, 32]),\n', '         ToTensor()])\n', '# load Cifar10 dataset with torchvision: (Use lambda to convert each label to onehot vector)\n', "dataset = torchvision.datasets.CIFAR10(root='./data', train=True, transform=train_transforms, download=True,\n", '                                       target_transform = Lambda(lambda y: torch.zeros(10, dtype=torch.float).scatter_(dim=0, index=torch.tensor(y), value=1)))\n', '\n', '# Split dataset to train_set and validation_set (85%-15%):\n', 'train_size = int(0.85 * len(dataset.data))\n', 'valid_size = len(dataset.data) - train_size\n', 'train_set, val_set = random_split(dataset, [train_size, valid_size])\n', '\n', "# Use Dataloader to ordination train_set and validation_set according to it's mini-batch size:\n", 'train_loader = torch.utils.data.DataLoader(train_set, batch_size=Batch_size, shuffle=True )\n', 'validate_loader = torch.utils.data.DataLoader(val_set, batch_size=Batch_size, shuffle=True)\n', '\n', '# load Cifar10 Test dataset with torchvision and load them with dataloader:\n', "Test_dataset = torchvision.datasets.CIFAR10(root='./data', train=False, transform=test_transforms, download=True,\n", '                                            target_transform = Lambda(lambda y: torch.zeros(10, dtype=torch.float).scatter_(dim=0, index=torch.tensor(y), value=1)))\n', 'test_loader = torch.utils.data.DataLoader(Test_dataset,batch_size=Batch_size, shuffle=True)\n', '\n', '# define a convert function to convert each onehot vector to specific label of that class.\n', 'def convert(vector):\n', '     label=torch.where(vector==1)[0].item()\n', "     Classes= {0:'airplane',1:'automobile',2:'bird',3:'cat',4:'deer',5:'dog',6:'frog',7:'horse',8:'ship',9:'truck'} \n", '     return Classes[label]\n', 'print("\\n")\n', '\n', '# Divide data according to the their classes(separate each class and their data):\n', 'sample_Indexs=[]\n', 'for i in range(10) :sample_Indexs.append([] )\n', 'for num in range(0,len(dataset.targets)):\n', '    sample_Indexs[dataset.targets[num]].append(num)\n', '\n', "# select a random data of each class and plot it with it's label.\n", "fig=plt.figure(figsize=(35,25),facecolor='w')\n", 'for i in range(10):\n', '     rand_num= np.random.randint(1,50,1).item()\n', '     img, label = dataset[sample_Indexs[i][rand_num]]\n', '     ax = plt.subplot(1,10, i+1)\n', '     plt.imshow(img.permute(1,2,0))\n', '     ax.set_title(f"Label = {convert(label)}", fontsize=15)\n', '     ax.get_xaxis().set_visible(False)\n', '     ax.get_yaxis().set_visible(False)']'

'markdown' cell: '['## Implementation of a CNN based Image Classifier from Scratch:\n', '\n', 'First of all, Define a train and test loop for our training.']'

'code' cell: '['def train_loop(dataloader, model, loss_fn, optimizer):\n', '    model.train()\n', '    size = len(dataloader.dataset)\n', '    for batch, (img, y) in enumerate(dataloader):\n', '        img=img.to(device)\n', '        y=y.to(device)\n', '        # Compute prediction and loss\n', '        pred = model(img)\n', '        loss = loss_fn(pred, y)\n', '\n', '        # Backpropagation\n', '        optimizer.zero_grad()\n', '        loss.backward()\n', '        optimizer.step()\n', '\n', '        if batch % 100 == 0:\n', '            loss, current = loss.item(), batch * len(img)\n', '            print(f"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]")\n', '\n', '\n', 'def test_loop(dataloader, model, loss_fn):\n', '    model.eval()\n', '    size = len(dataloader.dataset)\n', '    num_batches = len(dataloader)\n', '    valid_loss, correct = 0, 0\n', '\n', '    with torch.no_grad():\n', '        for img, y in dataloader:\n', '            img=img.to(device)\n', '            y=y.to(device)\n', '            pred = model(img)\n', '            valid_loss += loss_fn(pred, y).item()\n', '            correct += (pred.argmax(1) == y.argmax(1)).type(torch.float).sum().item()\n', '\n', '    valid_loss /= num_batches\n', '    correct /= size\n', '    print(f"Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {valid_loss:>8f} \\n")']'

'markdown' cell: '['### Secondly, Define a CNN model:\n', '\n', 'According to the Torch API we have: [Source](https://pytorch.org/docs/stable/nn.html)\n', '\n', "- torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros', device=None, dtype=None)\n", '\n', '- torch.nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)\n', '\n', '- torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True, device=None, dtype=None)\n', '\n', '- torch.nn.Dropout2d(p=0.5, inplace=False)']'

'code' cell: '['# Creating the model\n', 'class ConvNet(nn.Module):\n', '    def __init__(self):\n', '        super(ConvNet, self).__init__()\n', '        self.model = nn.Sequential(\n', '            #Input = 3 x 32 x 32, Output = 32 x 32 x 32\n', "            nn.Conv2d(in_channels = 3, out_channels = 32, kernel_size = 3, padding = 'same'), \n", '            nn.ReLU(),\n', '            nn.Dropout2d(0.05),\n', '            #Input = 32 x 32 x 32, Output = 32 x 16 x 16\n', '            nn.MaxPool2d(kernel_size=2),\n', '            nn.BatchNorm2d(32),\n', '  \n', '            #Input = 32 x 16 x 16, Output = 64 x 16 x 16\n', '            nn.Conv2d(in_channels = 32, out_channels = 64, kernel_size = 3, padding = 1),\n', '            nn.ReLU(),\n', '            #Input = 64 x 16 x 16, Output = 64 x 8 x 8\n', '            nn.MaxPool2d(kernel_size=2),\n', '              \n', '            #Input = 64 x 8 x 8, Output = 64 x 8 x 8\n', '            nn.Conv2d(in_channels = 64, out_channels = 64, kernel_size = 3, padding = 1),\n', '            nn.BatchNorm2d(64),\n', '            nn.ReLU(),\n', '            #Input = 64 x 8 x 8, Output = 64 x 4 x 4\n', '            nn.MaxPool2d(kernel_size=2),\n', '  \n', '            nn.Flatten(),\n', '            nn.BatchNorm1d(64*4*4),\n', '            nn.Linear(64*4*4, 128),\n', '            nn.ReLU(),\n', '            nn.Dropout(0.1),\n', '            nn.Linear(128, 32),\n', '            nn.ReLU(),\n', '            nn.Linear(32, 10)\n', '        )\n', '  \n', '\n', '    def forward(self, x):\n', '        x = self.model(x)\n', '        x = F.softmax(x, dim=1)\n', '        return x']'

'code' cell: '['CNN_model = ConvNet().to(device)\n', '\n', 'for param in CNN_model.parameters():\n', '    param.requires_grad = True\n', 'CNN_model.train()    \n', 'print("Network Architecture:")\n', 'print(CNN_model)']'

'code' cell: '['# Defining the model hyper parameters:\n', 'lr = 2e-4\n', 'epochs = 5\n', 'weight_decay = 0.01\n', '\n', 'loss_fn = nn.CrossEntropyLoss()\n', 'optimizer = torch.optim.Adam(filter(lambda param: param.requires_grad, CNN_model.parameters()), lr=lr,  weight_decay = weight_decay)\n', '\n', 'for t in range(epochs):\n', '    print(f"Epoch {t+1}\\n-------------------------------")\n', '    train_loop(train_loader, CNN_model, loss_fn, optimizer)\n', '    test_loop(validate_loader, CNN_model, loss_fn)\n', 'print("Done!")']'

'markdown' cell: '['### Evaluation:']'

'code' cell: '['CNN_model.eval()\n', 'loss_fn_eval = nn.CrossEntropyLoss()\n', '# CNN evaluation\n', 'print("Evaluation results for train data:")\n', 'test_loop(train_loader, CNN_model, loss_fn_eval)\n', 'print("Evaluation results for validate data:")\n', 'test_loop(validate_loader, CNN_model, loss_fn_eval)\n', 'print("Evaluation results for test data:")\n', 'test_loop(test_loader, CNN_model, loss_fn_eval)']'

'code' cell: '["Cifar10_classes = ('airplane','automobile','bird','cat',\n", "                   'deer','dog','frog','horse','ship','truck')\n", '# prepare to count predictions for each class\n', 'correct_pred = {classname: 0 for classname in Cifar10_classes}\n', 'total_pred = {classname: 0 for classname in Cifar10_classes}\n', '\n', '# again no gradients needed\n', 'with torch.no_grad():\n', '    for data in test_loader:\n', '        img, y = data\n', '        img=img.to(device)\n', '        y=y.to(device)\n', '        labels = y.argmax(1)\n', '        pred = CNN_model(img)\n', '        predictions = pred.argmax(1)\n', '        # collect the correct predictions for each class\n', '        for label, prediction in zip(labels, predictions):\n', '            if label == prediction:\n', '                correct_pred[Cifar10_classes[label]] += 1\n', '            total_pred[Cifar10_classes[label]] += 1\n', '\n', '\n', '# print accuracy for each class\n', 'for classname, correct_count in correct_pred.items():\n', '    accuracy = 100 * float(correct_count) / total_pred[classname]\n', "    print(f'Accuracy for class: {classname:5s} is {accuracy:.1f} %')"]'

'markdown' cell: '['## Transfer Learning:\n', '\n', 'We can use PyTorch for loading pre-trained model, Also we can use Timm ([Medium](https://towardsdatascience.com/getting-started-with-pytorch-image-models-timm-a-practitioners-guide-4e77b4bf9055)) library to load a variety of pre-trained models trained on diferent datasets.(PyTorch image models: [github](https://github.com/huggingface/pytorch-image-models))']'

'code' cell: '['# Define input image size\n', 'img_size=(224,224,3)\n', '\n', '# Define a train and test Transform to resize image and convert to tensor:\n', 'train_transforms = torchvision.transforms.transforms.Compose(\n', '        [Resize([224, 224]),\n', '         RandomHorizontalFlip(),\n', '         ToTensor()])\n', '\n', 'test_transforms = torchvision.transforms.transforms.Compose(\n', '        [Resize([224, 224]),\n', '         ToTensor()])\n', '# load Cifar10 dataset with torchvision: (Use lambda to convert each label to onehot vector)\n', "dataset = torchvision.datasets.CIFAR10(root='./data', train=True, transform=train_transforms, download=True,\n", '                                       target_transform = Lambda(lambda y: torch.zeros(10, dtype=torch.float).scatter_(dim=0, index=torch.tensor(y), value=1)))\n', '\n', '# Split dataset to train_set and validation_set (85%-15%):\n', 'train_size = int(0.85 * len(dataset.data))\n', 'valid_size = len(dataset.data) - train_size\n', 'train_set, val_set = random_split(dataset, [train_size, valid_size])\n', '\n', "# Use Dataloader to ordination train_set and validation_set according to it's mini-batch size:\n", 'train_loader = torch.utils.data.DataLoader(train_set, batch_size=Batch_size, shuffle=True )\n', 'validate_loader = torch.utils.data.DataLoader(val_set, batch_size=Batch_size, shuffle=True)\n', '\n', '# load Cifar10 Test dataset with torchvision and load them with dataloader:\n', "Test_dataset = torchvision.datasets.CIFAR10(root='./data', train=False, transform=test_transforms, download=True,\n", '                                            target_transform = Lambda(lambda y: torch.zeros(10, dtype=torch.float).scatter_(dim=0, index=torch.tensor(y), value=1)))\n', 'test_loader = torch.utils.data.DataLoader(Test_dataset,batch_size=Batch_size, shuffle=True)\n']'

'code' cell: '['# Load pre-trained ResNet50 on imageNet\n', 'based_model = models.resnet50(weights=models.ResNet50_Weights.IMAGENET1K_V1).to(device)\n', '# Freeze all parameters    \n', 'for param in based_model.parameters():\n', '    param.requires_grad = False   \n', '# Modified FC layers\n', 'based_model.fc = nn.Sequential(\n', '               nn.BatchNorm1d(based_model.fc.in_features),\n', '               nn.Linear(based_model.fc.in_features, 128),\n', '               nn.ReLU(),\n', '               nn.Dropout(0.25),\n', '               nn.Linear(128, 10),\n', '               nn.Softmax(dim=1)).to(device)\n', "# Set all parameters in FC layer requires grad to update it's weights.\n", 'for param in based_model.fc.parameters():\n', '    param.requires_grad = True']'

'markdown' cell: '['### Train the Fully Connected layers']'

'code' cell: '['# Defining the model hyper parameters:\n', 'lr = 1e-4\n', 'epochs = 2\n', 'weight_decay = 0.01\n', '\n', 'loss_fn = nn.CrossEntropyLoss()\n', 'optimizer = torch.optim.Adam(filter(lambda param: param.requires_grad, based_model.parameters()), lr=lr, weight_decay = weight_decay)\n', '\n', 'for t in range(epochs):\n', '    print(f"Epoch {t+1}\\n-------------------------------")\n', '    train_loop(train_loader, based_model, loss_fn, optimizer)\n', '    test_loop(validate_loader, based_model, loss_fn)\n', 'print("Done!")']'

'markdown' cell: '['### Evaluating:']'

'code' cell: '['# compute model accuracy and Ave loss on train, valid and test data.\n', 'based_model.eval()\n', '# Define cross entropy loss function\n', 'loss_fn_eval = nn.CrossEntropyLoss()\n', '# based_model evaluation\n', 'print("Evaluation results for train data:")\n', 'test_loop(train_loader, based_model, loss_fn_eval)\n', 'print("Evaluation results for validate data:")\n', 'test_loop(validate_loader, based_model, loss_fn_eval)\n', 'print("Evaluation results for test data:")\n', 'test_loop(test_loader, based_model, loss_fn_eval)']'

'code' cell: '['# Confusion Matrix for Test Data\n', 'preds_test = torch.zeros(len(Test_dataset))\n', 'true_label = torch.zeros(len(Test_dataset))\n', 'for i in range(len(Test_dataset)):\n', '    true_label[i] = Test_dataset[i][1].to(device).argmax()\n', '    with torch.no_grad():\n', '        preds_test[i] = based_model((Test_dataset[i][0][None,...]).to(device)).argmax()\n', '\n', '\n', 'test_acc = accuracy_score(true_label.numpy(), preds_test.numpy())\n', "test_prc = precision_score(true_label.numpy(), preds_test.numpy(), average='macro')\n", "test_rcl = recall_score(true_label.numpy(), preds_test.numpy(), average='macro')\n", 'test_cf = confusion_matrix(true_label.numpy(), preds_test.numpy())\n', '\n', '\n', 'plt.figure(figsize=(10, 10))\n', "sns.heatmap(test_cf, xticklabels=Cifar10_classes, yticklabels=Cifar10_classes, annot=True, fmt='.0f')\n", "plt.title('Confusion Matrix for Test Data')\n", 'plt.show()\n', 'print("\\n\\n")\n', 'print(f"Test Accuracy: {test_acc*100:.2f} %")\n', 'print(f"Test Precision: {test_prc*100:.2f} %")\n', 'print(f"Test Recall: {test_rcl*100:.2f} %")']'

'markdown' cell: '['## Training a model without transfer learning:']'

'code' cell: '['# Load just ResNet18 model without any pre-trained weights:\n', 'resnet18_model = models.resnet18(weights=None).to(device)\n', '# Modified FC layers\n', 'resnet18_model.fc = nn.Sequential(\n', '               nn.BatchNorm1d(resnet18_model.fc.in_features),\n', '               nn.Linear(resnet18_model.fc.in_features, 10),\n', '               nn.Softmax(dim=1)).to(device)\n', "# Set all parameters in resnet18 requires grad to update it's weights.\n", 'for param in resnet18_model.parameters():\n', '    param.requires_grad = True']'

'code' cell: '['# Defining the model hyper parameters:\n', 'lr = 2e-4\n', 'epochs = 2\n', '\n', 'loss_fn = nn.CrossEntropyLoss()\n', 'optimizer = torch.optim.Adam(filter(lambda param: param.requires_grad, resnet18_model.parameters()), lr=lr)\n', '\n', 'for t in range(epochs):\n', '    print(f"Epoch {t+1}\\n-------------------------------")\n', '    train_loop(train_loader, resnet18_model, loss_fn, optimizer)\n', '    test_loop(validate_loader, resnet18_model, loss_fn)\n', 'print("Done!")']'

'code' cell: '['# compute model accuracy and Ave loss on train, valid and test data.\n', 'resnet18_model.eval()\n', '# Define cross entropy loss function\n', 'loss_fn_eval = nn.CrossEntropyLoss()\n', '# resnet18_model evaluation\n', 'print("Evaluation results for train data:")\n', 'test_loop(train_loader, resnet18_model, loss_fn_eval)\n', 'print("Evaluation results for validate data:")\n', 'test_loop(validate_loader, resnet18_model, loss_fn_eval)\n', 'print("Evaluation results for test data:")\n', 'test_loop(test_loader, resnet18_model, loss_fn_eval)']'

'markdown' cell: '['## Knowledge Distillation: [Source](https://intellabs.github.io/distiller/knowledge_distillation.html)\n', '\n', '\n', ' Sometiems it is not efficient to utilize high parameter networks for minor applications moreover, the small networks might not be as powerfull as the bigger ones so one way to increase the accuracy of the model is to use a technique called knowledge distillation. Training the resnet18 model according to the **Knowledge Distillation** from a teacher (resnet50):\n']'

'markdown' cell: '['![1.PNG](data:image/png;base64,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)']'

'markdown' cell: '['In distillation, knowledge is transferred from the teacher model to the student by minimizing a loss function in which the target is the distribution of class probabilities predicted by the teacher model. That is - the output of a softmax function on the teacher model\'s logits. However, in many cases, this probability distribution has the correct class at a very high probability, with all other class probabilities very close to 0. As such, it doesn\'t provide much information beyond the ground truth labels already provided in the dataset. To tackle this issue, [Hinton et al](Geoffrey Hinton, Oriol Vinyals and Jeff Dean. Distilling the Knowledge in a Neural Network. arxiv:1503.02531)., 2015 introduced the concept of "softmax temperature". The probability pi\n', ' of class i\n', ' is calculated from the logits z\n', ' as:\n', '\n', '![3.PNG](data:image/png;base64,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)']'

'markdown' cell: '['The overall loss function, incorporating both distillation and student losses, is calculated as:\n', '\n', '![2.PNG](data:image/png;base64,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)']'

'code' cell: '['# calculate softmax temperature\n', 'def softmax_temperature(Z, Temp=2):\n', '    return torch.exp(Z/Temp)/(torch.unsqueeze(torch.sum(torch.exp(Z/Temp),dim=1),1))\n', '\n', '# # calculate cross entropy\n', 'def cross_entropy(y_true,y_pred):\n', '    y_true=y_true.to(device)\n', '    y_pred=y_pred.to(device)\n', '    N_batch=len(y_true)\n', '    return -((y_true* torch.log(y_pred)).sum() /N_batch)\n', '\n', '# Calculate distiller_loss \n', 'def distiller_loss(Z_t, Z_s, y_true, Temp=2, alpha=0.1):\n', '    return (1-alpha)*cross_entropy(y_true,softmax_temperature(Z_s, Temp=1))+ alpha*(Temp**2)*cross_entropy(softmax_temperature(Z_t, Temp=Temp),softmax_temperature(Z_s, Temp=Temp))']'

'code' cell: '['def teacher_train_loop(dataloader, model, loss_fn, optimizer):\n', '    model.train()\n', '    size = len(dataloader.dataset)\n', '    for batch, (img, y) in enumerate(dataloader):\n', '        img=img.to(device)\n', '        y=y.to(device)\n', '        # Compute prediction and loss\n', '        pred = model(img)\n', '        pred= softmax_temperature(pred, Temp=2)\n', '        loss = loss_fn(pred, y)\n', '\n', '        # Backpropagation\n', '        optimizer.zero_grad()\n', '        loss.backward()\n', '        optimizer.step()\n', '\n', '        if batch % 100 == 0:\n', '            loss, current = loss.item(), batch * len(img)\n', '            print(f"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]")\n', '\n', '\n', 'def teachear_test_loop(dataloader, model, loss_fn):\n', '    size = len(dataloader.dataset)\n', '    num_batches = len(dataloader)\n', '    valid_loss, correct = 0, 0\n', '\n', '    with torch.no_grad():\n', '        for img, y in dataloader:\n', '            img=img.to(device)\n', '            y=y.to(device)\n', '            pred = model(img)\n', '            pred= softmax_temperature(pred, Temp=2)\n', '            valid_loss += loss_fn(pred, y).item()\n', '            correct += (pred.argmax(1) == y.argmax(1)).type(torch.float).sum().item()\n', '\n', '    valid_loss /= num_batches\n', '    correct /= size\n', '    print(f"Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {valid_loss:>8f} \\n")']'

'markdown' cell: '['Teacher Model']'

'code' cell: '['# Load pre-trained ResNet50 on imageNet\n', 'teacher_model = models.resnet50(weights=models.ResNet50_Weights.IMAGENET1K_V1).to(device)\n', '# Freeze all parameters    \n', 'for param in teacher_model.parameters():\n', '    param.requires_grad = False   \n', '# Modified FC layers\n', 'teacher_model.fc = nn.Sequential(\n', '               nn.BatchNorm1d(teacher_model.fc.in_features),\n', '               nn.Linear(teacher_model.fc.in_features, 10)).to(device)\n', "# Set all parameters in FC layer requires grad to update it's weights.\n", 'for param in teacher_model.fc.parameters():\n', '    param.requires_grad = True']'

'markdown' cell: '['Student Model']'

'code' cell: '['# Load pre-trained ResNet18 on imageNet\n', 'student_model = models.resnet18(weights=None).to(device)\n', '# Modified FC layers\n', 'student_model.fc = nn.Sequential(\n', '               nn.BatchNorm1d(student_model.fc.in_features),\n', '               nn.Linear(student_model.fc.in_features, 10)).to(device)\n', "# Set all parameters in resnet18 requires grad to update it's weights.\n", 'for param in student_model.parameters():\n', '    param.requires_grad = True']'

'code' cell: '['# Defining the model hyper parameters:\n', 'lr = 1e-4\n', 'epochs = 5\n', 'weight_decay = 0.01\n', '\n', 'loss_fn = nn.CrossEntropyLoss()\n', 'optimizer = torch.optim.Adam(filter(lambda param: param.requires_grad, teacher_model.parameters()), lr=lr, weight_decay = weight_decay)\n', '\n', 'for t in range(epochs):\n', '    print(f"Epoch {t+1}\\n-------------------------------")\n', '    teacher_train_loop(train_loader, teacher_model, loss_fn, optimizer)\n', '    teachear_test_loop(validate_loader, teacher_model, loss_fn)\n', 'print("Done!")']'

'code' cell: '['def distiller_training_loop(train_loader, validate_loader, test_loader, teacher_model, student_model, epoch=5, Temp=2, alpha=0.25):\n', '    teacher_model.eval()\n', '    student_model.train()\n', '    size_train = len(train_loader.dataset)\n', '    size_valid = len(validate_loader.dataset)\n', '    num_batches_valid = len(validate_loader)\n', '    size_test = len(test_loader.dataset)\n', '    num_batches_test = len(test_loader)\n', '\n', '    # Set adam optimizer to train student model\n', '    optimizer_st = torch.optim.Adam(filter(lambda param: param.requires_grad, student_model.parameters()), lr=1e-4)\n', '\n', '    # training and validating process \n', '    val_acc=[]\n', '    val_loss=[]\n', '    for Epoch in range(epoch):\n', '        print(f"Epoch {Epoch+1}\\n-------------------------------")\n', '        # compute distiller-loss over epoch and update student model weights\n', '        for batch, (X, y) in enumerate(train_loader):\n', '            X=X.to(device)\n', '            y=y.to(device)\n', '            # Compute logits of teacher and student model  \n', '            Z_t = teacher_model(X)\n', '            Z_s = student_model(X)\n', '\n', '            loss = distiller_loss(Z_t, Z_s, y_true=y, Temp=Temp, alpha=alpha)\n', '\n', '            # Backpropagation\n', '            optimizer_st.zero_grad()\n', '            loss.backward()\n', '            optimizer_st.step()\n', '\n', '            if batch % 100 == 0:\n', '                loss, current = loss.item(), batch * len(X)\n', '                print(f"loss: {loss:>7f}  [{current:>5d}/{size_train:>5d}]")\n', '\n', '        # validation:\n', '        loss_fn = nn.CrossEntropyLoss()\n', '        valid_loss, correct = 0, 0\n', '        with torch.no_grad():\n', '            for X, y in validate_loader:\n', '                X=X.to(device)\n', '                y=y.to(device)\n', '                pred_st = student_model(X)\n', '                pred_st =  softmax_temperature(pred_st, Temp=Temp)\n', '                valid_loss += loss_fn(pred_st, y).item()\n', '                correct += (pred_st.argmax(1) == y.argmax(1)).type(torch.float).sum().item()\n', '\n', '        valid_loss /= num_batches_valid\n', '        correct /= size_valid\n', '        print(f"Validation Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {valid_loss:>8f} \\n")\n', '        val_acc.append(100*correct)\n', '        val_loss.append(valid_loss)\n', '\n', '\n', '    # Testing process:\n', '    te_acc=[]\n', '    te_loss=[]\n', '    # test:\n', '    loss_fn = nn.CrossEntropyLoss()\n', '    test_loss, correct = 0, 0\n', '    with torch.no_grad():\n', '        for X, y in test_loader:\n', '            X=X.to(device)\n', '            y=y.to(device)\n', '            pred_st = student_model(X)\n', '            pred_st =  softmax_temperature(pred_st, Temp=Temp)\n', '            test_loss += loss_fn(pred_st, y).item()\n', '            correct += (pred_st.argmax(1) == y.argmax(1)).type(torch.float).sum().item()\n', '\n', '    test_loss /= num_batches_test\n', '    correct /= size_test\n', '    print(f"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n")\n', '    te_acc=100*correct\n', '    te_loss=test_loss\n', '\n', '    return val_acc,val_loss,te_acc,te_loss']'

'code' cell: '['# trainig of student model according to knowledge distillation from a teacher with best hyperparameters:\n', 'training = distiller_training_loop(train_loader, validate_loader, test_loader,teacher_model= teacher_model, student_model=student_model, epoch=5, Temp=2, alpha=0.25)']'

'code' cell: '['# compute model accuracy and Ave loss on train, valid and test data.\n', 'student_model.eval()\n', '# Define cross entropy loss function\n', 'loss_fn_eval = nn.CrossEntropyLoss()\n', '# student_model evaluation\n', 'print("Evaluation results for train data:")\n', 'teachear_test_loop(train_loader, student_model, loss_fn_eval)\n', 'print("Evaluation results for validate data:")\n', 'teachear_test_loop(validate_loader, student_model, loss_fn_eval)\n', 'print("Evaluation results for test data:")\n', 'teachear_test_loop(test_loader, student_model, loss_fn_eval)']'

E:\courses\LangChain Project\main root\data\Pytorch_Session_transcript_part1.txt

پایتورچ صحبت کنیم یه ای پی آی شبیه در واقع نامپای اری داره ساختار تنسوری که این امکان را به شما میده که در واقع گرادیان رو عددی محاسبه کنید و الان اون فرایند بی پی یا بک پروگریشن را انجام بدید در واقع قابلیتی داره که تنسور روی جی پی یو قرار بده حالا شاید اگر سیستم شخصی داشته باشید چه از کلب استفاده کنید میتونید خیلی سرعت ترین رو بیشتر کنید با حالا سنسورهای پایتونچ و حالا تنسرفلو که بلدید یا حالا تاریخچه براش نوشتم مراحل نصبش اگه بخواین در واقع سیستم رو نصب کنید به این صورت که میاید توی پایتون و با یک کد فقط یه خط کد شما میتونید نصبش کنید حالا اگر

ویندوز لینوکس مک دارید مکش فکر کنم اگه ام تو به بالا داشته باشید میتونید سیلیکون ولی استفاده کنید وگرنه باید از حالت عادیش که چیز نداره وجود نداره براش رو سی پی یو ران میشه در واقع میتونید همین کوتاه ۱۱۸ رو با این دستور نصب کنید بلدید چه جوری اینجور چیزا رو نصب کنید یا اینم بگم آره یه آناکوندا روی سیستم پاورش که بیارید شما میتونید تعریف کنید تورچ دارم واردش میشیم شما هرچی بخواین رو میتونید تو نصب کنید دیگه نیازی نیست هر بار یه چیزی اشتباه شد همه چیزا رو با هم پاک کنید و راحت میتونید پایتون های مختلف داشته باشید حالا وابسته به کارتون پایتون ۳۸ تا

۱۱ یا اصلاً می‌خوایم پایتون ۲ کار کنیم راحت می‌تونید نصب کنید و اون دستور رو می‌زنید نصب میشه دو و خورده‌ای گیگ هم هستش که می‌تونید نصب داشته باشید این از نصبش بعد خب خیلی بخوایم ساده شروع کنیم سایزش خوبه یا درستش کنم این دیگه درشت نیست آره کلاً فقط محدودیت جی پیو داره پنج ساعت و نیم در روز و چند هفته استفاده کنید تا دو ساعت کاهش پیدا میکنه جی پی یو مجبورید چند تا ایمیل مختلف داشته باشید که حالا عوض شده تمرین های ما به اونجا نمیرسه حالا

ترانسفورمتون و ال ال ام تون شاید برسه اگه بدن تمرین که مجبور بین ۴ تا مثلاً ایمیل مختلف نتایج هی جابجا کنید چند ای پاک که میره جیپیش تموم میشه ولی خب سیستم‌های خودتون برای اینکه ما در واقع یک سنسور یا همون نامپای اره‌ای که داریم رو تبدیل کنیم به در واقع تنسورهای پایتون راحت از دستور ترش دات تنسور استفاده میکنیم حالا اگر دیتاتون به صورت خام باشه میتونید از این دستور از نام پایه باشه میتونید از فرام نامپای در واقع اونو تبدیلش کنید بزرگترینشه بیاین جلو این همه صندلی نمیبینی دیگه الان ریز نمیشه بزرگه بزار چیکار کنیم

پس شما به راحتی می‌تونید حالا اون دیتایی که دارید از نام‌های یا دیتای خام باشه را تبدیل کنید همینطور میتونید با دستور وانز لایک یا رندوم لایک یک ماتریسی به ابعاد ماتریس مورد نظرتون رو تولید کنید که حالا یا همش یک باشه یا رندم باشه و حالا میبینید حالا این کد خیلی جامع ما اگه تیکه هایش میپریم بعدا خودتون میتونید امتحان کنید چون اگه بخواهیم دوتاشو برسیم وقت نداریم در واقع عط های که میتونید از خروجی بگیرید شیپش تایپش و حالا دیوایسه تایپش که حالا میتونه فت ۳۲ ۶۴ اینت هشت و اینا باشه هر حالا وابسته به کارتون و دقت مورد نظرتون تغییر میدید دیوایس چیز مهمی میتونه باشه اینه که

خب این سنسوری که شما دارید حالا وزن‌های یک شبکه است روی چه سیستمی داره ران میشه رو سی پی یو جی پی یو اگه رو سی پی یو باشه که سرعت پایینه و اینکه سی پی یوهای خیلی قوی داشته باشید چند هسته‌ای کار کنه اگر رو کوددا باشه که در واقع روی جی پی یوتونه جی پی یو لپتاپتون هم اگر از خانواده ۱۰۰۰ به بعده کودا داره ۱۰ مثلاً ۶۰ ۱۰۸۰ به حالا تا ۴۰۸۰ ۴۰ ۹۰ قبلش کودا وجود نداره براشون ام ایکس مثلا ۹صد و خورده ای ندارد آره جلوتر دستورشو بهتون می‌گ نه نداره فقط دیوایس رو تعریف می‌کنید که اگهویبل این دستور تک خطی که اینجا میبینید اگر کوتاهشویبله دیوایس بکنه کود کودا و توی نصبش هم حتما

دیر اومدید نصبشو اینجا شما دو نسخه کودا دارید یه نسخه سی پی یو از اینجا می‌تونید کجا بودیم عملیاتی هم که حالا میتونید روش انجام بدید به راحتی همون جبری و ساده اولیه است میتونید ضربه تنسوری داشته باشید با علامت اتساین این کار میکنه اگر علامت ضرب بزار این کار رو میکنه و حالا مول و متن مود هم که در واقع همینه و اینطوری تعریف میشن دیگه از ایناش میگذریم خب الان شما یه سنسور تک بعدی دارید و در واقع یک سنسور مثلاً n در n داشتید مجمو

رو حساب کردید با دات سام به شما خروجی که میده یه چنین فرمی داره تنسوری هست از کلاس تنسور و ولیو نداره ولیوش ۱۲ شما ولی خروجیش رو می‌خواین با دات آیتم میتونید خروجی بگیرید حالا اگه دیکشنری باشه دات ولیو با تنسور باشه با دات سایت که حالا میشه این خروجی سیستمتون اگر مدلتون مثلاً سافت مکس داشته باشه روش داشته باشه راحت میتونید با کلاس مورد نظرش رو بخونید یه بخش مهم دیگه که تو پایتون هست دیتا ست و دیتا لودر هاشن خب همونطور که میدونید یه دیتا ست های آماده ای هست برای حالا ویژه و کارهای مثلا تکست و اینجور چیزا و آماده است مثل ام نیست فشن ام نیست سی و اینجور حرفا و به شما راحتی میده که میتونید دانلود کنید این کار به سرعت

کلاه و نمی‌خواد حتماً کل اون دیتا ست رو آماده توی خود در واقع کامپیوتر خودتون داشته باشید تو درایوتون حالا با این دو تا دستور شما اون دیتا سه تا رو میارید و حالا مثلاً من ام نیست رو می‌خوام با یه دستور راحت خود پایتورچم تمامی اینا رو داره یعنی این کدها رو من دقیقا از سایت خود پای ترش برداشتم که شما بتونید مراجعه کنید بهش روتش که حالا دیتاتونه اگر دیتایی دارید که تو پی سی خودتونه روت خودتون رو میدید که آدرس دیتا رو پیدا کنه اگه ترین تورو باشه حالا فال باشه دسترسی ها رو تفاوت میده خب حالا ام نیست هم فایل تست داره هم ترند داره لوکیشن ها رو برمیداره و یه ترانسفورم حالا در مورد ترانسفورم هم صحبت میکنیم ما فقط الان میخویم تو تنسور استفاده کنیم یعنی دیتایی که میاد تنسور باشه نامپ نباشه و حالا عکس یه ارای ساده نباشه حتما میخویم تبدیل به تنسور بشه

و بین صفر تا یک خود توتنسور این چیزا رو هندل می‌کنه دانلود نمی‌کنه مثلاً الان من زدم میتونید ببینید توی کامپیوتر من تو کش در واقع ترکم یه تیکه شو دانلود کرده شما میتونید دانلود نکنید بعد شما میتونید با فراخوندن در واقع اون‌ها دیتا ست بیاین حالا یه سمپلی ازش ببینید مثلا ام آورده بودم بزار من بزنم تا اینجا ران شه شما مثلا اول خود ایمیج میخونه بعد لیبلش رو میخونه بر اساس ساختار دیتا ست که داره و شما حالا میتونید هی هر بار که این چیز ران کنید میتونید نمونه های دیتا ست اولیه را ببینید و این از یه قسمت مهم دیگه که هست اینه که اوکی شما نمیخواین از دیتا ست که آماده است استفاده کنید

مجبوری دیتا ست خودتون رو داشته باشید که حالا تو تمرین از این بخش خیلی استفاده شده و شما باید یک دیتا لودری بنویسید که بتونید در واقع دیتاهای خودتون رو و لیبل‌هاشو بخونید این کار در واقع میتونید با کاستوم دیتا ستی که خود پای توچ نوشته اعمال کنید یه خانواده در واقع از خود دیتا ست تولید میکنه از کلاس دیتا ست اصلی که میتونید شما ازش استفاده کنید سه بخش مهم حالا اینیشیال و آیتم داره که در واقع دو تا آندرلاین بغل هر کدوم شروع میشن اینا تعریف شده است و توی خود دیتا ست میدونه هر کدوم چیکار میکنه لن در واقع کل تعدادتون رو در میاره و گت آیتم اینه که هر بار فراخونده میشه یه ایندکس خاصی رو میخونه حالا اگر عکسه میره ایندکس اول مثلا پوشه ایمیج میخونه به اضافه لیبلش و حالا شما میتونید این وسط یه

یک عکس دارید و می‌خواین بخونیدش ولی مشکلتون اینه که هر پوشتون یک سایز مختلف دارند یا حتی توی پوشه سایز عکساتون فرق داره شما می‌خواین همه دیتا ست در واقع می‌خونید همه مثلاً عکس‌های ۲۲۴ در ۲۲۴ باشه شما میتونید با تعریف کردن ترانسفورم که اونجا قبلا فقط تو تنسور داشتیم ری سایز و پد انجام بدید که همه عکساتون یک سایز بشه از تغییر نکنه حالا بالای بغلش سیاه میکن بهش میگن پدینگ کردن که در واقع اون عکس فقط شیپش تغییر کنه میتونید لیبلتون رو حالا تغییر بدید مثلا اگر استرینگ هست مثلا کلاس هاتون بر اساس سگ و گربه و ایناست به عدد تبدیلش کنید بین مثلا صفر تا ۱۲ ۱۲ کلاسستون رو بذارید و حالا

بخش مهم دیگه‌ای هم که توی تمرین ممکنه ازش استفاده کنید اینه که در واقع آگمنتیشن انجام بدید خب شما مثلاً حالا من همه چی رو عکس توضیح میدم بعد شما یک دیتا ستی دارید ۱۰ هزار تا عکس داره ولی مدلتون مثلا رزنت ۵۰ هست براش کمه این ده هزار تا عکس برای در واقع ترین کردنش از یک طرف هم با مقوله داریم حالا آشنایی داریدزیشن ما میخویم در واقع مدلونزیشنش بره بالا یکی از روش هاش آگمنت کردن در واقع ورودی مسئله است شما میتونید مثلا اگر یک عکس سگ دارید میتونید اینو به روش های مختلف کپ کنید روتیت کنید فیلیپ کنید رنگش عوض کنید که در واقع مدلتون خیلی بایاس نشه روی یک فیچر خاص و در واقع هدف کلا مسئله تو تغییر کنه شما

در واقع با فرا خوندن حالا ترانسفورمرهای مختلف یا کلاً به صورت حرفه‌ای استفاده از لایبری آلبوم اتیشن در واقع آگمنتیشن رو انجام بدید خب حالا یه روش در واقع مختلف برای بالا بردن جنریزیشن میتونه کسی بگه به جز آگمنت کردن حالا جلوتر در مورد اپتیمایز که صحبت میکنیم حالا در مورد ال تو وان شنیدید مطمئنا نشنیدید در واقع میاد حساسیت مدل رو کاهش میده در واقع از شدت پیچیدگی محیط مدلتون کم میکنه ترشولدی میزاره بین کلاس ها و ممکنه در واقع دقت ترینتون یک مقدار کم بشه ولی عوضش چنینزیشن خیلی بهتری داریم

یه راه دیگه‌ای هم که داریم در واقع نویزی کردن لیبل‌هاست حالا یه سوال تمرینتونم فکر کنم همچین چیزی هست شما میاین دیتا ست رو می‌خونید دیتا ست ۱۰۰% تمیزه و برای شما خوب مناسب ممکنه نباشه برای اون مسئله‌ای که هست شما میاین مثلاً یک درصد از دیتا ست رو لیبلش هرچی هست رو عوض میکنید تو همین دیتا ست توی کاستوملود میکنید یه ای میذاید که اگر تو در واقع مود ترین هستید یه عدد رندوم تولید کنید اگر عدد رندوم کمتر از یک درصد بود لیبل نویزی بده این باعث میشه در واقع جنزیشن مدلتون مقداری افزایش بده دنیاهای ناشناخته آره دیتا اشتباه بهش میدیم باعث میشه دنیای ناشناخته پیدا کنه عواق اینا همه کانوکس های پیچیده ریاضیه

خب یک درصد کمتر از یک درصدشه اونقدر تاثیری نداره ولی باعث میشه از مینیموم‌ها حداقل کشیده شه بیرون ما همیشه سعی و تلاشمون اینه که از مینیموما بیایم بیرون بریم به سمت گلوبالا بعد لوکالا در واقع بیایم بیرون لوکال مینیموما رو خارج بشیم حالا میایم لرنینگ ریتمون رو بازی میکنیم اپتیمایزرامون یه قسمتو هندل میکنن یه قسمت هم اینه که دیتا ستمون یک مقدار خیلی ناچیزی نویزی باشه باعث این کامکس های پیچیده ریاضی که داره سعی میکنه گلوبال مینیمم پیدا کنه به نقاطی برسه که تا الان نرسید لیبل زدن که ما داریم لیبل داره اگه دیتا ست لیبل نداشت خب بستگی داره دیتاتون چیه اگه ایمیج باشه خب یه لایبری های هستند برای در واقع لیبل زدن عکس حالا

باندریباکس بکشی سیگمنت کنی هرچی خواستی یا فقط پوشه بندی کنی مثلاً سگ دیدی بزنی ۱ مثلاً گربه دیدی بزنی ۲ خودش جدا کن تو هیچ کدوم از تمریناتو نداری چون فراهم کردن دیتا ست وقت خیلی زیادی می‌گیره و این هدف در واقع درس فایده نداره خب حالا که شما دیتا لودری دارید باید این دیتا لودر رو در واقع فرا بخونید و با استفاده از حالا سایزی که میگید و شافلی که براش تعریف میکنید لود میکنید من حالا که تعریف کردم یک کلاسی را برای دیتا ست میخوام کلاس رو فراخونی کنم و در واقع لودش کنیم چی چون هر بار فراش میخونی شما میخوای یهچ بهت بده نه الان هر

فرا می‌خونی یک بار اون کد میره ایندکسش سیو می‌شه براش می‌دونه چقدرش رو رفته مثلاً شما ۱۰ هزار تا عکس داری ۱۰۰ تا ۱۰۰ تا همین جا داره میره جلو مگه اینکه وسطش خودت تو دیتا لودرت یه عدد رندوم تولید کنی که هر موقع خواستی یه چیزو بیاره با اینا ترکیب کنه مثلاً ما تو عکسا یه کاری داریم به نام کاتن میکس شما گربه داری بهش میدی ولی یک چهارم عکس سگه کات کردید از یه عکس سگ انداختی توش این باعث میشه مثلا باز اون قدرتیشن بره بالا به فیچر های کلی تری نگاه کنه این باعث میشه شما یه عدد رندوم تولید کردی که اون سگه رو بیاری بیرون دیگه بندازی رو گربه این تو دیتا لودر تو انجام میشه ولی در کل یه کاری میکنه تمام دیتاها رو شما یه بار ببینید و یه گزینه هم داره فکر کنم ریپلیس حالا اگر اشتباه نکنم وقتی دیتاتون خیلی کمه مخصوصا تو کارهای پزشکی ۱۰۰ تا دونه عکس بیشتر نداری ورمیداری آگمنت

ترینو یه بار انجام میدی دفعه بعدی خب دیگه دیتا نداری مجبوری هرچی ورداشتی بزاری سر جاش دوباره شافل کنی یه وجه دیگه برداری آگمنت کنی و بزاری اینجور مواقع باید درصد آگمنتیشن ببری بالا که دیتاها دیگه هی شبیه هم نباشه هی تغییر کنه شافل هم که حالا میتونید برای اینکه ۱۰۰% تور کنید ولی برای در واقع تست و ولیدیشن میتونید شافل نکنید بعد که دیگه حالا با ایتریشن و اینا میتونید هیتریشن های مختلف بخونید ببینید در واقع چیکار میکنید دیگه از ایناش میگذریم ترنسفورم هم گفتم یه در واقع قسمتی هستش که تو دیتا ست تعریف میکنید که شما روی حالا ایکس و وایتون حالا ایمیج و لیبلش اعمال کنید مثلا من اینجا اومدم یه دستور نوشتم بیاد وان هات کنه در واقع لیبل هاونو که حالا خروجیش رو ببینید یه چنین چیزیه به

به من یک کلاس مثلاً ۷ بده یه وان هات ۷ میده مثلا و این هم در واقع یک مدله که ترانسفورم تارگت در واقع فقط رو لیبل‌ها اعمال می‌شه خب میریم بخش بعدی در واقع ساختن یک شبکه عصبی شما این تیکه کد رو اول هر کدتون بذارید و از این به بعد از دیوایس استفاده کنید به صورت خودکار اگر کوداتون باشه میره رو جی پی یو اگر نباشه رو سی پی یو ران میشه چرا چون خیلی مهمه هم شبکه هم در واقع ایمیج یا دیتاتون روی یک دیوایس باشه شما نمیتونید دیتاهاتون رو سی پی یو باشه مدلتون رو جی پی یو حتما باید روی یک دیوایس باشن که بتونید ران کنید در واقع رانم کنید خروجی این سیستم همیشه مال من حالا هستبل رو میزنه برای تعریف کردن یک شبکه حالا چه چیز باشه ام ال پی باشه چه سی ان ان باشه

در واقع بیاین از ماژول در واقع نورال نتورک ماژول استفاده کنید خیلی کار راحت میکنه این هم دوباره یه دونه اینیشیالیزیشن داره که شما میاین اون لایه‌های مد نظرتون رو تعریف می‌کنید که در واقع حالا مثلاً من اینجا اومدم از دو روشش نوشتم براتون شما میتونید یک فلتن تعریف کنید یک سیکوئنشیال همه لایه هاتون سیکونشیال بزارید مثلا میخوید از ۲۸ در ۲۸ یه دونه ورودی توه میخویم ۵۱۲ یه ریلو بخوره دوباره ۵۲ ۵۱۲ همینطور برید و یک تیکهارد این مسیری هستش که قراره فوروارد بره حالا اینجا ما یه هد داریم یه دونه اوت هم داریم ممکنه مولتی هد باشه مدلتون چند تا ورودی مختلف بگیره چند تا مدل رو به هم کان کرد بخواهیم بکنیم تو این فوروارد این انجام میشه تو بخش اینیشیال فقط وزن ها اینشال

که حالا اونم روش‌های مختلف وزنا رو می‌دونی چه جوری دیگه یا رندمن یا حالا خاویر و اینجور چیزاست که دقت‌های مختلفی برای کارهای مختلف داره یا سیکونشیال تعریف کنید یا نه شما اسم می‌ذارید با در واقع اسم‌هاشون مدلا رو اینشیال میکنید تو فوروارد فقط فرا میخوید ورودیتون ایکس هست بعد همینطور میره داخل لایه های مختلف و خروجیتون حالا هرچی که هست خارج میشه این از این اگر بخواهیم اون در واقع وزن اولیه رو روش مختلفی مثل حالا رندوم خاویر یا چیز بدید تو همین بخش اینت باید تعریف کنید که چی میخواین داشته باشید بعد که حالا کلاس در واقع مدلتون رو تعریف کردید شما باید اون مدل رو بسازید مدل را فرا میخونم در واقع اون کلاس را فرا میخونم و قرارش میدم رو دیوایس که قرار بده مدلتون رو روی جی پی یو حالا پرینت هم

لایه‌ها رو میگه چیز کنید در واقع ساختار شبکه رو هم ببینید پای ترش یه دونه لایبری داره فکر کنم اسمش سامریه نصب کنید دقیقاً مثل تنسو فلو بر اساس ورودی که می‌گیرید تعداد پارامترها وزنش و حالا چیزهای دیگه رو مشخص می‌کنه خب شما می‌خواین حالا مدلی که طراحی ورودی بدید یک ورودی رندوم میسازیم بر اساس ورودی مثلا مون بر روی دیوایس قرارش میدیم و فقط به مدل میدیمش دیگه به فوروارد و کال نمی کنیم کل همون مدلی که اینجا در واقع در نظر گرفتیم و ساختیم رو فرا میخونیم و حالا ورودی رو بهش میدیم شما میتونید روش سافت مکس رو بزارید تو خود مدل میتونید نذارید بعدا اعمال کنید سافت مکس رو بهش و حالا اون لیبل خروجی رو بگیرید حالا اینکه

هر کدوم از اینام چیه خب فلت اینکه هر ورودی بگیره بر اساس دایمنیشنی که مورد نظر شماست فلت میکنه در واقع اون ورودی لینیر که در واقع همون ام ال پی ساده است معروف‌ترین در واقع اکتیویژن فانکشن حالا الان مدل‌های سیلو و جیلو و اینا اومدن تاثیرات دیگه دارند حالا شما میتونید ان تا مدل رو به صورت سیکونشیال پشت هم فرا بخوانید ما تو هر مدل دو تا بحث پارامتر داریم یکی پارامترهای مدله که میشه همون وزن ها بایاس ها یک یک سری هم در واقع اون قضیه هایپر پارامتر هاست که سایز چقدر باشه لرنینگ ریت چقدر باشه اینا رو با هم قاطی نکنید حالا شما میتونید اگه مدلتون خیلی کوچیک باشه که فکر کنم تو تمرین های دستیتون داشته باشید میتونید بیاید در واقع ساختار و وزن های هر تیکه لایه تو رو با

دستورهایی مثل در واقع یه دونه حلقه بستن روی پارامترها خروجی بگیرید و یه بحث مهمی هم که حالا اینجا بهش پرداختیم اون فرم در واقع اون اتوگرت پایتورچ هست که همون فرایند محاسبه گرادیان برای حالا ماتریس‌های وزنتون که به صورت دستی شما میتونید این کار رو انجام بدید با در واقع فراخوندن یک دستور از بیشترین شده بک ورد شما ماتریس ورودی تو ایکس هست نیازی نیست گرادیان براش حساب بشه برای همین فراخونیم که این پارامتر ریکوردش رو ولی وزنتون رو میخوید گرادیان حساب بشه بعد هم که میخوید ضرب کنید در همون روش یه دونه اکسپوننشیال بگیرید در واقع حالا اینجا بخونید ریاضیاتش رو نوشتم برای محاسبه در واقع گرادیان وزن دو روش داریم یا وای و دات بکوارت کنیم میاد از آخر به اول میره و هر جا که گرادیان نیاز بوده تو ماتریس گرادیانش رو حساب میکنه یه بار

مشتق زنجیره‌ای بگیرید و دستی حل کنید و باز گرادیانش رو در بیارید که حالا من در مورد دیتر چند پایینتر صحبت می‌کنم اینجا هم دو تا روش رو در واقع مقایسه کردم و نشون دادم گرادیاناش یکسانه خب حالا شما می‌خواین یک تیکه از مسئله‌تون گرادیان نداشته باشه یا اون ماتریستون رو که تعریف کردید بدون گرادیان میزارید یا نه الان توی مرحله هستید میخوید ترینتون گرادیان حساب بشه ولی برای ولیدیشن نمیخواهیم حساب بشه و تو تستمون که کلا نداریم هیچی دو روش داره یا بیایم با یه دونه ترش نوگراد فراخونی کنیم و از اون به بعد توی در واقع اون حلقه ما هر کاری کنیم هیچ گرادیانی حساب نمیشه یا از دستور دیچ استفاده کنیم که گرادیان را در واقع محاسبه نمیکنه فرقی هم نداند با هم تا اینجا هیچ سوالی نیست

چیزهای ساده تند تند رد میشیم میریم حالا جلوتر ببین خب الان ترین داری انجام میدی یه بک میبینه گرادیان حساب میکنه شبکه آپدیت میشه شما هر ایپاکی که تموم میشه خب یه ولیدیشن میخوای دیگه تا اینجای کار چیکار کردی خب تو ولیدیشن ما نمیخواهیم گرادیان حساب بشه چون قرار نیست شبکه به روز بشه اتفاقی که میفته اینجا اینه که یا باید بزار حساب شه ازش استفاده نکنیم محاسبه الکی انداخت تو گردنش یا کلا هم خب مدلتون میخوای دیگه تموم شده مدل میخوای اکسپورت بگیری دیگه گرادی نمیخوایم دیگه از اونجا به بعد دیگه بدون گرادیان چیز حساب خب در مورد هایپر پارامترها که صحبت کردم لرنینگ ریت حالا میتونیم ثابت داشته باشیم یا براش در واقع اسکجول تعریف کنیم که حالا رینگ ریت حالا بر اساس معیار خاصی

باشه یا کسینوسی هی افزایش کاهشی باشه که در واقع ما از لوکال مینا خارج بشیم یه بحث هستش که شما می‌خواین در واقع اون لاس فانکشن رو چی تعریف کنید باز خب ماژول ان ان خودش یه تعداد زیادی فانکشن رو در واقع تعریف کرده حالا انتروپی کراس انتروپی و مدل های دیگه یه خوبی پای ترش اینه که به شما این در واقع آزادی رو میده که میتونید فانکشن های خودتون رو هر گونه ای که هست تعریف کنید حالا در فایل بعدی من یه داستان پیچیده هم براتون نوشتیم خودتون میتونید کار کنید حالا تو تنس فلو باید یه دونه کد بنویسید جداگانه که حالا فراخونی بشه بتونید تغییر بدید ولی تو پای همه چی دست شماست و خیلی تو کارهای تحقیقاتی میتونه کمکتون بکنه اپتیمایز هم که خوب اپتیمایز های معروف تو پایتون هستند حالا اس دی عدم دبلیو

و بر کارهای دیگه که حالا کدوم دقتش بیشتره دبلیو ادب فقط کنده به خاطر کندی ممکنه هیچ وقت به حد آخرش نرسه خیلی سریع میره ولی همیشه یه خطای ماندگاری اون انتها داره حالا عدم و عدم دبلیو دو مدل مختلف که تمرین فکر کنم بهتون دادیم که مقایسه انجام بدید باهاش ببینید چه جوریه که حالا فرا میخونید پارامترهایی که میخواد براش گرادیان حساب شه رو بهش میدیم که معمولا پارامترهای مدلمون هست لرنینگ ریت بهش میدیم اگر حالا بخواهیم اون عملیات ریگولاریزیشن انجام بشه برامون حالا ال وان ال تو اینجا مشخص میشه که یک مقدار از در واقع پیچیدگی محیط کم مدلمون کم کنیم دقتش بهتر

و این از این شما برای تو پای ترش برخلاف تنسور که فقط یه مدل دات فیت میزنید و خودش تمام اقدامات را انجام میده شما اینجا مجبورید یک حلقه‌ای برای ترین و یک حلقه برای حالا تست یا ولیدیشن به صورت جداگانه بنویسید تو این حلقه شما دیتا لودرتون رو میارید مدل رو میارید حالا لاس فکشن و اون اپتیمایز های که مد نظر هست و حالا هر چیز دیگه که اضافه تعریف کردید از دیتا لودرتون حالا بچ و اون ایکس مورد نظر رو اون بچ که گفتید چرا چیز میکنیم ما اینجا یه بچ فرا میخونیم یه ایندکس بچ داریم که با میاد میگه وجه صفر وجه یک دو سه و حالا اون ۶۴ تایی که فرا میخو اینا رو من از قبل رو دیوایس قرار دادم اگر ندادم شما نداده بودید اینجا اولین مرحله اینه که ایکس رو بزارید رو دیوایس حالا جی پی یو سی پیوتون وای

E:\courses\LangChain Project\main root\data\Pytorch_Session_transcript_part2.txt

همینطور چرا چون مدلتون رو اون دیوایسه ایکس رو به مدل میدیم پردیکشنش در میاد لاس فانکشن رو حساب میکنیم حالا کلاس فانکشن حساب کردیم رو لاست باید یه بک وارد بزنیم دیگه قبلش میایم اپتیمایزرون زیروگرت میکنیم تمام گرادیان های که از ایپاک قبلی بوده رو صفر میکنیم در واقع هر بخش گرادیانش با بچه قبلی فرق داره دیگه شما صفر میکنید لاس و بکوارد میکنید اپتیمایزر تو یک واحد استپ میشه در واقع اعمال میکنه و از های جدید به مدل اضافه میشه گرادیان افزایش پیدا الکی دروغ یه گرادیانی برای هر ماتریس چیز میکنه ببین شما ماتریس گرادیان شما هر بار که بار میکنید گرادیان هر خونه حساب میشه استپ که میکنید اعمال میشه به چیز در واقع میاد وزن مثلاً یک یک و مثلا یه ماتریس

سه بعدی داشته باشی به اندازه دو دهم قرار مثبت تغییر کنه دفعه بعدی این دو دهم تغییر کرده قرار نیست دوباره تغییر کنه پس صفر مگه اینکه یه بعضی موقع‌ها یه مشکل پیش میاد شما قراره که در واقع یه مدلی رو ترین کنید ولی جی پیوتون نمیزاره مثلا جی پی یو من الان ۸ گیگ ویرم داره من اگه یه مدل بسیار بزرگی رو لطف کنم و بخوام ترین کنم که هفت گیگ از در واقع چیز منو گرفته ویرم جی گرفته نمیتونم سایز مناسبی رو انتخاب کنم و مجبورم دو خب الان بذاریم دو چه مشکلی پیش میاد اصلا تفاوت سایز سایز چه اختلافی ایجاد میکنه نه در واقع اینطوری که خیلی پایین باشه روند خیلی نویزی میشه چون هر داده یه حرفی رو میزنه

و مدل هی باید بپره بین این داده اون داده خیلی نویزه فول بچم دقت درستی نمیده حتما بهترین دقت و فول بک نداره اتفاقا شما بیاین مثلاً چند تا مدل مقایسه کنی نمودار رسم کنی اون وسط مسا بچه ۱۲۸ ۲۵۶ بهترین دقتو داره چرا چون در واقع هم از خاصیت نویزی بودن استفاده می‌کنی نویزی بودنم برای ما خوبه چون اگه تو مثلاً به جای که هزار تا داده رو ببینی ۲۰۰ تا رو دیدی دفعه بعدی0 تای بعدی که داری نگاه میکنی باعث میشه که در واقع اون خاصیت نویزی بودن از یک مسیر بنداز یه مسیر دیگه و حالا تو اون کانوکس پیچیده اش به جای بهتری میتونیم برسیم و خب تغییراتمون هم بزرگتر میشه دیگه هرچی بچه ها کوچکتر باشه تغییرات بزرگتر احتمالش است آره چون نویزی شده دیگه

خب حالا الان چیکار کنیم که نمیتونیم بچه مثلاً بزرگتر از دو بدیم بچه دو که خیلی نابده دیگه مدل هیچ وقت نمیشه همه دیتاها رو میاد مثلا هر ایپاکتون مثلا ۲ میلیون وجه داره خیلی روند که طولانیه خیلی هم که نویزی حرکت میکنیم چرا چون هر دوتایی که وداره میاد یک بار بکوارد میده اون بک و باید حالا بیاد اعمال کنه چیکار میکنیم چون ممکنه الان تو تمرینتون شما به این بخورید چجوری یعنی اصلا دیتای لود کردنش مهم نیست اون بچه مهمه مدل حجمش خیلی بزرگه مدل مثلا نزدیک ۵۰ میلیون پارامتر داره

۵۰ ۲۴ میلیون پارامتر دارد لودش می‌کنی ۴ گیگ میره که تاثیر نداره آره شما میاین میگید آقا من از خاصیت جمع شوندگیش استفاده می‌کنم مثلاً بچه سایزش دوئه شما میخوای ۱۶ هشت بار روند رو ادامه میدی لاس فانکشنت همینطور داره هی بکوارد میشه اون گرادیانه ماتریسه صفر نمیشه دیگه هی افزایش افزایش یک بار این رو اعمال کنی و دوباره صفر میکنیم حالا خودش روش های خیلی خاص خودشو داره اکوملیشن گرادیان اسمش و روش های مختلفی داره بعضی ها میان نرمش میکنن تقسیم میکنن به تعداد حالا اون دیتا بچه هایی که برداشتن بعضی

چرا حالا تقسیم می‌کنند به خاطر اینکه اون گرادیان اکسپلودینگ اتفاق نیفته یهو یه گرادیان خیلی بزرگی رو بکوارد نکنیم به داستانمون بعد حالا اینکه دیگه برای نمایش میاد حالا اگر باقی مونده در واقع بچه‌ها به ۱۰۰ صفر بود میاد یه دونه در واقع لاست رو بهت نشون میده که لاست چقدره توی تست لوپمون هم دقیقا همین روند رو داریم با این تفاوت که ترش فراخونی میکنیم چون نمیخواهیم گراین حساب شه از اون طرف اپتیمایزر و بکوارد و اینا نداریم فقط میدیم به مدل اون پی که در میاد رو یه لاس حساب میکنیم و ازش یه آرگ مکس مثلا اینجا گرفتم که کلاسش در بیاد مقایسه میکنه ببینه آیا این با لیبل ما یکسان بوده یا نه که یه اکیرسی برای شما تولید کنه این از این و در نهایت هم میرسیم به اینجا که خب حالا

تعریف کردیم اپتیمایزر رو تعریف کردیم تعدادی پاک مورد نظرتونو تعریف می‌کنیم حالا می‌خوایم سریع باشه ۴ یه حلقه مینویسم به تعداد ایپاک ها ترین لوپ و تسلوپ رو هی فرا بخونیم دیتای مورد نظر ترین و تست رو بهش میدم که جدا از همه مدل حالا و بهش میدم یه جا رو ما آها ببینید آره من اینجا عوض کردم الان میگه آقا دو تا روی دیوایس نیست یکیش رو کودا یکیش رو سی پی یو نمیتونی ران کنی اینو خودم و در نهایت هم که مدلتون ترین بشه شما باید سیوش کنید یا وزن ها را سیف میکنید یا کل مدل رو اگر استیت شد سیف کنید فقط وزن ها را سیو میکنه اگر کل مدل رو سیف کنید کل مدل سیف میکنید و ما باید بدید تحویل بدید دیگه ما در واقع شما این تیکه رو بعد از هر تمرینتون

لطف کنیم رو دیتای خودمون که جدا از دیتاهای شماست مثلاً ران کنیم و حالا اگه اکیرسی خاصی مد نظر ما بود بهش برسیم آره کلاً ساختار استراکچر و همه اینا رو فقط یه دیکشنری از وزنا آره خب از اینجا سوال نیست گذاشتم تو اسلاید بعدی توی فایل بعدی میبینیم دات pth این برای پایتون اچ فایو هم میتونید سیف کنید آره اچ فایو میزنیم بعد حالا اینکه یه مدل سیف کردن حالا اگر بخواهید واقعا تو پروژه هاتون از یه مدل استفاده کنید مدل ترین کردید و نمیخواین مدل خیلی اینطوری باز باشه چون الان شما

فراخوانی کنید مدل وزن داشت بره بشینه روش و حالا مدلو هی بگه آقا بزار رو ترین باشه بزار رو ایول باشه اکسپورت می‌گیریم ازش حالا روش‌های خیلی مختلفی از تنسور آرتی هست اونیکس هست شما میاید در واقع یک بار با استفاده از یه لایبری به نام اونیکس مدلتون رو فراخونی میکنید بهش میگید آقا ورودی ها میتونه متغیر باشه حالا ثابت باشه و یه اکسپورت یک فایل تک به شما میده که شما میتونید ببرید بزارید مثلا بین مدل های دیگتون روی رباتتون روی حالا سیستمتون و فقط ازش ورودی و خروجی بگیرید دیگه به ساختار مدل نمیتونید دست بزنید که مثلا یه جا اشتباه پیش بیاد ساختار مدل عوض بشه وزننا عوض بشه یه اشتباهی این اکسپورت های که حالا گفتم اگر پروژه بعضی هاتون رباتی و اینجور چیزاست کاربرد داره بستگی داره سنسور آرتی رو آر تی چیه اون

مدل بهت میده دیگه بهش راحت ورودی میدی فقط خروجی رو میده بهت هیچ کاری نمیتونی رو مدل بکنی فکر کن یه شرکتی دارید و اون شرکت میخواد یه مدلی رو بفروشه شما اون اونیکس رو در میارید دیگه کسی نمیتونه ببینه اونیکس چه شکلیه و وزنشو تغییر بده رو هرچی که بگی سی پی رو جی پی یو رو موبایل پایتونه دیگه یه سوال نه هیچ فرقی نداره همه چی یکسان تو درایو بعد حالا یا دانلودش کنی یا حالا در اشتراک خب این تا اینجا بود در واقع برای ساده که تمرین الانتونه و فکر نمیکنم هیچکس هم بره سراغ پایتون

سخته یه کوچولو اینجا شما می‌نویسی اونجا یه مدل داد فیت میزنی یه اپتیمایزر ۱۰ تا چیز میگیره ولی خب باید توی اون اگر بخواهید تغییر ایجاد کنید باید مهارت کد نویسی بهتری داشته باشید که بخواهید چیزهایی از البته الان خیلی پیشرفت کردن همشون سعی میکن در رقابت با هم یک چیز رو ارائه کنند ولی اگر ضبط میشه دیگه همه چی الان یکسانه ولی حالا انتهای این میبینیم نالج دیسلیشن آورده ولی همه چیش دست شماست لا فشن که تعریف میک نحوه ترینینگ که میخوای همه چی دست شماست و پایتون این در واقع دسترسی آزادش اینجاست که این صفحه هیچی دیگه سوالی نیست بریم بعدی خب حالا میدونم یه

تموم نشده بگم یه ببینیم با هم چون تمرینشو ما میدیم برای همین امشب گفتم قراره تمرینشو من بدم ددلاینش خیلی بده ها ولی دکتر گفتن که فرصت داشته باشید روش فکر کنید کسی که دوست دارید آره چون ممکنه بعد دوباره من بیام ولی نمیدونم فرصت بشه دم تمرینتون برسه یا نه میخوین بگم اگه وقت هر کی حالا اگه دوست داشت میتونه بره خب تا اینجا پس ما فهمیدیم اپتیمایزش چیه دیتا ست چجوریلود میکنیم و حالا اون مدل رو چجوری تعریف میکنیم از اینجا به بعد حالا ما میخویم مدل ببریم ام ال پی که بود

تنها تفاوت‌ها اینه که حالا باید کانولوشن بزنیم مکس پول بزنیم حالا انواع اینجور چیزا هدفمون توی این کد در واقع اینه که یک بار این اقدام رو بر روی دیتا ست سیفارتن انجام بدیم قبلی رو بردارم از رو جی‌پی‌یو خوب در واقع ۱۰ تا کلاس داره که عکس ها ۳۲ در ۳۲ میتونید بگیرید موضوع خوبی هم میبینید نداره و هدف کلاسیفیکیشن در واقع این ده کلاس هست هم داریم که ۱۰۰ کلاسسه و خیلی خوب دقت بهتری اینجا ما چند تا هدف داریم یک زدن یک شبکه در واقع از ابتدا بهش میگن از خودتون شبکه رو تعریف کنید از صفر با وزن های رندوم مدل رو ترین کنید یه حالت داریم نه بیایم

استفاده کنید و فقط اون تیکه کلاسیفیکیشن آخر رو در واقع استفاده کنید ترین کنید یا مثلاً پریترینتونو فاینتیون کنید کلاً رو دیتا ست خودتون که انواع مختلف یا نالجیستریشن که حالا انتهای این میگم یه رابطه بین استاد و دانشجویی داره استادی میاد سر کلاس دانش خیلی بالایی داره شروع میکنه یه منطق یک کتاب رو به زبان ساده تر برای شما گفتم و شما از اون منطق ساده تر یاد میگیرید تفاوتش در اینه که به جای که لاس فکشنتون بیاد از تو لیبل ها استفاده کنه برای محاسبه ارور میاد تیکه از خروجی مدل قوی تر رو استفاده میکنه این باعث میشه مدل کوچکتر توانایی بهتری پیدا کنه که خب خیلی استفاده داره دیگه شما فکر کنید یه مدل ۲۳ میلیون پارامتری قراره روی گوشی موبایل ران کنی نمیشه که میای با این روش ها یک مقدار اون مدل

۳ میلیون پارامتری رو دقتشو می‌بری بالاتر و از اون استفاده کن که حالا جلوتر خب مثل دفعه قبلی دوباره من باید یه ترین لوپ و تستلوپ بنویسم که همونه فقط نحوه در واقع چیزها تغییر می‌کنه شما می‌تونید مثلاً یه کوچولو دست ببرید اون لاستون اگر سایزتون کوچیک بود یا مثلا میخوید به صورت بار پر شه که داره مثلا چند درصد چند درصد میره جلو این وگرنه این کد بزارید تو کدتون تا آخر تحصیلتون همین یه کد کافیه برای همه چی بعد اینو تعریف میکنیم سی ان ان رو باید تعریف کنیم که حالا میایم دیگه میایم بر اساس چیزایی که هنوز نخوندید کانولوشن رو در واقع اعمال میکنیم رو عکس ها به صورت پنجره ای حرکت میکنیم و دلیلون چیه که کاندیشن بهتر از ام ال پی رو عکس

لوکال به هر قضیه نگاه میکنه این لوکال نگاه کردن مهمه شما نمی‌تونید فردا بیاین هر پروژه‌ای که حالا دارید تو ارشدتون رو بدید به مدل سی ان ان اگه قضیه لوکالیتی مهمه میتونید بدید اگه لوکال مهم نباشه یا داده هاتون هیچ ربطی به هم نداشته باشن نمی‌تونیم از مدل های سی ان ان استفاده کنیم دقتش خیلی پایین تره اونجاست مثلا میتونید استفاده کنید یا حالا اگر بشه ترانسفور یه محاسبه داره اینکه چنل ورودی تو چی باشه چنل خروجی چی باشه کل سایزمون چی باشه حالا اون پامون قضیه اش چیه چنل ورودی که خوب همواره عکس ورودی تون آر جیبی یا حالا مونوکروم تک رنگه یا یک یا سه چنل های خروجی رو شما به صورت خیلی آروم میتونید افزایش بدید مثلا از سه به ۱۶ ۱۶ به ۳۲ ۳۲ ۶۴ همینطور برید بالا یا میتونید پله ای بپرید مث از سه

بمونید بعد یهو برید ۶۴ دوباره چند لایه بمونید حالا بستگی به اون فیچرزایی که از تصویر میکشه بیرون سایزمون هر چقدر بزرگتر کنیم اون لوکالی رو بیشتر نگاه میکنه فضای بیشتری نگاه می‌کنه خب اگه عکستون حالا اینجا ۳۲ در ۳۲ ابعادی نداره که من بخوام ولی مثلا عکستون اگر ۶۴۰ در ۶۴۰ باشه بخواهیم مثلا کل سه بزنید روش چیز خیلی خاصی در نمیاد ۱۱ معمولا میزنم روش که اون قضیه لوکال رو بیشتر دقت کنید چون خیلی پیکسللاش زیاده حداقل هیچ چیزی هیچ آبجتی در واقع تو اون ۹ تا پیکسل دیده نمیشه هیچ فیچرز نداره پینگ سیم حالا بزنید یا پینگ صفر یک اینا بزنید باعث میشه حالا اون محاسبه ابعاد عکستون به هم نریزه و یه دونه هم داریم به نام استرا فکر کنم که این شیفت بین ویندوهایی که در واقع داریم میریم جلو خب

کانگولوشن می‌زنید یه رلو می‌خوره روش یه بحثی هم داریم به نام حالا دراپ اوت دو بعدی چه تفاوتی داره با دراپ‌ها به جز اینکه دو بعدیه ببین شما میتونی یه عکس فرا بخونید و حالا تک پیکسل‌ها رو خاموش کنیم چه تفاوتی داره که تو یه عکس سه تا پیکسل خاموش باشه عادی زدیم و هیچ کاربردی نداره و الکی مثلا اون پیکسل ها رو سوزوندی مثلا اطلاعاتشو ما اگه بخواهیم واقعا از استفاده کنیم توی در واقع سی ان ان یا باید بیایم در واقع دو بعدی استفاده کنیم یا از بلاکش استفاده کنیم که سه بعدی میشه و در واقع میاد یک ناحیه را یهو آف میکنه یک فیچرز رو از تصویر یهو قطع میکنه و باعث میشه که یک مقدار مثلا حالا اون قضیه های که دنبالشیم

مکس فولم که در واقع ابعاد رو کوچیک میکنه بچ نورم که حالا بر اساس اینه که خروجیتون رو نرمالیزه کنه و همواره هم در واقع خروجی اون چنلات این رو به همین صورت می‌بینید ادامه دادم یه مدل سیکوئنشیال چند تا اومدم اینپ براتون نوشتم که هرچی کی میشه بعد فلتن میشه بشور میخوره روش دوباره یه ام ال پی و دراپ اوت وی هم ادامه پیدا میکنه آیا این بهترین ساختاره نه بعد امتحان کنید تجربه ای میرسید به اینکه خیلی بهتر چه چیز کنید مثلا یکی از کارا اینه که آقا بعد از اینکه سی ان ان تو خروجی داد بیش از دو لایه دیگه اتفاق خاصی نمیفته معمولا دیگه ته تهش دو لایه اینجا سه لایه گذاشتیم دو لایه دیگه پشه و اگر خیلی مثلاً

خروجیتون بزرگ بود می‌تونید حالا به جای اینکه مرحله آخر یه مکس پول بگیرید حالا از ادپتیو یا گلوبال اوریج پولینگ استفاده کنیم میاد تمام لایه‌ها رو یهو سفت می‌کنه یا تمام پنجره رو سفت می‌کنه یکی می‌کنه مثلاً یه هفت در هفت داشته باشید در ۱۲۸ یهو میکنه فقط یه بردار ۱۲۸ تایی و خب یهو دیتاها رو خیلی کم می‌کنه دیگه و ماکس بین تمام اون خونه رو میگیره این کار معمولا انجام میشه بعدش که یه فوروارد مینویسی براش و مدلتون آماده است بعدم که مدل رو که ساختید رو دیوایس قرار میدید تمام پارامترهاش رو میتونید دو تا نکته که هست اینکه اوکی ما مدل رو ساختیم میخویم یه پارامترهایی اصلا ترین نشه این کجا در واقع کاربرد داره تو اون قضیه پیترین اینا شما یه مدلی دارید اومدی فول کانکت آخرش رو عوض

باشه اون فقط اون تیکه رو گرادیانشو تورو می‌کنی بقیشو آف می‌کنی که دیگه وقتتم نگیره بعد اینم بریم بعدم که میتونی در واقع سامریشو ببینید چه جوریه من الان خب یه عکس ورودی گرفتم و خروشیم ده تاییه میام تعریف می‌کنم با عدم هم هست در واقع همون ساختار هست تروپی که برای چیزه هم که در واقع همون رگولاریزیشن ال تو در واقع میاد یه مقداریزیشن رو بهتر میکنه اور فیت شدن به داده ها کم میشه و دقتتون باید افزایش بده این مثلا این کد اینطوریه که هر که ۳۲۰۰ تا رو یه لاس فانکشن به من اعلام میکنه در نهایت هم یه اکیورسی رو داده های ولیدیشن شما حالا دوست دارید اینو یه مدل دیگه نشون بدید دیگه ویژوالیزیشن

داستان هر کاری دوست دارید می‌تونید انجام بدید خب قبل اینکه بریم روی ولیشن دیگه چیکار میتونیم بکنیم برای بهبود داستان بهترین لاست فانکشن رو پیدا کردید اپتیمونم بهترینه ساختارمونم نمی‌تونیم تغییر بدیم دیگه یه چیزه پایپ پارامتر داری چی تغییر دیلرنینگ ریتا رو میتونی عوض کنی در واقع سایز میتونی عوض کنی و شما یه مدلی گذاشتی ۵۰ پاک بره خب از یه جا به بعد دیگه دقتش افزایش پیدا نمیکنه و فقط از اینجا به بعد چه اتفاقی میفته اور فیت میشه رو داده ها شما میتونید تابع های دلخواه تعریف کنی و بیای این رو قطعش کنی اگر

۵ ایپاک میزان اکیرسی کمتر از یک درصد ترشولد بزارید تغییر کرده دیگه بسه ۵۰ تایی پاک نره چیزی نیست مثلاً من الان مدلی دارم که ۹۰۰ تا هزارتایی پاک داره میره هزار ای پاک دو هفته طول میکشه بره آره رو ولیدیشن اکیورسی میگیرم یه بچه ۱۰۰ تایی که ورمیداره میگم مثلا میگم دقیقا چند درصد شبیه اون داستان مائه میگه مثلا ۸۵ درصد ۸۹ درصد ۹۲ درصد همینطور میره بالا نه داره میتونید استفاده کنید میگم الان خیلی اینا گسترش پیدا کرده یه سرچ بزنی هم خود پایتورش داره هم میتونید کتابخونه های دیگه رو با پای ترش قاطی کنی همه رو میتونی استفاده این دیگه خیلی بیسیکشو من آوردم

که فقط یه صحبتی در مورد همه چی کرده باشه تفاوتش اینه که الان این اقدام را انجام بدی مثلاً ترینت ۷۲ درصده ولی ولیدیشن ۵۳% چرا چون داره اول یاد میگیره خیلی شبیه اوناست دیتایتره ولی ولیدیشن ممکنه اصلا یه دیتا ست دیگه باشه آره مثلا تشخیص یه آبجکته یه تشخیص یه رنگه کار شما میتونید دو حالت بیاید دیتا ست اولیه را بیاری تقسیم بر مثلا ۸۰۲۰ بکنی عین همن دیگه یه شافل هم کردی تقسیم بر هشت بیست کنی ۸۰ درصدشو بزاری برای ترین ۲۰ درصد بزاری دقتت خیلی میره بالا بعد مدلی که داری نباید مثلا هفت هشت درصد دقت داره به کارفرما یا استاد میدی اون رو دیتای خودش تست میکنه میگه که ۸۲ درصد چرا چون دیتاهای اون با دیتای تو فرق داشته

بهتره که مثلاً اگر کلاس‌هامون خیلی زیاد نه کلاسمون چه جوری بگم امکانشو دارید که دیتا ست‌های مختلف داشته باشید یه تیکشو اصلاً کلاً ندید بهش بذارید برای تست و ولیدیشن حالا جنسشم ممکنه خیلی شبیه اونا نباشه مثلاً فکر کن رنگو میخوای تشخیص بدی رنگ این میزو امروز تو این نور عکس گرفتی فردا توی نور دیگه عکس گرفتی و نور رو رنگ خیلی تاثیر داره شما یه شافل کنی بهش بدی جفتشو دیده برای همین تو ولیدیشن جفتشو اگر باز ببینه دقت خوبی بهت میگه ولی اگر نه یه روزشو بزاری برای ولیشن یه روزشو بزاری برای تست و ترین یهو میبینی دقت خیلی پایین بالا شده اونجاست که باید بیای بری حالا چیکار کنی که در واقع جنزیشن توبری بالا آگمنتات عوض کنی نور یکم بازی کنی مثلا خودت باهاش و کارای دیگه که بخواهیم توضیح حالا مدلتونو شما رفتید و

می‌خواهیم دقت نهایی را گزارش کنید یه وریدیشن حالا می‌تونید بنویسید که حالا بیاین دقت همه چیزها را به شما بگه من اومدم یه بار روی در واقع دیتای ترین ولیدیشن گرفتم یه بار روی خود دیتای ولیدیشن و یه بار تست فقط کردم که ببینم درصد چطوره می‌بینید که مثلاً الان دو تا چهار تا پاک رفته چقدر رفته پنج تا پاک رفته خب اتفاق خیلی خاصی نیفتاده ولی اگر بیشتر بزارید اختلاف گام بزرگتری میشه بعد شما میتونید این رو به انواع مختلفی گزارش کنید مثلا یه بحث دیگه اینه که آقا تو هر کلاس چقدر خطا دارم من الان من ۱۰ تا کلاس دارم و چند درصد خطا دارم مثلا میبینید که مثلا هواپیما رو ۷۴ درصد دقت داشته ولی اصلا گربه و پرنده رو نداشته چرا چون هیچی یاد نگرفته در موردش و از اونور مثلاً ترا ۸۳ درصد مثلا بخش بعدیمون

در واقع ترنسفر لرنینگ استفاده بکنیم شما دوباره دیتا ستی رو میخونی میای به با استفاده از اون ترانسفورمرا که گفتم ترانسفورما رو تعریف می‌کنی ریسایزش می‌کنی رندوم هوزنتال فیلیپ میزاری اینا یه آگمنته به یه درصدی اعمال میشه روی در واقع دیتا ست که میخونی و تو تنسور هم که فقط میبره صفر تا ۲۵۵ عکس رو بین صفر تا یک و حالا تستمونم که حالا میمونه فقط میخوام ری سایز بشه تو تنسور بشه نمیخوام آگمنت چیز دیگه داشته باشه میام تقسیم میکنمش و حالا دیتا ستش لود میکنیم که اینم چیز خاصی نداره یه مدلی رو باید فرا بخونیم خب مدل چجوری مدل فرا میخوانیم یا باید وزنی داشته باشید که خودتون قبلاً ترین کردید میخونید میاد یا باید این مدل رو از یه جایی تو اینترنت بردار

خود پای ترچ مثل تنسوفلو مثل کراس الان خیلی از مدلا رو ورژن‌های مختلف براتون قرار دادم شما این رو میارید مثلاً الان من رزنت ۵۰ رو وزناشو از روی خود پایتون فرا خوندم روی چی ایمیج نت ورژن ۱ الان ورژن دوشم گذاشته دقتش مثلا یه مقدار رفته بالاتر این یه مدله یه مدلم هست در واقع یه لایبری برای هاگینگ فیس اگه اشتباه نکنم به نام تی بعد تیم اومده گفته من فقط کارم اینه که تمام مدل های پریترین ورژن های مختلف رو در اختیار بقیه بزارم هم با پای ترش میخوره هم بتونید صفر میخوره شما میتونید با تیم برید یک ورژن خیلی خاصی از یه دونه مدل پریترین رو فرا بخونید و بیاریدش تی آی دبل خب من مدل میارم به عنوان بیس مدل من هستش فالس میکنم تمام پارامترهاشو گردش رو که نمیخواهیم

و یک سیکوئنشیال به عنوان لایه اف سی میندازم ته داستانمون که در واقع اون کار این تیکشو ما می‌خوایم ترین بشه اون کلاسیفیکیشن شما فرق داره مثلاً ایمیج نت رزنت ۵۰ فکر کنم هزار تا کلاس داره نمی‌دونم همچین چیزیه کلسیفیکیشن ۱ مثلاً به ۱۰۰۰ کلاس است ۱۰ کلاسو باهاش در نظر بگیرید و میای حالا اون ۱۰ کلاس رو انجام میدیم و آره آره یه شرکت های بزرگ مثل گوگل و اینا میان روی جی پی یو های خیلی زیادی که دارن میلیونی با دقت های خیلی خاص این در واقع این مدل رو ارائه میکن و ترین میکن یه مسابقه بوده دکتر گفته فکر کنم هنوز نرسیده میگن یه مسابقه است یه چند سالی برگزار می‌شده اینکه آقا دقت مثلاً شبکه های ویژه رو چجوری ببریم بالا هر سال هی شرکت های در واقع گروه های مختلف میومده مدل خودش می‌داده

رزنت میره جلو تا دیگه به جایی میرسند که دقتش فکر کنم از انسان بالاتر میشه ۹۹/۷ ایناست دیگه مسابقه تموم میشه و میگن بسه دیگه از اینجا به بعد هرکی هم میومده خب مدل خودشو ارائه می‌کرده مثلاً رزنتا چیز دارن رزجیال بلاک دارن از از یک لایه میره به لایه دیگه و باعث میشه اون گرادیانامون مثلا ونیش نشه اکسپلو نشه و هر کسی میوم یه مدل ارائه میداده الان خوب خیلی مدل داریم که پرینترین رو دیتا ست های مختلف و شما میتونید از اونا استفاده کنید این الان فقط ما از قسمت فیچرست استفاده میکنیم قسمت اول اون کانولوشن از اونجا به بعدشو شما برای خودت یه دونه در واقع فول کات میزاری به تعداد کلاس که میخوای حالا کلاسسیفیکیشن یا از همون فیچرز استفاده میکنیم مثلا چی

E:\courses\LangChain Project\main root\data\Pytorch_Session_transcript_part3.txt

مثلا رزنتا فکر کنم ۲۰۴۸ خروجیشه خب بعد از اینکه گلوبال اوریج میخوره یه فلت میشه یه ۲۰۴۸ در واقع بهت میده شما میتونید کانکشن یا نه مثلا ورودی چی بوده مثلاً ۶۴۰ در ۶۴۰ فقط این لایه فیچرز داره اینو مستقیما سیف کنیم پروژه پروژه فرق داره مثلاً پروژه من عکس ورودی ربات رو که میگیرم برای من نیم صفحه عکس ۶۴ در ۶۴ سیف کنم حجم بالایی داره میدمش به یه موبایل ورژن سه میارتش به ۹۹۶ تا دونه اونو سیوش میکنم نگه دارم یه بردار خیلی بهتر از یه عکس مثلا ۶۴ در سه کانال هست و این از این داره شما استفاده نمیک

چرا وقتی فرا می‌خونی بعضیاشو اینطوریه که مثلاً میگه اینکلود تاپ فکر کنم فالس میزنی اون تیکه آخر بهت نمیده یا مثل اینجا فقط لایه اف سیشو جایگزین می کنیم نه اف سیشو عوض کردم ببین اومدم تو بیس مدل دات اف سی فقط اونا فولی کانکت آخر میاد جایگزین میکنه دیگه و که زدم میایم در واقع اون عملیات رو انجام میدیم که حالا من اینو گذاشتم مثلا پاکی رفته دوباره بذاریم شروع میکنه به ترین کردن و رفتن دوباره ایوللیت میکنه این داستانا دیگه تکراریه اینجا خب دفعه قبلی اومدیم دقت رو اعلام کردیم هدفمون این بود که فقط بگیم مثلا تو

دقت کلی مدل چیه ما یه چیزی داریم به نام کانفیوژن ماتریکس و اینو دیگه گفتم شما خب یه دیتا ستی داری میخوای ببینی چه جوریه مثلا گربه و سگ شباهت زیادی به هم دارند پس اگر ما ببینیم گربه ۶۴۴ تا گربه تشخیص داده ولی بیشترینشو سگ تشخیص داده تو بقیه ۱۳۶ تا مثلا سگ تشخیص کدوم کلاس ها با هم نزدیکتره روند ترین چهه و اینا یه کانفیوژن ماتریکس در واقع تشکیل میدی که دیگه این از استفاده کردم اکیورسیژن و ریکال ویژه ماترییکس رو فرا میخونی در واقع تورولیبل وشن رو بهش میدی خودش دیگه حالا با حالت های خاصی که در نظر میگیری در واقع بهت این خروجی رو میده

بدون ترنسفرینگم اینکه فقط شما ساختار اون مدلو می‌خواید وزنشو نمی‌خوای اون اونا دیگه میگی من فقط استراکچر شما رو می‌خوام برای من فرقی نداره شما رو چی ترن کردی اصلا دیتا ست من یه چیز دیگه است یه کار دیگه‌ای می‌خوام بکنم به جایی که بیای مثلاً وزنه خاصی رو لطف کنی هیچی وضعشه فقط ساختارلود می‌کنیم و بهش مدلو می‌چسبونید و میزاری از صفر ترین بشه تا اینجا سوال نیست اضافه هم سوال بپرسید حالا تا اون بشه من نالجیستلیشن رو بگم یا واستیم یکم سوال بپرسید گلو منم خشک شد دو تا سوال بپرس پیاده می‌کنی

آره دیگه بستگی داره چجوری حساب کنی اگه بخوای اصلاً می‌تونی یه جوری محاسبه را انجام بدی که اون وزن‌های اینجا بشه اون چیزایی که میخوای ازش مشتق بگیری و با بکوارد مشتقشو انجام بدیم باز بستگی داره به تعریفریفتون خیلی چرا سرچ کنی در میاد تمرین یکتونه نه سرچ کنید داره یه چیزایی میاد اون یکم الان جدیده خب یهو میبینی فردا کلی سایت مدیوم اومده گذاشته مدیوم میدونید چیه دیگه نه اونم آخرش توضیح میدم یه چیزی رو من فکر کنم فراموش کردم برگردم بهتون بگم

یه دستورایی داریم به نام دات ترین و داتیول خب شما اگر تو مرحله ترین هستید بزنید مدل ترین اگر تو ایولیشن تست هستید بزنید مدلv این یه تفاوتی با داره چه تفاوتی داره چه اتفاقی توی مدل باید بیفته وقتی توی ترینیم و وقتی توی ولیدیشن باید یه تفاوت کوچک داشته باشد نه چه تفاوتی با نوگر داره خب الان من اینجا گذاشتم مدل دات ایول اینجا نوگر هم گذاشتم چرا دراپ

چون داده تست رو که نمیتونه فقط خودش یه پارامترهایی داره و داره اون پارامترهای عوض میشه روی هیپاک‌های مختلف برای همین مثلاً یکی پاک هیچ تاثیری نداره بالا یه خودی نشون میدن و اینم مهمه یعنی توی حلقه هاتون حتما باید دوتا رو بزارید خب بریم ترانسفر لرنینگ با نالج دیسلیشن حالا اینجا من سورسش هم گذاشتم مقالهش هم دو سه تایی هست میتونید برید بخونید انواع خیلی مختلفی هم داره من ساده ترینش آوردم تو تمرین هم ازتون همینه ها انشالله خواهیم خواست و اینطوریه که اون عکسو الان می‌بینید دیگه

اینطوری که خوب شما دو تا مدل میاری یکیش به عنوان حالا معلم و شاگرد اون یکیشم شاگرد در نظر می‌گیری تفاوت گسترده‌ای که این دوتا دارند اینه که تعداد پارامترهای یکی خیلی بیشتر از اون یکیه و یکی اصلا میتونه جفتشون پیترین باشند میتونه نه فقط تیچرین کامل باشه حتی در بعضی موارد بهتره اول خود معلمه رو یه فاینتیون بکنی رو دیتا ست خاصت به بهترین دقت خود خودش برسه یا مثلا رو حالا کامپیوتر یا مثلا چیز سرور مثل اچ پی سی شریف اچ پی سی بهترین دقت خودش که رسید حالا بیا یه مدل و بر اساس خروجی اون ترین کنیم به چه صورت به این صورت که شما وقتی دارید لاس رو بکوارد کنی فقط میاید تفاوت خروجی مدللت با اون تروبل واقعی تو نگاه میک و مجبوری برای اینکه این اتفاق بیفته از مثلاً سافت مکس که عبور

آرگم عکسم بگیری و بیاد بهترین اون بردار رو برداره مثلاً اومده بین سه تا کلاس گربه و سگ و مثلاً میمون گفته این عکس ۸۰ درصد سگه ولی ممکنه ۱۵ درصد گربه باشه ۵ درصد هم میمون و شما میاید در نظر می‌گیرید این خروجی این مدل بوده سگ چرا چون بیشترین خروجی رو در نظر گرفتی روش آرگی مکس گرفتی این مدل درسته میفهمه کارش خوب بوده یا بد ولی نمیفهمه چه بهتر از این باشه چون میگه خب تموم شد دیگه درسته حدس زدم لیبل میایم چیکار میکنیم میایم خروجیش رو با خروجی اون معلم میسنجیم که اومده گفته ۹۵ درصد سگه ۵ درصد اشتباه داره و این دو تا خروجی رو دیگه با هم در نظر میگیریم این یکی از مدل های که خیلی الان استفاده میشه ازش و

دقتش بره بالا و در واقع اون لاجیت‌ها رو با هم مقایسه این حالا میاد یاد میگیره آهان من الان میدونم این ۹۵ درصد باید سگ می‌بوده من ۸۵ درصد سگ دیدم مثلاً ۹۰ درصد سگ دیدم ۱۰ درصد من هنوز مشکل دارم و میاد یه در واقع لاز فانکشن رو این تعریف میکنه و ادامه میده حالا اینطوریه که دو تیکه است با دو سه تا ضریب تمچر و فکر کنم یه لاندا میاد میگه خب مثلا ۵۰ درصد تو لیبل ها رو با چیز حساب کن یه وزنی بده به لیبل های که تیچر میده یه ۵۰ درصدش هم تولیبل در نظر بگیر که حالا با بازی کردن این پایپ پارامترهاش میتونید صددرصد از معلمه ببین اگه معلم خوب کار میکنه و اگر ۵۰ ۵۰ ببینی ۲۰ ۸۰ ببینید دیگه بستگی به کاربرد این الان اوکی شد یا

تو لیبل خروجی تیچره چیه خروجی تیچره هم یه دونه برداره میاد احتمالا رو میگه دیگه میگه این عکسی که به من دادی من با یه مدل مثلاً خیلی بزرگ خیلی دقیق اومدم گفتم این مثلاً انقدر احتمال داره مثلاً سگ باشه مثلاً ۹۵ درصد سگ باشه ۵ درصد احتمال داره چیزای دیگه باشه بعد شما میای روی این چیکار میکنی یه مکس میگیری که بتونی ببینی لیبل درست حدس زدی یا نه دیگه خب این الان شما به جای که آرگ مکسش بگیری بدی بهش میای همین وکتور لاجیت رو مقایسه کنی با استودنت استودنت میگه خب من باید خروجی این رو به این صورت در میوردم ۹۵ درصد سگ باشه مال من ۹۰ درصد پس یه ارور میده این خودش یه ارور بعد میاد در نظر میگیره خب من اینو بیشتر مثلا ۵ درصد گربه دیده

تیچره یه درصد دیده دوباره یه ارور اینا رو دوباره بکوارد میکنه باعث میشه مدله حالا دقت بهتری از قبلش داشته باشه چرا چون قبلش میگفت خب من سگ دادم دیگه کارم درست بود دیگه مثل اینه که یه امتحان از شما بگیریم انقدر امتحان آسون باشه همه ۲۰ بشن دانش همتون ۲۰ بوده نه حالا یه امتحان خیلی سخت‌تر بگیریم همه ۱۰ میشن کمک می‌کنیم که در واقع بهتر تحلیل داده بشه اون استودنت نه فقط از دقت چیزی که قبلا بوده میتونید در حد دو سه درصد بهتر بشه باز هم بستگی داره به تعداد پارامترهاش اون ضریب های های پارامترها همینطوری مثلا فقط اینو زدم آوردم مثلا ببینی شاید دقتش یه درصد هم شاید افزایش پیدا نکنه خودتون ران کنید توی بالا باید بزارید و خود تیچر هم باید خیلی خوب ترین بشه

وکتور اولیه چه وان هات ریلیبل ۱۰۰% صفره خب ببین درسته ولی با بهترین چیز نمی‌تونیم مقایسه کنیم اون دیگه میگه توانم همینه دیگه خیلی افزایش پیدا نمیکنه ما میخویم یه رفتاری شبیه تیچره داشته باشه و بهترین اون عکس اینه که درست میگی یکیش یک باقی صفره مثل اینه که صددرصد گربه بوده ولی آیا اون عکسه واقعا یه شباهت کوچیکی به سگ بوده به گربه نداشته اینو که اون لیبل شما نمیگه تیچر ولی میتونه بگه تیچر دیگه عملا دقتش ۹۹.۹ و میاد وقتی اون میگه این ۵ درصد هنوز شبیه گربه است اون واقعا عکس شبیه گربه هم بوده پنج درصد و این تاثیر داره روی اینکه مدل های دیگش اینه که حالا بیایم با اینا بازی کنیم لاجیتاشو مختلف بدیم یا از وسط شبکه ها خروجی

با هم مقایسه کنیم که یکم پیچیده میشه چون باید دقیقاً خب حالا سایزاتون که ندا تو همه چیزا به هم بخوره می‌تونید در دو سه مرحله بیاین این کارو بکنید همش فکر کنم تو این سورسه که گذاشتم انواع مدل‌هاش هست سرچ هم کنید میاد انواع مدلاشو خود پایتورچ و اینا پیاده کردن ولی خب مثلاً شما بخواین از یه رزنت ۵۰ یا رزنت ۱۰۱ به عنوان تیچر در نظر بگیرید رزت ۱۸ بزارید و لایه های وسط بخواهیم بگیرید یکم سخت میشه چون خیلی اینا لایه زیاد دارن و ساختارهاشون فرق داره این کل دنیای دیگه است اون میاد ولیو تعریف میکنه برای کریتیک مثل یه نقاده میاد به عنوان یه داور یه مربی بالا سرت میگه این اکشننی که انجام دادی خوب بود

خوب نبود حالا با تولید کردن یک عددی به نام ولیو کیو ولیو و اونجا هم دو تا شبکه مختلف و یه کوچولو با این فرق داره حالا بخوای بدم توضیح میدم حالا دیگه فرمولاش هست اینا رو از خود مقاله درآوردم میاد تعریف میکنه مثلا آلفا تا از مثلا تیچر بگیره یک منهای آلفا ازلیبل ها بگیره و یه لاس فکشن تعریف کرده که حالا تو تعریفش میتونید همه چی رو بخونید اینجاست که شما میتونید خیلی راحت همه چی رو تعریف کنید میتونی بیای سافت مکس تعریف کنی که در واقع پارامترهای مختلف بگیره کس انتروپی خودتون رو تعریف کنید لاس فکشن های خودتون رو بنویسید که تو تن یه کوچولو باید بیشتر زحمت بکشید و یه دانش بیشتری از برنامه نویسی میخواد و حالا اون دیستلیشن

لاسش که دیگه تعریف می‌کنید و بیاد مثلاً همین فرمول من نوشتم دیگه یک منها از کراسنتروپی مثلاً ترولیبل بگیره آلفا تا از مثلاً تیچر بگیره ترین لوپاتونم اینجا فرق داره تفاوتش اینه که خب عکس ورودیتون رو میارید یک بار میدیدش به یه مدل تیچر یک بار میدید به استودنت و دوتا پردیکشنش رو میارید میدید به لاس و خب این لوپاش فرق داره بقیش شبیه من اینجا رضا ۵۰ گذاشتم برای کلا فال نمیخوام ترین بشه و اف سیش عوض کردم فقط ۱۰ کلاسه بشه پس مجبوریم یه مقدار تیچر رو ترین کنیم چون فول کانکشن عوض کردیم و بعد حالا استودنت بیاریم تو کار و بقیه روند هم که عین همونه اینجا همونه دیگه ترین لوپ در واقع دیسپشن نالجشه

گرفتم دادم به لاس بک وارد کردم دقت‌هاشم که این یه مقدار طول میکشه ران بشه برای همین فایلشو در اختیارتون می‌ذارم و در واقع تو تمرینتونم اینطوری که صحبت شده قراره یه مدل خودتون بزنید روی دیتا ست حالا دیتا ستش یا ای ام نیسته دست خطه و یه مدل خودتون بزنید مدل بیارید انجام بدید یه قسمت همین باید دقتش مقایسه کنید و یه کوچولو تمرین سی ان ان رو نذارید روزهای آخر جی پی یو کم میاد کدداشونم که دادیم دیگه یه مقدار بخونید تغییرات لازمه رو خودتون بدید چون من همینطوری اینا رو زدم کد رو آوردم درست هست ولی بهترین نیست و یه کوچولو بازی کنید قیافه‌ها رو عوض کنید

که بتونی تمرینا رو انجام بدید حالا باز در مورد تمرین‌ها صحبت می‌کنم این فایل‌ها هم که میزارم من کلاس رو قطع می‌کنم حالا هر سوالی داشتید

E:\courses\LangChain Project\main root\data\Pytorch_Tutorial.ipynb

'markdown' cell: '['# What is Pytorch?\n', 'PyTorch is an open-source library used in machine learning library developed using Torch library for python program. It is developed by Facebook’s AI Research lab and released in January 2016 as a free and open-source library mainly used in computer vision, deep learning, and natural language processing applications. Programmer can build a complex neural network with ease using PyTorch as it has a core data structure, Tensor, multi-dimensional array like Numpy arrays. PyTorch use is increasing in current industries and in the research community as it is flexible, faster, easy to get the project up and running, due to which PyTorch is one of the top deep learning tools.']'

'markdown' cell: '['# How to install Pytorch\n', 'In order to install Pytorch, you could do it using different package managers such as `conda` and `pip`. Visit [this link](https://pytorch.org/get-started/locally/) for information about the installation on your device.']'

'markdown' cell: '['# Tensors\n', 'Tensors are a specialized data structure that are very similar to arrays and matrices. In PyTorch, we use tensors to encode the inputs and outputs of a model, as well as the model’s parameters. Tensors are just like Numpy arrays, except that they can run on GPUs and other hardware accelerators. Tensors are also optimized for automatic differentiation (which is referred to autograd from now on). Tensor API is really similar with Numpy array API, so if you are familiar with Numpy arrays, you are probably not going to face any problem with Tensors.\n']'

'code' cell: '['# imporing packages\n', '\n', 'import torch\n', 'import numpy as np']'

'markdown' cell: '['## Initializing Tensors']'

'code' cell: '['# initializing directly from data\n', 'data = [[1, 2],[3, 4]]\n', 'x_data = torch.tensor(data)\n', 'print(f"Tensor created directly from data: \\n {x_data} \\n")\n', '\n', '# from numpy arrays\n', 'np_array = np.array(data)\n', 'x_np = torch.from_numpy(np_array)\n', 'print(f"Tensor created from a numpy array: \\n {x_np} \\n ")\n', '\n', '# from another tensor\n', 'x_ones = torch.ones_like(x_data) # retains the properties of x_data\n', 'print(f"Ones Tensor: \\n {x_ones} \\n")\n', '\n', 'x_rand = torch.rand_like(x_data, dtype=torch.float) # overrides the datatype of x_data\n', 'print(f"Random Tensor: \\n {x_rand} \\n")\n', '\n', 'shape = (2,3,)\n', 'rand_tensor = torch.rand(shape)\n', 'ones_tensor = torch.ones(shape)\n', 'zeros_tensor = torch.zeros(shape)\n', '\n', 'print(f"Random Tensor: \\n {rand_tensor} \\n")\n', 'print(f"Ones Tensor: \\n {ones_tensor} \\n")\n', 'print(f"Zeros Tensor: \\n {zeros_tensor}")']'

'markdown' cell: '['## Attributes of a Tensor']'

'code' cell: '['tensor = torch.rand(3,4)\n', '\n', 'print(f"Shape of tensor: {tensor.shape}")\n', 'print(f"Datatype of tensor: {tensor.dtype}")\n', 'print(f"Device tensor is stored on: {tensor.device}")']'

'markdown' cell: '['## Operations on Tensors\n', 'Torch Tensors contain various operations including arithmetic, linear algebra, matrix manipulation (transposing, indexing, slicing), etc.\n', '\n', 'By default, tensors are created on CPU. In order to get the most out of tensors, we can move these tensors to GPU:']'

'code' cell: '['# We move our tensor to the GPU if available\n', 'if torch.cuda.is_available():\n', '    tensor = tensor.to("cuda")']'

'code' cell: '['# Standard numpy-like indexing and slicing\n', 'tensor = torch.ones(4, 4)\n', 'print(f"First row: {tensor[0]}")\n', 'print(f"First column: {tensor[:, 0]}")\n', 'print(f"Last column: {tensor[..., -1]}")\n', 'tensor[:,1] = 0\n', 'print(tensor)']'

'code' cell: '['# Joining tensors\n', 't1 = torch.cat([tensor, tensor, tensor], dim=1)\n', 'print(t1)']'

'code' cell: '['t2 = torch.ones((4,4,4))\n', 't2[:,1,0]']'

'code' cell: '['# Arithmatic operations\n', '# This computes the matrix multiplication between two tensors. y1, y2, y3 will have the same value\n', 'y1 = tensor @ tensor.T\n', 'y2 = tensor.matmul(tensor.T)\n', '\n', 'y3 = torch.rand_like(y1)\n', 'torch.matmul(tensor, tensor.T, out=y3)\n', '\n', '\n', '# This computes the element-wise product. z1, z2, z3 will have the same value\n', 'z1 = tensor * tensor\n', 'z2 = tensor.mul(tensor)\n', '\n', 'z3 = torch.rand_like(tensor)\n', 'torch.mul(tensor, tensor, out=z3)\n', '\n', 'print(f"Matrix Multiplication: \\n y1: {y1} \\n\\n y2: {y2} \\n\\n y3: {y3} \\n")\n', 'print(f"Element-wise Product: \\n z1: {z1} \\n\\n z2: {z2} \\n\\n z3: {z3}")']'

'code' cell: '['# Single-element tensors\n', 'agg = tensor.sum()\n', 'print(agg, type(agg))\n', 'agg_item = agg.item()\n', 'print(agg_item, type(agg_item))']'

'markdown' cell: '['# Datasets and Dataloaders\n', 'PyTorch provides two data primitives: `torch.utils.data.DataLoader` and `torch.utils.data.Dataset` that allow you to use pre-loaded datasets as well as your own data. `Dataset` stores the samples and their corresponding labels, and `DataLoader` wraps an iterable around the Dataset to enable easy access to the samples.\n', '\n', 'Pytorch contains various pre-loaded subclasses of `Dataset` which you can load such as CIFAR10, MNIST, etc. Here is an example of loading MNIST test and train datasets.']'

'code' cell: '['from torch.utils.data import Dataset\n', 'from torchvision import datasets\n', 'from torchvision.transforms import ToTensor\n', 'import matplotlib.pyplot as plt\n', '\n', '\n', 'training_data = datasets.MNIST(\n', '    root="data", # the root directory to save the downloaded dataset\n', '    train=True, # choose whether it is test or train\n', '    download=True, # choose whether to download the dataset or not \n', '    transform=ToTensor() # what transforms should be applied to the dataset, in this case it just \n', '                         # converts the images to torch.tensor\n', ')\n', '\n', 'test_data = datasets.MNIST(\n', '    root="data",\n', '    train=False,\n', '    download=True,\n', '    transform=ToTensor()\n', ')']'

'code' cell: '['# Choosing one data and visualizing it\n', 'print(f"Shape of the image of the first data: {training_data[0][0].shape}")\n', 'print(f"Label of the first data: {training_data[0][1]}")\n', '\n', '# Visualizing it\n', 'idx = np.random.randint(0,10000)\n', 'img, label = training_data[idx]\n', 'plt.title(f"Label = {label}")\n', 'plt.imshow(img.squeeze(), cmap="gray")\n', 'plt.axis(False)\n', 'plt.show()']'

'markdown' cell: '['### Creating a Custom Dataset\n', 'Most of the time, you might now work with pre-loaded datasets (such as some of the questions of your homework:)). In these case you must create your own custom dataset. In order to do so you should create a child from the class `Dataset` as shown below:']'

'code' cell: '['import os\n', 'import pandas as pd\n', 'from torchvision.io import read_image\n', '\n', 'class CustomImageDataset(Dataset):\n', '    def __init__(self, annotations_file, img_dir, transform=None, target_transform=None):\n', '        self.img_labels = pd.read_csv(annotations_file)\n', '        self.img_dir = img_dir\n', '        self.transform = transform\n', '        self.target_transform = target_transform\n', '\n', '    def __len__(self):\n', '        return len(self.img_labels)\n', '\n', '    def __getitem__(self, idx):\n', '        img_path = os.path.join(self.img_dir, self.img_labels.iloc[idx, 0])\n', '        image = read_image(img_path)\n', '        label = self.img_labels.iloc[idx, 1]\n', '        if self.transform:\n', '            image = self.transform(image)\n', '        if self.target_transform:\n', '            label = self.target_transform(label)\n', '        return image, label']'

'markdown' cell: '['### Preparing your data for training with DataLoader\n', 'using `DataLoader`, you can shuffle data, created minibatches from it, and iterate through does minibatches just by one command:']'

'code' cell: '['from torch.utils.data import DataLoader\n', '\n', 'train_dataloader = DataLoader(training_data, batch_size=64, shuffle=True)\n', 'test_dataloader = DataLoader(test_data, batch_size=64, shuffle=True)']'

'code' cell: '['# iterating on train_dataloader and printing just the labels in order to see the difference\n', 'first_batch = next(iter(train_dataloader))\n', 'second_batch = next(iter(train_dataloader))\n', 'print(f"First iter: \\n {first_batch[1]} \\n ")\n', 'print(f"Second iter: \\n {second_batch[1]}")\n', '\n', 'print(f"Features batch shape: \\n {first_batch[0].shape} \\n")\n', 'print(f"Labels batch shape: \\n {first_batch[1].shape} \\n")']'

'markdown' cell: '['# Transforms\n', 'Data does not always come in its final processed form that is required for training machine learning algorithms. We use transforms to perform some manipulation of the data and make it suitable for training.\n', '\n', 'All TorchVision datasets have two parameters -`transform` to modify the features and `target_transform` to modify the labels - that accept callables containing the transformation logic. For more information about transform you can visit [torchvision.transform](https://pytorch.org/vision/stable/transforms.html).\n', '\n', 'Here is an example of using transfomrs on `torchvision.datasets.MNIST`. MNIST datasets contains PIL images which should be converted tensors normalized between 0 to 1(using `ToTensor()`)and labels which are integers and should be converted to one-hot encoded values as shown below.\n', '\n', 'In the example below, we also use `Lambda` transforms which apply any user-defined lambda function. ']'

'code' cell: '['from torchvision.transforms import ToTensor, Lambda\n', 'ds = datasets.MNIST(\n', '    root="data",\n', '    train=True,\n', '    download=True,\n', '    transform=ToTensor(),\n', '    target_transform = Lambda(lambda y: torch.zeros(10, dtype=torch.float).scatter_(dim=0, index=torch.tensor(y),\n', '                                                                                    value=1))\n', ')']'

'code' cell: '['print(f"Features tensor: \\n {ds[0][0]} \\n")\n', 'print(f"Labels tensor: \\n {ds[0][1]}")']'

'markdown' cell: '['# Build the neural network']'

'markdown' cell: '['Neural networks comprise of layers/modules that perform operations on data. The `torch.nn` namespace provides all the building blocks you need to build your own neural network. Every module in PyTorch subclasses the `nn.Module`. A neural network is a module itself that consists of other modules (layers). This nested structure allows for building and managing complex architectures easily.']'

'code' cell: '['import torch.nn as nn\n', '\n', '# setting the device to cuda if available\n', 'device = "cuda" if torch.cuda.is_available() else "cpu"\n', 'print(f"Using {device} device")']'

'markdown' cell: '['## Define the class\n', 'We define our neural network by subclassing `nn.Module`, and initialize the neural network layers in `__init__`. Every `nn.Module` subclass implements the operations on input data in the `forward` method.']'

'code' cell: '['class NeuralNetwork(nn.Module):\n', '    def __init__(self):\n', '        super(NeuralNetwork, self).__init__()\n', '        self.flatten = nn.Flatten()\n', '        self.linear_relu_stack = nn.Sequential(\n', '            nn.Linear(28*28, 512),\n', '            nn.ReLU(),\n', '            nn.Linear(512, 512),\n', '            nn.ReLU(),\n', '            nn.Linear(512, 10),\n', '        )\n', '\n', '    def forward(self, x):\n', '        x = self.flatten(x)\n', '        logits = self.linear_relu_stack(x)\n', '        return logits\n', '    \n', 'class NeuralNetwork1(nn.Module):\n', '    def __init__(self):\n', '        super(NeuralNetwork, self).__init__()\n', '        self.flatten = nn.Flatten()\n', '        self.linear1 = nn.Linear(28*28, 512)\n', '        self.relu1 = nn.ReLU()\n', '        self.linear2 = nn.Linear(512, 512)\n', '        self.relu2 = nn.ReLU()\n', '        self.linear3 = nn.Linear(512, 10)\n', '\n', '    def forward(self, x):\n', '        x = self.flatten(x)\n', '        x = self.linear1(x)\n', '        x = self.relu1(x)\n', '        x = self.linear2(x)\n', '        x = self.relu2(x)\n', '        logits = self.linear3(x)\n', '        return logits']'

'code' cell: '['# Creating an instance of the class `NeuralNetwork` and moving it to device\n', 'model = NeuralNetwork().to(device)\n', 'print(model)']'

'markdown' cell: '["whenever we want to get the model's output on an input data `X`, we pass the data to the model directly using `model(X)`. This automatically runs `forward` method with some other background calculations. **Do not run `model.forward()` directly.**\n", '\n', 'Note that the device of the data passed to the model should be the same device in which the model is saved.']'

'code' cell: '['X = torch.rand(1, 28, 28, device=device) # creating a random input with the same device\n', '\n', '# passing the input to the model\n', 'logits = model(X)\n', 'print(f"Model\'s output: \\n {logits} \\n")\n', '\n', '# calculating model predictions by applying a softmax\n', 'probs = nn.Softmax(dim=1)(logits) # finding the probabilities\n', 'print(f"Prediction probabilities: \\n {probs} \\n")\n', '\n', 'y_pred = probs.argmax(dim = 1)\n', 'print(f"Predicted label: \\n {y_pred.item()} \\n")']'

'markdown' cell: '['Each Layer in the previous models works as explained below:\n', '- `nn.Flatten()`: Flattens the data except for dim=0. For example a data with the shape of (1, 10, 10) is converted to a data with the shape of (1, 100)\n', '- `nn.Linear(in_features, out_features)`: A single linear layer with `in_features` inputs and `out_features` outputs\n', '- `nn.ReLU()`: Simply applies relu function on each element of its input\n', '- `nn.Sequential(module1, module2, ...)`: It is a container of modules. It simply passes the data through the modules with the given order\n', '- `nn.Softmax(dim)`: Applies a softmax function on the given dimension of the data']'

'markdown' cell: '['### Model Parameters\n', 'Many layers inside a neural network are parameterized, i.e. have associated weights and biases that are optimized during training. Subclassing `nn.Module` automatically tracks all fields defined inside your model object, and makes all parameters accessible using your model’s `parameters()` or `named_parameters()` methods.']'

'code' cell: '['print(f"Model structure: {model}\\n\\n")\n', '\n', 'for name, param in model.named_parameters():\n', '    print(f"Layer: {name} | Size: {param.size()} | Values : {param[:2]} \\n")']'

'markdown' cell: '['# Automatic Differentiation with `torch.autograd`\n', 'The most frequently used algorithm in neural networks is `back propagation`. One of the fundumental benefits of `Pytorch` and other deep learning frameworks is the implementation of automatic differetiaion using back propagation. This means that in order to find the gradients of a model, you can simply call `backward()` method and torch will automatically calculate the gradients of the pararmeters for you.\n', '\n', 'For example, we try to calculate the gradients of a given function $y = exp(x^Tw)$ where $x \\in \\mathcal{R}^{10}$ is a constant vector and $w \\in \\mathcal{R}^{10}$ is our variable. Using back propagation, we can take $z = x^Tw$. Then $\\frac{d\\exp(z)}{dz} = \\exp(z)$, $\\frac{dz}{dw_i} = x_i$, and consequently $\\frac{dy}{dw_i} = \\frac{dy}{dz} \\frac{dz}{dw_i} = x_i . \\exp(x^Tw)= x_i . y $']'

'code' cell: '['x = torch.tensor([1.,2.,3.,4.,5.])\n', 'w = torch.tensor([1.,1.,1.,1.,1.], requires_grad=True)\n', 'z = torch.matmul(x,w)\n', 'y = torch.exp(z)\n', 'y.backward()\n', '\n', '\n', 'expected_grads = (y * x).detach() # setting requires_grad to False\n', '\n', 'print(f"Expected gradients: \\n {expected_grads} \\n")\n', 'print(f"Calculated gradients: \\n {w.grad}")']'

'code' cell: '['# how to set requires grad to False\n', '# there are two ways to do so\n', '# 1\n', 'z1 = x * w\n', 'print("First method\'s requires_grad before:", z1.requires_grad)\n', 'with torch.no_grad():\n', '    z1 = x * w\n', 'print("First method\'s requires_grad after:", z1.requires_grad)\n', '\n', '# 2\n', 'print()\n', 'z2 = x * w\n', 'print("Second method\'s requires_grad before:", z2.requires_grad)\n', '\n', 'z2 = z2.detach()\n', 'print("Second method\'s requires_grad after:", z2.requires_grad)\n']'

'markdown' cell: '['# Optimization\n', 'Now that we have the model, dataset and parameters, we should optimize our model on the given dataset.']'

'code' cell: '['# creating an instance of our model\n', 'model = NeuralNetwork().to(device)\n', '\n', '# setting models mode to train mode\n', 'model.train()']'

'markdown' cell: '['## Hyperparameters\n', 'We define the following hyperparameters for training:\n', '- **Number of Epochs** - the number times to iterate over the dataset\n', '- **Batch Size** - the number of data samples propagated through the network before the parameters are updated\n', '- **Learning Rate** - how much to update models parameters at each batch/epoch. Smaller values yield slow learning speed, while large values may result in unpredictable behavior during training.\n', '\n']'

'code' cell: '['learning_rate = 1e-3\n', 'batch_size = 64\n', 'epochs = 5']'

'markdown' cell: '['## Optimization loop\n', 'Each iteration of the optimization loop is called **epoch**. In each epoch these two main parts should be implemented:\n', '- **The Train Loop** - Iterate over the batches and try to converge to optimal parameters\n', '- **The Validation/Test Loop** - Iterate over test/validation dataset to see whether the model is improving or not\n', '\n', 'We also need a loss function. There are various loss functions implemented in `torch.nn`. In this example, we use cross entropy.']'

'code' cell: '['# Initialize the loss function\n', 'loss_fn = nn.CrossEntropyLoss()']'

'markdown' cell: '['We also have to add an optimizer to the loop. The objective of an optimizer is to use the gradien of the parameters and optimize them based on the selected optimization algorithm such as SGD, Adam, etc.']'

'code' cell: '['optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)']'

'markdown' cell: '['Inside the training loop for each batch, we first call `optimizer.zero_grad()` to make all gradients equal to zero. Then we call `loss.backward()` to calculate the gradients (using the autograd which was explained before), and finally, we call `optimizer.step()` to adjust the parameters based on their gradients.\n', '\n', 'The final implementation of an optimization loop should be something like this:']'

'code' cell: '['def train_loop(dataloader, model, loss_fn, optimizer):\n', '    size = len(dataloader.dataset)\n', '    for batch, (X, y) in enumerate(dataloader):\n', '        # Compute prediction and loss\n', '        pred = model(X)\n', '        loss = loss_fn(pred, y)\n', '\n', '        # Backpropagation\n', '        optimizer.zero_grad()\n', '        loss.backward()\n', '        optimizer.step()\n', '\n', '        if batch % 100 == 0:\n', '            loss, current = loss.item(), batch * len(X)\n', '            print(f"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]")\n', '\n', '\n', 'def test_loop(dataloader, model, loss_fn):\n', '    size = len(dataloader.dataset)\n', '    num_batches = len(dataloader)\n', '    test_loss, correct = 0, 0\n', '\n', '    with torch.no_grad():\n', '        for X, y in dataloader:\n', '            pred = model(X)\n', '            test_loss += loss_fn(pred, y).item()\n', '            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n', '\n', '    test_loss /= num_batches\n', '    correct /= size\n', '    print(f"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n")']'

'code' cell: '['loss_fn = nn.CrossEntropyLoss()\n', 'optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)\n', '\n', 'epochs = 4\n', 'for t in range(epochs):\n', '    print(f"Epoch {t+1}\\n-------------------------------")\n', '    train_loop(train_dataloader, model, loss_fn, optimizer)\n', '    test_loop(test_dataloader, model, loss_fn)\n', 'print("Done!")']'

'markdown' cell: '['# Saving and loading the model\n', 'After training the model, we should save it to be able to use it afterwards. There are two ways to do this:\n', '- Saving just the weights of the model\n', '- Saving the weights and the structure ']'

'markdown' cell: '['### Saving & Loading the weigths']'

'code' cell: '['# saving\n', "torch.save(model.state_dict(), 'model_weights.pth')\n", '\n', '# loading\n', "model.load_state_dict(torch.load('model_weights.pth'))\n", 'model.eval()']'

'markdown' cell: '['### Saving & Loading the model and its weigths']'

'code' cell: '['# saving\n', "torch.save(model, 'model.pth')\n", '\n', '# loading\n', "model = torch.load('model.pth')\n", 'model.eval()']'

E:\courses\LangChain Project\main root\data\Pytorch_Tutorial_SCR.ipynb

'code' cell: '['# imporing packages\n', 'import torch\n', 'import numpy as np']'

'code' cell: '['# initializing directly from data\n', 'data = [[1, 4],[6, 10]]\n', 'x_data = torch.tensor(data)\n', 'print(f"Tensor created directly from data: \\n {x_data} \\n")\n', '\n', '# from numpy arrays\n', 'np_array = np.array(data)\n', 'x_np = torch.from_numpy(np_array)\n', 'print(f"Tensor created from a numpy array: \\n {x_np} \\n ")\n', '\n', '# from another tensor\n', 'x_ones = torch.ones_like(x_data) # retains the properties of x_data\n', 'print(f"Ones Tensor: \\n {x_ones} \\n")\n', '\n', 'x_rand = torch.rand_like(x_data, dtype=torch.float) # overrides the datatype of x_data\n', 'print(f"Random Tensor: \\n {x_rand} \\n")\n', '\n', 'shape = (3,4,)\n', 'rand_tensor = torch.rand(shape)\n', 'ones_tensor = torch.ones(shape)\n', 'zeros_tensor = torch.zeros(shape)\n', '\n', 'print(f"Random Tensor: \\n {rand_tensor} \\n")\n', 'print(f"Ones Tensor: \\n {ones_tensor} \\n")\n', 'print(f"Zeros Tensor: \\n {zeros_tensor}")']'

'code' cell: '['# Standard numpy-like indexing and slicing\n', 'tensor = torch.ones(3, 3)\n', 'print(f"First row: {tensor[0]}")\n', 'print(f"First column: {tensor[:, 0]}")\n', 'print(f"Last column: {tensor[..., -1]}")\n', 'tensor[:,2] = 0\n', 'print(tensor)']'

'code' cell: '['# Choosing one data and visualizing it\n', 'print(f"Shape of the image of the first data: {training_data[5][0].shape}")\n', 'print(f"Label of the first data: {training_data[5][1]}")\n', '\n', '# Visualizing it\n', 'img, label = training_data[5]\n', 'plt.title(f"Label = {label}")\n', 'plt.imshow(img.squeeze(), cmap="gray")\n', 'plt.axis(False)\n', 'plt.show()']'

'markdown' cell: '['### Creating a Custom Dataset\n', 'Most of the time, you might now work with pre-loaded datasets (such as some of the questions of your second homework:)). In these case you must create your own custom dataset. In order to do so you should create a child from the class `Dataset` as shown below:']'

'code' cell: '['x = torch.tensor([1.,4.,-1.,3.,0.])\n', 'w = torch.tensor([0.1,1.5,1.2,0.2,1.], requires_grad=True)\n', 'z = torch.matmul(x,w)\n', 'y = torch.exp(z)\n', 'y.backward()\n', '\n', '\n', 'expected_grads = (y * x).detach() # setting requires_grad to False\n', '\n', 'print(f"Expected gradients: \\n {expected_grads} \\n")\n', 'print(f"Calculated gradients: \\n {w.grad}")']'

'code' cell: '['optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate, momentum=0.9)']'

'code' cell: '['def train_loop(dataloader, model, loss_fn, optimizer):\n', '    size = len(dataloader.dataset)\n', '    for batch, (X, y) in enumerate(dataloader):\n', '        X = X.to(device)\n', '        y = y.to(device)\n', '        # Compute prediction and loss\n', '        pred = model(X)\n', '        loss = loss_fn(pred, y)\n', '\n', '        # Backpropagation\n', '        optimizer.zero_grad()\n', '        loss.backward()\n', '        optimizer.step()\n', '\n', '        if batch % 100 == 0:\n', '            loss, current = loss.item(), batch * len(X)\n', '            print(f"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]")\n', '\n', '\n', 'def test_loop(dataloader, model, loss_fn):\n', '    size = len(dataloader.dataset)\n', '    num_batches = len(dataloader)\n', '    test_loss, correct = 0, 0\n', '\n', '    with torch.no_grad():\n', '        for X, y in dataloader:\n', '            X = X.to(device)\n', '            y = y.to(device)\n', '            pred = model(X)\n', '            test_loss += loss_fn(pred, y).item()\n', '            correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n', '\n', '    test_loss /= num_batches\n', '    correct /= size\n', '    print(f"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n")']'

'code' cell: '['loss_fn = nn.CrossEntropyLoss()\n', 'optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)\n', '\n', 'epochs = 10\n', 'for t in range(epochs):\n', '    print(f"Epoch {t+1}\\n-------------------------------")\n', '    train_loop(train_dataloader, model, loss_fn, optimizer)\n', '    test_loop(test_dataloader, model, loss_fn)\n', 'print("Done!")']'

'markdown' cell: '['Load model directly from drive with gdown lib.']'

'code' cell: '['# Upgrade gdown to work properly.\n', '!pip install --upgrade --no-cache-dir gdown']'

'code' cell: '['import gdown\n', '# https://drive.google.com/file/d/1kAhqypQ3h97dYzRaKRAfWWEnUMtkYrdq/view?usp=sharing\n', '!gdown 1kAhqypQ3h97dYzRaKRAfWWEnUMtkYrdq\n', '\n', '# Check if CUDA is available. \n', 'if torch.cuda.is_available():\n', '    Model = torch.load("./CNN3.h5")\n', 'else:\n', '    Model = torch.load("./CNN3.h5", map_location=torch.device(\'cpu\'))']'

'markdown' cell: '['# Model Evaluation\n', 'After training and saving the model, we should evaluate the model.']'

'code' cell: '['def Evaluation_func(dataloader, model):\n', '    Pred_label = []\n', '    True_label = []\n', '    model.eval()\n', '    with torch.no_grad():\n', '        for X, y in dataloader:\n', '            X = X.to(device)\n', '            y = y.to(device)\n', '            # Compute prediction\n', '            pred = model(X)\n', '\n', '            # get true label and predicate label\n', '            label = y.cpu().numpy()\n', '            True_label.extend(label)\n', '            pred_label = pred.argmax(1).cpu().numpy()\n', '            Pred_label.extend(pred_label)\n', '\n', '    return True_label, Pred_label']'

'code' cell: '['from sklearn.metrics import (accuracy_score, confusion_matrix, f1_score,\n', '                             precision_score, recall_score)\n', 'import seaborn as sns\n', 'True_label, Pred_label = Evaluation_func(test_dataloader, model)\n', '\n', 'test_acc = accuracy_score(True_label, Pred_label)\n', "test_prc = precision_score(True_label, Pred_label, average='macro')\n", "test_rcl = recall_score(True_label, Pred_label, average='macro')\n", "test_F1 = f1_score(True_label, Pred_label, average='macro')\n", '\n', 'test_cf = confusion_matrix(True_label, Pred_label)\n', '\n', 'classes=["0", "1","2","3","4","5","6","7","8","9"]\n', '\n', 'plt.figure(figsize=(8, 8))\n', "sns.heatmap(test_cf, xticklabels=classes, yticklabels=classes, annot=True, fmt='.0f')\n", "plt.title('Confusion Matrix for Test Data')\n", 'plt.show()\n', 'print("\\n")\n', 'print(f"Test Accuracy: {test_acc*100:.2f} %")\n', 'print(f"Test Precision: {test_prc*100:.2f} %")\n', 'print(f"Test Recall: {test_rcl*100:.2f} %")\n', 'print(f"Test F1-score: {test_F1*100:.2f} %")']'

A tutorial on hidden Markov models and selected applications in speech recognition - Proceedings of the IEEE

A Tutorial on Hidden Markov Models and 
Selected Applications in Speech Recognition 
LAWRENCE R. RABINER, FELLOW, IEEE 
Although initially introduced and studied in the late 1960s and 
early 1970s, statistical methods of Markov source or hidden Markov 
modeling have become increasingly popular in the last several 
years. There are two strong reasons why this has occurred. First the 
models are very rich in mathematical structure and hence can form 
the theoretical basis for use in a wide range of applications. Sec- 
ond the models, when applied properly, work very well in practice 
for several important applications. In this paper we attempt to care- 
fully and methodically review the theoretical aspects of this type 
of statistical modeling and show how they have been applied to 
selected problems in machine recognition of speech. 
I. INTRODUCTION 
Real-world processes generally produce observable out- 
puts which can be characterized as signals. The signals can 
bediscrete in nature(e.g.,charactersfrom afinitealphabet, 
quantized vectors from a codebook, etc.), or continuous in 
nature (e.g., speech samples, temperature measurements, 
music, etc.). The signal source can be stationary (i.e., its sta- 
tistical properties do not vary with time), or nonstationary 
(i.e., the signal properties vary over time). The signals can 
be pure (i.e., coming strictly from a single source), or can 
be corrupted from other signal sources (e.g., noise) or by 
transmission distortions, reverberation, etc. 
A problem of fundamental interest is characterizing such 
real-world signals in terms of signal models. There are sev- 
eral reasons why one is interested in applying signal models. 
First of all, a signal model can provide the basis for a the- 
oretical description of a signal processing system which can 
be used to process the signal so as to provide a desired out- 
put. For example if we are interested in enhancing a speech 
signal corrupted by noise and transmission distortion, we 
can use the signal model to design a system which will opti- 
mally remove the noise and undo the transmission distor- 
tion. A second reason why signal models are important is 
that they are potentially capable of letting us learn a great 
deal about the signal source (i.e., the real-world process 
which produced the signal) without having to have the 
sourceavailable. This property is especially important when 
the cost of getting signals from the actual source is high. 
Manuscript received January 15,1988; revised October 4,1988. 
The author is with AT&T Bell Laboratories, Murray Hill, NJ 07974- 
IEEE Log Number 8825949. 
2070, USA. 
In this case, with a good signal model, we can simulate the 
source and learn as much as possible via simulations. 
Finally, the most important reason why signal models are 
important is that they often workextremelywell in practice, 
and enable us to realize important practical systems-e.g., 
prediction systems, recognition systems, identification sys- 
tems, etc., in a very efficient manner. 
These are several possible choices for what type of signal 
model is used for characterizing the properties of a given 
signal. Broadly one can dichotomize the types of signal 
models into the class of deterministic models, and the class 
of statistical models. Deterministic models generally exploit 
some known specific properties of the signal, e.g., that the 
signal is a sine wave, or a sum of exponentials, etc. In these 
cases, specification of the signal model is generally straight- 
forward;all that is required istodetermine(estimate)values 
of the parameters of the signal model (e.g., amplitude, fre- 
quency, phase of a sine wave, amplitudes and rates of expo- 
nentials, etc.). The second broad class of signal models is 
the set of statistical models in which one tries to charac- 
terize only the statistical properties of the signal. Examples 
of such statistical models include Gaussian processes, Pois- 
son processes, Markov processes, and hidden Markov pro- 
cesses, among others. The underlying assumption of the 
statistical model is that the signal can be well characterized 
as a parametric random process, and that the parameters 
of the stochastic process can be determined (estimated) in 
a precise, well-defined manner. 
For the applications of interest, namely speech process- 
ing, both deterministic and stochastic signal models have 
had good success. In this paper we will concern ourselves 
strictlywith one typeof stochastic signal model, namelythe 
hidden Markov model (HMM). (These models are referred 
to as Markov sources or probabilistic functions of Markov 
chains in the communications literature.) We will first 
review the theory of Markov chains and then extend the 
ideas to the class of hidden Markov models using several 
simple examples. We will then focus our attention on the 
three fundamental problems' for HMM design, namely: the 
'The idea of characterizing the theoretical aspects of hidden 
Markov modeling in terms of solving three fundamental problems 
is due to Jack Ferguson of IDA (Institute for Defense Analysis) who 
introduced it in lectures and writing. 
0018-9219/89/02000257$01.00 0 1989 IEEE 
PROCEEDINGS OF THE IEEE, VOL. 77, NO. 2, FEBRUARY 1989 257

evaluation of the probability (or likelihood) of a sequence 
of observations given a specific HMM; the determination 
of a best sequence of model states; and the adjustment of 
model parameters so as to best account for the observed 
signal. We will show that once these three fundamental 
problems are solved, we can apply HMMs to selected prob- 
lems in speech recognition. 
Neither the theory of hidden Markov models nor its 
applications to speech recognition is new. The basic theory 
was published in a series of classic papers by Baum and his 
colleagues [I]-[5] in the late 1960s and early 1970s and was 
implemented for speech processing applications by Baker 
161 at CMU, and by Jelinek and his colleagues at IBM [7-[13] 
in the 1970s. However, widespread understanding and 
application of the theory of HMMs to speech processing 
has occurred only within the past several years. There are 
several reasons why this has been the case. First, the basic 
theory of hidden Markov models was published in math- 
ematical journals which were not generally read by engi- 
neers working on problems in speech processing. The sec- 
ond reason was that the original applications of the theory 
to speech processing did not provide sufficient tutorial 
material for most readers to understand the theory and to 
be able to apply it to their own research. As a result, several 
tutorial papers were written which provided a sufficient 
level of detail for a number of research labs to begin work 
using HMMs in individual speech processing applications 
[14]-[19]. This tutorial is intended to provide an overview 
of the basic theory of HMMs (as originated by Baum and 
his colleagues), provide practical details on methods of 
implementation of the theory, and describe a couple of 
selected applications of the theory to distinct problems in 
speech recognition. The paper combines results from a 
number of original sources and hopefully provides a single 
source for acquiring the background required to pursue 
further this fascinating area of research. 
The organization of this paper is as follows. In Section I1 
we review the theory of discrete Markov chains and show 
how the concept of hidden states, where the observation 
is a probabilistic function of the state, can be used effec- 
tively. We illustrate the theory with two simple examples, 
namely coin-tossing, and the classic balls-in-urns system. 
In Section Ill we discuss the three fundamental problems 
of HMMs, and give several practical techniques for solving 
these problems. In Section IV we discuss the various types 
of HMMs that have been studied including ergodic as well 
as left-right models. In this section we also discuss the var- 
ious model features including the form of the observation 
density function, the state duration density, and the opti- 
mization criterion for choosing optimal HMM parameter 
values. In Section Vwe discuss the issues that arise in imple- 
menting HMMs including the topics of scaling, initial 
parameter estimates, model size, model form, missingdata, 
and multiple observation sequences. In Section VI we 
describean isolated word speech recognizer, implemented 
with HMM ideas, and show how it performs as compared 
to alternative implementations. In Section VI1 we extend 
the ideas presented in Section VI to the problem of recog- 
nizing a string of spoken words based on concatenating 
individual HMMsofeachword in thevocabulary. In Section 
Vlll we briefly outline how the ideas of HMM have been 
applied to a largevocabulary speech recognizer, and in Sec- 
tion IX we summarize the ideas discussed throughout the 
paper. 
11. DISCRETE MARKOV PROCESSES~ 
Consider a system which may be described at any time 
as being in one of a set of N distinct states, S1, SzI . . . , SN, 
as illustrated in Fig. 1 (where N = 5 for simplicity). At reg- 
Fig. 1. A Markov chain with 5 states (labeled S, to S,) with 
selected state transitions. 
ularlyspaced discrete times, the system undergoesachange 
of state (possibly back to the same state) according to a set 
of probabilities associated with the state. We denote the 
time instants associated with state changes as t = 1, 2, 
. . . , and we denote the actual state at time t as qr. A full 
probabilistic description of the above system would, in gen- 
eral, require specification of the current state (at time t), as 
well as all the predecessor states. For the special case of a 
discrete, first order, Markov chain, this probabilistic 
description is truncated to just the current and the pre- 
decessor state, i.e., 
99, = qqt-1 = SI, qt-2 = Skr . . .I 
= 9s: = S&: = SJ. (1 ) 
Furthermoreweonlyconsider those processes in which the 
right-hand side of (1) is independent of time, thereby lead- 
ing to the set of state transition probabilities a,, of the form 
(2) 
with the state transition coefficients having the properties 
a,, = 99, = S,(q,-, = S,], 1 5 i,j 5 N 
a,, 2 0 
C a,, = I 
N 
/=1 
(3a) 
(3b) 
since they obey standard stochastic constraints. 
The above stochastic process could be called an observ- 
able Markov model since the output of the process is the 
set of states at each instant of time, where each state cor- 
responds to a physical (observable) event. To set ideas, con- 
sider a simple 3-state Markov model of the weather. We 
assume that once a day (e.g., at noon), the weather is 
'A good overview of discrete Markov processes is in [20, ch. 51. 
258 PROCEEDINGS OF THE IEEE, VOL. 77, NO. 2, FEBRUARY 1989

observed as being one of the following: 
State 1: rain or (snow) 
State 2: cloudy 
State 3: sunny. 
We postulate that the weather on day tis characterized by 
a single one of the three states above, and that the matrix 
A of state transition probabilities is 
0.4 0.3 0.3 
LO.1 0.1 0.81 
Given that the weather on day 1 (t = 1) is sunny (state 3), 
we can ask the question: What is the probability (according 
to the model) that the weather for the next 7 days will be 
"sun-sun-rain-rain-sun-cloudy-sun * * a"? Stated more for- 
mally, we define the observation sequence 0 as 0 = {S3, 
S3, S3, S1, S1, S3, Sz, S3} corresponding to t = 1, 2, . . . , 8, 
and we wish to determine the probability of 0, given the 
model. This probability can be expressed (and evaluated) 
as 
P(0IModel) = RS,, S3, S3, S1, S1, S3, Sz, S31Modell 
= SS31 . RS3lS3l SS3lS3l RSlIS31 
= 7r3 
= 1 . (0.8)(0.8)(0.1)(0.4)(0.3)(0.1)(0.2) 
= 1.536 X 
a33 * a33 . a31 * all . a13 . a32 . aZ3 
where we use the notation 
K, = 491 = S;], 1 5 i 5 N (4) 
to denote the initial state probabilities. 
Another interesting question we can ask (and answer 
using the model) is: Given that the model is in a known state, 
what is the probabilityit stays in that stateforexactlyddays? 
This probability can be evaluated as the probability of the 
observation sequence 
0 = {Si, Si, Si, . * * , S. s # S;}, 
123 d' dkl 
given the model, which is 
P(OIMode1, ql = S;) = (aJd-'(l - a;;) = p,(d). (5) 
The quantityp;(d) is the (discrete) probability density func- 
tion of duration din state i. This exponential duration den- 
sity is characteristic of the state duration in a Markovchain. 
Based on pi(d), we can readily calculate the expected num- 
ber of observations (duration) in a state, conditioned on 
starting in that state as 
m - 
d; = c dpi(d) 
d=l (6a) 
m 
(6b) 
1 = c d(ajJd-'(1 - a;,) = -. 
d=l 1 - ai; 
Thus the expected number of consecutive days of sunny 
weather, according to the model, is 140.2) = 5; for cloudy 
it is 2.5; for rain it is 1.67. 
A. Extension to Hidden Markov Models 
So far we have considered Markov models in which each 
state corresponded to an observable (physical) event. This 
model is too restrictive to be applicable to many problems 
of interest. In this section we extend the concept of Markov 
models to include the case where the observation is a prob- 
abilistic function of the state-i.e., the resulting model 
(which iscalled a hidden Markovmodel) isadoublyembed- 
ded stochastic process with an underlying stochastic pro- 
cess that is not observable (it is hidden), but can only be 
observed through another set of stochastic processes that 
produce the sequence of observations. To fix ideas, con- 
sider the following model of some simple coin tossing 
experiments. 
Coin Toss Models: Assume the following scenario. You 
are in a room with a barrier (e.g., a curtain) through which 
you cannot see what is happening. On the other side of the 
barrier is another person who is performing a coin (or mul- 
tiplecoin) tossing experiment. Theother person will not tell 
you anything about what he is doing exactly; he will only 
tell you the result of each coin flip. Thus a sequence of hid- 
den coin tossing experiments is performed, with the obser- 
vation sequence consisting of a series of heads and tails; 
e.g., a typical observation sequence would be 
0 = O1 O2 O3 . . . OT 
= x x333x 33 x ... x 
where X stands for heads and 3 stands for tails. 
Given the above scenario, the problem of interest is how 
do we build an HMM to explain (model) the observed 
sequence of heads and tails. The first problem one faces is 
deciding what the states in the model correspond to, and 
then deciding how many states should be in the model. One 
possiblechoicewould betoassumethatonlyasingle biased 
coin was being tossed. In this case we could model the sit- 
uation with a 2-state model where each state corresponds 
to a side of the coin (i.e., heads or tails). This model is 
depicted in Fig. 2(a).3 In this case the Markov model is 
observable, and the only issue for complete specification 
of the model would be to decide on the best value for the 
bias (i.e., the probability of, say, heads). Interestingly, an 
equivalent HMM to that of Fig. 2(a) would be a degenerate 
I-state model, where the state corresponds to the single 
biased coin, and the unknown parameter is the bias of the 
coin. 
A second form of HMM for explaining the observed 
sequence of coin toss outcome is given in Fig. 2(b). In this 
case there are 2 states in the model and each state corre- 
sponds to a different, biased, coin being tossed. Each state 
is characterized by a probability distribution of heads and 
tails, and transitions between states are characterized by a 
state transition matrix. The physical mechanism which 
accounts for how state transitions are selected could itself 
be a set of independent coin tosses, or some other prob- 
abilistic event. 
A third form of HMM for explaining the observed 
sequence of coin toss outcomes is given in Fig. 2(c). This 
model corresponds to using 3 biased coins, and choosing 
from among the three, based on some probabilistic event. 
3The model of Fig. 2(a) is a memoryless process and thus is a 
degenerate case of a Markov model. 
RABINER: HIDDEN MARKOV MODELS 259

P(H1 4 - P(HI 
HEADS TAILS 
0 33 
STATE 
t23 
P(H1 PI Pp P3 
P(T) I-P, i-Pp I-P3 
--- 
0-HHTTHTHHTTH ... 
S=l122421122i ... 
0 =HHTTHTHHTTH ... 
S=21I22212212 ... 
O= HHTTHTHHTTH ... 
s=3123314 231 3... 
Fig. 2. Three possible Markov models which can account 
for the resultsof hidden coin tossing experiments. (a) I-coin 
model. (b) 2-coins model. (c) 3-coins model. 
Given the choice among the three models shown in Fig. 
2 for explaining the observed sequence of heads and tails, 
a natural question would bewhich model best matches the 
actual observations. It should beclearthat the simple I-coin 
model of Fig. 2(a) has only 1 unknown parameter; the 2-coin 
model of Fig. 2(b) has4 un known parameters; and the 3-coin 
model of Fig. 2(c) has 9 unknown parameters. Thus, with 
the greater degrees of freedom, the larger HMMs would 
seem to inherently be more capable of modeling a series 
of coin tossing experiments than would equivalently smaller 
models. Although this is theoretically true, we will see later 
in this paper that practical considerations impose some 
strong limitations on the size of models that we can con- 
sider. Furthermore, it might just be the case that only a sin- 
glecoin is being tossed. Then using the 3-coin model of Fig. 
2(c) would be inappropriate, since the actual physical event 
would not correspond to the model being used-i.e., we 
would be using an underspecified system. 
The Urn and BallMode14:To extend the ideas of the HMM 
to a somewhat more complicated situation, consider the 
urn and ball system of Fig. 3. We assume that there are N 
(1arge)glassurnsin aroom. Withineach urntherearealarge 
number of colored balls. We assume there are M distinct 
colorsofthe balls. The physical processforobtainingobser- 
vations is as follows. A genie is in the room, and according 
to some random process, he (or she) chooses an initial urn. 
From this urn, a ball is chosen at random, and its color is 
recorded as theobservation.The ball is then replaced in the 
urn from which it was selected. A new urn is then selected 
4The urn and ball model was introduced by Jack Ferguson, and 
his colleagues, in lectures on HMM theory. 
os {GREEN, GREEN, BLUE, RED, YELLOW, RED, .. . . . ... BLUE} 
Fig. 3. An N-state urn and ball model which illustrates the 
general case of a discrete symbol HMM. 
according to the random selection process associated with 
the current urn, and the ball selection process is repeated. 
This entire process generates afinite observation sequence 
of colors, which we would like to model as the observable 
output of an HMM. 
It should be obvious that the simplest HMM that cor- 
responds to the urn and ball process is one in which each 
state corresponds to a specific urn, and for which a (ball) 
color probability is defined for each state. The choice of 
urns is dictated by the state transition matrix of the HMM. 
5. Elements of an HMM 
The above examples give us a pretty good idea of what 
an HMM is and how it can be applied to some simple sce- 
narios. We now formally define the elements of an HMM, 
and explain how the model generates observation 
sequences. 
An HMM is characterized by the following: 
1) N, the number of states in the model. Although the 
states are hidden, for many practical applications there is 
often some physical significance attached to the states or 
to sets of states of the model. Hence, in the coin tossing 
experiments, each state corresponded to a distinct biased 
coin. In the urn and ball model, the states corresponded 
to the urns. Generally the states are interconnected in such 
a way that any state can be reached from any other state 
(e.g., an ergodic model); however, we will see later in this 
paper that other possible interconnections of states are 
often of interest. We denote the individual states as S = {Sl, 
S2, . . . , SN}, and the state at time t as g,. 
2) M, the number of distinct observation symbols per 
state, i.e., the discrete alphabet size. The observation sym- 
bols correspond to the physical output of the system being 
modeled. For the coin toss experiments the observation 
symbols were simply heads or tails; for the ball and urn 
model they were the colors of the balls selected from the 
urns. We denote the individual symbols as V = {vl, v,, 
3) The state transition probability distribution A = {a,} 
(7) 
For the special case where any state can reach any other 
state in a single step, we have a, > 0 for all i, j. For other 
types of HMMs, we would have a,] = 0 for one or more (i, 
j) pairs. 
*. * , VM). 
where 
a,, = p[q,+l = S,lq, = S,], 1 5 i, j I N. 
260 PROCEEDINGS OF THE IEEE, VOL. 77, NO. 2, FEBRUARY 1989

4) The observation symbol probability distribution in 
statej, B = {b,(k)}, where 
b,(k) = p[vk at t)qt = S,], 1 I j 5 N 
IikiM. (8) 
5) The initial state distribution T = {T~} where 
T, = p[ql = SI], 1 i i i N. (9) 
Given appropriate values of N, M, A, B, and ir, the HMM 
can be used as a generator to give an observation sequence 
0=01O~~~~oJ (10) 
(where each observation 0, is one of the symbols from V, 
and Tis the number of observations in the sequence) as 
follows: 
1) Choose an initial state q, = SI according to the initial 
state distribution T. 
2) Set t = 1. 
3) Choose 0, = vk according to the symbol probability 
distribution in state SI, i.e., b,(k). 
4) Transit to a new state q,,, = S, according to the state 
transition probability distribution for state S,, i.e., a,. 
5) Set t = t + 1; return to step 3)if t < T; otherwise ter- 
minate the procedure. 
The above procedure can be used as both a generator of 
observations, and as a model for how a given observation 
sequence was generated by an appropriate HMM. 
It can be seen from the above discussion that a complete 
specification of an HMM requires specification of two 
model parameters (N and M), specification of observation 
symbols, and the specification of the three probability mea- 
sures A, B, and T. For convenience, we use the compact 
notation 
A = (A, 6, T) (11) 
to indicate the complete parameter set of the model. 
C. The Three Basic Problems for HMMs5 
Given the form of HMM of the previous section, there are 
three basic problems of interest that must be solved for the 
model to be useful in real-world applications. These prob- 
lems are the following: 
Problem 7: Given the observation sequence 0 = O1 O2 
. . * Or, and a model A = (A, 6, ir), how do 
we efficiently compute P(OIA), the proba- 
bilityof theobservation sequence,given the 
model? 
Problem 2: Given the observation sequence 0 = 0, O2 
. . . Or, and the model A, how do we choose 
a corresponding state sequence Q = q1 q2 
. . . qJwhich is optimal in some meaningful 
sense (i.e., best “explains” the observa- 
t ion s)? 
Problem 3: How do we adjust the model parameters A 
= (A, B, T) to maximize P(OJA)? 
5The material in this section and in Section Ill is based on the 
ideas presented by Jack Ferguson of IDA in lectures at Bell Lab- 
oratories. 
Problem 1 is the evaluation problem, namely given a 
model and asequenceof observations, how dowecompute 
the probability that the observed sequence was produced 
by the model. We can also view the problem as one of scor- 
ing how well a given model matches a given observation 
sequence. The latter viewpoint is extremely useful. For 
example, if we consider the case in which we are trying to 
choose among several competing models, the solution to 
Problem 1 allows us to choose the model which best 
matches the observations. 
Problem 2 is the one in which we attempt to uncover the 
hidden part of the model, i.e., to find the “correct” state 
sequence. It should be clear that for all but the case of 
degenerate models, there is no “correct” state sequence 
to be found. Hence for practical situations, we usually use 
an optimality criterion to solve this problem as best as pos- 
sible. Unfortunately, as we will see, there are several rea- 
sonable optimality criteria that can be imposed, and hence 
the choice of criterion is a strong function of the intended 
use for the uncovered state sequence. Typical uses might 
be to learn about the structure of the model, to find optimal 
state sequences for continuous speech recognition, or to 
get average statistics of individual states, etc. 
Problem 3 is the one in which we attempt to optimize the 
model parameters so as to best describe how a given obser- 
vation sequence comes about. The observation sequence 
used to adjust the model parameters is called a training 
sequence since it is used to “train” the HMM. The training 
problem is the crucial one for most applications of HMMs, 
since it allows us to optimally adapt model parameters to 
observed training data-i.e., to create best models for real 
phenomena. 
To fix ideas, consider the following simple isolated word 
speech recognizer. For each word of a Wword vocabulary, 
we want to design a separate N-state HMM. We represent 
the speech signal of a given word as a time sequence of 
coded spectral vectors. We assume that the coding is done 
using a spectral codebook with M unique spectral vectors; 
hence each observation is the index of the spectral vector 
closest (in some spectral sense) to the original speech sig- 
nal. Thus, for each vocabulary word, we have a training 
sequence consisting of a number of repetitions of 
sequencesofcodebook indicesoftheword (byoneor more 
talkers). The first task is to build individual word models. 
This task is done by using the solution to Problem 3 to opti- 
mally estimate model parameters for each word model. To 
develop an understanding of the physical meaning of the 
model states, we use the solution to Problem 2 to segment 
each of the word training sequences into states, and then 
study the properties of the spectral vectors that lead to the 
observations occurring in each state. The goal here would 
be to make refinements on the model (e.g., more states, 
different codebook size, etc.) so as to improve its capability 
of modeling the spoken word sequences. Finally, once the 
set of W HMMs has been designed and optimized and thor- 
oughly studied, recognition of an unknown word is per- 
formed using the solution to Problem 1 to score each word 
model based upon the given test observation sequence, 
and select the word whose modelscore is highe5t [k,? the 
highest I i kel i hood). 
In the next section we present formal mathematical solu- 
tionstoeachofthethreefundamental problemsfor HMMs. 
RABINER: HIDDEN MARKOV MODELS 261

We shall see that the three problems are linked together 
tightly under our probabilistic framework. 
Ill. SOLUTIONS TO THE THREE BASIC PROBLEMS OF HMMs 
A. Solution to Problem 1 
We wish to calculate the probability of the observation 
sequence, 0 = O1 O2 . . . Or, given the model A, i.e., P(0IX). 
The most straightforward way of doing this is through 
enumerating every possible state sequence of length T(the 
number of observations). Consider one such fixed state 
sequence 
Q=qiq2.*.qr (12) 
where q1 is the initial state. The probability of the obser- 
vation sequence 0 for the state sequence of (12) is 
r 
P(OIQ, N = II P(OtJqt, h) (13a) 
i=1 
where we have assumed statistical independence of obser- 
vations. Thus we get 
p(OlQ, N = bql(Oi) . bqz(OJ . . . bqJ(OT). (13b) 
The probability of such a state sequence Q can be written 
as 
P(QIA) = rq1aq1qzaq2q3 * . * aqr-lqr. (14) 
The joint probability of 0 and Q, i.e., the probability that 
Oand Qoccur simultaneously, is simplythe product of the 
above two terms, i.e., 
P(0, QIN = P(OIQ, N P(Q, N. (1 5) 
The probability of 0 (given the model)is obtained by sum- 
ming this joint probabilityover all possible state sequences 
q giving 
P(0IN = P(OIQ, N P(QIN (1 6) 
The interpretation of the computation in the above equa- 
tion is the following. Initially (at time t = l) we are in state 
q1 with probability rq,, and generate the symbol O1 (in this 
state) with probability bqI(O1). The clock changes from time 
t to t + 1 (t = 2) and we make a transition to state q, from 
state q1 with probability aqIq2, and generate symbol O2 with 
probability bq2(O2). This process continues in this manner 
until we make the list transition (at time T) from state qT-1 
to state qT with probability aqr-lqr and generate symbol Or 
with probability bql(Or). 
A little thought should convince the reader that the cal- 
culation of P(O(h), according to its direct definition (17) 
involves on the order of 2T. N'calculations, since at every 
t = 1, 2, . . . , T, there are N possible states which can be 
reached (i.e., there are Nr possible state sequences), and 
for each such state sequence about 2T calculations are 
required for each term in the sum of (17). (To be precise, 
we need (2T - l)Nr multiplications, and NT - 1 additions.) 
This calculation is computationally unfeasible, even for 
small values of N and T; e.g., for N = 5 (states), T = 100 
(observations), there are on the order of 2 . 100 * 5" = 
computations! Clearly a more efficient procedure is 
required to solve Problem 1. Fortunately such a procedure 
exists and is called the forward-backward procedure. 
The Forward-Backward Procedure [2], [316: Consider the 
forward variable at(;) defined as 
at(;) = P(O1 02 . . . oi, qt = S,IN (18) 
i.e., the probability of the partial observation sequence, 0, 
02. . . O,,(until timet)andstateS,at time t,given the model 
A. We can solve for a,(;) inductively, as follows: 
1) Initialization: 
CY,(;) = ~,b,(Ol), 1 5 i 5 N. (1 9) 
2) Induction: 
= C ai(i)al, b,(~(+~), I 5 t 5 T - I 
1 5 j 5 N. 
I 
(20) 
3) Termination: 
N 
~(01~) = C aT(i). (21 ) 
Stepl) initializesthe forward probabilitiesasthejoint prob- 
ability of state SI and initial observation O1. The induction 
step, which is the heart of the forward calculation, is illus- 
trated in Fig. 4(a). This figure shows how state S, can be 
r=l 
(a) 
II I I I 
123 T 
OBSERVATION, t 
Fig. 4. (a) Illustration of the sequence of operations 
required for thecomputation of the forward variableol,+,(j). 
(b) Implementation of the computation of a,(;) in terms of 
a lattice of observations t, and states i. 
bStrictly speaking, we only need the forward part of the forward- 
backward procedure to solve Problem 1. We will introduce the 
backward part of the procedure in this section since it will be used 
to help solve Problem 3. 
262 PROCEEDINGS OF THE IEEE, VOL. 77, NO. 2, FEBRUARY 1989

reached at time t + 1 from the N possible states, SI, 1 I i 
I N, at timet. Since a,(;) is the probabilityof the joint event 
that 0, O2 . . . 0, are observed, and the state at time t is SI, 
the product a,(i)a, is then the probabilityof the joint event 
that O1 O2 . . . 0, are observed, and state S, is reached at 
time t + 1 via state S, at time t. Summing this product over 
all the N possible states SI, 1 5 i I N at time t results in the 
probabilityof Slat time t + 1 with all theaccompanying pre- 
vious partial observations. Once this is done and SI is known, 
it is easy to see that a,+l(j) is obtained by accounting for 
observation in state j, i.e., by multiplying the summed 
quantity bythe probabilityb,(O,+l).Thecomputation of(20) 
is performed for all states j, 1 I j c N, for a given t; the 
computation is then iterated for t = 1,2, . . . , T - 1. Finally, 
step 3) gives the desired calculation of P(0IX) as the sum 
of the terminal forward variables aT(i). This is the case since, 
by definition, 
(22) 
and hence P(O(X) is just the sum of the aJ(i)'s. 
If we examine the computation involved in the calcula- 
tion of a,(j), 1 5 t I T, 1 5 j 5 N, we see that it requires 
on the order of N2T calculations, rather than 2TNr as 
required by the direct calculation. (Again, to be precise, we 
need N(N + 1)(T - 1) + N multiplications and N(N - 1)(T 
- 1) additions.) For N = 5, T = 100, we need about 3000 
computations for the forward method, versus IO7* com- 
putations for the direct calculation, a savings of about 69 
orders of magnitude. 
The forward probability calculation is, in effect, based 
upon the lattice (or trellis) structure shown in Fig. 4(b). The 
key is that since there are only N states (nodes at each time 
slot in the lattice), all the possible state sequences will re- 
merge into these N nodes, no matter how long the obser- 
vation sequence. At time t = 1 (the first time slot in the lat- 
tice), we need to calculate values of el(;), 1 5 i I N. At times 
t = 2,3, . . . , T, we only need to calculate values of at( j), 
1 5 I N, where each calculation involves only N previous 
valuesofa,-,(i) becauseeachofthe Ngrid pointsisreached 
from the same N grid points at the previous time slot. 
In asimilar manner,7wecan considera backwardvariable 
&(i) defined as 
PtG) = P(O,+, ot+2 . . . OTIq, = s,, h) (23) 
i.e., the probabilityof the partial observation sequence from 
t + 1 to the end, given state SI at time t and the model h. 
Again we can solve for &(i) inductively, as follows: 
aJ(i) = P(o1 02 . . ' or, qJ = s,Ih) 
@T(i) = 1, 1 5 i 5 N. (24) 
PAi) = a,b,(O,+l) &+dj), 
N 
/=1 
t=T-I,T-2;..,1,1 si< N. (25) 
The initialization step 1) arbitrarily defines or(;) to be 1 for 
all i. Step21,which is illustrated in Fig. 5, shows that in order 
to have been in state SI at time t, and to account for the 
'Again we remind the reader that the backward procedure will 
be used in the solution to Problem 3, and is not required for the 
solution of Problem 1. 
t 
P,ci) 
Fig. 5. Illustration of the sequence of operations required 
for the computation of the backward variable &(i). 
observation sequence from time t + 1 on, you have to con- 
sider all possible states S, at time t + 1, accounting for the 
transition from SI to S, (the a, term), as well as the obser- 
vation in state j (the b,(O,+,) term), and then account 
for the remaining partial observation sequence from state 
j (the /3,+,(j) term). We will see later how the backward, as 
well as the forward calculations are used extensively to help 
solve fundamental Problems 2 and 3 of HMMs. 
Again, the computation of fit(;), 1 I t I T, 1 5 i 5 N, 
requires on the order of N2Tcalculations, and can be com- 
puted in a lattice structure similar to that of Fig. 4(b). 
B. Solution to Problem 2 
Unlike Problem 1 forwhichanexact solutioncan begiven, 
there are several possible ways of solving Problem 2, namely 
finding the "optimal" state sequence associated with the 
given observation sequence. The difficulty lieswith thedef- 
inition of the optimal state sequence; i.e., there are several 
possible optimalitycriteria. For example, one possibleopti- 
mality criterion is to choose the states g, which are indi- 
viduallymost likely.This optimalitycriterion maximizes the 
expected number of correct individual states. To imple- 
ment this solution to Problem 2, we define the variable 
rAi) = P(q, = S,IO, A) (26) 
i.e., the probability of being in state SI at time t, given the 
observation sequence 0, and the model A. Equation (26)can 
be expressed simply in terms of the forward-backward 
variables, i.e., 
(27) a (i) P (i) a,(;) PAi) ?,(/) = = 
p(o'x) 5 a,(;) &(/) 
,=1 
since a,(;) accounts for the partial observation sequence O1 
O2 * * 1 0, and state S, at t, while &(i) accounts for the 
remainder of the observation sequence 0t+2 . . . Or, 
given state SI at t. The normalization factor P(0)X) = Cy=, 
a,(;), PI(;) makes yt(i) a probability measure so that 
N 
c y,(i) = 1. (28) 
Using r,(i), we can solve for the individually most likely 
g, = argmax [r,(i)], 1 I t 5 T. (29) 
,=1 
state g, at time t, as 
IcrcN 
RABINER: HIDDEN MARKOV MODELS 263

Although (29) maximizes the expected number of correct 
states (by choosing the most likely state for each t), there 
could be some problems with the resulting state sequence. 
For example, when the HMM has state transitions which 
havezero probabilty(a,, = Ofor someiandj), the"optima1" 
state sequence may, in fact, not even be a valid state 
sequence. This is due to the fact that the solution of (29) 
simply determines the most likely state at every instant, 
without regard to the probability of occurrence of 
sequences of states. 
One possible solution to the above problem is to modify 
the optimality criterion. For example, one could solve for 
the state sequence that maximizes the expected number of 
correct pairs of states (q,, qt+l), or triples of states (q,, 
qt+l, q,+*), etc.Although thesecriteria might be reasonable 
for some applications, the most widely used criterion is to 
find the single best state sequence (path), i.e., to maximize 
P(Ql0, X) which is equivalent to maximizing P(Q, Olh). A 
formal technique for finding this single best state sequence 
exists, based on dynamic programming methods, and is 
called the Viterbi algorithm. 
Viterbi Algorithm [21], [22]: To find the single best state 
sequence, Q = {ql q, . . . qr}, for the given observation 
sequence 0 = (0, 0, 1. . Or}, we need to define the 
quantity 
= max Rql 92 . . . q, = i, 0, O2 . . . O,(h] 
91.42. ' ' ' .9t- 1 
(30) 
i.e., 6,(i) is the best score (highest probability) along a single 
path, at time t, which accounts for the first t observations 
and ends in state SI. By induction we have 
6,+dj) = [max 6,(i)a,,l . b,(Of+d. (31) 
L 
To actually retrieve the state sequence, we need to keep 
track of the argument which maximized (31), for each tand 
j. We do this via the array J.,(j). The complete procedure 
for finding the best state sequence can now be stated as 
follows: 
6,(i) = T,b,(Ol), 1 I i I N (32a) 
lJl(i) = 0. Wb) 
2) Recursion: 
6,Cj) = max [6t-l(i)a,lb,(0,), 2 I t I T 
1 I j I N 
1sisN 
(33a) 
= argmax [6t-l(i)a,l, 25tIT 
1risN 
1 I j N. (33b) 
3) Termination: (34a) 
P* = max [&(i)] 
1sisN 
(34 b) 
4) Path (state sequence) backtracking: 
q: = J.t+l(q:+l), t = T - 1, T - 2, * * , 1. (35) 
It should be noted that the Viterbi algorithm is similar 
(except for the backtracking step) in implementation to the 
forward calculation of (19)-(21). The major difference is the 
maximization in (33a) over previous states which is used in 
place of the summing procedure in (20). It also should be 
clear that a lattice (or trellis) structure efficiently imple- 
ments the computation of the Viterbi procedure. 
C. Solution to Problem 3 [7]-[5] 
The third, and by far the most difficult, problem of HMMs 
is to determine a method to adjust the model parameters 
(A, B, T) to maximize the probability of the observation 
sequence given the model. There is no known way to ana- 
lytically solve for the model which maximizes the proba- 
bility of the observation sequence. In fact, given any finite 
observation sequence as training data, there is no optimal 
way of estimating the model parameters. We can, however, 
choose X = (A, B, T) such that P(0Jh) is locally maximized 
using an iterative procedure such as the Baum-Welch 
method (or equivalently the EM (expectation-modification) 
method [23]), or using gradient techniques [14]. In this sec- 
tion we discuss one iterative procedure, based primarily on 
the classic work of Baum and his colleagues, for choosing 
model parameters. 
In order to describe the procedure for reestimation (iter- 
ative update and improvement) of HMM parameters, we 
first define [,(i,j), the probability of being in state SI at time 
t, and state S, at time t + 1, given the model and the obser- 
vation sequence, i.e. 
The sequence of events leading to the conditions required 
by (36) is illustrated in Fig. 6. It should be clear, from the 
0 
a,(i) I 
-I 
I 
1-1 +I 
Fig. 6. Illustration of the sequence of operations required 
for the computation of the joint event that the system is in 
state S, at time t and state S, at time t + 1. 
definitions of the forward and backward variables, that we 
can write [,(i, j) in the form 
4) a,b,(O,+l) P,+l(j) 
P(O( A) [Ai, j) = 
where the numerator term is just P(qt = S,, qt+l = SI, 011) 
and the division by P(0IX) gives the desired probability 
measure. 
264 PROCEEDINGS OF THE IEEE, VOL. 77, NO. 2, FEBRUARY 1989

We have previously defined Ti(;) as the probability of 
being in state SI at time t, given the observation sequence 
and the model; hence we can relate Ti(;) to Ff(i, j) by sum- 
ming over j, giving 
N 
rAi) = C (Ai, /I. (38) 
/=1 
Ifwesumy,(i)over the time index t,weget aquantitywhich 
can be interpreted as the expected (over time) number of 
times that state SI is visited, or equivalently, the expected 
number of transitions made from state SI (if we exclude the 
time slot t = Tfrom the summation). Similarly, summation 
of Ft(i, j) over t (from t = 1 to t = T - 1) can be interpreted 
as the expected number of transitions from state SI to state 
S,. That is 
T-1 
C yf(i) = expected number of transitions from S, 
f=l 
(394 
C ti(;, j) = expected number of transitions from SI to S,. 
(39b) 
Using the above formulas (and the concept of counting 
event occurrences) we can give a method for reestimation 
of the parameters of an HMM. A set of reasonable reesti- 
mation formulas for T, A, and 6 are 
T-1 
f=l 
lihood estimate of the HMM. It should be pointed out that 
the forward-backward algorithm leads to local maxima 
only, and that in most problems of interest, the optimi- 
zation surface is very complex and has many local maxima. 
The reestimation formulas of (40a)-(40c) can be derived 
directly by maximizing (using standard constrained opti- 
mization techniques) Baum’s auxiliary function 
over h. It has been proven by Baum and his colleagues [6], 
[3] that maximization of Q(h, x) leads to increased likeli- 
hood, i.e. 
max [Q(X, x)] P(0Ix) 2 P(O(h). (42) 
Eventually the likelihood function converges to a critical 
point. 
Notes on the Reestimation Procedure: The reestimation 
formulas can readily be interpreted as an implementation 
of the EM algorithm of statistics [23] in which the E (expec- 
- tation) step is the calculation of the auxiliary function Q(X, 
A), and the M (modification) step is the maximization over 
A. Thus the Baum-Welch reestimation equations are essen- 
tially identical to the EM steps for this particular problem. 
An important aspect of the reestimation procedure is that 
the stochastic constraints of the HMM parameters, namely 
A 
- 
N 
C?r,=I 
,=1 (434 
(40a) - 
T, = expected frequency (number of times) in state SI at time (t = 1) = 
- 
4, = 
expected number of transitions from state SI to state S, 
expected number of transitions from state SI 
T-1 
- 
b,(k) = 
expected number of times in state j and observing symbol vk 
expected number of times in state j 
7 
T 
s.1. 0, = Vk 
(40~) - - 
If we define the current model as A = (A, 6, T), and use 
that to compute the right-hand sides of (40a)-(40c), and we 
from the left-hand sides of (40a)-(40c), then it has been 
N 
CZ,/=I, l~i5N (43b) 
/=1 define the reestimated model as x = A, E, F), as determined 
proven by Baum and his colleagues [6], [3] that either 1) the M 
C b,(k) = I, I I j I N (43c) initial model Xdefinesacritical pointofthelikelihood func- k=l 
tion, in which casex = X; or 2) model h is more likely than 
model X in the sense that P(0Jx) > P(OIX), i.e., we have 
found a new model xfrom which the observation sequence 
is more likely to have been produced. 
Based on the above procedure, if we iteratively use 1 in 
place of X and repeat the reestimation calculation, we then 
can improve the probability of 0 being observed from the 
model until some limiting point is reached. The final result 
of this reestimation procedure is called a maximum like- 
are automatically satisfied at each iteration. By looking at 
the parameter estimation problem as a constrained opti- 
mization of P(OJh) (subject to the constraints of (43)), the 
techniques of Lagrange multipliers can be used to find the 
valuesof x,,al,, and b,(k)which maximize P(we use the nota- 
tion P = P(0IX) as short-hand in this section). Based on set- 
ting up a standard Lagrange optimization using Lagrange 
multipliers, it can readily beshownthatpis maximizedwhen 
RABINER: HIDDEN MARKOV MODELS 265

the following conditions are met: 
ap 
*I = N 
ap 
aka k=l Tk 
By appropriate manipulation of (44), the right-hand sides of 
each equation can be readily converted to be identical to 
the right-hand sides of each part of (40a)-(40c), thereby 
showing that the reestimation formulas are indeed exactly 
correct at critical points of P. In fact the form of (44) is essen- 
tially that of a reestimation formula in which the left-hand 
side is the reestimate and the right-hand side is computed 
using the current values of the variables. 
Finally, we note that since the entire problem can be set 
up as an optimization problem, standard gradient tech- 
niques can be used to solve for "optimal" values of the 
model parameters [14]. Such procedures have been tried 
and have been shown to yield solutionscomparabletothose 
of the standard reestimation procedures. 
IV. TYPES OF HMMs 
Until now, we have only considered the special case of 
ergodic or fully connected HMMs in which every state of 
the model could be reached (in a single step) from every 
other state of the model. (Strictly speaking, an ergodic 
model has the property that every state can be reached from 
every other state in a finite number of steps.) As shown in 
Fig. 7(a), for an N = 4 state model, this type of model has 
the property that every aij coefficient is positive. Hence for 
the example of Fig. 7a we have 
all a12 a13 a14 
a21 a22 a23 a24 
a31 a32 a33 a34 
a41 a42 a43 a4 
For some applications, in particularthose to bediscussed 
later in this paper, other types of HMMs have been found 
to account for observed properties of the signal being mod- 
eled better than the standard ergodic model. One such 
model is shown in Fig. 7(b). This model is called a left-right 
model or a Bakis model [Ill, [IO] because the underlying 
state sequence associated with the model has the property 
that as time increases the state index increases (or stays the 
same), i.e., the states proceed from left to right. Clearly the 
left-right typeof HMM has thedesirable propertythat it can 
readily model signals whose properties change overtime- 
e.g., speech. The fundamental property of all left-right 
(C) 
Fig. 7. Illustration of 3 distinct types of HMMs. (a) A4-state 
ergodic model. (b)ACstate left-right model. (c)A6-state par- 
allel path left-right model. 
HMMs is that the state transition coefficients have the prop- 
erty 
a,, = 0, j < i (45) 
i.e., no transitions are allowed to states whose indices are 
lower than the current state. Furthermore, the initial state 
probabilities have the property 
0, if1 
1, i=l 
*, = [ (46) 
since the state sequence must begin in state 1 (and end in 
state N). Often, with left-right models, additional con- 
straints are placed on the state transition coefficients to 
make sure that large changes in state indices do not occur; 
hence a constraint of the form 
a,/=O, j>i+A (47) 
is often used. In particular, for the example of Fig. 7(b), the 
value of A is 2, i.e., no jumps of more than 2 states are 
allowed. The form of the state transition matrix for the 
example of Fig. 7(b) is thus 
OOOa- 
It should beclearthat, for the last state in a left-right model, 
that the state transition coefficients are specified as 
a" = 1 (Ma) 
aN, = 0, i < N. (ab) 
266 PROCEEDINGS OF THE IEEE, VOL. 77, NO. 2, FEBRUARY 1989

Although we have dichotomized HMMs into ergodic and 
left-right models, there are many possible variations and 
combinations possible. By way of example, Fig. 7(c) shows 
a cross-coupled connection of two parallel left-right HMMs. 
Strictly speaking, this model is a left-right model (it obeys 
all the a,, constraints); however, it can be seen that it has 
certain flexibility not present in a strict left-right model (i.e., 
one without parallel paths). 
It should be clear that the imposition of the constraints 
of the left-right model, or those of the constrained jump 
model, essentially have no effect on the reestimation pro- 
cedure. This is the case because any HMM parameter set 
to zero initially, will remain at zero throughout the rees- 
timation procedure (see (44)). 
A. Continuous Observation Densities in HMMs 1241-[26] 
All of our discussion, to this point, has considered only 
the case when the observations were characterized as dis- 
crete symbols chosen from a finite alphabet, and therefore 
we could use a discrete probability density within each state 
of this model. The problem with this approach, at least for 
some applications, is that the observations are continuous 
signals (or vectors). Although it is possible to quantize such 
continuous signals via codebooks, etc., there might be seri- 
ous degradation associated with such quantization. Hence 
it would be advantageous to be able to use HMMs with con- 
tinuous observation densities. 
In order to use a continuous observation density, some 
restrictions have to be placed on the form of the model 
probability density function (pdf) to insure that the param- 
eters of the pdf can be reestimated in a consistent way. The 
most general representation of the pdf, for which a rees- 
timation procedure has been formulated [24]-[26], is a finite 
mixture of the form 
M 
b,(o) = C c/mxtO, p/m, U,,], 1 5 j 5 N (49) 
whereoisthevector being modeled,c,,,,isthemixturecoef- 
ficient for the mth mixture in state/ and 31. is any log-con- 
cave or elliptically symmetric density [24] (e.g., Gaussian), 
with mean vector p/, and covariance matrix U,,,, for the mth 
mixture component in state j. Usually a Gaussian density 
is used for 31.. The mixture gains q,,, satisfy the stochastic 
constraint 
C =I, IS~SN (5Oa) 
(50b) 
m=l 
M 
,,,=I cl,,, 
c,,,, 2 0, 1 I j 5 N, 1 s: m 5 M 
so that the pdf is properly normalized, i.e., 
b,(x) dx = 1, 1 5 i 5 N. (51) 
The pdf of (49) can be used to approximate, arbitrarily 
closely, any finite, continuous density function. Hence it 
can be applied to a wide range of problems. 
It can be shown [24]-[26] that the reestimation formulas 
for the coefficients of the mixture density, i.e., c,,,,, P/k, and 
U,k, are of the form 
S_x, 
T 
- C rAi, k) 
(52) 
f=l 
‘/k = T M 
C rdj, k) 
f=1 k=l 
T 
(53) 
T 
- C ’Yt(/, k) . (0, - CL/k)(Ot - P,d’ 
T (54) U. = t=l 
/k 
rf(i, k) 
i=l 
where prime denotes vector transpose and where rt(j, k) 
is the probability of being in state i at time t with the kth 
mixture component accounting for O,, i.e., 
(The term r,(j, k) generalizes to rt(j) of (26) in the case of 
a simple mixture, or a discrete density.) The reestimation 
formula for a, is identical to the one used for discrete obser- 
vation densities (i.e., (40b)). The interpretation of (52)-(54) 
is fairly straightforward. The reestimation formula for c,k is 
the ratio between theexpected number of times the system 
is in state j using the kth mixture component, and the 
expected number of times the system is in statej. Similarly, 
the reestimation formula for the mean vector p/k weights 
each numerator term of (52) by the observation, thereby 
giving the expected value of the portion of the observation 
vector accounted for by the kth mixture component. A sim- 
ilar interpretation can be given for the reestimation term 
for the covariance matrix u/k. 
B. Autoregressive HMMS [27J [28] 
Although the general formulation of continuous density 
HMMs is applicable to a wide range of problems, there is 
one other very interesting class of HMMs that is particularly 
applicable to speech processing. This is the class of auto- 
regressive HMMs [27, [28]. For this class, the observation 
vectors are drawn from an autoregression process. 
To be more specific, consider the observation vector 0 
with components (xo, xl, x2, . . . , XK-1). Since the basis prob- 
ability density function for the observation vector is Gauss- 
ian autoregressive (or order p), then the components of 0 
are related by 
P 
,=1 
Ok = - ar0k-l + ek (55) 
where ek, k = 0,1,2, . . . , K - 1 are Gaussian, independent, 
identically distributed random variables with zero mean and 
variance U*, and a,, i = 1,2, * . . , p, are the autoregression 
or predictor coefficients. It can be shown that for large K, 
the density function for 0 is approximately 
where 
a’ = [I, al, a2, . . . , a,] 
RABINER: HIDDEN MARKOV MODELS 267

P-‘ 
n=O 
K-i-1 
r,(i) = C anan+, (57~) 
r(i) = C x,x,+, o I i 5 p. (57d) 
In the above equations it can be recognized that r(i) is the 
autocorrelation of the observation samples, and r,(i) is the 
autocorrelation of the autoregressive coefficients. 
The total (frame) prediction residual CY can be written as 
(ao = I), I 5 i 5 p 
n=O 
rK i 
CY = E ,C (ei)’ = ~o~ 
J 
where U’ is the variance per sample of the error signal. Con- 
sider the normalized observation vector 
(59) 
where each sample xi is divided by m, i.e., each sample 
is normalized bythe samplevariance.Then f(0)can bewrit- 
ten as 
In practice, the factor K (in front of the exponential of (60)) 
is replaced by an effective frame length K which represents 
theeffective length of each datavector. Thus if consecutive 
data vectors are overlapped by 3 to 1, then we would use 
/? = K/3 in (60), so that the contribution of each sample of 
signal to the overall density is counted exactly once. 
Theway in which we use Gaussian autoregressivedensity 
in HMMs is straightforward. We assume a mixture density 
of the form 
M 
b/(O) = ,,,?, c/mb/m(O) (61 ) 
where each b,,,,(O) is the density defined by (60) with auto- 
regression vector a,,,, (or equivalently by autocorrelation 
vector ra,,J, i.e., 
A reestimation formula for the sequence autocorrelation, 
r(i) of (57d), for the jth state, kth mixture, component has 
been derived, and is of the form 
T 
C rAi, k) . rt 
(63a) - t=l 
r/k = T 
where yt(j, k) is defined as the probability of being in state 
i at time t and using mixture component k, i.e., 
It can be seen that ?jk is a weighted sum (by probability of 
occurrence) of the normalized autocorrelations of the 
frames in the observation sequence. From ijk, one can solve 
a set of normal equations to obtain the corresponding auto- 
regressive coefficient vector iijk, for the kth mixture of state 
1. The new autocorrection vectors of the autoregression 
coefficientscan then becalculated using (5713, therebyclos- 
ing the reestimation loop. 
C. Variants on HMM Structures-Null Transitions and Tied 
States 
Throughout this paper we have considered HMMs in 
which the observations were associated with states of the 
model. It is also possible to consider models in which the 
observations are associated with the arcs of the model. This 
type of HMM has been used extensively in the IBM con- 
tinuous speech recognizer [13]. It has been found useful, 
for this type of model, to allow transitions which produce 
nooutput-i.e., jumps irom one state to another which pro- 
duce no observation [13]. Such transitions are called null 
transitions and are designated by a dashed line with the 
symbol 4 used to denote the null output. 
Fig. 8 illustrates 3 examples (from speech processing 
tasks) where null arcs have been successfully utilized. The 
499 9 
h U 
9 
9 
Fig. 8. Examples of networks incorporating null transi- 
tions. (a) Left-right model. (b) Finite state network. (c) Gram- 
mar network. 
example of part (a) corresponds to an HMM (a left-right 
model) with a large number of states in which it is possible 
to omit transitions between any pair of states. Hence it is 
possible to generate observation sequences with as few as 
1 observation and still account for a path which begins in 
state 1 and ends in state N. 
The example of Fig. 8(b) is a finite state network (FSN) rep- 
resentation of aword in terms of linguistic unit models (i.e., 
the sound on each arc is itself an HMM). For this model the 
null transition gives a compact and efficient way of describ- 
ing alternate word pronunciations (i.e., symbol delections). 
Finally the FSN of Fig. 8(c) shows how the ability to insert 
a null transition into a grammar network allows a relatively 
simple network to generate arbitrarily long word (digit) 
sequences. In the example shown in Fig. 8(c), the null tran- 
sition allows the network to generate arbitrary sequences 
of digits of arbitrary length by returning to the initial state 
after each individual digit is produced. 
Another interesting variation in the HMM structure is the 
concept of parameter tieing [13]. Basically the idea is to set 
up an equivalence relation between HMM parameters in 
26a PROCEEDINGS OF THE IEEE, VOL. 77, NO. 2, FEBRUARY 1989

different states. In this mannerthe number of independent 
parameters in the model is reduced and the parameter esti- 
mation becomes somewhat simpler. Parameter tieing is 
used in cases where the observation density (for example) 
is known to be the same in 2 or more states. Such cases 
occur often in characterizing speech sounds. The tech- 
nique is especially appropriate in the case where there is 
insufficient training data to estimate, reliably, a large num- 
ber of model parameters. For such cases it is appropriate 
to tie model parameters so as to reduce the number of 
parameters (i.e., size of the model) thereby making the 
parameter estimation problem somewhat simpler. We will 
discuss this method later in this paper. 
D. Inclusion of Explicit State Duration Density in HMM? 
fW, f301 
Perhaps the major weakness of conventional HMMs is 
the modeling of state duration. Earlier we showed (5) that 
the inherent duration probability density p,(d) associated 
with state Sf, with self transition coefficient a,,, was of the 
form 
pJd) = (a,r)d-l(l - all) 
= probability of d consecutive observations 
in state SI. 
(64) 
For most physical signals, this exponential state duration 
density is inappropriate. Instead we would prefer to explic- 
itly model duration density in some analytic form. Fig. 9 
(b) 
Fig. 9. Illustration of general interstate connections of (a) 
a normal HMM with exponential state duration density, and 
(b) a variable duration HMM with specified state densities 
and no self transitions from a state back to itself. 
illustrates,forapairof model statesS,and S,,thedifferences 
between HMMs without and with explicit duration density. 
In part (a) the states have exponential duration densities 
based on self-transition coefficients a,, and a,, respectively. 
In part (b), the self-transition coefficients are set tozero, and 
an explicit duration density is ~pecified.~ For this case, a 
*In cases wherea Bakis type model is used, i.e., left-right models 
wherethenumberof states is proportional totheaverageduration, 
explicit inclusion of state duration density is neither necessary nor 
is it useful. 
'Again the ideas behind using explicit state duration densities 
are due to Jack Ferguson of IDA. Most of the material in this section 
is based on Ferguson's original work. 
transition is made only after the appropriate number of 
observations have occurred in the state (as specified by the 
duration density). 
Based on the simple model of Fig. 9(b), the sequence of 
events of the variable duration HMM is as follows: 
1) An initial state, q1 = SI, is chosen according to the ini- 
tial state distribution a,. 
2) A duration dl is chosen according to the state dura- 
tion density pql(dl). (For expedience and ease of 
implementation the duration density p,(d) is trun- 
cated at a maximum duration value D.) 
3) Observations 0, O2 * odl are chosen according to 
the joint observation density, bq,(Ol 02 . . . Od,). 
Generallywe assume independent of observations so 
4) The next state, q, = SI, is chosen according to the state 
transition probabilities, aqlqz, with the constraint that 
aqlq2 = 0, i.e., no transition back to the same state can 
occur. (Clearly this is a requirement since we assume 
that, in state q,, exactly dl observations occur.) 
A little thought should convince the reader that the 
variable duration HMM can be made equivalent to the stan- 
dard HMM by setting p,(d) to be the exponential density 
of (64). 
Using the above formulation, several changes must be 
made to the formulas of Section Ill to allow calculation of 
P(0IX)and for reestimation of all model parameters. In par- 
ticular we assume that the first state begins at t = 1 and the 
last state ends at t = T, i.e., entire duration intervals are 
included with the observation sequence. We then define 
the forward variable at(;) as 
a,(;) = P(O1 O2 . . . 0,, SI ends at tlN. (65) 
We assume that a total of r states have been visited during 
the first t observations and we denote the states as ql, q,, 
... , qr with durations associated with each state of dl, d2, 
... , d,. Thus the constraints of (65) are 
qr = Si (664 
that bql(O1 02 Od,) = @lq bql(ot). 
r 
d, = t. 
5=1 
Equation (65) can then be written as 
at(;) = c c rq, . pql(dl) . p(o1 02 * * . Od,lql) 
qd 
' aqlq2pqz(d2) p(od, + 1 ' ' ' od, +d2192) ' . ' 
* aq,-lq,pq,(dr) p(odl+d2+. +d,_,+l * * otlqr) (67) 
wherethesum isoverall statesqand all possiblestatedura- 
tions d. By induction we can write a,(/) as 
ND t 
a,(/) = at-d(l) a&(d) ,=,~d+l b,(Os) (68) 
r=l d=l 
where D is the maximum duration within any state. To ini- 
tialize the computation of a,( j) we use 
4;) = *,p,(l) * b,(01) (69a) 
aAi) = *,p,(2) II b,(O,) + al(j) q,p,(I) b,(Oz) (69b) 
2 N 
s=l /=1 
If, 
RABINER: HIDDEN MARKOV MODELS 269

3 2N 
s=l d=l /=1 
I*, 
4i) = *,p1(3) II MO,) + c a3-d(j) a,,p,(d) 
3 
. n b,(O,) (69~) 
etc., until aD(i) is computed; then (68) can be used for all 
t > D. It should be clear that the desired probability of 0 
given the model X can be written in terms of the a’s as 
s=4-d 
N 
P(0IX) = c CY&;) (70) 
/=1 
as was previously used for ordinary HMMs. 
In ordertogive reestimation formulas for all thevariables 
of the variable duration HMM, we must define three more 
forward-backward variables, namely 
CY;(;) = P(O1 O2 . 
&(i) = P(O,+l . . 
P:(i) = P(Ot+l 
0,, SI begins at t + IlX) (71) 
(72) 
(73) 
The relationships between CY, CY*, p, and p* are as follows: 
Or(S, ends at t, X) 
. * OrISI begins at t + 1, A). 
N 
a3j) = C at(i)al/ (74) r=1 
D t 
at(;) = dzl a:-d(i) pi(d) bi(Os) (75) s = t - d + 1 
(76) 
D f+d 
d=l s=i+1 p:(i) = 2 @t+d(i) pi(d) bi(Os). (77) 
Based on the above relationships and definitions, the rees- 
timation formulas for the variable duration HMM are 
1 
Tr 
(79) 
(80) 
r t+d 
c CY:(;) piw Pt+d(i) n b;(OJ 
. (81) s=t+l 
t+d pi(& = d=’ 
C a:(;) Pt+d(i) ,z+l ~I(OS) 
The interpretation of the reestimation formulas is the fol- 
lowing. The formula for Ti is the probability that state i was 
the first state, given O.The formulaforaijisa/mostthesame 
as for the usual HMM except it uses the condition that the 
alpha terms in which a state ends at t, join with the beta 
d=l t=l 
terms in which a new state begins at t + 1. The formula for 
b,(k) (assuming a discrete density) is the expected number 
of times that observation 0, = vk occurred in state i, nor- 
malized by the expected number of times that any obser- 
vation occurred in state i. Finally, the reestimation formula 
for p,(d) is the ratio of the expected number of times state 
ioccurredwith duration d, to theexpected numberof times 
state i occurred with any duration. 
The importance of incorporating state duration densities 
is reflected in the observation that, for some problems, the 
quality of the modeling is significantly improved when 
explicit state duration densities are used. However, there 
are drawbacks to the use of the variable duration model 
discussed in this section. One is the greatly increased com- 
putational load associated with using variable durations. It 
can be seen from the definition and initialization condi- 
tions on the forward variable a,(/), from (68)-(69), that about 
D times the storage and D2/2 times the computation is 
required. For Don the order of 25 (as is reasonable for many 
speech processing problems), computation is increased by 
a factor of 300. Another problem with the variable duration 
models is the large number of parameters (D), associated 
with each state, that must be estimated, in addition to the 
usual HMM parameters. Furthermore, for a fixed number 
of observations T, in the training set, there are, on average, 
fewer state transitions and much less data to estimate p,(d) 
than would be used in a standard HMM. Thus the reesti- 
mation problem is more difficult for variable duration 
HMMs than for the standard HMM. 
One proposal to alleviate some of these problems is to 
use a parametric state duration density instead of the non- 
parametric p,(d) used above [29], [30]. In particular, pro- 
posals include the Gaussian family with 
pm = X(d, PI, a:) 
- 
(82) 
with parameters p, and of, or the Gamma family with 
,,;dv! - le-tt!d 
(83) rw pJd) = 
with parameters V, and 7, and with mean v,~;~ and variance 
~~7;~. Reestimation formulas for 7, and v, have been derived 
and used with good results [19]. Another possibility, which 
has been used with good success, is to assume a uniform 
duration distribution (over an appropriate range of dura- 
tions) and use a path-constrained Viterbi decoding pro- 
cedure 1311. 
E. Optimization Criterion-ML, MMI, and MDI t321, t331 
The basic philosophy of HMMs is that a signal (or obser- 
vation sequence) can be well modeled if the parameters of 
an HMM are carefully and correctly chosen. The problem 
with this philosophy is that it is sometimes inaccurate- 
either because the signal does not obey the constraints of 
the HMM, or because it is too difficult to get reliable esti- 
mates of all HMM parameters. To alleviate this type of prob- 
lem, there has been proposed at least :WO alternatives to 
the standard maximum likelihood (ML) optimization pro- 
cedure for estimating HMM parameters. 
The first alternative [32] is based on the idea that several 
HMMs are to be designed and we wish to design them all 
at the same time in such a way so as to maximize the dis- 
crimination power of each model (i.e., each model’s ability 
270 PROCEEDINGS OF THE IEEE, VOL. 77, NO. 2, FEBRUARY 1989

to distinguish between observation sequences generated 
by the correct model and those generated by alternative 
models). We denote the different HMMs as A,, v = 1, 2, 
. . . , V.The standard MLdesign criterion is to use a separate 
training sequence of observations 0’ to derive model 
parameters for each model A,. Thus the standard ML opti- 
mization yields 
(84) 
The proposed alternative design criterion [31] is the max- 
imum mutual information (MMI) criterion in which the 
average mutual information l between the observation 
sequence 0’ and the complete set of models X = (A1, A,, 
... , h,) is maximized. One possible way of implementing 
this” is 
I: = max log P(O’IX,) - log i P(O”~Xw)] (85) 
i.e., choose X so as to separate the correct model A, from 
all other models on the training sequence 0’. By summing 
(85) over all training sequences, one would hope to attain 
the most separated set of models possible. Thus a possible 
implementation would be 
A[ w=1 
/v r V . 
I* = max C log P(o‘~x,) - log C P(O’IX,) 
A I w=1 
There are various theoretical reasons why analytical (or 
reestimation type) solutions to (86) cannot be realized. Thus 
the only known way of actually solving (86) is via general 
optimization procedures likethe steepest descent methods 
The second alternative philosophy is to assume that the 
signal to be modeled was not necessarily generated by a 
Markovsource, but does obey certain constraints (e.g., pos- 
itive definite correlation function) [33]. The goal of the 
design procedure is therefore to choose HMM parameters 
which minimize the discrimination information (DI) or the 
cross entropy between the set of valid (i.e., which satisfy 
the measurements) signal probability densities (call this set 
Q), and the set of HMM probability densities (call this set 
PA), where the DI between Q and Scan generally be written 
in the form 
D(QIIPJ = j q(y) In (q(y)/p(y)) dy (87) 
where q and p are the probability density functions cor- 
responding to Q and PA. Techniques for minimizing (87) 
(thereby giving an MDI solution) for the optimum values 
of X = (A, B, T) are highly nontrivial; however, they use a 
generalized Baum algorithm as the core of each iteration, 
and thusareefficientlytailored to hidden Markov modeling 
WI. 
It has been shown that the ML, MMI, and MDI approaches 
can a// be uniformly formulated as MDI approaches.” The 
three approaches differ in either the probability density 
attributed to the source being modeled, or in the model 
[321. 
”In (85) and (86) we assume that all words are equiprobable, i.e., 
”Y. Ephraim and L. Rabiner, “On the Relations Between Mod- 
eling Approaches for Speech Recognition,” to appear in IEEE TRANS- 
ACTIONS ON INFORMATION THEORY. 
p(w) = 1/v. 
effectively being used. None of the approaches, however, 
assumes that the source has the probability distribution of 
the model. 
F. Comparison of HMMs [34] 
An interesting question associated with HMMs is the fol- 
lowing: Given two HMMs, X1 and X2, what is a reasonable 
measure of the similarity of the two models? A key point 
here is the similarity criterion. Byway of example, consider 
the case of two models 
Xi = (Ai, Bit 91) 12 = (A2t B2, ~2) 
with 
Al = 1-P P -q g1 = [q 1-q 4 -ql 
7r, = [1/2 1/21 
and 
A, = [‘ ] 7r2 = [1/2 1/21. 
For X1 to be equivalent to A,, in the sense of having the same 
statistical properties for the observation symbols, i.e., E[O, 
= vkJX1] = €10, = vklh2], for all vk, we require 
1 -r 1 -s 
] B2 = [” I-r r I-s s 
pq + (1 - p)(l - q) = rs + (1 - r)(l - s) 
or, by solving for s, we get 
P + q - 2P9 s= 1 - 2r 
By choosing (arbitrarily) p = 0.6, q = 0.7, r = 0.2, we get s 
= 13/30 = 0.433. Thus, even when the two models, A, and 
X2, look ostensibly very different (i.e., Al is very different 
from A, and B1 is very different from B2), statistical equiv- 
alence of the models can occur. 
We can generalize the concept of model distance (dis- 
similarity) by defining a distance measure D(X1, A,), between 
two Markov models, A, and X2, as 
where 0‘2’ = O1 O2 O3 . . . OTis a sequence of observations 
generated by model X2 [34]. Basically (88) is a measure of 
how well model hl matches observations generated by 
model hZ, relative to how well model X2 matches obser- 
vations generated by itself. Several interpretations of (88) 
exist in terms of cross entropy, or divergence, or discrim- 
ination information [34]. 
One of the problems with the distance measure of (88) 
isthat it is nonsymmetric. Hence a natural expression of this 
measure is the symmetrized version, namely 
v. IMPLEMENTATION ISSUES FOR HMMS 
The discussion in the previous two sections has primarily 
dealtwith the theoryof HMMs and several variations on the 
form of the model. In this section wedeal with several prac- 
tical implementation issues including scaling, multiple 
RABINER: HIDDEN MARKOV MODELS 271

observation sequences, initial parameter estimates, miss- 
ing data, and choice of model size and type. For some of 
these implementation issues we can prescribe exact ana- 
lytical solutions; for other issues we can only provide some 
seat-of-the-pants experience gained from working with 
HMMs over the last several years. 
A. Scaling [I41 
In order to understand why scaling is required for imple- 
menting the reestimation procedure of HMMs, consider 
thedefinition ofat(i)of(18). Itcan beseen that a,(i)consists 
of the sum of a large number of terms, each of the form 
with 9t = SI. Since each a and b term is less than 1 (generally 
significantly less than I), it can be seen that as t starts to get 
big (e.g., 10 or more), each term of at(;) starts to head expo- 
nentially to zero. For sufficiently large t (e.g., 100 or more) 
the dynamic range of the a,(;) computation will exceed the 
precision range of essentially any machine (even in double 
precision). Hence the only reasonable way of performing 
the computation is by incorporating a scaling procedure. 
The basic scaling procedure which is used is to multiply 
a,(;) by a scaling coefficient that is independent of i (i.e., it 
depends only on t), with the goal of keeping the scaled a,(;) 
within the dynamic range of the computer for 1 5 t 5 T. 
A similar scaling is done to the &(i) coefficients (since these 
also tend to zero exponentially fast) and then, at the end 
of the computation, the scaling coefficients are canceled 
out exactly. 
To understand this scaling procedure better, consider 
the reestimation formula forthe statetransition coefficients 
a,/. If we write the reestimation formula(41) directly in terms 
of the forward and backward variables we get 
Consider the computation of at(;). For each t, we first com- 
pute a&) according to the induction formula (20), and then 
we multiply it by a scaling coefficient ctr where 
Thus, for a fixed t, we first compute 
N 
at(;) = Gt-dj) a,b,(O,). (92a) 
/=1 
Then the scaled coefficient set &,(i) is computed as 
N 
C ti-l(j) a,b,(O,) 
C C tit-l(j) a,b,(O,) 
(92b) 
1'1 
&Ai) = N N 
,=1/=1 
By induction we can write &f-l(j) as 
(934 
Thus we can write &(i) as 
N It-1 , 
i.e., each at(;) is effectively scaled by the sum over all states 
of CYt(;). 
Next we compute the &(i) terms from the backward 
recursion. The only difference here is that we use the same 
scale factors for each time t for the betas as was used for 
the alphas. Hence the scaled p's are of the form 
BA;) = CtOAi). (94) 
Since each scale factor effectively restores the magnitude 
of the OL terms to 1, and since the magnitudes of the a and 
0 terms are comparable, using the same scaling factors on 
the 0's as was used on the a's is an effective way of keeping 
the computation within reasonable bounds. Furthermore, 
in terms of the scaled variables we see that the reestimation 
equation (90) becomes 
but each &,(i) can be written as 
(95) 
(96) 
and each &+,(j) can be written as 
Thus (95) can be written as 
Finally the term C,D,+, can be seen to be of the form 
t T T 
independent oft. Hence the terms CtDt+l cancel out of both 
the numerator and denominator of (98) and the exact rees- 
timation equation is therefore realized. 
It should be obvious that the above scaling procedure 
applies equally well to reestimation of the 7r or B coeffi- 
cients. It should also beobvious that the scaling procedure 
of (92) need not be applied at every time instant t, but can 
be performed whenever desired, or necessary (e.g., to pre- 
vent underflow). If scaling is not performed at some instant 
t, the scaling coefficients c, are set to 1 at that time and all 
the conditions discussed above are then met. 
The only real change to the HMM procedure because of 
scaling is the procedure for computing P(O(X). We cannot 
merely sum up the &T(i) terms since these are scaled already. 
272 PROCEEDINGS OF THE IEEE, VOL. 77, NO. 2, FEBRUARY 1989

However, we can use the property that 
TN N 
n cf ad;) = CT (YT(i) = 1. 
f=l ,=1 ,=1 
Thus we have 
T 
n c, * P(O(h) = 1 
t=1 
or 
1 P(Olh) = 
n Cf 
f=l 
or 
100) 
101) 
T 
log [P(O(h)l = - c log Cf. (103) 
Thus the log of Pcan becomputed, but not Psince itwould 
be out of the dynamic range of the machine anyway. 
Finally we note that when using the Viterbi algorithm to 
give the maximum likelihood state sequence, no scaling is 
required if we use logarithms in the following way. (Refer 
back to (32)-(34).) We define 
i=l 
and initially set 
with the recursion step 
and termination step 
log P* = max [$T(i)]. (105~) 
~LIsN 
Again we arrive at log P* rather than P*, but with signifi- 
cantly less computation and with no numerical problems. 
(The reader should note that the terms log a, of (105b) can 
be precomputed and therefore do not cost anything in the 
computation. Furthermore, the terms log [b,(O,)] can be 
precomputed when a finite observation symbol analysis 
(e.g., a codebook of observation sequences) is used. 
B. Multiple Observation Sequences [I41 
In Section Wwediscussed aformof HMMcalled theleft- 
right or Bakis model in which the state proceeds from state 
1 at t = 1 to state N at t = Tin a sequential manner (recall 
the model of Fig. 7(b)). We have already discussed how a 
left-right model imposes constraints on the state transition 
matrix, and the initial state probabilities (45)-(48). However, 
the major problem with left-right models is that one cannot 
use a single observation sequence to train the model (i.e., 
for reestimation of model parameters). This is because the 
transient nature of the states within the model only allow 
a small number of observations for any state (until a tran- 
sition is made to a successor state). Hence, in order to have 
sufficient data to make reliable estimates of all model 
parameters, one has to use multipleobservation sequences. 
The modification of the reestimation procedure is 
straightforward and goes as follows. We denote the set of 
K observation sequences as 
0 = [of') I1 012) . . . , ofk)] (1 06) 
where O'k' = [OF' 0ik) . . . O$!l is the kth observation 
sequence. We assume each observation sequence is inde- 
pendent of every other observation sequence, and our goal 
is to adjust the parameters of the model X to maximize 
K 
P(O(X) = n P(O'k'IX) (1 07) 
k=l 
K 
k=l 
= n Pk. 
Since the reestimation formulas are based on frequencies 
of occurrence of various events, the reestimation formulas 
for multiple observation sequences are modified by adding 
together the individual frequencies of occurrence for each 
sequence. Thus the modified reestimation formulas for 
a, and q(P) are - 
Y A Tk-1 
and 
and x, is not reestimated since xl = 1, r, = 0, i # 1. 
The proper scaling of (109)-(110) is now straightforward 
since each observation sequence has its own scaling factor. 
The key idea is to remove the scaling factor from each term 
before summing. This can be accomplished by writing the 
reestimation equations in terms of the scaled variables, i.e., 
K A Tk-1 
In this manner, for each sequence Ofk', the same scale fac- 
tors will appear in each term of the sum over t as appears 
in the Pk term, and hencewill cancel exactly. Thus using the 
scaled values of the alphas and betas results in an unscaled 
a,. A similar result is obtained for the E,(&') term. 
C. Initial Estimates of HMM Parameters 
- 
In theory, the reestimation equations should give values 
of the HMM parameters which correspond to a local max- 
imumofthelike1ihoodfunction.A keyquestion istherefore 
how do we choose initial estimates of the HMM parameters 
so that the local maximum is the global maximum of the 
likelihood function. 
Basically there is no simple or straightforward answer to 
the above question. Instead, experience has shown that 
either random (subject to the stochastic and the nonzero 
value constraints) or uniform initial estimates of the rand 
RABINER: HIDDEN MARKOV MODELS 273

A parameters is adequate for giving useful reestimates of 
these parameters in almost all cases. However, for the B 
parameters, experience has shown that good initial esti- 
mates are helpful in the discrete symbol case, and are 
essential (when dealing with multiple mixtures) in the con- 
tinuous distribution case [35]. Such initial estimates can be 
obtained in a number of ways, including manual segmen- 
tation of the observation sequence($ into states with aver- 
aging of observations within states, maximum likelihood 
segmentation of observations with averaging, and seg- 
mental k-means segmentation with clustering, etc. We dis- 
cuss such segmentation techniques later in this paper. 
D. Effects of Insufficient Training Data [36] 
Another problem associated with training HMM param- 
eters via reestimation methods is that the observation 
sequence used for training is, of necessity, finite. Thus there 
is often an insufficient number of occurrences of different 
model events (e.g., symbol occurrences within states) to 
give good estimates of the model parameters. One solution 
to this problem is to increase the size of the training obser- 
vation set. Often this is impractical. A second possible solu- 
tion is to reduce the size of the model (e.g., number of states, 
number of symbols per state, etc). Although this is always 
possible, often there are physical reasons why a given model 
is used and therefore the model size cannot be changed. 
A third possible solution is to interpolate one set of param- 
eter estimates with another set of parameter estimates from 
a model for which an adequate amount of training data 
exists [36]. The idea is to simultaneously design both the 
desired model as well as a smaller model for which the 
amount of training data is adequate to give good parameter 
estimates, and then to interpolate the parameter estimates 
from the two models. The way in which the smaller model 
is chosen is by tieing one or more sets of parameters of the 
initial model to create the smaller model. Thus if we have 
estimates for the parameters for the model h = (A, B, K), as 
well as for the reduced size model A’ = (A’, B’, K’), then the 
interpolated model, i = (A, B, if), is obtained as 
i = EX + (1 - €)A’ (112) 
where E represents the weighting of the parameters of the 
full model, and (1 - E) represents the weighting of the 
parameters of the reduced model. A key issue is the deter- 
mination of the optimal value of E, which is clearly a func- 
tion of the amount of training data. (As the amount of train- 
ing data gets large, we expect E to tend to 1.0; similarly for 
small amounts of training data we expect E to tend to 0.0.) 
The solution to the determination of an optimal value for 
E was provided by Jelinek and Mercer [36] who showed how 
the optimal value for E could be estimated using the for- 
ward-backward algorithm by interpreting (112) as an 
expanded HMM of the type shown in Fig. 10. For this 
expanded model the parametere is the probabilityof a state 
transition from the (neutral) state 5 to the model A; similarly 
(1 - E) is the probability of a state transition from S to the 
model A’. Between each of the models, X and A’, and S, there 
is a null transition. Using the model of Fig. 9, the value of 
e can be estimated from the training data in the standard 
manner. A key point is to segment the training data T into 
two disjoint sets, i.e., T = Tl U T2. Training set Tl is first 
used to train models X and A‘ (i.e., to give estimates of (A, 
E n 
W 
Fig. 10. Example of how the process of deleted interpo- 
lation can be represented using a state diagram. 
B, K) and (A‘, B’, K’)). Training set T2 is then used to give an 
estimate of E, assuming the models X and X’ are fixed. A 
modified version of this training procedure, called the 
method of deleted interpolation [36], iterates the above pro- 
cedure through multiple partitions of the training set. For 
example one might consider a partition of the training set 
such that T, is 90 percent of T and T2 is the remaining 10 
percent of T. There are a large number of ways in which 
such a partitioning can be accomplished but one partic- 
ularly simple one is to cycle T2 through the data, i.e., the 
first partition uses the last 10 percent of the data as T2, the 
second partition uses the next-to-last 10 percent of thedata 
as T2, etc. 
The technique of deleted interpolation has been suc- 
cessfully applied to a number of problems in speech rec- 
ognition including the estimation of trigram word proba- 
bilities for language models [13], and the estimation of HMM 
output probabilities for trigram phone models [37, [38]. 
Another way of handling the effects of insufficient train- 
ing data is to add extra constraints to the model parameters 
to insure that no model parameter estimate falls below a 
specified level. Thus, for example, we might specify the 
constraint, for a discrete symbol model, that 
b,(k) 2 6 (113a) 
or, for a continuous distribution model, that 
U,,&, r) 2 6. (113b) 
The constraints can be applied as a postprocessor to the 
reestimation equations such that if a constraint is violated, 
the relevant parameter is manually corrected, and all 
remaining parameters are rescaled so that the densities 
obey the required stochastic constraints. Such post-pro- 
cessor techniques have been applied to several problems 
in speech processing with good success [39]. It can be seen 
from (112) that this procedure is essentially equivalent to 
a simple form of deleted interpolation in which the model 
X’ is a uniform distribution model, and the interpolation 
value E is chosen as the fixed constant (1 - 6). 
E. Choice of Model 
The remaining issue in implementing HMMs is thechoice 
of type of model (ergodic or left-right or some other form), 
choice of model size (number of states), and choice of 
observation symbols (discrete or continuous, single or 
multi-mixture, choice of observation parameters). Unfor- 
tunately, there is no simple, theoretically correct, way of 
making such choices. Thesechoices must be made depend- 
ing on the signal being modeled. With these comments we 
274 PROCEEDINGS OF THE IEEE, VOL. 77, NO. 2, FEBRUARY 1989

end our discussion of the theoretical aspects of hidden 
Markov models, and proceed to a discussion of how such 
models have been applied to selected problems in speech 
recognition. 
VI. IMPLEMENTATION OF SPEECH RECOGNIZERS USING HMMs 
The purposeof this,and thefollowingsections, isto illus- 
trate how the ideas of HMMs, as discussed in the first 5 sec- 
tions of this paper, have been applied to selected problems 
in speech recognition. As such, we will not strive to be as 
thorough or as complete in our descriptions as to what was 
done as we were in describing the theory of HMMs. The 
interested reader should read the material in [6], [IO], [12], 
[13], [39]-[46] for more complete descriptions of individual 
systems. Our main goal here is to show how specific aspects 
of HMM theoryget applied, not to make the reader an expert 
in speech recognition technology. 
A. Overall Recognition System 
Fig. 11 shows a block diagram of a pattern recognition 
approach to continuous speech recognition system. The 
key signal processing steps include the following: 
I) Feature Analysis: A spectral and/or temporal analysis 
of the speech signal is performed to give observation vec- 
tors which can be used to train the HMMs which charac- 
terize various speech sounds. A detailed discussion of one 
type of feature analysis is given later in this section. 
2) Unit Matching System: First a choice of speech rec- 
ognition unit must be made. Possibilities include linguis- 
tically based sub-word units such as phones (or phone-like 
units), diphones, demisyllables, and syllables [38], as well 
as derivative units such as fenemes, fenones, and acoustic 
units [13]. Other possibilities includewholeword units, and 
even units which correspond to a group of 2 or morewords 
(e.g., and an, in the, of a, etc). Generally, the less complex 
the unit (e.g., phones), the fewer of them there are in the 
language, and the more complicated (variable) their struc- 
ture in continuous speech. For largevocabulary speech rec- 
ognition (involving1000or morewords), theuseof sub-word 
speech units is almost mandatory as it would be quite dif- 
ficultto record an adequatetraining setfordesigning HMMs 
for units of the size of words or larger. However, for spe- 
cialized applications (e.g., small vocabulary, constrained 
task), it is both reasonableand practical toconsidertheword 
as a basic speech unit. We will consider such systems exclu- 
sively in this and the following section. Independent of the 
unit chosen for recognition, an inventory of such units must 
be obtained via training. Typically each such unit is char- 
acterized by some type of HMM whose parameters are esti- 
mated from a training set of speech data. The unit matching 
system provides the likelihoods of a match of all sequences 
of speech recognition units to the unknown input speech. 
Techniques for providing such match scores, and in par- 
ticular determining the best match score (subject to lexical 
and syntactic constraints of the system) include the stack 
decoding procedure [A, various forms of frame synchron- 
ous path decoding [37], and a lexical access scoring pro- 
cedure [46]. 
3) Lexical Decoding: This process places constraints on 
the unit matching system so that the paths investigated are 
those corresponding to sequences of speech units which 
are in a word dictionary (a lexicon). This procedure implies 
that the speech recognition word vocabulary must be spec- 
ified in termsof the basic units chosen for recognition. Such 
a specification can be deterministic (e.g., one or more finite 
state networks for each word in thevocabu1ary)or statistical 
(e.g., probabilitiesattached tothearcs inthefinitestate rep- 
resentation of words). In the case where the chosen units 
arewords(orword combinations), the lexical decoding step 
is essentiallyeliminated and the structureof the recognizer 
is greatly simplified. 
4) Syntactic Analysis: This process, much like lexical 
decoding, places further constraints on the unit matching 
system so that the paths investigated are thosecorrespond- 
ing to speech units which comprise words (lexical decod- 
ing) and for which the words are in a proper sequence as 
specified by a word grammar. Such a word grammar can 
again be represented by adeterministic finitestate network 
(in which all word combinations which are accepted by the 
grammar are enumerated), or by a statistical grammar (e.g., 
a trigram word model in which probabilities of sequences 
of 3 words in a specified order are given). For some com- 
mand and control tasks, onlya single word from afinite set 
of equiprobable is required to be recognized and therefore 
the grammar is either trivial or unnecessary. Such tasks are 
often referred to as isolated word speech recognition tasks. 
For other applications (e.g., digit sequences) very simple 
grammars are often adequate (e.g., any digit can be spoken 
and followed by any other digit). Finally there are tasks for 
which the grammar is a dominant factor and, although it 
adds a great deal of constraint to the recognition process, 
it greatly improves recognition performance by the result- 
ing restrictions on the sequence of speech units which are 
valid recognition candidates. 
5) Semantic Analysis: This process, again like the steps 
of syntactic analysis and lexical decoding, adds further con- 
straints to the set of recognition search paths. One way in 
which semantic constraints are utilized is via a dynamic 
model of the state of the recognizer. Depending on the 
recognizer state certain syntactically correct input strings 
are eliminated from consideration. This again serves to 
make the recognition task easier and leads to higher per- 
formance of the system. 
Fig. 11. Block diagram of a continuous speech recognizer. 
RABINER: HIDDEN MARKOV MODELS 275

There is one additional factor that has a significant effort 
on the implementation of a speech recognizer and that is 
the problem of separating background silence from the 
input speech. There are at least three reasonable ways of 
accomplis hi ng this task: 
SPEECH 
SIGNAL 
S 
Explicitly detecting the presence of speech via tech- 
niques which discriminate background from speech 
on the basis of signal energy and signal durations. 
Such methods have been used for template-based 
approaches because of their inherent simplicity and 
their success in low to moderate noise backgrounds 
[MI. 
Build a model of the background silence, e.g., a sta- 
tistical model, and represent the incoming signal as 
an arbitrary sequence of speech and background, i.e., 
signal = (silence) - speech - (silence) 
where the silence part of the signal is optional in that 
it may not be present before or after the speech 1491. 
Extend the speech unit models so that background 
silence is included (optionally) within the first andlor 
last state of the model, and therefore silence inher- 
ently gets included within all speech unit models. 
INDEX OF 
RECOGNIZED 
WORD 
Lpc OBSERVATION 
FEATURE SEOUENCE 
ANALYSIS, 0 
(VECTOR 
OUANTI- COMPUTATION ZATlONl 
All three of these techniques have been utilized in speech 
recognition systems. 
Instead of discussing the general continuous speech rec- 
ognition system further, we now present specialized appli- 
cations to illustrate how HMM technology can be utilized. 
First we present a system where the basic speech unit is the 
word, where the task is to recognize a single spoken word, 
and where there is no task syntax or semantics to constrain 
the choice of words. This task is generally referred to as 
isolated word recognition. Next we discuss a slightly more 
complicated task in which the basic speech unit is still the 
word, but where the task is to recognize a continuous utter- 
ance consisting of words from the vocabularly. Included in 
such a task is the problem of recognizing a spoken string 
of digits. We again consider the case where there is no task 
syntax or semantics to constrain the choice of words, i.e., 
anydigitcan followanyother digit. Recognition tasksofthis 
type have been referred to as connected word recognizers 
because the continuous speech is recognized as a conca- 
tenated sequence of word models. This is technically a mis- 
9 
nomer because it is truly a continuous speech recognition 
problem. However, the terminology has become estab- 
lished and we continue its use. 
B. Isolated Word Recognition 
As our first example, consider using HMMs to build an 
isolated word recognizer. Assume we have a vocabulary of 
Vwords to be recognized and that each word is to be mod- 
eled by a distinct HMM.I2 Further assume that for each word 
in the vocabulary we have a training set of K occurrences 
of each spoken word (spoken by 1 or more talkers) where 
each occurrence of the word constitutes an observation 
sequence, where the observations are some appropriate 
representation of the (spectral and/or temporal) charac- 
teristics of theword. (We will return to the question of what 
specific representation is used later in this section.) In order 
to do isolated word speech recognition, we must perform 
the following: 
For each word v in the vocabulary, we must build an 
HMM A', i.e.,we must estimate the model parameters 
(A, B, ?r) that optimize the likelihood of the training 
set observation vectors for the vth word. 
For each unknown word which is to be recognized, 
the processing of Fig. 12 must be carried out, namely 
measurement of the observation sequence 0 = (0, 
O2 . . . OT}, via a feature analysis of the speech cor- 
responding to the word; followed by calculation of 
model likelihoods for all possible models, P(0 1 A"), 1 
5 v 5 V; followed by selection of the word whose 
model likelihood is highest, i.e., 
v* = argmax [P(O)A')]. (114) 
l5VSV 
The probability computation step is generally performed 
using the Viterbi algorithm (i.e., the maximum likelihood 
path is used) and requires on the order of V . N2 . Tcom- 
putations. For modest vocabulary sizes, e.g., V = IOOwords, 
with an N = 5 state model, and T = 40 observations for the 
"An excellent description of an isolated word, large vocabulary, 
speech recognizer based on sub-word units isgiven in the descrip- 
tion of the IBM TANCORA system [SO]. Another good reference 
which compares the effects of continuous and discrete densities 
using a 60 000 word vocabulary is [46]. 
HMM FOR 
WORD I 
Fig. 12. Block diagram of an isolated word HMM recognizer. 
276 PROCEEDINGS OF THE IEEE, VOL. 77, NO. 2, FEBRUARY 1989

unknown word, a total of IO5 computations is required for 
recognition (where each computation is a multiply, and add, 
and a calculation of observation density, b(0)). Clearly this 
amount of computation is modest as compared to the capa- 
bilities of most modern signal processor chips. 
S (n) 
__+ 
C. LPC Feature Analysis [511-[54J 
One way to obtain observation vectors 0 from speech 
samples s is to perform a front end spectral analysis. (We 
assume that we are processing onlythe speech samples cor- 
responding to the spoken word-i.e., all background before 
and afterthespoken word has been eliminated by an appro- 
priate word detection algorithm.) The type of spectral anal- 
ysis that is often used (and the one we will describe here) 
iscalled linear predictivecoding(LPC),anda blockdiagram 
ofthestepsthatarecarriedout isgiven in Fig.13.Theoverall 
system is a block processing model in which a frame of NA 
samples is processed and a vector of features 0, is com- 
puted. The steps in the processing are as follows: 
1) Preemphasis: The digitized (at a 6.67 kHz rate for the 
examples to be discussed here) speech signal is processed 
by a first-order digital network in order to spectrally flatten 
the signal. 
2) Blocking into Frames: Sections of NA consecutive 
speech samples (we use NA = 300 corresponding to 45 ms 
of signal) are used as a single frame. Consecutive frames 
are spaced MA samples apart (we use MA = 100 correspond- 
ing to 15-ms frame spacing, or 30-ms frame overlap). 
3) Frame Windowing: Each frame is multiplied by an NA- 
sample window (we use a Hamming window) w(n) so as to 
minimizetheadverseeffectsofchoppingan NA-samplesec- 
tion out of the running speech signal. 
4) Autocorrelation Analysis: Each windowed set of speech 
samples is autocorrelated to give a set of (p + 1) coeffi- 
cients, where p is the order of the desired LPC analysis (we 
usep = 8). 
5) LPCKepstral Analysis: For each frame, a vector of LPC 
coefficients is computed from the autocorrelation vector 
using a Levinson or a Durbin recursion method. An LPC 
g(n) BLOCK Xt(n) XI(”) AUTO- Re(m) LPC/ aL(m) 
FRAME ANALYSIS ck(m) - CEPSTRAL 1-az-’ INTO - 
FRAMES 
NM w(n) 
derived cepstral vector is then computed up to the Qth 
component, where Q > p and Q = 12 in the results to be 
described later in this section. 
6) Cepstral Weighting: The Q-coefficient cepstral vector 
c,(m) at time frame Pis weighted by a window WJm) of the 
form [55], [56] 
W,(m) = 1 + - sin . (y), 1 5 m 5 Q (115) 2 
to give 
e,(m) = c,(m) - W,(m). (116) 
7) Delta Cepstrum: The time derivative of the sequence 
of weighted cepstral vectors is approximated by a first-order 
orthogonal polynomial over a finite length window of (2K 
+ 1) frames, centered around the current vector [571, [58]. 
(K = 2 in the results to be presented; hence a 5 frame win- 
dow is used for the computation of the derivative.) The cep- 
stral derivative (i.e., the delta cepstrum vector) is computed 
as 
At,(m) = [ ki-,-c(m)] . G, 1 s m 5 Q (117) 
where G is a gain term chosen to make the variances of 
e,(m) and Ai-,(m) equal. (A value of G of 0.375 was used.) 
The observation vector Opused for recognition and train- 
ing is the concatenation of the weighted cepstral vector, 
and the correspondingweighted delta cepstrum vector, i.e., 
Qp = {G(m), Ae,(m)} (118) 
k= -K 
and consists of 24 coefficients per vector. 
D. Vector Quantization [IS], [39J 
For the case in which we wish to use an HMM with a dis- 
crete observation symbol density, rather than the contin- 
uous vectors above, a vector quantizer (VQ) is required to 
map each continuous observation vector into a discrete 
codebook index. Once the codebook of vectors has been 
obtained, the mapping between continuous vectors and 
P 
w 
CEPSTRAL 
WE IGHTl NG - 
I-- 
Xp(n) - Xp(n) - W (n), 0 <- n <- N- 1 
Rp(m)= Z Xp(n) xp(n+m),Osm<- p 
N-m- - 
n =O 
ar(m) = LPC COEFFICIENTS, 0 5 m <- p 
Ci(m) = CEPSTRAL COEFFICIENTS, 1s m <- Q 
= cp(m) - w,(m), i <- m <- a 
Fig. 13. Block diagram of the computations required in the front end feature analysis of 
the HMM recognizer. 
RABINER: HIDDEN MARKOV MODELS 277

codebook indices becomes a simple nearest neighbor com- 
putation, i.e., the continuous vector is assigned the index 
of the nearest (in a spectral distance sense) codebook vec- 
tor. Thus the major issue in VQ is the design of an appro- 
priate codebook for quantization. 
Fortunately a great deal of work has gone into devising 
an excellent iterative procedure for designing codebooks 
based on having a representative training sequence of vec- 
tors [18].The procedure basically partitionsthe trainingvec- 
tors into M disjoint sets (where M is the size of the code- 
book), represents each such set by a single vector (v,,,, 1 s 
m 5 M), which is generally the centroid of the vectors in 
the training set assigned to the mth region, and then iter- 
atively optimizes the partition and the codebook (i.e., the 
centroids of each partition). Associated with VQ is a dis- 
tortion penalty since we are representing an entire region 
of the vector space by a single vector. Clearly it is advan- 
tageous to keep the distortion penalty as small as possible. 
However, this implies a large size codebook, and that leads 
to problems in implementing HMMs with a large number 
of parameters. Fig. 14 illustrates thetradeoff of quantization 
from 2 to 10 states would be appropriate. The other idea is 
to let the number of states correspond roughly to the aver- 
age number of observations in a spoken version of theword, 
the so-called Bakis model [Ill. In this manner each state 
corresponds to an observation interval-i.e., about 15 ms 
for the analysis we use. In the results to be described later 
in this section, we use the former approach. Furthermore 
we restrict each word model to have the same number of 
states;this impliesthatthemodelswill work bestwhen they 
represent words with the same number of sounds. 
To illustrate the effect of varying the number of states in 
a word model, Fig. 15 shows a plot of average word error 
"'1 61 
-'" I I ... 1 
423456789 20 
N. NUMBER OF STATES IN HMM 
Fig. 15. Average word error rate (for a digits vocabulary) 
versus the number of states N in the HMM. 
0.1 I I I I I I I 
2 4 8 16 32 64 128 
M 
Fig. 14. Curve showing tradeoff of VQ average distortion 
as a function of the size of the VQ, M (shown of a log scale). 
distortion versus M (on a log scale). Although the distortion 
steadily decreases as M increases, it can be seen from Fig. 
14 that only small decreases in distortion accrue beyond a 
value of M = 32. Hence HMMs with codebook sizes of from 
M = 32to256vectors have been used in speech recognition 
experiments using HMMs. 
E. Choice of Model Parameters 
We now come back to the issue that we have raised sev- 
eral times in this paper, namely how do we select the type 
of model, and how do we choose the parameters of the 
selected model. For isolated word recognition with a dis- 
tinct HMM designed for each word in the vocabulary, it 
should be clear that a left-right model is more appropriate 
than an ergodic model, since we can then associate time 
with model states in a fairly straightforward manner. Fur- 
thermore we can envision the physical meaning of the 
model states as distinct sounds (e.g., phonemes, syllables) 
of the word being modeled. 
The issue of the number of states to use in each word 
model leads to two schools of thought. One idea is to let 
the number of states correspond roughly to the number of 
sounds (phonemes) within the word-hence models with 
rate versus N, for the case of recognition of isolated digits 
(i.e., a IO-word vocabulary). It can be seen that the error is 
somewhat insensitive to N, achieving a local minimum at 
N = 6; however, differences in error rate for values of N 
close to 6 are small. 
The next issue is the choice of observation vector and the 
way it is represented. As discussed in Sections VI-C and 
VI-D, we have considered LPC derived weighted cepstral 
coefficients and weighted cepstral derivatives or (for auto- 
regressive HMMs) the autocorrelation of the LPC coeffi- 
cients as the observation vectors for continuous models; 
for discrete symbol models we use a codebook to generate 
the discrete symbols. For the continuous models we use as 
many as M = 9 mixtures per state; for the discrete symbol 
models we use codebooks with as many as M = 256 code- 
words.Also,forthecontinuous models, we havefound that 
it is preferableto use diagonal covariance matriceswith sev- 
eral mixtures, rather than fewer mixtures with full covari- 
ance matrices. The reason for this is simple, namely the dif- 
ficulty in performing reliable reestimation of the off- 
diagonal components of the covariance matrix from the 
necessarily limited training data. To illustrate the need for 
using mixture densities for modeling LPC observation vec- 
tors (i.e., eighth-order cepstral vectors with log energy 
appended as the ninth vector component), Fig. 16 shows 
a comparison of marginal distributions b,(0)Jo,. . .On.. . 
against a histogram of the actual observations within a state 
(as determined by a maximum likelihood segmentation of 
all the training observations into states). The observation 
vectors are ninth order, and the model density uses M = 
5 mixtures. The covariance matrices are constrained to be 
diagonal for each individual mixture. The results of Fig. 16 
are for the first model state of the word "zero." The need 
for values of M > 1 is clearly seen in the histogram of the 
278 PROCEEDINGS OF THE IEEE, VOL. 77, NO. 2, FEBRUARY 1989

WORD ZERO, STATE 
1 
r 
z 
3 
3 
-0 
-0435 0 366 -0483 0 375 -44 20 -4112 
PARAMETER RANGE 
Fig. 16. Comparison of estimated density (jagged contour) 
and model density (smooth contour) for each of the nine 
components of the observation vector (eight cepstral com- 
ponents, one log energy component) for state 1 of the digit 
zero. 
first parameter (the first cepstral component) which is 
inherently multimodal; similarly the second, fourth, and 
eight cepstral parameters show the need for more than a 
single Gaussian component to provide good fits to the 
empirical data. Many of the other parameters appear to be 
well fitted by a single Gaussian; in some cases, however, 
even M = 5 mixtures do not provide a sufficiently good fit. 
Another experimentally verified fact about the HMM is 
that it is important to limit some of the parameter estimates 
in order to prevent them from becoming too small. For 
example, for the discrete symbol models, the constraint that 
bj(k) be greater than or equal to some minimum value E is 
necessary to insure that even when the kth symbol never 
occurred in somestatejin thetrainingobservation set,there 
is always a finite probability of its occurrence when scoring 
an unknown observation set. To illustrate this point, Fig. 17 
16 b I 
" 
10-3 10-4 fo-5 10-6 10-10 IO-.= 
€ 
Fig. 17. Average word error rate as a function of the min- 
imum discrete density value e. 
shows a curve of average word error rate versus the param- 
eter E (on a log scale) for a standard word recognition exper- 
iment. It can be seen that over a very broad range (10-l' 5 
E 5 the average error rate remains at about a constant 
value; however, when E is set to 0 (i.e., IO-"), then the error 
rate increases sharply. Similarly, for continuous densities 
it is important to constrain the mixture gains clm as well as 
the diagonal covariance coefficients Ulm(r, r) to be greater 
than or equal to some minimum values (we use in all 
cases). 
F. Segmental k-Means Segmentation into States [42] 
We stated earlier that good initial estimates of the param- 
eters of the bi(O,) densities were essential for rapid and 
proper convergence of the reestimation formulas. Hence 
a procedure for providing good initial estimates of these 
parameterswasdevised and isshown in Fig. 18.Thetraining 
e TRAINING 
MODEL 
INITIALIZATION 
STATE SEQUENCE 
SEGMENTATION 
L 
I 
ESTIMATE PARAMETERS 
OF e(.) 
VIA SEGMENTAL 
K -MEANS 
1 
MODEL 
REESTIMATION 
Fig. 18. The segmental k-means training procedure used to 
estimate parameter values for the optimal continuous mix- 
turedensityfit toafinite number of observation sequences. 
procedure is a variant on the well-known K-means iterative 
procedure for clustering data. 
We assume we have a training set of observations (the 
same as is required for parameter reestimation), and an ini- 
tial estimate of all model parameters. However, unlike the 
one required for reestimation, the initial model estimate 
can be chosen randomly, or on the basis of any available 
model which is appropriate to the data. 
Following model initialization, the set of training obser- 
vation sequences is segmented into states, based on the 
current model h.13This segmentation is achieved by finding 
the optimum state sequence, via the Viterbi algorithm, and 
then backtracking along the optimal path. This procedure 
is illustrated in Fig. 19 which shows a log-energy plot, an 
accumulated log-likelihood plot, and a state segmentation 
for one occurrence of the word "six." It can be seen in Fig. 
19 that the states correspond roughly to the sounds in the 
spoken word "six." 
The result of segmenting each of the training sequences 
is, for each of the N states, a maximum likelihood estimate 
of the set of the observations that occur within each state 
S, according to the current model. In the case where we are 
using discrete symbol densities, each of the observation 
vectors within a state is coded using the M-codeword code- 
book, and the updated estimate of the b,(k) parameters is 
6,(k) = number of vectors with codebook index k in 
state j divided by the number of vectors in 
state i. 
13The current or initial model could be one created from another 
set of talkers, or it could be one created from a uniform segmen- 
tation of each word into states. 
RABINER: HIDDEN MARKOV MODELS 279

-150 
(b) 
Oi 
(c) 
21 
I' 
I 
I bi bz ba bq b5.49 =T 
FRAME NUMBER 
Fig. 19. Plots of: (a) log energy; (b) accumulated log likelihood; and (c) state assignment 
for one occurrence of the word "six." 
In thecase where weare using continuous observation den- 
sities, a segmental K-means procedure is used to cluster the 
observation vectors within each state SI into a set of M clus- 
ters (using a Euclidean distortion measure), where each 
cluster represents one of the M mixtures of the b,(O,) den- 
sity. From the clustering, an updated set of model param- 
eters is derived as follows: 
e,,,, = number of vectors classified in cluster m of state j 
divided by the number of vectors in state j 
PI,,, = sample mean of the vectors classified in cluster m 
of state j 
o,,,, = sample covariance matrix of the vectors 
classified in cluster m of state j. 
Based on this state segmentation, updated estimates of the 
a,, coefficients can be obtained by counting the number of 
transitions from state i to j and dividing it by the number 
of transitions from state i to any state (including itself). 
An updated model fi is obtained from the new model 
parameters and the formal reestimation procedure is used 
to reestimate all model parameters. The resulting model is 
then compared to the previous model (by computing a dis- 
tance score that reflects the statistical similarity of the 
HMMs). If the model distance score exceeds a threshold, 
then the old model X is replaced by the new (reestimated) 
model x, and the overall training loop is repeated. If the 
model distance score falls below the threshold, then model 
convergence is assumed and the final model parameters 
are saved. 
G. Incorporation of State Duration into the HMM 
In Section IV-C we discussed the theoretically correct 
method of incorporating state duration information into 
the mechanics of the HMM. We also showed that the cost 
of including duration density was rather high; namely a D2- 
fold increase in computation and a D-fold increase in stor- 
age. Using a value of D = 25 (as is required for word rec- 
ognition), the cost of the increased computation tended to 
make the techniques not worth using. Thus the following 
alternative procedure was formulated for incorporating 
state duration information into the HMM. 
For this alternative procedure, the state duration prob- 
ability p,(d) was measured directly from the segmented 
training sequences used in the segmental K-means pro- 
cedureofthe previous section. Hencetheestimatesofp,(d) 
are strictly heuristic ones. A typical set of histograms of p,(d) 
for a 5-state model of the word "six" is shown in Fig. 20. (In 
this figure the histograms are plotted versus normalized 
duration (d/T), rather than absolute duration d.) It can be 
DIGIT' SIX 
LII 0 I I I 12 
W\ 1 
STATE 4 
I I 
c STATE 3 
f 
0 I 
NORMALIZED DURATION (d/T) 
Fig. 20. Histograms of the normalized duration density for 
the five states of the digit "six." 
seen from Fig. 20 that the first two states account for the 
initial Is/ in "six"; the third state accounts for the transition 
to the vowel lil; the fourth state accounts for the vowel; and 
the fifth state accounts for the stop and the final Is1 sound. 
The way in which the heuristic duration densities were 
used in the recognizer was as follows. First the normal 
Viterbi algorithm is used to give the best segmentation of 
the observation sequence of the unknown word into states 
via a backtracking procedure. The duration of each state is 
then measured from the state segmentation. A postpro- 
cessor then increments the log-likelihood score of the 
Viterbi algorithm, by the quantity 
N 
log p(g, Olh) = log p(q, OIX) + ad log [p,(d,)l (119) 
where ad is a scaling multiplier on the stateduration scores, 
and d, is the duration of state j along the optimal path as 
determined by the Viterbi algorithm. The incremental cost 
of the postprocessor for duration is essentially negligible, 
and experience has shown that recognition performance 
/=1 
280 PROCEEDINGS OF THE IEEE, VOL. 77, NO. 2, FEBRUARY 1989

is essentially as good as that obtained using the theoreti- 
cally correct duration model. 
H. HMM Performance on Isolated Word Recognition 
We conclude this section on isolated word recognition 
using HMMs by giving aset of performance results (in terms 
of average word error rate) on the task of recognizing iso- 
lated digits in a speaker independent manner. For this task, 
a training set consisting of 100 occurrences of each digit by 
100 talkers (i.e., a single occurrence of each digit per talker) 
was used. Half the talkers were male; half female. For test- 
ing the algorithm, we used the initial training set, as well 
as three other independent test sets with the following 
characteristics: 
TS2: the same 100 talkers as were used in the training; 
100 occurrences of each digit 
TS3: a new set of 100 talkers (50 male, 50 female); 100 
occurrences of each digit 
TS4 another new set of 100 talkers (50 male, 50 female); 
The results of the recognition tests are given in Table 1. 
The recognizers are the following: 
LPC/DTW: Conventional template-based recog- 
nizer using dynamic time warping (DTW) 
alignment 
LPC/DTW/VQ: Conventional recognizer with vector 
quantization of the feature vectors (M = 
64) 
HMMNQ: HMM recognizerwith M = 64codebook 
HMM/CD: HMM recognizer using continuous den- 
sity model with M = 5 mixtures per state 
HMM/AR: HMM recognizer using autoregressive 
observation density 
Table 1 Average Digit Error Rates for Several Recognizers 
and Evaluation Sets 
Evaluation Set 
Recognizer Original 
TY Pe Training TS2 TS3 TS4 
LPCIDTW 0.1 0.2 2.0 1.1 
LPCIDTWIVQ - 3.5 
HMMNQ - 3.7 
- - 
- - 
HMMICD 0 0.2 1.3 1.8 
HMMIAR 0.3 1.8 3.4 4.1 
It can be seen that, when using a VQ, the performance of 
the isolated word recognizer degrades in both the con- 
ventional and HMM modes. It can also be seen that the per- 
formances of the conventional template-based recognizer, 
and the HMM recognizer with a continuous density model 
are comparable. Finally Table 1 shows that the autoregres- 
sive density HMM gives poorer performance than the stan- 
dard mixture density model. 
VII. CONNECTED WORD RECOGNITION USING HMMs [59]- 
1631 
A somewhat more complicated problem of speech rec- 
ognition, to which HMMs have been successfully applied, 
is the problem of connected word recognition. The basic 
premise of connected word recognition is that the rec- 
ognition is based on individual word models (as opposed 
to models of speech units smaller than words). The rec- 
ognition problem (once the appropriate word models have 
been derived) is to find the optimum sequence (concate- 
nation) of word models that best matches (in a maximum 
likelihood sense) an unknown connected word string. In 
this section we discuss one method (called the level build- 
ing approach) for solving for such optimum sequences of 
word models. An alternative method for obtaining the opti- 
mum sequence of words is a frame (time) synchronous 
Viterbi search [31]. There are several practical advantages 
of the frame synchronous search (e.g., ease of real-time 
hardware implementation, ease of path pruning, etc.) but 
these do not affect the optimality of the two methods. For 
convenience, we restrict our discussion to the recognition 
of strings of connected digits. 
A. Connected Digit Recognition from Word HMMs Using 
Level Building 
A block diagram of the overall level building connected 
digit recognizer is given in Fig. 21.Thereareessentiallythree 
steps in the recognition process: 
7) Spectral Analysis: The speech signal s(n) is converted 
to either a set of LPC vectors or a set of cepstral and delta 
SINGLE 
DIGIT 
PATTERNS 
, RECOGNIZED 
Fig. 21. Block diagram of level building, connected digit 
recognizer. 
cepstral vectors. This defines the observation sequence 0 
of the unknown connected digit string. 
2) Level B~ilding’~ Pattern Matching: The sequence of 
spectral vectors (the observations) of the unknown con- 
nected digit string is matched against the singleword HMMs 
usingaviterbi scoringalgorithm.Theoutputofthis process 
is a set of candidate digit strings, generally of different 
lengths (i.e., different number of digits per string), ordered 
by log probability scores. 
3) Postprocessor: The candidate digit strings are sub- 
jected to further validity tests (e.g., duration), to eliminate 
unreasonable (unlikely) candidates. The postprocessor 
chooses the most likely digit string from the remaining 
(valid) candidate strings. 
Individual digits are each characterized by an HMM of 
the type shown in Fig. 22. (Transitions between words are 
handled by a switch mode from the last state of one word 
model, to the first state of another word model, in the level 
building implementation.) The parameters of the HMMs 
used for characterizing digits are the following: 
1) N = 5 or 8 states for digit models trained from obser- 
vations of a single talker, and N = 8 or 10 states, for 
14Alevel isaword position inastring. Hencea5digit stringwould 
have at least 5 level outputs, one for each digit in the string. 
RABINER: HIDDEN MARKOV MODELS 281

Fig. 22. HMM characterization of individual digits for con- 
nected digit recognition. 
digit models trained from observations of more than 
a single talker. 
2) Continuous observation mixture densities with M = 
3 or 5 mixtures per state for single talker models and 
M = 9 mixtures per state for multiple talker models. 
3) Energy probability pi(€) where et is the dynamically 
normalized log energy of the frame of speech used 
to give observation vector 0,, and pi( .) is a discrete 
density of log energy values in state j. The density is 
derived empirically from the training data. 
4) State duration density pi(d), 1 5 d I D = 25. 
In addition to the observation density, log energy prob- 
ability, and state duration density, each word HMM A' is 
also characterized by an overall word duration densityp,(D) 
of the form 
pJD) = X@,, a:) (1 20) 
where E,, is the average duration for word v, IJ', is the var- 
iance in duration for word v, and 92 is the normal density. 
B. Level Building on HMMs 
The way in which level building is used on HMMs is illus- 
trated in Fig. 23. If we denote the set of V word HMMs as 
A',1 5 VI V,thentofindtheoptimumsequenceof HMMs 
that match 0 (i.e., maximize the likelihood), a sequence of 
Viterbi matches is performed. For each HMM A', and at each 
level 0, we do a Viterbi match against 0, starting at frame 
(observation interval) 1 on level 1, and retain for each pos- 
sible frame t the following: 
1) P#), 1 5 t I T, the accumulated log probability to 
frame t, at level P, for reference model A', along the 
best path. 
2) f;(t), 1 I t s T, a backpointer indicating where the 
path started at the beginning of the level. 
To compute P,", we need a local measure for the proba- 
bility that observation 0,, with log energy et, occurred in 
state j of model A'. We use, as the observation density, the 
function 
where yc (set to 0.375) is a log energy scaling coefficient and 
K1 is a normalization constant. The state transition coeffi- 
cients enter the calculation of P:(t) via the dynamic pro- 
gramming optimization in determining the Viterbi path. 
At the end of each level P (where the level corresponds 
to word position within the string), a maximization over v 
N 
1 
N 
- .- - 
'A 
W 
21 
$N 
W 
0 
I 
I 
1 
N 
2 
4 
1 t 7 
TEST FRAME 
4=L 
4=2 
f=l 
Fig. 23. Illustration of how HMMs are applied in the level 
building algorithm. 
is performed to get the best model at each frame t as fol- 
lows: 
e(t) = max Pp'(t), I I t I T (122a) 
Wf(t) = argmax P#), 1 I t I T (122b) 
ff(t) = f,wl%t), I 5 t 5 T (122~) 
1svcv 
1cvsv 
where Wf(t) records the number of the word model which 
gave the best score at frame t, level t, and Ff(t) records the 
backpointer of the best word model. 
Each new level begins with the initial best probability at 
the precedingframeon the preceding level and increments 
the Viterbi score by matching the word models beginning 
at the new initial frame. This process is repeated through 
a number of levels equivalent to the maximum expected 
number of digits in any string (e.g., typically 7). 
At the end of each level, a best string of size &'words (1 
I t 5 L) with probability e(T) is obtained by backtracking 
using the backpointer array ff(t) to give the words in the 
string. The overall best string is the maximum of e(T) over 
all possible levels P. 
C. Training the Word Models 1591, 1611 
The key to success in connected word recognition is to 
derive word models from representative connected word 
strings. We have found that although the formal reesti- 
mation procedures developed in this paper work well, they 
are costly in terms of computation, and equivalently good 
parameter estimates can be obtained using a segmental K- 
means procedure of the type discussed in Section VI. The 
only difference in the procedure, from the one discussed 
earlier, is that the training connected word strings are first 
segmented into individual digits, via a Viterbi alignment 
procedure, then each set of digits is segmented into states, 
and the vectors within each state are clustered into the best 
282 PROCEEDINGS OF THE IEEE, VOL. 77, NO. 2, FEBRUARY 1989

M cluster solution. The segmental K-means reestimation of 
the HMM parameters is about an order of magnitude faster 
than the Baum-Welch reestimation procedure, and all our 
experimentation indicates that the resulting parameter esti- 
mates are essentially identical in that the resulting HMMs 
have essentially the same likelihood values. As such, the 
segmental K-means procedure was used to give all the 
results presented later in this section. 
D. Duration Modeling for Connected Digits 
There are two forms of durational information used in 
scoring connected digit sequences, namely word duration 
and state duration. The way in which word duration infor- 
mation is incorporated into the model scoring is as follows. 
At the end of each level, for each frame t, the accumulated 
probability *(t) is modified by determining the word dura- 
tion 7,(f) as 
7Jf) = t - FF(t) + 1 (123) 
and then multiplying the accumulated probability by the 
word duration probability, i.e., 
where ywo (set to 3.0) is a weighting factor on word dura- 
tions, and K2 is a normalization constant. 
State duration probabilities are incorporated in a post- 
processor. The level building recognizer provides multiple 
candidates at each level (by tracking multiple best scores 
at each frame of each level). Hence overall probability scores 
are obtained for RL strings of length L digits, where R is the 
number of candidates per level (typically R = 2). Each of the 
RL strings is backtracked to give both individual words and 
individual states within the words. For an L-word string, if 
we denote the duration of statej at level Pas Af(j), then, for 
each possible string, the postprocessor multiplies the over- 
all accumulated probability@(T) bythe stateduration prob- 
abilities, giving 
LN 
e(T) = fl(T) * n [p~(f)(Af(j))]ysD * K, (125) 
where ysD (set to 0.75) is a weighting factor on state dura- 
tions, w(P) is the word at level P, and K3 is a normalization 
constant. The computation of (125) is performed on all RL 
strings, and a reordered list of best strings is obtained. The 
incremental cost of the postprocessor computation is neg- 
ligible compared to the computation to give fl(T), and its 
performance has been shown to be comparable to the per- 
formance of the internal duration models. 
f=1 j=1 
E. Performance of the Connected Digit HMM Recognizer 
trained and tested in 3 modes: 
The HMM-based connected digit recognizer has been 
Speaker trained using 50 talkers (25 male, 25 female) 
each of whom provided a training set of about 500 
connected digit strings and an independent testing 
set of 500 digit strings. 
Multispeaker in which the training sets from the 50 
talkers above were merged into a single large training 
set, and the testing sets were similarly merged. In this 
case a set of 6 HMMs per digit was used, where each 
HMM was derived from a subset of the training utter- 
ances. 
3) Speaker independent based on the TI training and 
testing databases. Both the training and testing sets 
had about 113 talkers (different ones were used in 
each set) and the talkers were divided into 22 dialectal 
groups. In this caseaset of4 HMMs per digitwas used. 
In each of the above databases there were variable length 
digit strings with from I to 7 digits per string. 
The performance of the HMM connected digit recog- 
nizer, in these modes, is given in Table 2, where the entries 
Table 2 Performance of the HMM Connected Digit 
Recognizer in Three Modes 
Training Set Testing Set 
Mode UL KL UL KL 
Speaker trained 
Multispeaker 
Speaker independent 
(50 talkers) 0.39 0.16 0.78 0.35 
(50 talkers) 1.74 0.98 2.85 1.65 
(112/113 talkers) 1.24 0.36 2.94 1.75 
in the table are average string error rates for cases in which 
the string length was unknown apriori (UL), and for cases 
in which the string length was known apriori (KL). Results 
are given both for the training set (from which the word 
models were derived), and for the independent test set. 
VIII. HMMs FOR LARGE VOCABULARY SPEECH RECOGNITION 
[61-[131, [31l, [37l, [381, [511, [641-[661 
Although HMMs have been successfully applied to prob- 
lems in isolated and connected word recognition, the antic- 
ipated payoff of the theory, to problems in speech rec- 
ognition, is in its application to large vocabulary speech 
recognition in which the recognition of speech is per- 
formed from basic speech units smaller than words. The 
research in this area far outweights the research in any other 
area of speech processing and is far too extensive to discuss 
here. Instead, in this section we briefly outline the ideas of 
how HMMs have been applied to this problem. 
In the most advanced systems (e.g., comparable to those 
under investigation at IBM, BBN, CMU and other places), 
the theory of HMMs has been applied to the representation 
of phoneme-like sub-words as HMMs; representation of 
words as HMMs; and representation of syntax as an HMM. 
To solve the speech recognition problem, a triply embed- 
ded network of HMMs must be used. This leads to an 
expanded network with an astronomical number of equiv- 
alent states; hence an alternative to the complete, exhaus- 
tive search procedure is required. Among the alternatives 
arethestackalgorithm [7landvariousformsofViterbi beam 
searches [31]. These procedures have been shown to be 
capable of handling such large networks (e.g., 5000 words 
with an averageword branchingfactor of 100) in an efficient 
and reliable manner. Details of these approaches are 
beyond the scope of this paper. 
In another attempt to apply HMMs to continuous speech 
recognition, an ergodic HMM was used in which each state 
represented an acoustic-phonetic unit [47l. Hence about 
40-50 states are required to represent all sounds of English. 
The model incorporated the variable duration feature in 
each state to account for the fact that vowel-like sounds 
RABINER: HIDDEN MARKOV MODELS

have vastly different durational characteristics than con- 
sonant-likesounds. In thisapproach, lexicalaccesswas used 
in conjunction with a standard pronouncing dictionary to 
determine the best matching word sequence from the out- 
put of the sub-word HMM. Again the details of this rec- 
ognition system are beyond the scope of this paper. The 
purpose of this brief discussion is to point out the vast 
potential of HMMs for characterizing the basic processes 
of speech production; hence theirapplicabilityto problems 
in large vocabulary speech recognition. 
A. Limitations of HMMs 
Although useof HMM technology has contributed greatly 
to recent advances in speech recognition, there are some 
inherent limitations of this type of statistical model for 
speech. A major limitation is the assumption that succes- 
sive observations (frames of speech) are independent, and 
therefore the probability of a sequence of observations P(0, 
O2 * . Or) can be written as a product of probabilities of 
individual observations, i.e., 
T 
P(0, 02 . * * Or) = ,n /YOi). 
,=1 
Another limitation is the assumption that the distributions 
of individual observation parameters can be well repre- 
sented as a mixture of Gaussian or autoregressive densities. 
Finally the Markov assumption itself, i.e., that the proba- 
bility of being in a given state at time t only depends on the 
state at timet - 1, is clearly inappropriate for speech sounds 
where dependencies often extend through several states. 
However, in spite of these limitations this type of statistical 
model has worked extremelywell for certain types of speech 
recognition problems. 
IX. SUMMARY 
In this paper we have attempted to present the theory of 
hidden Markov models from the simplest concepts (dis- 
crete Markov chains) to the most sophisticated models 
(variable duration, continuous density models). It has been 
our purpose to focus on physical explanations of the basic 
mathematics; hence we have avoided long, drawn out 
proofs and/or derivations of the key results, and concen- 
trated primarily on trying to interpret the meaning of the 
math, and how it could be implemented in practice in real 
world systems. We have also attempted to illustrate some 
applications of the theory of HMMs to simple problems in 
speech recognition, and pointed out how the techniques 
could be (and have been) applied to more advanced speech 
ACKNOWLEDGMENT 
The author gratefully acknowledges the major contri- 
butions of several colleagues to the theoryof HMMs in gen- 
eral, and to the presentation of this paper, in particular. A 
great debt is owed to Dr. J. Ferguson, Dr. A. Poritz, Dr. L. 
Liporace, Dr.A. Richter,and toDr. F. Jelinekand thevarious 
membersofthe IBMgroupfor introducingthespeech world 
to the ideas behind HMMs. In addition Dr. S. Levinson, Dr. 
M. Sondhi, Dr. F. Juang, Dr. A. Dembo, and Dr.Y. Ephraim 
have contributed significantly to both the theory of HMMs 
as well as the author‘s perspective and knowledge as to how 
the theory is best applied to problems of speech recog- 
nition. 
REFERENCES 
L. E. Baum and T. Petrie, “Statistical inference for probabi- 
listicfunctionsof finite state Markovchains,”Ann. Math. Stat., 
L. E. Baum and J. A. Egon, ”An inequality with applications 
to statistical estimation for probabilistic functions of a Mar- 
kov process and to a model for ecology,” Bull. Amer. Mete- 
orol. Soc., vol. 73, pp. 360-363, 1967. 
L. E. Baum and G. R. Sell, “Growth functions for transfor- 
mations on manifolds,” Pac. /. Math., vol. 27, no. 2, pp. 211- 
227, 1968. 
L. E. Baum, T. Petrie, G. Soules, and N. Weiss, “A maximi- 
zation technique occurring in the statistical analysis of prob- 
abilistic functions of Markov chains,” Ann. Math. Stat., vol. 
41, no. 1, pp. 164-171, 1970. 
L. E. Baum, “An inequalityand associated maximization tech- 
nique in statistical estimation for probabilistic functions of 
Markov processes,” Inequalities, vol. 3, pp. 1-8, 1972. 
J. K. Baker, ”The dragon system-An overview,” /€E€ Trans. 
Acoust. Speech Signal Processing, vol. ASP-23, no. 1, pp. 24- 
29, Feb. 1975. 
F. Jelinek, “A fast sequential decoding algorithm using a 
stack,” ISM]. Res. Develop., vol. 13, pp. 675-685, 1969. 
L. R. Bahl and F. Jelinek, “Decoding for channels with inser- 
tions, deletions, and substitutions with applications to speech 
recognition,” /€E€ Trans. Informat. Theory, vol. IT-21, pp. 404- 
411, 1975. 
F. Jelinek, L. R. Bahl, and R. L. Mercer, ”Design of a linguistic 
statistical decoder for the recognition of continuous speech,” 
/E€€ Trans. Informat. Theory, vol. IT-21, pp. 250-256, 1975. 
F. Jelinek, “Continuous speech recognition by statistical 
methods,” Proc. /€E€, vol. 64, pp. 532-536, Apr. 1976. 
R. Bakis, ”Continuous speech word recognition via centi- 
second acoustic states,” in Proc. ASA Meeting (Washington, 
DC), Apr. 1976. 
F. Jelinek, L. R. Bahl, and R. L. Mercer, “Continuous speech 
recognition: Statistical methods,” in Handbook of Statistics, 
I/, P. R. Krishnaiad, Ed. Amsterdam,The Netherlands: North- 
Holland, 1982. 
L. R. Bahl, F. Jelinek, and R. L. Mercer, “A maximum likelihood 
approach to continuous speech recognition,” /€€E Trans. Pat- 
tern Anal. Machine Intel/., vol. PAMI-5, pp. 179-190, 1983. 
S. E. Levinson, L. R. Rabiner, and M. M. Sondhi, “An intro- 
duction to the application of the theory of probabilistic func- 
tions of a Markov process to automatic speech recognition,” 
SeIISyst. Tech. /., vol. 62, no. 4, pp. 1035-1074, Apr. 1983. 
B. H. Juang,“On the hidden Markov model and dynamic time 
warping for speech recognition-A unified view,” AT&TTech. 
/.,vol. 63, no. 7, pp. 1213-1243, Sept. 1984. 
L. R. Rabinerand B. H. Juang,”An introduction to hidden Mar- 
kov models,” IEEE ASSP Mag., vol. 3, no. l, pp. 4-16, 1986. 
J. S. Bridle, “Stochastic models and template matching: Some 
important relationships between two apparently different 
techniques for automatic speech recognition,” in Proc. Inst. 
ofAcoustics, Autum Conf., pp. 1-8, Nov. 1984. 
J. Makhoul, S. Roucos, and H. Gish, “Vector quantization in 
speech coding,”Proc. /€E€, vol. 73, no. 11, pp. 1551-1588, Nov. 
1985. 
S. E. Levinson, “Structural methods in automatic speech rec- 
ognition,” Proc. I€€€, vol. 73, no. 11, pp. 1625-1650, Nov. 1985. 
A. W. Drake, “Discrete-state Markov processes,” Chapter 
5 in Fundamentals ofApplied Probability Theory. New York, 
NY: McGraw-Hill, 1967. 
A. J. Viterbi, “Error bounds for convolutional codes and an 
asymptotically optimal decoding algorithm,” I€€€ Trans. 
Informat. Theory, vol. IT-13, pp. 260-269, Apr. 1967. 
G. D. Forney, “The Viterbi algorithm,” Proc. /E€, vol. 61, pp. 
268-278, Mar. 1973. 
A. P. Dempster, N. M. Laird, and D. B. Rubin, “Maximum like- 
vol. 37, pp. 1554-1563,1966. 
284 PROCEEDINGS OF THE IEEE, VOL. 77, NO. 2, FEBRUARY 1989

lihood from incomplete data via the EM algorithm,” 1. Roy. 
Stat. Soc., vol. 39, no. 1, pp. 1-38, 1977. 
L. A. Liporace, ”Maximum likelihood estimation for multi- 
variate observations of Markov sources,” /€€€ Trans. lnfor- 
mat. Theory, vol. IT-28, no. 5, pp. 729-734, 1982. 
[25] B. H. Juang, ”Maximum likelihood estimation for mixture 
multivariate stochastic observations of Markov chains,” AT&T 
Tech. I., vol. 64, no. 6, pp. 1235-1249, July-Aug. 1985. 
[26] B. H. Juang, S. E. Levinson, and M. M. Sondhi, “Maximum 
likelihood estimation for multivariate mixture observations 
of Markov chains,” /€€E Trans. lnformat. Theory, vol. IT-32, 
no. 2, pp. 307-309, Mar. 1986. 
[27] A. B. Poritz, “Linear predictive hidden Markov models and 
the speech signal,” in Proc. lCASSP ’82 (Paris, France), pp. 
1291-1294, May 1982. 
[28] B. H. Juang and L. R. Rabiner, “Mixture autoregressive hidden 
Markov models for speech signals,” /€€E Trans. Acoust. 
Speech Signal Processing, vol. ASSP-33, no. 6, pp. 1404-1413, 
Dec. 1985. 
[29] M. J. Russell and R. K. Moore,”Explicit modeling of stateoccu- 
pancy in hidden Markov models for automatic speech rec- 
ognition,” in Proc. lCASSP’85 (Tampa, FL), pp. 5-8, Mar. 1985. 
[30] S. E. Levinson, “Continuously variable duration hidden Mar- 
kov models for automatic speech recognition,” Computer, 
Speech and Language, vol. 1, no. 1, pp. 29-45, Mar. 1986. 
[31] B. Lowerreand R. Reddy, “The HARPY speech understanding 
system,” in Trends in Speech Recognition, W. Lea, Editor. 
Englewood Cliffs, NI: Prentice-Hall, 1980, pp. 340-346. 
[32] L. R. Bahl, P. F. Brown, P. V. de Souza, and R. L. Mercer, “Max- 
imum mutual information estimation of hidden Markov 
model parameters for speech recognition,” in Proc. lCASSP 
’86 (Tokyo, Japan), pp. 49-52, Apr. 1986. 
[33] Y. Ephraim, A. Dembo, and L. R. Rabiner, “A minimum dis- 
crimination information approach for hidden Markov mod- 
eling,” in Proc. lCASSP ‘87(Dallas, TX), Apr. 1987. 
[34] B. H. Juang and L. R. Rabiner, “A probabilistic distance mea- 
sure for hidden Markov models,” AT&T Tech. /., vol. 64, no. 
2, pp. 391-408, Feb. 1985. 
[35] L. R. Rabiner, B. H. Juang, S. E. Levinson, and M. M. Sondhi, 
“Some properties of continuous hidden Markov model rep- 
resentations,” AT&TTech. ]., vol. 64, no. 6, pp. 1251-1270, July- 
Aug. 1985. 
(361 F. Jelinek and R. L. Mercer, “Interpolated estimation of Mar- 
kov source parameters from sparse data,” in Pattern Rec- 
ognition in Practice, E. S. Gelesma and L. N. Kanal, Eds. 
Amsterdam, The Netherlands: North-Holland, 1980, pp. 381- 
397. 
[37 R. Schwartz et al., “Context-dependent modeling for acous- 
tic-phonetic recognition of continuous speech,” in Conf. 
Proc. /€E€ lnt. Conf. on Acoustics, Speech, and Signal Pro- 
cessing, pp. 1205-1208, Apr. 1985. 
[38] K. F. Lee and H. W. Hon, “Large-vocabulary speaker-inde- 
pendent continuous speech recognition,” in Conf. Proc. /€€E 
lnt. Conf. on Acoustics, Speech, and Signal Processing, pp. 
123-126, Apr. 1988. 
[39] L. R. Rabiner, S. E. Levinson,and M. M. Sondhi,“On theappli- 
cation of vector quantization and hidden Markov models to 
speaker-independent isolated word recognition,” Bell Syst. 
Tech. I., vol. 62, no. 4, pp. 1075-1105, Apr. 1983. 
[40] -, “On the use of hidden Markov models for speaker-inde- 
pendent recognition of isolated words from a medium-size 
vocabulary,” AT&T Tech. I., vol. 63, no. 4, pp. 627-642, Apr. 
1984. 
[41] R. Billi, “Vector quantization and Markov source models 
applied to speech recognition,” in Proc. lCASSP ’82 (Paris, 
France), pp. 574-577, May 1982. 
[42] L. R. Rabiner, B. H. Juang, S. E. Levinson, and M. M. Sondhi, 
“Recognition of isolated digits using hidden Markov models 
with continuous mixture densities,” AT&T Tech. I., vol. 64, 
no. 6, pp. 1211-1222, July-Aug. 1986. 
[43] A. B. Poritz and A. G. Richter, ”Isolated word recognition,” 
in Proc. lCASSP ’86 (Tokyo, Japan), pp. 705-708, Apr. 1986. 
[44] R. P. Lippmann, E. A. Martin, and D. B. Paul, “Multistyle train- 
ing for robust isolated word speech recognition,” in Proc. 
lCASSP ’87(Dallas, TX), pp. 705-708, Apr. 1987. 
[24] 
[45] D. B. Paul, “A speaker stress resistant HMM isolated word 
recognizer,” in Proc. lCASSP‘87(Dallas, TX), pp. 713-716, Apr. 
1987. 
[46] V. N. Gupta, M. Lennig and P. Mermelstein, “Integration of 
acoustic information in a large vocabulary word recognizer,” 
in Conf. Proc. /E€€ lnt. Conf. on Acoustics, Speech, and Sig- 
nal Processing, pp. 697-700, Apr. 1987. 
[47l S. E. Levinson, “Continuous speech recognition by means of 
acoustic-phonetic classification obtained from a hidden Mar- 
kov model,” in Proc. lCASSP ‘87 (Dallas TX), Apr. 1987. 
[48] J. G. Wilpon, L. R. Rabiner, and T. Martin, “An improved word 
detection algorithm for telephone quality speech incorpo- 
rating both syntactic and semantic constraints,” AT&T Bell 
Labs Tech. I., vol. 63, no. 3, pp. 479-498, Mar. 1984. 
[49] J. G. Wilpon and L. R. Rabiner, “Application of hidden Markov 
models to automatic speech endpoint detection,” Computer 
Speech and Language, vol. 2, no. 3/4, pp. 321-341, Sept./Dec. 
1987. 
[50] A. Averbuch et al., “Experiments with the TANGORA 20,000 
word speech recognizer,” in Conf. Proc. /€E€ lnt. Conf. on 
Acoustics, Speech, and Signal Processing, pp. 701-704, Apr. 
1987. 
[51] B. S. Atal and S. L. Hanauer, ”Speech analysis and synthesis 
by linear prediction of the speech wave,”]. Acoust. SOC. Am., 
[52] F. I. ltakuraand S. Saito, “Analysis-synthesis telephony based 
upon the maximum likelihood method,” in Proc. 6th lnt. Con- 
gress on Acoustics (Tokyo, Japan), pp. C17-20, 1968. 
[53] J. Makhoul, “Linear prediction: A tutorial review,” Proc. /€E€, 
[54] J. D. Markel and A. H. Gray, Jr., Linear Prediction of Speech. 
New York, NY: Springer-Verlag, 1976. 
[55] Y. Tokhura, “A weighted cepstral distance measure for speech 
recognition,” /E€€ Trans. Acoust. Speech Signal Processing, 
vol. ASSP-35, no. IO, pp. 1414-1422, Oct. 1987. 
[56] B. H. Juang, L. R. Rabiner, and J. C. Wilpon, “On the use of 
bandpass liftering in speech recognition,” /E€€ Trans. Acoust. 
Speech Signal Processing, vol. ASSP-35, no. 7, pp. 947-954, 
July 1987. 
[57l S. Furui, “Speaker independent isolated word recognition 
based on dynamics emphasized cepstrum,” Trans. lECE of 
japan, vol. 69, no. 12, pp. 1310-1317, Dec. 1986. 
[58] F. K. Soongand A. E. Rosenberg,“On the useof instantaneous 
and transitional spectral information in speaker recogni- 
tion,” in Proc. lCASSP ’86 (Tokyo, Japan), pp. 877-880, Apr. 
1986. 
[59] L. R. Rabiner, J. G. Wilpon, and B. H. Juang, “A segmental k- 
means training procedure for connected word recognition,” 
AT&T Tech. ]., vol. 65, no. 3, pp. 21-31, May-June 1986. 
[60] L. R. Rabiner and S. E. Levinson, ”A speaker-independent, 
syntax-directed, connected word recognition system based 
on hidden Markov models and level building,” /€E€ Trans. 
Acoust. Speech Signal Processing, vol. ASSP-33, no. 3, pp. 561- 
573, June 1985. 
[61] L. R. Rabiner, J. G. Wilpon, and B. H. Juang, “A model-based 
connected digit recognition system using either hidden Mar- 
kov models or templates,” Computer, Speech, andlanguage, 
vol. 1, no. 2, pp. 167-197, Dec. 1986. 
[62] H. Bourlard, Y. Kamp, H. Ney, and C. J. Wellekens, ”Speaker- 
dependent connected speech recognition via dynamic pro- 
gramming and statistical methods,” in Speech and Speaker 
Recognition, M. R. Schroeder, Ed. Basel, Switzerland: Kar- 
ger, 1985, pp. 115-148. 
[63] C. J. Wellekens, “Global connected digit recognition using 
Baum-Welch algorithm,” in Proc. lCASSP ’86 (Tokyo, Japan), 
pp. 1081-1084, Apr. 1986. 
[64] A. M. Derouault, ”Context dependent phonetic Markov 
models for large vocabulary speech recognition,” in Proc. 
lCASSP ’87 (Dallas, TX), Paper 10.1.1, pp. 360-363, Apr. 1987. 
[65] B. Merialdo, ”Speech recognition with very large size dictio- 
nary,” in Proc. lCASSP ’87(Dallas, TX), Paper 10.22, pp. 364- 
367, Apr. 1987. 
[66] Y. L. Chow eta/., “BYBLOS: The BBN continuous speech rec- 
ognition system,” in Proc. lCASSP’87(Dallas, TX), Paper 3.7.1, 
pp. 89-92, Apr. 1987. 
VOI. 50, pp. 637-655, 1971. 
vol. 63, pp. 561-580, 1975. 
RABINER: HIDDEN MARKOV MODELS 285

Lawrence R. Rabiner (Fellow, IEEE) was born cuitry, military communications problems, and problems in 
in Brooklyn, NY,on September28,1943. He binaural hearing. Presently he is engaged in research on speech 
received the S.B. and S.M. degrees, both in recognition and digital signal processing techniques at Bell Lab- 
1964, and the Ph.D. degree in electrical oratories, Murray Hill. He is coauthor of the books Theory and 
engineering, in 1967, all from the Massa- Application of Digital Signal Processing (Prentice-Hall, 1975), Dig- 
chusetts Institute of Technology, Cam- ital Processing of Speech Signals (Prentice-Hall, 1978), and Multi- 
bridge, MA. rate Digital Signal Processing (Prent ice-H al I, 1983). 
From 1962 through 1964 he participated Dr. Rabiner is a member of Eta Kappa Nu, Sigma Xi, Tau Beta Pi, 
in the cooperative plan in electrical engi- The National Academy of Engineering, and a Fellow of the Acoust- 
neering at Bell Laboratories, Whippany, and ical Society of America. 
Murray Hill, NJ. He worked on digital cir- 
286 PROCEEDINGS OF THE IEEE, VOL. 77, NO. 2, FEBRUARY 1989

E:\courses\LangChain Project\main root\data\SCR_Chapter00_course_outline.pdf

Social and Cognitive Robotics
2023
1
In the name of the absolute power and the absolute knowledge 
Alireza
 Taheri, 
PhD, Assistant Professor
artaheri@sharif.edu  
Head of the Social and Cognitive Robotics Lab.,
Center of Excellence in Design, Robotics, and 
Automation
School 
of Mechanical 
Engineering,
, Tehran, 
Iran

Preface
2

Our Research Group
3
M. Alemi
A. Meghdari
A. Taheri 2020

About the course
 Course Title: Social and Cognitive Robotics, Course No.: 28628
 Instructor: Alireza Taheri, PhD, Assistant Professor
 Email: artaheri@sharif.edu
 Website: http://sharif.ir/~artaheri/
 Tel: +98 21 6616 5531 
 Grading:
 Homework (30%)
 Final Exam (40%)
 Final Project (30%)
 Office Hours by request
4

 References (…but not limited to)
 Bartneck, C., Belpaeme, T., Eyssel, F., Kanda, T., Keijsers, M., & Šabanović, S. (2020).
Human-robot interaction: An introduction. Cambridge University Press.
 MatarićM.J., Scassellati B. (2016) Socially Assistive Robotics. In: Siciliano B., Khatib
O. (eds) Springer Handbook of Robotics. Springer Handbooks. Springer, Cham.
https://doi.org/10.1007/978-3-319-32552-1_73
 Breazeal, C. (2004). Designing sociable robots. MIT press.
 Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep learning. MIT press.
 Vernon, D. (2014). Artificial cognitive systems: A primer. MIT Press.
 Samani, H. (Ed.). (2015). Cognitive robotics. CRC Press.
 Kanda, T., & Ishiguro, H. (2017). Human-robot interaction in social robotics. CRC
Press.
 Nørskov, M. (2017). Social robots: boundaries, potential, challenges. Taylor &
Francis.
 Calinon, S. (2018). Robot learning with task-parameterized generative models. In
Robotics Research (pp. 111-126). Springer, Cham.
5

Our Approach in Social Robotics
6
خرید،
و یا 
طراحی و ساخت 
ربات های اجتماعی-
شناختی 
با توجه به نیازهای مورد
نظر
پیاده سازی 
الگوریتم های کنترلی و 
هوش مصنوعی 
جهت توانمندسازی ربات 
ها 
برای نیل به اهداف تعیین 
شده
انجام مطالعات میدانی و 
مداخلات بالینی 
در حوزه 
بررسی مقبولیت، 
آموزش، 
توانبخشیو ...
شناسایی یک نیاز در جامعه (عمدتا برای کودکان)
رویکرد ما(!) در حوزه رباتیک اجتماعی در دانشگاه صنعتیشریف 
Design and FabricationControl and Machine LearningClinical Interventions

Lecture Schedule
 Introduction, definitions, and basic concepts 
7
A
 Social
 Robot
 is
 an
 E
ntity
 that
 can,
 “
not
 only
 S
ense,
 T
hink
 and
 A
ct
”
,
 “
but
 also
must
 be
 able
 to
 C
ommunicate
 with
 humans
 and/or
 other
 social
 robots
”
.

 Introduction, definitions, and basic concepts
 Design and interaction of social robots
8

 Design and interaction perspective of social robots
 Artificial intelligence: Towards Deep Learning
 Neural Networks and MLP
9

 Convolutional Neural Networks (CNN)
10

 Recurrent Neural Networks (RNN)
11

 Learning from Demonstration (LfD)
 Gaussian Mixture Models (GMM)
 Hidden Markov Models (HMM)
12

 Adaptive teaching/rehabilitation 
13

 Gaze control system
14

 Artificial intelligence
 Cognitive architectures 
15
A
 cognitive
 architecture
 is
 a
 fixed
 structure
 that
 enables
 the
 system
 to
 develop
 its
 understanding
of
 the
 environment
 and
 processes
 by
 receiving
 new
 information
 and
 knowledge
.

 Design human-robot interactions and evaluation of the interventions
16
10987654321
4.0
3.5
3.0
2.5
2.0
1.5
Movement
Mean
ASD+a
ASD+b
ASD+c
TD+a
TD+b
TD+c
Diagnose+Mode
Interaction Plot for Score
Fitted Means

Design of Social Robots
17
خرید،
و یا 
شناختی 
نظر
پیاده سازی 
هوش مصنوعی 
ها 
شده
در حوزه 
آموزش، 

Machine Learning
18
خرید،
و یا 
شناختی 
نظر
پیاده سازی 
هوش مصنوعی 
ها 
شده
در حوزه 
آموزش، 
For whom that his/her research 
interest lies 
at the intersection of 
control 
theory and machine 
learning!

Why Deep Learning?
19
By Alexander Amini, MIT 6.S191
Traditional 
Programming
Algorithms
Starts with Figures out
By Daniel Bourke, Learn TensorFlow and Deep Learning

Deep Learning Applications
20
Robotics
Atlas Robot by Boston Dynamics
https://www.youtube.com/watch?v=EezdinoG4mk
https://www.youtube.com/watch?v=fn3KWM1kuAw

21
Autonomous Driving and Self
-
Driving Cars
Tesla Autopilot
MIT Autonomous Vehicle
https://www.youtube.com/watch?v=fKXztwtXaGo
https://www.youtube.com/watch?v=YgFlMnQmASw

22
Action Recognition
https://www.youtube.com/watch?v=PEziTgHx4cA

23
Action Recognition; Sign Language Detection

24
https://thispersondoesnotexist.com/
Take a look and enjoy!
Fake Images!

25
Art; Painting
By Nvidiahttps://www.youtube.com/watch?v=5Qdr8AUNYqU

26
By Daniel Bourke, Learn TensorFlow and Deep Learning 
خوب، حالا بازم«چرا یادگیری عمیق؟»
1-چرا که نه؟!  
2-داریم به نقطه ای می رسیم(تازه اگه نرسیده باشیم) که 
ندونستنش زشته! ... زشت ... می فهمین؟!!  
Let’s come back to slide #19

27
یعنی بدون هیچ پیشینه ای و با موارد مورد نظر در این درس، می شه زد تو گوشدیپ لرنینگ؟!
1-اول توکل به خدا... حالا شاید تهشو نون نگیریم، اما تلاش می کنیم لنگان خرک 
خویش به منزل برسانیم!
2-« ...بابا فکر کن، فک کردن که عیب نداره!!»
3-تصور کن تو می تونی،... بشی تعبیر این رویا!!!

Learning Outcomes
 Understand the definitions and principles of human-robot interaction
 Learn required components in social and cognitive robots
 Build your own Deep Neural Networks (from scratch)
 Carry out user requirement analysis and design of human-robot interaction
 Use quantitative and qualitative approaches for evaluation and analysis of
human-robot interaction data
 Know applications of social robots to improve the quality of life of the users
(specially children with special needs)
28
تلاش بر این است تا در درس رباتیک اجتماعی و شناختی، بستری غنی(و تا حد امکان جذاب) جهت فراگیری موارد ضروریدر طراحی ربات های 
اجتماعی، تعاملات انسان-ربات، یادگیری عمیق به صورت کاربردی، و طراحی و ارزیابی مداخلات بالینی و مطالعات میدانی برای شما به وجود آید. 
 …
and in the end, hopefully, you can

Social Robot Definition
29
 A social robot is an autonomous robot that interacts and communicates with
humans or other autonomous physical agents by following social behaviors
and rules attached to its role (~Wikipedia).

 A
 Social
 Robot
 is
 an
 E
ntity
 that
 can
 “
not
 only
 S
ense,
 T
hink
 and
 A
ct
”
,
 “
but
 also
must
 be
 able
 to
 C
 with
 humans
 and/or
 other
 social
 robots
”
.
•رباتیکاجتماعی،بهعنوانیکمفهومجواندرادبیات
پژوهشیرباتیک،صحبتازرباتهاییداردکهباانسانها(و
یابایکدیگر)،تعاملاتعاطفی،کلامیوغیرکلامی،
شنیداری/دیداری(نیمه/تمامهوشمند)و...داشتهوبهعنوان
دوست،همدم،دستیارمعلمویاکمکدرمانگرواردزندگی
افراد(بهخصوصکودکانبانیازهایویژهویاسالمندان)می
شوند.
Next Session …

Thanks for your attention
30

E:\courses\LangChain Project\main root\data\SCR_Chapter01_Introduction.pdf

Chapter 1: Introduction, definitions, 
and basic concepts 
2022
1
Alireza
 Taheri, 
School 
, Tehran, 
Iran

Outlines
2
A
 Social
 Robot
 is
 an
 E
ntity
 that
 can,
 “
not
 only
 S
ense,
 T
hink
 and
 A
ct
”
,
 “
but
 also
must
 be
 able
 to
 C
 with
 humans
 and/or
 other
 social
 robots
”
.
 Chapter 1: Introduction, definitions, and basic concepts 
 Robot 
 Definitions
 Historical Overview
 Social Robots
 Cognitive Robots
 Human-Robot Interactions (HRI)
 Social and Cognitive Robots
 Applications of Social Robots

Introduction, definitions, and basic concepts
Social and Cognitive Robots
3
Let’s start with

Robot Definitions
 Webster’s Dictionary:
“An automatic apparatus or device that performs
functions ordinarily ascribed to human beings” (not a very
accurate description, Ex: washing machines, traffic lights,
etc.).
 Robotics Institute of America:
“A re-programmable multifunctional manipulator
designed to move materials, parts, tools, or specialized
devices, through variable programmed motions for the
performance of a variety of tasks”.
لغتنامهآبادیس:
(دانشنامهعمومی)ربات،یکدستگاهالکترومکانیکییایکنرمافزارهوشمندبرایجایگزینیبا
انسانبههدفانجاموظایفگوناگوناست.
4

Robot Definitions (cont.)
 Oxford English Dictionary:
“A robot is a machine—especially one programmable by a computer—capable
of carrying out a complex series of actions automatically”.
 Working Definition:
“Physical agent that has an intelligent connection between sensors and
actuators”.
5
موارد ذکر شده فقط بخش کوچکی از تعاریف ارائه شده و موجود برای کلمه«ربات»در واژه نامه های مختلف می باشند. 
a
 Robot
 is
 an
 E
ntity
 that
 can
 S
ense,
 T
hink,
 and
 A
ct
.Let’s consider this one:

Robot; Historical Overview
 Human desire has always been to duplicate/copy himself
(mechanical dolls to play music mid-1700).
 Great civilizations of the past (Romans, Greeks, Egyptians, Persians)
were based on Slavery!
 Robots can act as slaves without injustice. They can eliminate many of
today’s economic injustices.
6

Robot; Historical Overview (cont.)
 In 1920s, the word Robot was first used in a play by Karel Capek entitled
“Rossum’s Universal Robots (R.U.R)” performed in Paris. In this play small
artificial creatures strictly obeyed their master’s orders.
7
در سال۳۲۹۱میلادی کارل چاپک نویسنده اهل کشور چک برای اولین بار از کلمه «ربات»در نمایش نامه خود به عنوان آدم مصنوعی استفاده کرد.
 In Czech and Russian, they were called
Robotnic, from “Robota” meaning
hard work and drudgery.
 These robots eventually turned against
their creators!
 … and two of them named Primus and
Helina fell in love with each other!!
 The first robots were thought to be evil
human-looking machines
(Cohen J., Human Robots, 1966; Kato I., Robotica J. 1983)

 “Robotics” as a term, on the other hand, was
introduced later in 1942, by Isaac Asimov in the story
“Runaround”(included in the 1950 collection I, Robot).
 Asimov’s Laws of Robotics
 A robot may not injure a human being or, through
inaction, allow a human being to come to harm.
 A robot must obey the orders given it by human beings
except where such orders conflict with the First law.
 A robot must protect its own existence as long as such
protection does not conflict with the First or Second law
~Wikipedia
8

9
Let’s continue with

10

 A
 Social
 Robot
 is
 an
 E
ntity
 that
 can
 “
not
 only
 S
ense,
 T
hink
 and
 A
ct
”
,
 “
but
 also
must
 be
 able
 to
 C
 with
 humans
 and/or
 other
 social
 robots
”
.
شوند.

11

 A
 Social
 Robot
 is
 an
 E
ntity
 that
 can
 “
not
 only
 S
ense,
 T
hink
 and
 A
ct
”
,
 “
but
 also
must
 be
 able
 to
 C
 with
 humans
 and/or
 other
 social
 robots
”
.

 One subarea of robotics, termed social robotics, involves robots that engage in some
form of social interaction with humans, through speech, gestures, or other media.
 Another subarea of robotics is assistive robotics, which generally involves robots that
aid people with special needs (in contrast to service robotics, which involves any
type of helpful robot). Assistive robotics applications have historically involved hands-
on treatment or support for physical disabilities; for example, a robot can help a
patient perform repetitive therapeutic motions as a physical therapist would.
 At the intersection of social robotics and assistive robotics lies Socially Assistive
Robotics (SAR), which involves robots that are designed to help through social, rather
than physical, interaction.
 SAR is a young but rapidly developing field. SAR systems face challenges different
from those faced by other social or assistive robots.
Ref: Scassellati, B., Admoni, H., & Matarić, M. (2012). Robots for use in autism research. Annual review of 
biomedical engineering, 14, 275-294. 
Social Robot Definition (cont.)
12

 Just for your information, other definitions of social robots or related concepts have
also been used in the literature:
 Socially evocative robots: Robots that rely on the human tendency to anthropomorphize and
capitalize on feelings evoked, when humans nurture, care or involve with their ‘creation’
(Breazeal 2002, 2003).
 Socially situated robots: Robots that are surrounded by a social environment which they
perceive and react to. Socially situated robots are able to distinguish between other social
agents and various objects in the environment (Fong et al. 2003).
 Sociable robots: Robots that proactively engage with humans in order to satisfy internal social
aims (drives, emotions, etc.). These robots require deep models of social cognition (Breazeal
2002, 2003).
 Socially intelligent robots: Robots that show aspects of human-style social intelligence, based
on possibly deep models of human cognition and social competence (Dautenhahn 1998).
 Socially interactive robots: Robots for which social interaction plays a key role in peer-to-peer
HRI, different from other robots that involve ‘conventional’ HRI, such as those used in
teleoperation scenarios (Fong et al. 2003).
Ref: Dautenhahn, K. (2007). Socially intelligent robots: dimensions of human–robot interaction. 
Philosophical transactions of the royal society B: Biological sciences, 362(1480), 679-704.
13

Social Robots; Examples
14

Social Robots; Examples (cont.)
15
Proudly Designed and Fabricated at the Social and Cognitive Robotics Lab., Sharif University of Technology
Arash II Armin Apo Taban II
Taban I

Social Robots; Historical Overview
 The first mention of “social robot” in print was in 1935, when it was used
as a derogatory term for a person having a cold and distant personality!
Toadying and bootlicking his autocratic superiors, he is advanced to preferment. He is
a business success. But he has sacrificed all that was individual. He has become a
social robot, a business cog. (Sargent, 2013)
 In 1978, the first mention of “social robot” was made in the context of
robotics. An article in Interface Age magazine described how a service
robot, in addition to skills such as obstacle avoidance, balancing, and
walking, would also need social skills to operate in a domestic setting.
The article calls this robot a “social robot”.
Ref: Bartneck, C., Belpaeme, T., Eyssel, F., Kanda, T., Keijsers, M., & Šabanović, S. 
(2020). Human-robot interaction: An introduction. Cambridge University Press.
16

Social Robotics and I !
17
لینک خبر
در حاشیه...

18
Let’s finish with
The corresponding slides have been adapted
from “Introduction to Cognitive Robotics” by
David Vernon, Carnegie Mellon University Africa
Prof. Vernon and I, ICRA, 2015

Cognitive Robots; Definition
 "Cognitive Robotics is the field that combines insights and methods
from robotics, AI, and cognitive and biological sciences to design an
integrated cognitive system combining the sensorimotor behavior and
higher-level functions and social capabilities of an intelligent robot“
19
علومشناختیمطالعه ی علمیذهناست.دراینتعریفمنظورازذهنمجموعهرآنچهکهنمودهایهوشمندیوآگاهیهستندمانندتفکر،ادراک،حافظه،احساس،استدلالو
نیزتمامروندهایناآگاهانهشناختیاست.گاهیعلومشناختیرابهصورت«مطالعه ی علمیشناخت»نیزتعریفمی کنند وشناخترامجموعحالت ها وفرآیندهایروانیمانند
تفکر،استدلال،درکوتولیدزبان،دریافتحواسپنجگانه،آموزش،آگاهی،احساساتو…درنظرمی گیرند .بهطورکلیپرسش هایی ماننداینکهذهنچگونهکارمی کند یامغز
چگونههوشمندیراایجادمی کند، ازجملهپرسش هایی هستندکهدراینشاخه ی علمیبررسیمی شوند .

Cognitive Robots; Definition (cont.)
 "The word cognition derives from the Latin verb cognosco, a composition
of con (meaning related to) and gnosco (to know). Cognitive robotics,
then, is the branch of robotics where knowledge plays a central role in
supporting action selection, execution, and understanding.
 It focuses on designing and building robots that have the ability to learn
from experience and from others, commit relevant knowledge and skills
to memory, retrieve them as the context requires, and flexibly use this
knowledge to select appropriate actions in the pursuit of their goals,
while anticipating the outcome of those actions when doing so.
 Cognitive robots can use their knowledge to reason about their actions
and the actions of those with whom they are interacting, and thereby
modify their behavior to improve their overall long-term effectiveness.
 In short, cognitive robots are capable of flexible, context-sensitive action,
knowing what they are doing and why they are doing it."
20

Cognitive Robotics; Historical Overview
21

Cognitive Robot; at a glance
22
 A Cognitive Robot does this by dynamically recruiting several core cognitive abilities: perception,
attention, action selection, memory, learning, reasoning, metacognition, prospection.
 It can also adapt to changing circumstances; Adjusting existing action policies or Creating new one

Cognitive Robots; Example
23
iCub Robot

Human-Robot Interaction (HRI)
 Human–robot interaction is the study of interactions between
humans and robots in the social world.
 for a robot, all social rules and norms are unknown and require the
attention of the robot designer.
 HRI focuses on developing robots that can interact with people in
various everyday environments.
 HRI offers the unique opportunity to study human affect,
cognition, and behavior when confronted with social agents
other than humans.
24

Social and Cognitive Robots; wrap up
25
•رباتهایاجتماعیوشناختی،رباتهاییهستندکهبرایتعاملباانسانهاویابایکدیگرطراحی
میشوندودرتعاملاتانسانی،تقریباًمشابهانسانهاعملمیکنند.
•هدفازطراحیوساخترباتهایاجتماعیوشناختیوتعاملآنهاباانسان،ایجادهمافزاییدر
سیستمهایترکیبیانسان-رباتاست.
•قرارنیستتااینرباتهاجایگزینانسانهاشوند؛بلکهآنهاباتواناییهایخود،قدرتاجتماعیو
شناختیانسانهاراافزایشمیدهند.
•اینرباتهادارایحافظهازمشاهداتوتجربیاتخوددرزمانهایمختلفبوده،صریحاًبایکدیگر
تعاملداشتهوازهممیآموزند.
•اینحوزهتحقیقاتی(بهشدت)بینرشتهایبودهوتخصصهایمختلفدرآندرگیرمیباشند
(مهندسینمکانیک،کامپیوتر،برق،روانشناسان،متخصصینعلومشناختی،زبانشناسان،فلاسفهو...).
رویای من اینه ...

26
A Multi disciplinary Area 
of Research
Fields of Major 
Impact:
-
 Collective 
Robots 
(
Robot
-
Robot Interaction)
-
 Social Robots
(Human
-
Robotics
Engineering
Computer Science
Applied Linguistics
-
زبان شناسی کاربردی
Social 
Robots
(
ربات های اجتماعی
)
Socially 
Interactive 
Robots
Robot 
Societies
Swarms
Anthropology
-
انسان شناسی
Ethnology
نژاد شناسی
-
Arts/Design
-
هنر
/
طراحی
Artificial Intelligence
-
هوش مصنوعی
Psychology
-
روان شناسی
Collective 
Robots
(
ربات های جمعی
)

Collective Robots
27
اولین ربات
انسان نمای 
ایرانی درشریف
-
(
1384
)

28

Applications of Social Robots
 Assistive Healthcare, Rehabilitation, Nursing care (co-therapist)
 Education (TA, co-teacher)
 Entertainment 
 Elderly Care
 Story telling
 Tour Guides 
 Office/Hotel Assistants
 Companion in the home
 Agriculture, Cleaning, Firefighting
 Space Robots 
 …
29

30
Robot Assisted Language Learning (RALL)

31
Social Robots for education of children with cancer

32
Arash-I Robot; A Mobile Social Robot for Educational and Therapeutic Intervention in 
Pediatric Cancer

33
RASA-I Robot; A Sign-Language Teaching Assistant Social Robot

34
RASA-II Robot; A Sign-Language Teaching Assistant Social Robot

35
Maya Robot; An Intelligent Robotic Toy

36
Taban-I Robot: A Retro-Projected Social Robotic-Head for 
Human-Robot Interaction

Interview
37
http://meghdari.sharif.edu/
Prof. Ali Meghdari, Sharif University of Technology

Interview
38
https://drive.google.com/file/d/1ov6Y0hseTFkT0QOb7DN7pqfNsUEGdh6O/view?usp=sharing

Robot Design
3939
Physical appearance of robots

40

Chapter 2: Design and interaction of 
social robots 
2022
1
Alireza
 Taheri, 
School 
, Tehran, 
Iran

Outlines
2
 Chapter 2: Design and interaction of social robots
 How a robot works
 Common Approach in Social Robotics
 Physical appearance of robots
 Human-Robot Interaction
 Requirements for socio-cognitive robots
 Design a robot and HRI

3
•رباتهایاجتماعيوشناختي،رباتهاييهستندکهبرایتعاملباانسانهاويابايكديگرطراحي
ميشوندودرتعاملاتانساني،تقريباًمشابهانسانهاعملميکنند.
•هدفازطراحيوساخترباتهایاجتماعيوشناختيوتعاملآنهاباانسان،ايجادهمافزاييدر
سیستمهایترکیبيانسان-رباتاست.
•قرارنیستتااينرباتهاجايگزينانسانهاشوند؛بلكهآنهاباتواناييهایخود،قدرتاجتماعيو
شناختيانسانهاراافزايشميدهند.
•اينرباتهادارایحافظهازمشاهداتوتجربیاتخوددرزمانهایمختلفبوده،صريحاًبايكديگر
تعاملداشتهوازهمميآموزند.
•اينحوزهتحقیقاتي(بهشدت)بینرشتهایبودهوتخصصهایمختلفدرآندرگیرميباشند
(مهندسینمکانیک،کامپیوتر،برق،روانشناسان،متخصصینعلومشناختی،زبانشناسان،فلاسههو...).
Previously …

How a Robot Works
 For students who have limited technical background about intelligent
interactive robotics, it is good to start with
 the basic hardware and software components that a robot consists of;
 the techniques we can apply to make a robot ready for interacting with
people.
4
Let’s start …

How a Robot Works (cont.)
 Robots’ main elements
 Sensors (RGB-D Camera, Microphone, Tactile Sensors, IMU,
Position and/or Proximity Sensors, LIDAR, etc.)
 Processors and Internal Computers
 Actuators (Motors, Speakers, LEDs, Pneumatic actuators, etc.)
5
a
 Robot
 is
 an
 E
ntity
 that
 can
 S
ense,
 T
hink,
 and
 A
ct
.

6
a
 Robot
 is
 an
 E
ntity
 that
 can
 S
ense,
 T
hink,
 and
 A
ct
.

7
a
 Robot
 is
 an
 E
ntity
 that
 can
 S
ense,
 T
hink,
 and
 A
ct
.

How a Robot Works; Some basic questions
 Typical problems that robot engineers have to solve for the robot include the following
 What kind of body does the robot have? Does it have wheels? Does it have arms?
 How will the robot know its location in space?
 How does the robot control and position its body part; for example, arms, legs, wheels?
 What does the space around the robot look like? Are there obstacles, cliffs, doors? What does 
the robot need to be able to perceive about this environment to move safely?
 What are the robot’s goals? How does it know when it has achieved them?
 Are there people around? If so, where are they, and who are they?
 How will the robot know?
 Is a person looking at the robot? Is someone talking to it? If so, what does the robot understand 
from these cues?
 What is the human trying to do? What does the person want the robot to do? How can we 
make sure the robot understands this?
 What should the robot do, and how should the robot react?
8
چند سال پیش، خبری روی خبرگزاری ها پدیدار شد مبنی بر این که ژاپنی ها یکرباترا در مهدکودکثبت نام کرده اند!! به نظر شما یک ربات 
اجتماعی و شناختی تمام عیار، چه ویژگی هایی باید داشته باشد؟

Common Approach in Social Robotics
9
خريد،
و يا 
طراحي و ساخت 
ربات های اجتماعي-
شناختي 
نظر
پیاده سازی 
الگوريتم های کنترلي و 
هوش مصنوعي 
ها 
شده
انجام مطالعات میداني و 
مداخلات بالیني 
در حوزه 
بررسي مقبولیت، 
آموزش، 
توانبخشيو ...
شناسايي يک نیاز در جامعه (عمدتا برای کودکان)
رویکرد متداولدر حوزه رباتیک اجتماعی

10
خريد،
و يا 
شناختي 
نظر
پیاده سازی 
هوش مصنوعي 
ها 
شده
در حوزه 
آموزش، 
 Evaluation of interventions (will be studied later)

 A person interacting with a robot is struck
first by the robot’s physical appearance.
 There is little consistency in physical
appearance of social robots;
 has ranged across many levels of
anthropomorphism, including humanoid,
animal-like, cartoon-like, and machinelike
(nonbiomimetic) systems.
 stylized features to a realistic and/or complex
appearance.
 Various Degrees of Freedom (DoF)
11

Arash-I: A social robot buddy to support children with cancer in a hospital 
environment
1212

1313

A survey on social Robots’ DoF
14
انواعسروچهرههایرباتهایاجتماعیوشناختی:
سربااجزاءمكانیكي(مكاترونیكي)
استفادهازصفحهنمايشتخت(تبلتي)
پوستصورتباقابلیتارتجاعي(اندرويد)
شبیهسازیظاهریبرخيازعناصرسادهچهره
استفادهازپروژکتورجهتمتحرکسازیونمايش
حالاتچهرهبررویيکسطحنازکونیمهشفاف

15
A survey on social Robots’ DoFسر با اجزاء مکانیکي

16
A survey on social Robots’ DoFصفحه نمایش تخت به عنوان صورت

17
A survey on social Robots’ DoFپوست صورت با قابلیت ارتجاعي

18
A survey on social Robots’ DoFسر با اجزای ساده غیر متحرک

19
A survey on social Robots’ DoFسر با پروژکتور

20
A survey on social Robots’ DoFجمع بندی طراحي سر ربات های اجتماعي

21
Design Consideration
 Uncanny Valley
When a humanoid robot’s appearance
is too close to a human, it causes fear
and discomfort in the audience

 During a visit to Carnegie Mellon University’s Robotics Laboratory,
Don Hall was inspired to create Baymax (The robot in Big Hero 6
(2014)). After making the film, Dr. Christopher G. Atkeson, a
professor at that robotics lab, decided to make a real Baymax
robot and defined a new field of projects called inflatable robotics.
"It (Big Hero 6 (2014)) is a tremendous win for soft robotics," says Dr.
Atkeson
22
Ref: Saffari, E., Hosseini, S. R., Taheri, A., & Meghdari, A. (2021). “Does cinema form the future of
robotics?”: a survey on fictional robots in sci-fi movies. SN Applied Sciences, 3(6), 1-13.
Fiction vs. Reality; a story

 A robot’s behavior is critical to how it is perceived and how effective it
might be.
 Human-robot interactions can be described both by the behaviors being
elicited from the user and by the robot’s role during the engagement.
 HRI
 Targeted Behavior
 Roles of the Robot
 Robot Autonomy
23

نشانههایغیرکلامیسیگنالهاییهستندکهبرایرساندنپیغامیمعناداربهکارمیروندوحدوداًدوسومتعاملاتانسانیرابهخوداختصاصمیدهند.
انسانهامعمولاًازحالاتچهره،اشاراتبدنودست،موقعیتسروجهتنگاهبرایجلبتوجه،بیاناحساسوانتقالپیاماستهادهمیکنند.
نشانههایکلامیشاملآواها،لحنوصحبتمیشودکهبهطورمستقیمتوجهافرادراتحتتاثیرقرارمیدهد.
 Non-Verbal and Verbal Communication
 Facial expressions
 Proxemics
 Gaze Control System
 Turn-taking interactions
 Imitation
 Socially aware navigation
 SLAM
 Action Recognition and Pose Estimation
 Speech Recognition
 …
24
Some Research Topics in Socio-Cognitive Robotics

 Safe, reliable, and transparent operation
 High-level instruction and context-aware task execution
 Knowledge Acquisition and Generalization
 Adaptive Planning 
 Personalized Interaction 
 Self-Assessment
 Learning from Demonstration
 Evaluating the Safety of Actions 
 Communicating Intentions and Collaborative Action
 Development and Self-Optimization
 Knowledge Transfer
25
Requirements for socio-cognitive robots (combining machine learning algorithms, 
control theory, cognition theories, etc.)
Ref: David Vernon, Cognitive Robotics Course

26
Applications of Machine Learning in social human-robot interaction: 
Human–Robot Facial Expression Reciprocal Interaction Platform
• Acceptance rate of ∼78% for children with ASD
• Developing an automated assessment system for assessing facial imitation
tasks

27
Simultaneous Localization and Mapping (SLAM)

28
Evolution of the GAN-based Talking Gesture Generation
Ref: Rodriguez, I., Martínez-Otzeta, J. M., Irigoien, I., & Lazkano, E. (2019). Spontaneous talking gestures 
using generative adversarial networks. Robotics and Autonomous Systems, 114, 57-65.

2929
Cognitive Rehabilitation: Teaching Music to Children with Autism

3030
RASA-I Robot: Teaching Iranian Sign Language to Children with Hearing Problems
30

31
RoMa Robot; an Interactive Social Robot for fashion industry

Design a robot and HRI
32
خريد،
و يا 
شناختي 
نظر
پیاده سازی 
هوش مصنوعي 
ها 
شده
در حوزه 
آموزش، 
Taban-II Robot

33
خريد،
و يا 
شناختي 
نظر
پیاده سازی 
هوش مصنوعي 
ها 
شده
در حوزه 
آموزش، 
Apo Robot

Evaluation of interventions
3434
Social Robots and Entertainment
Evaluation of interventions will be studied in the last chapter

Basics of Perceptron in Neural Networks
35
= 1 = b (bias)
= b 
•نرونها،صرفایکتابعهستند!
•جمعوزندارورودیهاراگرفتهوبااعمالیکتابع(فعالسازی)،یکخروجيتولیدميکنند.

36

E:\courses\LangChain Project\main root\data\SCR_Chapter03_ContinualLearning.pdf

Chapter 3+: Continual Learning
2024
1
Alireza
 
Taheri, 
Center of Excellence in Design, Robotics, and Automation
School of Mechanical Engineering,
, Tehran, Iran

Outlines
2
 Chapter 1: Continual Learning 
 Problem Statement 
 Problem Variations
 Task Incremental
 Class Incremental
 Domain Incremental
 Task Agnostic
 Metrics
 Methods
 Replay methods
 Regularization-based methods
 Parameter Isolation methods
 Edge of Knowledge
 Conclusion

Problem Statements
3
 What is Continual Learning?

Problem Statements (cont.)
4

Problem Variations
5
Task order
Discrete/Continuous
Task ID Task Incremental
Class Incremental
Domain Incremental

Problem Variations (cont.)
6
Task Incremental

7

8

9
Task Agnostic

10
Comparison

11

Metrics
12
Accuracy
Forward transfer
Backward transfer
Stability / Plasticity 
Previous tasks cause better 
performance on future tasks
Future tasks cause better 
performance on Previous tasks

Metrics (cont.)
13
 How to calculate metrics?
Let’s see some example

14

Methods
15

Methods (cont.)
16
Rehearsal
Replay methods: Rehearsal

17
Pseudo-Rehearsal
Replay methods: Pseudo Rehearsal

18
Constrained
Replay methods: Constrained

19
Regularization-based methods: Data Focused
Data focused

20
Regularization-based methods: Prior Focused
Prior focused

21
Parameter Isolation methods: Dynamic Architecture
Dynamic Architecture

22
Parameter Isolation methods: Fixed Network
Fixed Network

Edge of Knowledge
23
Continual Learning
 Meta Learning
Remember these
Let’s combine them

Edge of Knowledge (cont.)
24
Meta Continual 
learning
Meta Continual Learning

25
Continual Meta 
learning
Continual Meta Learning

Conclusion
26
• Constant memory
• No task boundary info
• Online Learning
• Forward transfer
• Backward transfer
• Problem agnostic
• Adaptively learning from partial data
• No test time oracle
• Task revisiting to strengthen prior knowledge
• Graceful forgetting to balance stability and plasticity
 Where to use Continual Learning?

27

Chapter 3: Machine Learning (Towards Deep Learning)
Neural Networks and Multi Layer Perceptron 
2022
1
Alireza
 Taheri, 
School 
, Tehran, 
Iran

2
 Chapter 3: Machine Learning (Towards Deep Learning) --
 Machine Learning
 Neural Network
 Single and Multi Layer Perceptron
 Training MLPs: Back-propagation

With Special Thanks to
 Mahdieh Soleymani
 Alexander Amini
 Hadi Veisi
 Fei-Fei Li
 Andrew Ng
 Grant Sanderson
3

4

 Machine Learning: Using the observed data to make better decisions
 Generalizing from the observed data
5

Machine Learning (ML)
 The essence of machine learning:
 A pattern exist
 We do not know it mathematically
 We have data on it
 Basic premise of learning: “Using a set of observations to uncover 
an underlying process”
 We don’t intend to memorize data but want to distinguish the pattern.
6
استفادهاز مجموعه ای از مشاهدات برای کشف/شناسایی یک فرآیند

 Supervised learning (one of the paradigms of ML)
 predicting a target variable for which we get to see examples.
 Given: Training set
 labeled set of N input-output pairs: D = { 𝒙(1),𝑦(1) ,(𝒙(2),𝑦(2)), …, (𝒙(𝑖),𝑦(𝑖)), …, (𝒙(𝑁),𝑦(𝑁))}
 Goal: learning a mapping from x (a vector with d components) to y
 optimization of a cost function
 Data in Supervised Learning
 Data are usually considered as vectors in a d-dimensional space
Columns: Features/attributes/dimensions
Rows: Data/points/instances/examples/samples
Y Column: Target/outcome/response/labelخروجی، برچسب
داده، نمونه
ویژگی (درایه های بردارx)
7
یادگیری با نظارت(بخوانید با معلم!)
خواهیم دید که با یک مسئله بهینه سازی (عموماً بسیار پیچیده) 
مواجهیم  که در اکثر مواقع، حل تحلیلی هم ندارند!

Basic Concepts: Variables
 Supervised Learning: Regression and Classification
 Regression: predict a continuous target variable (e.g., 𝑦 ∈ 0,1 ,
𝑦 ∈ −5,+5 ,𝑒𝑡𝑐.);
 The goal is to make (real valued) predictions given features
 Classification: predict a discrete (unordered) target variable 
(e.g., 𝑦 ∈ 0,1 or𝑦 ∈ −1,1
𝑦 ∈ {1,2,… ,𝐶})
8
طبقه بندی دو کلاسه
طبقه بندی چند کلاسه
در به کارگیری الگوریتم های یادگیری ماشین (نظیر شبکه های عصبی)، 
بخواین یا نخواین، باید بتونین: 
(ورودی هاتون رو به بردارهای عددی تبدیل کنین 1
(خروجی2(های) عددی الگوریتم رو برای خودتون تفسیر کنین!!  
به عبارتی عدد می دین، عدد تحویل می گیرین!تفسیر با شماست.

در به کارگیری الگوریتم هاییادگیری ماشین (نظیر شبکه های عصبی)، 
به عبارتی عدد می دین، عدد تحویل می گیرین!تفسیر با شماست.  
9
𝑐1 =
1
0
0
0
𝑐2 =
0
1
0
0
𝑐3 =
0
0
1
0
𝑐4 =
0
0
0
1
cow donkey sheep other
One-hot representation

Basic Concepts: Features
10

Basic Concepts: Features (cont.)
11

12

13

Classification Examples
14
(Binary) Image Classification; 
Cat or Dog , Cat or non-Cat
اونچه که دوستاتون در مورد درس ما فکر می کنن!!!

15
(Multi-Class) Image Classificationاونچه که دوستاتون در مورد درس ما فکر می کنن!!!

16
Handwritten Digit Recognition Example اونچه که خونواده تون در مورد درس ما حس می کنن!!!
سیستم بازشناسی پلاک خودرو (LPR)

17
اونچه که واقعا انجام می دین!!!

Regression Examples
18

Components of (Supervised) Learning 
 We have some example pairs of (input, output) called training samples
 D = { 𝒙(1),𝑦(1) ,(𝒙(2),𝑦(2)), …, (𝒙(𝑖),𝑦(𝑖)), …, (𝒙(𝑁),𝑦(𝑁))}
 We want to select a function from the input space to the output space
 𝑓: 𝑋 → 𝑌
 We choose a set of hypotheses (candidate formulas)
 e.g., linear or specific non-linear functions
 We use a learning algorithm to select a function from hypothesis set
that approximates the target function
 Evaluation: we measure how well the predicted function generalizes to
unseen examples (generalization)
 Generalization: ability of a learning algorithm to perform
accurately on new, unseen examples after having experienced.
19

 Conventional machine learning methods try to learn the mapping
from the input features to the output by samples
 However, they need appropriately designed hand-designed features
 However, Neural Networks (i.e. MLPs, Deep Networks) learns to extract
features
 Thus, we don’t need expert knowledge or time consuming tuning of
hand-crafted features
20
Example of conventional machine learning methods
𝑥1:𝑖𝑛𝑒𝑛𝑠𝑖𝑡𝑖𝑦, 𝑥2:𝑠𝑦𝑚𝑚𝑒𝑡𝑟𝑦

Neural Network
 Neural networks are composed of networks of computational
models of neurons called perceptron.
 Neural networks use basic units to provide a non-linear function
 Learn a non-linear function f: X →Y:
 X input or feature space: (vector of) continuous and/or discrete features
 Y output space: (vector of) continuous and/or discrete variables
21
•توجه:تابعذکرشدهمیتواندچندورودیوچندخروجیباشد!
•توابعقابلانتظارازآموزشیکشبکهعصبی،میتوانندتوابعجبریساده،توابعغیرخطیفوقپیچیدهوحتیحاصل
معادلاتدیفرانسیل(ODEیاPDE)باشند!!
•هرگزتوابعغیرخطیرادستکمنگیرید!!!

Real vs. Artificial Neural Network
22
مغز،شبکه ایبسیار بسیار بزرگاز سلولهای عصبی(نرونها)
دارای در حدود 100میلیاردنرونو 10000اتصال برای هر نرون
یک نرون طبیعی، یک عنصر بسیار پیچیده دارای سه جزء تشکیل دهنده اصلی:
دندریت ها: دریافت سیگنال از سایر نرون ها
بدنۀ سلول: پردازش ورودی ها و وقوع اتفاقات!  
آکسون: ارسال سیگنال به نرون های دیگر

Real vs. Artificial Neural Networks
23
شبکه عصبیمصنوعی،الگوبرداری(عمدتاً)
ظاهری
از شبکه عصبی طبیعی
نرون (Neuron) :عنصرپردازشگر تشکیل دهنده یک شبکه عصبی مصنوعی
دارای سه جزءاصلی:  
-ورودی های نرون 
-تابع فعال سازی 
-خروجی نرون

Artificial Neural Network
24
فرضیاتپایهشبکههایعصبیمصنوعی:
•پردازشاطلاعاتدراجزایسادهایباتعدادفراوان،بهنامنرونها(پرسپترونها)صورتمیگیرد.
•سیگنالهادربیننرونهایشبکهازطریقپیوندهایااتصالات(Connections)آنهامنتقلمی
شوند.
•هرپیوند،وزن(Weight)مربوطبهخودراداردکهدرشبکههایعصبیرایجدرسیگنالهایانتقال
یافتهازآنپیوندضربمیشود.
•هرنرون،یکتابعفعالسازی(Activation Function)رابررویورودیهایخوداعمال
میکندتاسیگنالخروجیخودراتولیدنماید.
•توابعفعالسازیدراکثرقریببهاتفاقمواقع،غیرخطیهستند.
•هدف/رسالت/زحمتاصلیما:
یافتنتمامیوزنهایشبکهبهشکلمناسب

25
= b 
•جمعوزندارورودیهاراگرفتهوبااعمالیکتابع(فعالسازی)،یکخروجیتولیدمیکنند.

26
McCulloch-Pitts neuron: binary threshold
• A threshold unit “fires” if the weighted sum of inputs exceeds a threshold
Equivalent to
ازجملهسادهترینوابتداییتریننرونهایعصبیمصنوعیتاریخ(باتابعفعالسازیپلهواحد):
احتمالا با الگوربرداری از فرآیند اسپایک در نرون 
های عصبی واقعی در مغز

Perceptron with a binary-threshold activation function
27
Top view
ො𝑦 ො𝑦
1
0
•نتیجهاخلاقی:تکنرونقادراستتابایکابرصفحهمسطحباابعادd-1بعدیدرفضایویژگیdبعدی،(بهعنوانمثالیکنقطهدر
یکبعد،یکخطدردوبعد،یکصفحهدرسهبعدو...)فضایتشکیلشدهازویژگیهارابهدوبخشتبدیلکند.
•قابلیتبهکارگیریدرمسائلطبقهبندیدوکلاسهباقابلیتجداییپذریخطی

AND & OR networks 
28
with a binary-threshold activation function
آیا می توانیم اپراتورهایANDو یاORرافقط با یک پرسپترون بسازیم؟
در مورد XORچه نظری دارید؟
یادآوری مجدد

29
𝑥1
𝑥2
(1,0)(0,0)
(0,1)
(1,1)
𝑥1
𝑥2
(0,1)
(1,1)
شبکه های بالا برای بیش از دو ورودی چه تغییری می کنند؟

XOR network 
30
with a binary-threshold activation function; is it possible?
آیا می توانیم اپراتورهایANDو یاORرا فقط با یک پرسپترون بسازیم؟
•مثلاینکهپاسخخیره!
•اما...تشخیصسیستمهایباقابلیتجداییپذیریخطی،تمامقدرتشبکههایعصبینیست!!
•بهنظرمیآدکهدررسیدنبهخروجینبایدعجولبود!
•راهکار:بهرهگیریازلایه(های)مخفیمیانیبرایاستخراجویژگیهایسطحبالاتر
•یادمونباشهکهقدرتمانورمابابهکارگیریزنجیرهایازتوابعنظیرf(f(x))بسیاربیشترمیشه...خیلیبیشترازتصوراولیه

(Non-processing 
units)
Feed-forward neural networks
31
 We need multiple layers of adaptive, non-linear hidden units.
 also called Multi-Layer Perceptron (MLP)
 Each unit takes some inputs and produces one output.
 output of one unit can be the input of a next layer(s)’ unit.
 Weights on links can be adapted using training data and a learning
algorithm.
 Because all inputs are densely connected to all outputs, these layers all
called Dense layers.
شبکه های عصبییک لایه، قدرت بسیار محدودی دارند! خوب، برای ساخت توابع فوق پیچیده، چه باید کرد؟

Multi Layer Perceptron (MLP)
 MLPs are General Boolean functions
 Every Boolean function can be represented by a network with a single hidden layer
 With only one hidden layer, it might need an exponential number of hidden units
 MLPs are universal classifiers
 MLP could perform as a function that finds a complex “decision boundary” over a
space of reals
 MLPs are universal function approximators
 An MLP with two (or even one!) hidden layers can approximate anything (!)
to arbitrary precision
 But could be exponentially or even infinitely wide in its inputs size
 It is of greater theoretical interest than practical
 The construction of such a network requires the nonlinear activation functions and
weight values which are unknown
32
سوال:شبکههایعصبیچندلایهچقدرقدرتمندند؟
پاسخ:خیلیزیاد!!یهکمصبرکنینتاباهمببینیم!

XOR Example
33
input layer hidden layer output layer
𝑥1
𝑥2
(0,1)
(1,1)
ො𝑦

Composing complicated decision boundaries
 MLPs can be composed into “networks” to compute arbitrary
classification “boundaries”
 Build a network of units with a single output that fires if the input
is in the colored area
34

Complex decision boundaries
35
The network must fire if the input is in the colored area 

36
input layer
hidden layer
output layer

 Network to fire if the input is in the yellow area
 “OR” two polygons
 A third layer is required 
37
hidden layer 1
hidden layer 2

38

MLP as a continuous-valued regression
 A simple 3-unit MLP with a “summing” output unit can generate
a “square pulse” over an input
 Output is 1 only if the input lies between T1 and T2
 T1 and T2 can be arbitrarily specified
39
در برخی از منابع، مقدار بایاس نرون را 
درون دایره می نویسند

 An MLP with many units can model an arbitrary function over an input
 To arbitrary precision
 Simply make the individual pulses narrower
 A one-layer MLP can model an arbitrary function of a single input
40

Activation Functions
41
•تاالاندیدیمکهشبکههایعصبیچقدرمیتوننقدرتمندباشن.
•درضمنهمهمثالهایقبلیروفقطباتابعپلهپیشبردیم!!
•امادقتداشتهباشین،ادعایینکردیممبنیبراینکهشبکههاینشوندادهشدهدراسلایدهایقبلی،بهینهترین
حالتهایممکنبرایطبقهبندییارگرسیونموارددادهشدهبودن!
•اضافهکردنلایههایمخفیدوموسوم،عموماویژگیهایغیرخطیوقدرتمندتربیشتریدراختیارماقرارمیدنتا
اینکهبخواینتویلایهمخفیاول،نروناضافهکنین!!
•بایکلایهمخفیشماممکنهمجبورباشینبهشکلنماییتعدادنرونهاتونروبالاببرینتابهقدرتمشابهبادویا
سهلایهمخفیبرسین!
•چهمثالهاییازویژگیهایسطحپایینوبالابهذهنتونمیخوره؟
•سوالبعدیاینه؛آیابهرهگیریازتابعپله،بهترینراهمابرایطراحییکشبکهعصبیمصنوعیه؟

Common Activation Functions
42
Identity (or linear functions)

The Most Common Activation Functions
 Note: All the mentioned activation functions are non-linear!
43

44
Identity (or linear functions) 
 Let’s say goodbye to perceptron with step function!
پیشنهاداتیدرموردتوابعفعالسازی:
-تابعهمانی:(علاوهبرلایهورودی)،درلایهآخرمسائلرگرسیونمیتواندکاراباشد.
-تابعسیگموید(𝝈):قدیمیترینومتداولترینتابعفعالسازیبهکارگرفتهشدهدرحوزهشبکههایعصبیمصنوعیاست.
-خروجیآنبینصفرتایکاستونسخهمودبانهتر(!)ومشتقپذیر(بامشتقبسیارراهدست)تابعپلهواحداست.
-مقدارآننمادیازاحتمالرخدادیکپدیدهیافعالشدننروناست.
-اگرچهمیتواندبهصورتسنتیدرتمامینرونهایشبکهبهکارگرفتهشود،امااستفادهازآندرلایهآخرشبکههایعصبیدر
مسائلطبقهبندی(بهخصوصطبقهبندیدوکلاسه)بسیارمناسباست.
-تانژانتهذلولوی(tanh):تقریبادرعمدهمواردازسیگمویدبهترعملمیکند.
-یکیازمهمترینمزیتهایآن،تقارنمقدارخروجیآنحولصفر(دربازهمنفییکتایک)است.
-درآیندهخواهیمدیدکهدربلوکهایLSTMبسیارپراستفادهاست.
-واحدخطییکسوساز(ReLu):یکیازعواملاصلیوقوعتحولدرحوزهیادگیریعمیقاست!
-برخلافسیگمویدوتانژانتهذلولوی،خروجیاشازیکسومرزندارد!
-یکقانونسردستی:هرجاایدهاینداریدکهازچهتابعیاستفادهکنید،ReLuبگذارید!!
-درشبکههایبازگشتیزیادکارانیستند.
برخورد بسیار سخت گیرانه با داده های حول صفر
دارای مشتق صفر در همه جا (به جز صفر که مشتق هم ندارد!) 
جهت اطلاع، در آینده ای نزدیک خواهیم دید که در توابع فعال سازی، علاوه بر خود تابع، مشتقآن هم(در فرآیند یادگیری شبکه) بسیار بسیار اهمیت دارد

Single layer network; Multi output perceptron
45
𝒁 = 𝑾𝑻𝒙+𝒃, 𝑨 = 𝒇(𝒁)
ما مدام در حال محاسبه ضرب داخلی دو بردارورودی نرونو وزن ها
هستیم. به نظر شما تفسیر شهودی این اتفاق در محاسبه zچیست؟
نمایش برداری برای کل لایه

46
𝒁 = 𝑾𝑻𝒙+𝒃, 𝑨 = 𝒇(𝒁)نمایش برداری برای کل لایه
ما مدام در حال محاسبه ضرب داخلی دو بردار ورودی نرونو وزن ها
1-تنظیم/تعدیلمیزانمشارکتوتاثیرحضورهریکازدرایههایبردارورودی(درصورتلزوم،یکیکم
رنگترودیگریپررنگترمیگردد)
2-معیاریازمیزانشباهتدوبردار!(شابلوناندازی!!)؛(بهخصوصاینکه)اگردوبرداردارایمیانگین
صفرواندازههایواحدباشند،هرچهحاصلضربداخلیبیشتر،میزانمشابهتدوبرداربیشتراست!...
درشبکههایعصبیپیچشیاینمفهومدرتفسیرنتایجما،اهمیتبیشتریپیداخواهدکرد!
در حاشیه ...

Single layer network; Multi-Class Example 
Limitation of single layer network
 Single layer networks is equivalent to template
matching
 Weights for each class as a template for that class.
 The ways in which a digit can be written are much too
complicated to be captured by simple template
 Thus, networks without hidden units are very limited in
the mappings that they can learn
47

Softmax Layer
48
•در مسائل طبقه بندیچند کلاسه، در لایه آخر شبکه، عموماْاز لایه سافت مکس استفاده می شود.
•خروجی های این لایه، نمادی از احتمال وقوع هر کلاسبوده و مجموعآن ها، دقیقاً 1می باشد. 
zها: جمع وزن دار ورودی 
های نرون های لایه آخر
خروجی لایه سافت مکس پساز 
انجام محاسبه بر روی zها

49
•درشبکههاییکلایه(بدونلایهمخفی):
•همانطورکهدرمسائلطبقهبندیدوکلاسه،تکپرسپترونبایکابرصفحهمسطح(به
عنوانمثالخطدردوبعد)،کلاسهاراازهمدیگرجدامیکند،
•درمسائلطبقهبندیچندکلاسه،لایهسافتمکس،بامجموعهایازابرصفحههایمسطح
(بهعنوانمثالمجموعهایازخطوطدردوبعد)،طبقهبندیراانجاممیدهد(شایدبتوان
آنرانسخهتعمیمیافتهطبقهبندیدوکلاسهدانست!).
توجه:درشبکههایبالایههایمخفی،اینمرزهادیگرلزومامسطح(خطی)باقینمیمانند!
Single layer 
network
Multi-Class
network
Two-Classes
Binary Perceptron
Sigmoid vs. Softmax

Neural Networks’ Performance: an Intuition
 Great Graphical representation of a neural network; Take a look and Enjoy! 
https://playground.tensorflow.org
50
قبل از انجام هر گونه کار محاسباتی، اجازه بدین تخمینی از عملکرد شبکه های عصبی به صورت گرافیکی داشته باشیم!

Two-Layer Networks
51
ො𝑦
11,
,
نرون معادل بایاس در این لایهActivation functions of all neurons: step function

52
ො𝑦
11
نرون معادل بایاس در این لایه
A Two-Layer (Simple) Network with binary-threshold activation functions
Intuition
Activation functions of all neurons: step function

53
Binary-threshold Sigmoid Sign
tanh ReLu Softplus
ො𝑦
11
Different hidden layer’s activation function

54
ො𝑦
11

MLP with one hidden layer
55
Layer 0 Layer 1 Layer L=2 
The last layer
𝑾 𝟏 :𝑤𝑖𝑗
1 𝑾 𝟐 :𝑤𝑖𝑗
2
𝒃 𝟏 :𝑏𝑗
1 𝒃 𝟐 :𝑏𝑗
2
نگاهی به شبکه های(فقط) با یک لایه مخفی

56

57

MLP with multi hidden layers
58
…
Layer 0 Layer 1 Layer L-1 Layer L 
𝑾 𝟏 :𝑤𝑖𝑗
1
𝑾 𝑳 :𝑤𝑖𝑗
𝐿𝑾 𝟐 :𝑤𝑖𝑗
2
𝒃 𝟏 :𝑏𝑗
1 𝒃 𝟐 :𝑏𝑗
2
𝒃 𝑳 :𝑏𝑗
𝐿
شبکه های عصبی کلی
(نسخه وانیلی ساده!!)

59
𝐹𝑜𝑟𝑙 = 1𝑡𝑜𝐿
𝐹𝑜𝑟𝑖 = 1𝑡𝑜𝑛 𝑙
𝑧𝑖
𝑙 = σ𝑗=1
𝑛 𝑙−1
𝑤𝑗𝑖
𝑙 ×𝑎𝑗
𝑙−1 +𝑏𝑖
𝑙
𝑎𝑖
𝑙 = 𝑓(𝑧𝑖
𝑙 )
نمایش اسکالر(شهود بهتر از محاسبات شبکه)
انتشار به جلو (نسخه اسکالر)
Forward Propagation; Scalar form

60
𝐹𝑜𝑟𝑙 = 1𝑡𝑜𝐿
𝑧𝑖
𝑙 = σ𝑗=1
𝑛 𝑙−1
𝑤𝑗𝑖
𝑙 ×𝑎𝑗
𝑙−1 +𝑏𝑖
𝑙
𝑎𝑖
𝑙 = 𝑓(𝑧𝑖
𝑙 )
𝑊 𝑙 =
𝑤11 𝑤12 … 𝑤1,𝑛 𝑙
𝑤21 𝑤22 … 𝑤2,𝑛 𝑙
⋮
𝑤𝑛 𝑙−1 ,1
⋮
𝑤𝑛 𝑙−1 ,2
⋱ ⋮
… 𝑤𝑛 𝑙−1 ,𝑛 𝑙

61
𝐹𝑜𝑟𝑙 = 1𝑡𝑜𝐿
𝒁 𝒍 = (𝑾 𝒍 )𝑇 𝑨 𝒍−𝟏 +𝒃 𝒍
𝑨 𝒍 = 𝑓(𝒁 𝒍 )
Forward Propagation; Vectorization
نمایش برداری(بهینه تر از منظر محاسباتی)
انتشار به جلو (نسخه برداری)

62
𝐹𝑜𝑟𝑙 = 1𝑡𝑜𝐿
𝑨 𝒍 = 𝑓(𝒁 𝒍 )
𝑾 𝒍 =
⋮
𝑤𝑛 𝑙−1 ,1
⋮
𝑤𝑛 𝑙−1 ,2
⋱ ⋮
… 𝑤𝑛 𝑙−1 ,𝑛 𝑙
𝒃 𝒍 =
𝑏1
𝑙
𝑏2
𝑙
⋮
𝑏𝑛 𝑙
𝑙

MLP
63

Applying Neural Networks
 Example Problem: 
Will I pass this class? 
 Let’s start with a two simple feature model
 𝑥1:𝑁𝑢𝑚𝑏𝑒𝑟𝑜𝑓 𝑙𝑒𝑐𝑡𝑢𝑟𝑒𝑠𝑦𝑜𝑢𝑎𝑡𝑡𝑒𝑛𝑑,   𝑥2:𝐻𝑜𝑢𝑟𝑠𝑠𝑝𝑒𝑛𝑡𝑜𝑛𝑡ℎ𝑒𝑓𝑖𝑛𝑎𝑙𝑝𝑟𝑜𝑗𝑒𝑐𝑡
64

Will I pass this class?
65
-0.69
0.31
-0.10
0.20
0.38
-0.83
0.83
-0.70
0.65
-0.47
0.50
-0.54
0.08
Suppose that all of the activation functions in this example are Sigmoid function
ො𝑦 ≥ 0.5: 𝑃𝑎𝑠𝑠
ො𝑦 < 0.5: 𝐹𝑎𝑖𝑙

𝑎1 = 0.11
𝑎2 = 0.97
𝑎3 = 0.01
66
-0.69
0.31
-0.10
0.20
0.38
-0.83
0.83
-0.70
0.65
-0.47
0.50
-0.54
0.08
Predicted: 0.38

67
چرا همچی شد؟!!
-0.69
0.31
-0.10
0.20
0.38
-0.83
0.83
-0.70
0.65
-0.47
0.50
-0.54
0.08

68
Neural Networks’ Performance: better Intuition
https://www.3blue1brown.com/lessons/neural-networks
https://youtu.be/aircAruvnKk

Apo and  Handwritten Digit Recognition!
69

70
How can we help the Apo Robot?

Adjust Weights for MLP
 How can we train such multi-layer networks?
 We need to adapt all the weights, not just the last layer.
 adapting the weights entering hidden units is equivalent to learning
features.
 seems difficult to learn them since the target output of hidden units is
not specified (we only access the target output of the whole network)
 What we learn : The parameters of the network (i.e. the weights
and biases)
 Learning the network: Determining the values of these
parameters such that the network computes the desired function
71

Empirical Loss
 Loss = ℒ(ො𝑦(𝑖)
𝑝𝑟𝑒𝑑𝑖𝑐𝑡𝑒𝑑, 𝑦𝑎𝑐𝑡𝑢𝑎𝑙
(𝑖) )
 cost function of a single training example (i.e. the i-th training example)
 ො𝑦(𝑖)
𝑝𝑟𝑒𝑑𝑖𝑐𝑡𝑒𝑑 = 𝐹(𝑾, 𝒙(𝑖))
 (Total) Cost Function = 𝐉 𝐖 =
1
Nσ𝑖=1
𝑁 𝐿𝑜𝑠𝑠
 Measures the total (or average) loss over our entire dataset
 Also known as: Objective Function or Empirical Risk
 We want to find the network weights that achieve the lowest loss
72
𝑦𝑎𝑐𝑡𝑢𝑎𝑙ො𝑦𝑝𝑟𝑒𝑑𝑖𝑐𝑡𝑒𝑑
پیش به سوی تنظیم وزن ها؛آشنایی با عملکرد تابع هزینه
خسارت، ضرر و زیان (ناشی از تفاوت تخمین ما و مقدار واقعی در مشاهده iام)
تابع هزینه: مجموع تمام خسارت ها!

73
 Choosing cost function
 Regression problem
 Mean Squared Error (MSE)
 Classification problem
 Cross-entropy
 Binary Class Entropy (for Binary Classifications) 
 Categorical Cross-Entropy (for Multi-Class Classifications)
 SVM
 …
•مقدارlossدرهر مشاهده، یک مقدار اسکالراست؛ بنابراین تابع هزینه نیز یک تابع اسکالر(البته چند ورودی) است.
توابع هزینه متداول در مسائل یادگیری ماشین

74
ො𝑦(𝑖)
𝒙(1) 𝑦(1)
Regression

75
ො𝑦(𝑖) ො𝑦(𝑖)
y= 0 or 1 y= 0 or 1
𝒙(1) 𝑦(1)
Binary Classification
-

76
• For Multi-Class classification:
Multi-Class Classification
𝐶𝑜𝑠𝑡𝐹𝑢𝑛𝑐𝑡𝑖𝑜𝑛 = 𝑱(𝑾) = 1
𝑁෍
𝑖=1
𝑁
(෍
𝑘=1
𝐾
−𝑦𝑘
𝑖 ×log ො𝑦𝑘
𝑖 )
𝑁෍
𝑖=1
𝑁
(෍
𝑘=1
𝐾
𝑦𝑘
𝑖 − ො𝑦𝑘
𝑖 2
)
or

 𝐶 𝑜𝑟𝐽 = 𝐽 𝑎𝑙𝑙𝑜𝑓𝑡ℎ𝑒𝑝𝑟𝑒𝑑𝑖𝑐𝑡𝑒𝑑 𝑎𝑛𝑑 𝑎𝑐𝑡𝑢𝑎𝑙𝑣𝑎𝑙𝑢𝑒𝑠 = 𝐽 𝑾;𝑿,𝑌
 𝐶 = 𝐽 = 𝐽 [𝑤1,𝑤2,…,𝑏1,𝑏2,… 𝑇;{(𝒙 1 ,𝑦 1 ),(𝒙 2 ,𝑦 2 ),…,(𝒙 𝑁 ,𝑦 𝑁 )})
77
هدف: یافتن تمامی مجهولات (در اینجا المان های بردار وزن (W ))به گونه ای کهتابع هزینه (CیاJ)، کمینه شود.
مواجه شدن با یک مسئله بهینه سازی بسیار پیچیده
𝑾 =
𝑤1
𝑤2
⋮
𝑤𝑛
یک مسئله و رویه عمومی در بهینه سازی؛لزوما ارتباطی به شبکه های عصبی یا یادگیری ماشین تدارد!

78
•فرض کنید که مجموعهداده های آموزش ما معلوم(و بدون تغییر) است.  
•به عبارتی:  𝐶 = 𝐽 = 𝐽 [𝑤1,𝑤2,…,𝑏1,𝑏2,… 𝑇)
•اما اجازه دهید هر یک ازوزن ها(ی مجهول)، بتوانند هر مقداری (از منفی بینهایت تا مثبت بینهایت) داشته باشند؛
•شکل رویه تابع هزینه برحسب وزنها، چگونه خواهد بود؟! 
•ما باید تلاش کنیم مقادیر وزن ها را به گونه ای بیابیم تا مقدار تابع هزینه، کمینه ترین حالتخود شود!
یک مسئله و رویه عمومی در بهینه سازی؛ لزوما ارتباطی به شبکه های عصبی یا یادگیری ماشین تدارد!

79
•ما باید تلاش کنیم مقادیر وزن ها را به گونه ای بیابیم تا مقدارتابع هزینه، کمینه ترین حالتخود شود!
•روشگرادیان نزولی (Gradient Descent  :)
1 .مقداردهیتصادفی اولیه به همه وزن ها
2 .محاسبهمشتق(جزیی) تابع هزینه نسبت به تمامی متغیرها (در اینجا وزن ها) و تشکیل بردار 𝜵𝑪
3 .انجام یک حرکتکوچکدر جهت −𝜵𝑪(خلاف جهت بردار گرادیان) : به روزرسانی وزن ها
4 .تکرار مراحل2و3تا رسیدن به وزن های مطلوب(𝑾∗)
𝜵𝑪 =
𝜕𝐶
𝜕𝑤1
𝜕𝐶
𝜕𝑤2
⋮
𝜕𝐶
𝜕𝑤𝑛
𝑾 ← 𝑾 − 𝜂 𝜵𝑪
𝑾 =
𝑤1
𝑤2
⋮
𝑤𝑛
لطفا این رابطه را به خاطر بسپارید:
Learning rate 
نرخ آموزش

80
•یک نگاه مفهومی ساده به اندازه المان های بردار گرادیان تابع هزینه
•یک تغییر کوچک در هر یک از درایه های بردار W، چهتغییری در تابع هزینه به وجود می آورد؟
•هر یک از پارامترها چگونهتغییر کنند تا تابع هزینه مقدار کمتریرا به خود بگیرد؟

Gradient Descent 
81
Better Intuition
https://youtu.be/IHZwWFHWa-w

Gradient Descent
82

83

Training MLPs: Back-propagation (BP)
 Training algorithm that is used to adjust weights in multi-layer networks
 The backpropagation algorithm is based on gradient descent 
 The direction of the most rapid decrease in the cost function
 Use the chain rule to efficiently compute gradients
84
•چگونه مسیر عمومی ذکر شده در اسلایدهای قبل، برایتنظیم وزن های شبکه های عصبیچندلایه قابل استفاده است؟
•در نظر داشته باشید که خروجی(های) شبکه، تابعیت بسیار پیچیده ای از ورودی ها و وزن های شبکه دارند! 
•چگونه مشتق (پاره ای) تابع هزینهرا نسبت به تک تکوزن های شبکه به دست آوریم؟
روش انتشار به عقب
•آیا بهره گیری از روش گرادیان نزولی، انتخاب همیشگی و نهایی ماست؟ 
•شاید پاسخ بله نباشد (چرا؟!) !؛ اما اجازه دهید با این روش، مسیرمان را آغاز و جهت دهی کنیم ...

Basic rules of calculus
 𝑦 = 𝑓 𝑥
 For sufficiently small Δ𝑥 → Δ𝑦 ≈
𝑑𝑦
𝑑𝑥 Δ𝑥
 𝑦 = 𝑓 𝑥1,𝑥2,…,𝑥𝑛 :
 For sufficiently small Δ𝑥1,Δ𝑥2,…,Δ𝑥𝑛 → Δ𝑦 ≈
𝑑𝑦
𝑑𝑥1
Δ𝑥1 +
𝑑𝑦
𝑑𝑥2
Δ𝑥2 + …+
𝑑𝑦
𝑑𝑥𝑛
Δ𝑥𝑛
 𝑦 = 𝑓 𝑧(𝑥)
 Chain Rule: For sufficiently small Δ𝑥 → Δ𝑦 ≈
𝑑𝑦
𝑑𝑧
𝑑𝑧
𝑑𝑥 Δ𝑥
 𝑦 = 𝑓 𝑧1 𝑥 ,𝑧2 𝑥 ,…,𝑧𝑛 𝑥 :
𝑑𝑦
𝑑𝑧1
𝑑𝑧1
𝑑𝑥 Δ𝑥+
𝑑𝑦
𝑑𝑧2
𝑑𝑧2
𝑑𝑥 Δ𝑥 + …+
𝑑𝑦
𝑑𝑧𝑛
𝑑𝑧𝑛
𝑑𝑥 Δ𝑥
 𝑦 = 𝑓 𝑧1 𝑥1,𝑥2,…,𝑥𝑛 , 𝑧2 𝑥1,𝑥2,…,𝑥𝑛 ,… :
 What is the estimation of 𝜟𝒚for sufficiently small 𝜟𝒙𝟏,𝜟𝒙𝟐,…,𝜟𝒙𝒏?
85
Δ𝑧
اینو چی می گین؟!
مروری اجمالی بر قانون مشتق زنجیره ای

86
Training MLPs: Back-propagation
همونො𝑦(𝑖)خودمون: 𝑎 𝐿
شبکه فوق ساده ای بافقطیک نرون در لایه خروجی (L)،یک نرون در لایه ماقبل خروجی (L-1)،یک نرون در لایه قبل تر و ... را تصور کنید ...

87

88

89
توجه:محاسباتبیانشده،حاصلloss(فقطبراییکیازدادههایآموزش)میباشد!!برایمحاسبهمشتقپارهایتابعهزینهکلنسبتبههر
یکازوزنهاوبهروزرسانیمقادیرآنها،بایدرویهمه(!)دادههایآموزشاینمحاسباتراانجامدادومجموعآنهارامحاسبهنمود.
از روی این جمله، به صورت سیستماتیک می توانمشتق پاره 
ای تابع هزینه نسبت به وزن های آن لایه را یافت. چگونه؟

90
Last Layer (i.e. Layer L)
الگوی ضرب سه گانه: دلتاضرب در مشتقتابع فعال 
سازی در آن لایه در مقدار تابع فعال سازی لایه قبل

91
Other Layers (Layer l)

92

93
نمایش اسکالر محاسبه دلتا به ازای هر نرون در لایه های مختلف شبکه
نمایش برداری نحوه محاسبه دلتا (به صورت یکپارچه) در لایه های مختلف شبکه

94
https://youtu.be/tIeHLnjs5U8

 How to deal with this? 
 Design an adaptive learning rate that adapts to the landscape. 
 Learning rates can be made larger or smaller depending on:
 how large gradient is, how fast learning is happening, size of particular weights, etc.  
Neural Networks in practice
95
Optimization
 How can we set the learning
rate?
 Small Learning rate converges slowly
and gets stuck in false local minima.
 Large learning rates overshoot,
become unstable and diverge
 Stable Learning rates converge
smoothly and avoid local
minima/saddle points.
نتیجهاخلاقی:درفرآیندآموزششبکه،میتواننرخآموزشراتغییرداد...یادتونباشه،کسیبهشماکاریندارهچطوربهنقطهمینیمممطلقتابعهزینه
میرسین(یاخودتونرونزدیکمیکنین)!...مهماینهکهبرسین!!

 Batch size (How often to update the weights):
 Full batch (batch size = N)
 SGB (batch size = 1)
 Stochastic Gradient Descent (SGD) (e.g. batch size = 128)
 For small training sets (e.g., n<2000) use full-batch gradient descent
 Typical mini-batch sizes for larger training sets: 64, 128, 256, 512
 Epoch indicates the number of passes of the entire training dataset the machine learning
algorithm has completed.
96
Mini-Batches; baby training sets 
یک راه بینابین... خیر الامور اوسطها!
اگه شرایطش رو دارین، بهترینه 
تا حدودی مرخصه! مسیر رسیدن به مینیمم بسیار نویزی است. ممکنه هم همگرا نشه! تمام مزایای بردارسازی رو هم از دست می دین!
سایز دسته ها

97
Mini-Batches

 Mini-batches:
 more accurate estimation of gradients, smoother convergence, and
allows for larger learning rates
98

99
Gradient Descent Algorithms
Adam

100
روشAdam:تلفیق روش هایMomentumوRMSprop
•روشمومنتوم:بادرنظرگرفتنجملاتیمشابهسرعت،شتابودمپینگ،نوساناتدرراستاهاینامناسبراحینفرآیند
بهینهسازیمیرامیکند.
•روشRMSprop:سرعتپیشرویدرجهتهایمختلفرابستهبهزیادیاکمبودننوسانات،بااضافهکردنجملهای
درمخرج،کنترلمیکند.
•الگوریتمAdam،برایطیفوسیعیازمعماریهایشبکهعصبی،بسیارمناسبعملمیکند.
در حاشیه

 The problem of overfitting
101
Overfitting
حفظ کرده!! یاد نگرفته ... آدم یاد معلم های ابتدایی میفته!

 What is Regularization?
 Technique that constraints our optimization problem to discourage 
complex models. 
 Why do we need Regularization? 
 Improve generalization of our model on unseen data  
102
Regularization

103

104

105
Data augmentation
 Gathering more training data that are labeled can be expensive
 But, sometimes we can generate more training examples from the datasets
 Example: flipped, cropped, color jittered images

MNIST Misclassification 
106

CNN Common Architecture: an example
107

108

Convolutional Neural Networks (CNN)
2022
1
Alireza
 Taheri, 
School 
, Tehran, 
Iran

2
 Introduction
 Basic Elements of CNN
 Common Architectures of CNN
 LeNet
 AlexNet
 VGGNet
 GoogLeNet
 ResNet
 MobileNet
 Training CNNs

Happy Norooz!
3

 Andrew Ng
 Andrej Karpathy
 Lex Fridman
 Pavithra Solai
 Jefkine website
 Hoda Mohammadzade
4

5

Convolutional Neural Networks
 One of the most frequently used network formalism today
 Used everywhere (!)
 Not just for image classification
 Used in speech and audio processing (e.g. on spectrograms)
 texts, pose detection, etc.
6
و... سوت آغاز ورود ما به حوزه یادگیری عمیق!
شبکه های عصبی پیچشی

7
مشابه شبکه های عصبیرو به جلو
تغییر یافته برای ورودیتصویر (یا شبه تصویر!!)
ارتباطدو(یا چند) بعدیمقادیر پیکسل ها با هم
در نظر گرفتنارتباط/وابستگیمقادیر پیکسل های مجاور (از نظر مکانی) به صورت تکه ای (Using Spatial Structure)
الهامگرفتن از سیستم بینایی چشم پستانداران
قابلیتتعمیمو به کارگیری در ورودی های با ابعاد پایین تر (بردارهای یک بعدی) و یا بالاتر(نظیر آنالیز ویدئوها)
روشرایج برای استخراج ویژگی:
استخراجسلسه مراتبی اطلاعات
عمدتاًبه منظور طبقه بندیو یا آماده سازی ورودی برای شبکه های پیچیده تر

What Computers “See” …!
 Images are Numbers!!
 An image is just a matrix of numbers [0, 255]
 i.e. 128*128*1 for a gray scale image
 i.e. 1080*1080*3 for an RGB image
8
در حاشیه(بخوانید جاده خاکی) 1 :
Computer Vision
آنچه شما می بینیدآنچه کامپیوتر می بیند !
•تصاویر، سیگنال های صوتی یا نوشته ها از نوع داده های غیرساختاریافته هستند.  
•انسان ها (بر خلاف کامپیوترها)، در پردازش و تفسیر داده های غیرساختاریافته بسیار قوی هستند!

9

Manual Feature Extraction
10

Filters
 Applying Filters to Extract Features:
 1) Apply a set of weights – a filter – to extract local features
 2) Use multiple filters to extract different features
 3) Spatially share parameters of each filter 
 Features that matter in one part of the input should matter elsewhere 
11
در حاشیه(بخوانید جاده خاکی) 2 :
کلیدواژه: اعمال فیلترهای مناسب
ویژگی های سلسله مراتبی

شبکه های عصبی چندلایه(MLP)،شروع بسیار خوبی برای ورود ما به حوزه یادگیری ماشین بودند، 
اما ...
این شبکه ها، چهمشکلاتیدارن؟ یا بهتر بگیم، چالشهای بهره گیری از این نوع شبکه ها چیه؟!  
12
Fully Connected Networks: Challenges
در حاشیه(بخوانید جاده خاکی) 3:

شبکه های عصبی چندلایه(MLP )وانیلی ساده،شروع بسیار خوبی برای ورود ما به حوزه یادگیری ماشین بودند، اما ...
این شبکه ها، چهمشکلاتیدارن؟ یا بهتر بگیم، چالشهای بهره گیری از این نوع شبکه ها چیه؟! 
13
ازنظربنده،(ازجمله)مهمترینچالش(های)شبکههایعصبی(تقریباًازهرنوع)،عدمکنترلکاملمارویخروجینرونهایمیانیه!...
اگرچهشبکههایعصبیآموزشدیده،خروجیهاینهاییمناسبیروبهماگزارشمیکنن،امامسیررسیدنشونبهاونخروجیهاوقابلیتتفسیرپذیریاتفاقات
وخروجینرونهایلایههایمخفیازمهمترینابهاماتکاربراناونهاست!
بخشعمدهایناتفاق،احتمالابهتعریففرآیندبهینهسازیتابعهزینهبرمیگرده!مافقطبهشبکهمیگیم،خروجیجمعlossهاینهاییتبایدکمینهباشند!ولیدر
موردنرونهایلایهمخفیحرفخاصینزدیم.
آیاشبکههایMLPمسیراستخراجویژگیهاروبهصورتکاملاًسلسلهمراتبیدرپیشمیگیرن؟!
آیاشبکههایMLPبرایسریهایزمانییادادههاییکهحاویاطلاعاتمکانیهستندمناسباست؟
آیادرمسائلطبقهبندی،میتوننهمزمانبیشازیکشیرودرتصویرشناساییکنن؟محلاونهاروبهمابدن؟
آیامیتوننخودشونیهخروجیازطبقهموردنظرماتولیدکنن؟
...111

14
جدایازمطالبارائهشدهدرصفحهقبل،
اجازهبدینچالشخاصشبکههایMLP(کهدرخیلیازمواقع(درحوزههایپردازشتصویر،ویدئو،صوت،متنو...)ماروبه
سمتاستفادهازشبکههایمدرنترینظیرCNNو...پیشمیبره)رودرقالبسهمثالنشونبدیم...
در حاشیه (بخوانید جاده خاکی) 3 :چرا ما در این زیربخش، به معرفی شبکه های پیچشی می پردازیم؟

 Will an MLP that recognizes the left image as a flower also recognize
the one on the right as a flower?
15
Example 1

 In many problems the location of a pattern is not important
 Only the presence of the pattern
 Conventional MLPs are sensitive to the location of the pattern
 Moving it by one component results in an entirely different input that the 
MLP will not (necessarily) recognize
 Requirement: Network must be shift invariant
16
در مسائل طبقه بندی، هر دو تصویر می بایست در دسته گل قرار گیرند.
Example 1

 Does this signal contain the word “Welcome”?
 Compose an MLP for this problem.
 Assuming all recordings are exactly the same length.
17
Trivial solution: Train an MLP for the entire recording 
Example 2

 Problem with trivial solution: Network that finds a “welcome” in the top 
recording will not find it in the lower one
 Unless trained with both
 Will require a very large network and a large amount of training data to cover 
every case
 Need a simple network that will fire regardless of the location of “Welcome”, 
and not fire when there is none
18
Example 2

A Story of Workers!
 Suppose you have 10 workers and 20 boxes all over the city. You,
as a manager, can follow one of these 2 strategies:
 1) “Hey,… All of you, I don’t care how, but I want all of the 20 boxes
gathered in one hour!”
 2)”You Morteza, go to the north of city and gather … and …. Ali, go to
the south and gather … and …”
19
Example 3

20
Example 3

 Neurons in a single layer function perform completely
independently and do not share any connections even for inputs.
 To be shift-invariant, many samples (in various time or locations)
must be shown to them
 Regular Neural Networks do not scale well to full images
 parameters would add up quickly!
 full connectivity is wasteful and the huge number of parameters would
quickly lead to overfitting.
Main Challenges: 
No spatial Information!
Many, many parameters!!
21

Local connectivity vs. Fully connectivity
22
Vectorized Image
Vector of pixel values
Array of pixel values

Translation Invariability
 We want to get closer as possible to human/mammalian visual system.
 The most important feature of human visual systems is Translation
invariability:
 1) Shift Invariability
 2) Scale Invariability
 3) Rotation Invariability
 Furthermore, we need to be much more robust to noise
 4) Noise Cancellation
23
رویای من اینه:
برای تحقق موارد 2تا4چه ایده ای دارید؟

Basic Layers of CNNs
24
لایه های رایج در این شبکه(به ترتیب)
(یک لایه) ورودی(Input Layer)
یک تصویر/آرایه 3بعدی(دارای طول، عرض و عمق)
(چند لایه) پیچش(Convolution Layer)
هرنرون بلوکی از پیکسل های نزدیک به هم را می بیند
اعمالتابع فعال سازی غیر خطی (عموماً ReLu )جهت غیرخطی کردن رفتار شبکه بر روی لایه پیچش 
(یک یا چند لایه) نمونه برداری (Pooling)
کاهشاندازه فضای ویژگی ها
(یک یا چند لایه) تمام متصل (Fully Connected)
برایدسته بندی، مانند شبکه های عصبی

Convolutional (or Correlation) Filters
 The green pattern looks more like the weights pattern (black) than 
the red pattern
 The green pattern is more correlated with the weights
25

26

Convolutional Filters
27
Gives the responses of that filter at every spatial position
 Scanning an image with a “filter”
 Note: a filter is really just a perceptron, with weights and a bias
وزن های فیلتر
(هسته (Kernel))

The Convolution Operation
 We slide the 3*3 filter over the input image, element-wise multiply, and add the outputs
28
…

Producing Feature Maps
29
Original Sharpen Edge Detect Strong 
Edge 
Detect
0 −1 0
−1 5 −1
0 −1 0
0 1 0
1 −4 1
0 1 0
−1 −2 −1
0 0 0
1 2 1

Convolution 
30
ابعاد(طول و عرض) فیلتر ؛ انخابش در اختیار شماست
عمق فیلتر؛ مقدارش در اختیار شما نیست. باید 
دقیقاً با عمق عمق ورودی اش برابر باشد!
•هر لایه پیچش به کمک فیلترهایی، وظیفه استخراج ویژگی ها را بر عهده دارد
•هر فیلتر برای یادگیری یک ویژگی است
•سایز طولی و عرضی فیلترها عموماًفرد در فرد می باشد. بسیار متدوالاست که فیلترهامربعیانتخاب شوند.

Convolution
31
 Activation map (output volume of convolution layer):
 An activation map is a 28x28 sheet of neuron outputs:
 1. Each is connected to a small region in the input
 2. All of them share parameters “5x5x3”
 “5x5(x3) filter” => “5x5 receptive field for each neuron”
•اندازه فیلتر(Receptive Fields :)اندازهناحیه ای از ورودی که با هم بعد از ضرب در فیلتر به یک ویژگی تبدیل می شوند.

32
یکفرضمنطقی!:اگریکویژگی(مانندلبه)دریکموقعیتمکانیازتصویربرایمحاسبهمفیدباشد،همانویژگیدرموقعیت
دیگرینیزمفیداست.
وزنهایهمهبرشهاازتصویریکساندرنظرگرفتهمیشود

Convolution: Parameters
33
W1
F
H1
D1
F
W2
H2
 Hyper Parameters:
K: number of filters
F: Spatial size of filters
S: Stride (Step of sliding the filter)
P: amount of zero-padding
D1: number of input channels (e.g. 3 in RGB)
D1
1
فیلتر شماره1
فیلتر شماره2

34
W2 = (W1 – F + 2P) / S + 1
H2 = (H1 – F + 2P) / S + 1
D2 = K  (تعداد فیلترهای لایه)
W1
F
H1
D1
F
D2
W2
H2

 • If we had six “5x5(x3)” filters, we will get 6 separate activation maps:
 We stack these up to get a “new image” of size 28x28x6!
 depth of the output volume equals to the number of filters 
35
•عمق خروجی لایه پیچش، برابر با تعداد فیلترهای به کار رفته است

 Preview: The simplest ConvNet is a sequence of Convolution Layers, 
interspersed with non-linear activation functions
 Shrinking too fast is not good, it may not work well.
36

 The computation of the convolutive map at any location sums the convolutive
outputs at all planes
37
خروجی به ازای فیلتر اول

38
این تازه برای محاسبات فیلتر شماره1بود... برای سایر فیلترها مجدد همین مراحل تکرار می شه (s=2, 3, … )

39
…

40
…
…

Convolution: Stride
 The scans of the individual “filters” may advance by more than one pixel at 
a time
 Saves computation, … however, sometimes at the risk of losing information
 This will result in a reduction of the size of the resulting maps
 They will shrink by a factor equal to the stride
 This can happen at any layer 
41

42
گام
تعداد پیکسل های حرکت روی تصویر ورودی
کاربرد(بالقوه) در حالت هایی که اندازه تصویر از اندازه فیلتر (خیلی) بزرگ تر است.
تاثیر روی اندازه تصویر خروجی: هرچه گام بزرگتر باشد، تصویر خروجی کوچک تر می شود
مقدارمعمول آن  1وگاهی 2انتخاب می شود.
می تواند در جهت های افقی و عمودی متفاوت انتخابشود.
مقدار گام باید به گونه ای باشد که اندازه تصویر خروجیمقداری صحیح (معتبر) باشد؛ جهت کنترل این موضوع، می توان به تعداد لازم افزودن صفر (zero-padding )انجام داد. 
برای اندازه گام (stride )یک، تعدادصفرهای لازم جهت برابری اندازه تصویر ورودی و خروجی: (F-1)/2

Convolution: Zero-Padding
 Zero-pad the input
 Add rows/columns of zeros to the left/right/top/bottom of the input image
 to prevent reduction in the output size, if necessary!
 For stride 1, the result of the convolution is the same size as the original image 
if F=3 (i.e. the filter size is 3*3) and p=1.
43

44
افزودن صفر
افزودنسطرها و ستون های صفر در اطراف تصویر
کمکبه کنترل اندازه تصویر خروجی (معمولاً برای اینکه برابر با تصویر ورودی باشد)
میتواند مقادیر مختلف ( 1یا2یا حتی بیشتر!) به خود بگیرد.

Convolution: 1-D Example
45
Input + padding
Stride = 1 
filter
filter
Stride = 2

Convolution: Demo
46
https://cs231n.github.io/convolutional-networks/
RGB input volume (3 channels)
W1 = H1 = 5, 
D1 = 3
K = 2 (2 filters), 
F = 3 (each filter: 3 × 3 (× 3))
S = 2 (Sliding step: 2 pixels)
P = 1 (1 pixel for zero-pad)

47
W1 = H1 = 5, 
D1 = 3
P = 1 (1 pixel for zero-pad) https://cs231n.github.io/convolutional-networks/

48
W1 = H1 = 5, 
D1 = 3

49
W1 = H1 = 5, 
D1 = 3

50
W1 = H1 = 5, 
D1 = 3

51
W1 = H1 = 5, 
D1 = 3

52
W1 = H1 = 5, 
D1 = 3

53
W1 = H1 = 5, 
D1 = 3

54
W1 = H1 = 5, 
D1 = 3

55
W1 = H1 = 5, 
D1 = 3

56
W1 = H1 = 5, 
D1 = 3

57
W1 = H1 = 5, 
D1 = 3

58
W1 = H1 = 5, 
D1 = 3

59
W1 = H1 = 5, 
D1 = 3

60
W1 = H1 = 5, 
D1 = 3

61
W1 = H1 = 5, 
D1 = 3

62
W1 = H1 = 5, 
D1 = 3

63
W1 = H1 = 5, 
D1 = 3

Pooling
64
 Let us reduce amount of parameters
and computations!
 It also helps to control overfitting.
 Pooling Layer resizes its input spatially,
using an operation (e.g. Averaging,
max, L2 Norm, etc.)
 Most common: 2×2 filter, stride of 2
pixels
 Usually not using zero-padding
 This layer is: subsampling
(downsampling)
 Pooling Layer operates independently
on every depth slice of the input;
therefore, the number of depth
remains unchanged after this layer.
متداول ترینانتخاب

Pooling
65
The same network is applied on each block (Again, a 
shared parameter network)
راه های مختلف نمونه برداری

Pooling
 Size of output volume
 How MAX-Pooling layer helps:
 1) adding a kind of shift invariability:
 For a shift of one pixel, the max function acts the
same!!!
 2) Making the network more robust to noise
 Every wrong pixel gets eliminated after being
applied to the filters!
66
W2 = (W1 – F) / S + 1
H2 = (H1 – F) / S + 1
D2 = D1
W1
W2
H1
D1
H2
D2
صرفاٌ به عنوان یک شهود

CNN Common Architecture
67
Recall:
Feature extraction Classification
Three main types of layers
 Convolutional Layer
 output of neurons are
connected to local regions
in the input
 applying the same filter on
the whole image
 CONV layer’s parameters
consist of a set of learnable
filters.
 Pooling Layer
 perform a down-sampling
operation along the spatial
dimensions
 Fully-Connected Layer
 Flatten: the first flat layer is
only the “unrolling” of the
maps from the final
convolutional layer
In general, the number of
convolutional filters increases
with layers

68

Parameter Setting
 Common Settings:
 K : power of 2 (e.g. 32, 64, …)
 F: odd number (3, 5, or even 1 !!!)
 S: 1 or 2 
 P: whatever fits
69

Graphical Representation of CNN
70
https://cs.stanford.edu/people/karpathy/convnetjs/demo/cifar10.html

Receptive Field 
71
1-D Convolution:

Power of Small Filters 
72
Top Architecture:
• The first layer neurons “look” at the
entire “block” to extract block-level
features (Subsequent layers only look
at a single pixel in their input maps)
Bottom Architecture:
• The higher layer implicitly learns the
arrangement of sub patterns that
represents the larger pattern (the
flower in this case)
• The first layer looks at sub regions of
the main image (Sufficient to detect,
say, petals)
• The second layer looks at regions of
the output of the first layer (To put the
petals together into a flower; this
corresponds to looking at a larger
region of the original input image)
vs.

73
Trend towards smaller filters and deeper architectures

74
CNN Case Studies

Turing Award for Deep Learning
 Many brilliant people contributed to the development of AI.
 Yann LeCun
 Geoffrey Hinton
 Yoshua Bengio
75
 Turing Award (often referred to as "Nobel Prize of Computing") given for:
 “The conceptual and engineering breakthroughs that have made
deep neural networks a critical component of computing.”
By: Lex Fridman, MIT

CNN Architectures
76
معماری های رایج شبکه های عصبی پیچشی(روی پایگاه داده ImageNet)
https://image-net.org/
 1000 object classes 
 contains 1,281,167 training images, 50,000 validation images and 100,000 test images

 Case Studies
 LeNet
 AlexNet
 ZF Net
 VGG Net
 GoogLe Net
 ResNet
77
معماری های رایج شبکه های عصبی پیچشی(روی پایگاه داده ImageNet)https://image-net.org/

LeCun, Y., Bottou, L., Bengio, Y., & Haffner, P. (1998). Gradient-based learning applied to 
document recognition. Proceedings of the IEEE, 86(11), 2278-2324.
78
http://yann.lecun.com/
 by Yann LeCun et al. in 1989.
 Structure:  convolutional layer, pooling layer and full connection layer
 To read handwritten numbers
Case Study: LeNet

79

80
نرخ خطای دسته بندی روی دادگانImageNet

81
Case Study: AlexNet
Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). Imagenet classification with deep convolutional neural 
networks. Advances in neural information processing systems, 25.

 Visualization of first layer weights in AlexNet
82

83
شروع استفاده ازReLu
عمیق تر ازLeNet

84

85
Case Study: ZF Net
توسعهAlexNetباافزایش تعداد فیلترهای لایه پیچش و کم کردن اندازه فیلتر و گام در لایه اول

86

87
Case Study: VGG Net

88

89
 Inception module: a good local network topology (network
within a network)
 GoogLeNet stack these modules on top of each other
Case Study: GoogLe Net

90
Solution: “bottleneck” layers that use 1x1 convolutions to reduce feature depth 
به منظور کاهشحجم در فضای ویژگی ها 
ایده خام + چالش

1x1 filter
 A 1x1 filter is simply a neuron that operates over the depth of the
map, but has no spatial extent
– Takes one pixel from each of the maps (at a given location) as input 
91
در حاشیه

92
•ماژولInceptionاختیارانتخابلایههابرایرسیدنبهبهتریننتیجهرابهشبکهمیدهد
•بهصورتهمزمانازConv 1x1،Conv 3x3،Conv 5x5و
Poolingدرهرلایهاستفادهمیکند.
•بدینمعناکهتماماینبخشهابرایماژولبعدیبهعنوانورودیقابلاستفاده
است
•اینکهاینموارددرکنارهمقراردارندیعنیهرInception moduleتوانایی
دیدنجزییاترادرسطحریزدانهتاویژگیهایبزرگدرخوددارد
ایده خامپیاده سازی واقعی

93

94

95

96

97
Case Study: ResNet
طرح یک چالش

98
 Hypothesis: the problem is an optimization problem, deeper models are harder to
optimize
 The deeper model should be able to perform at least as well as the shallower
model.
 A solution by construction is copying the learned layers from the shallower model and
setting additional layers to identity mapping.

99
•ارائهتوسطتیمیازمایکروسافت
•152لایه،بدونFCهایمتوالی
•هربلاکباقیمانده،درسادهترینفرمارائهشدهشاملیک
conv-relu-conv
•بهجایاینکهخروجیبدستآمدهمستقیمابهمرحلهبعدبرود،
بهورودیاصلینیزاضافه(جمعخودمون،نهکانکت!)میشود

100

 The ResNet Network in more detail:
101

102
دید کلی در مورد تاثیر حضور مسیرهای پیش-رو همانی

 For deeper networks (ResNet-50+),
use “bottleneck”layer to improve
efficiency (similar t0 GoogLeNet)
103
 Full ResNet architecture:
– Stack residual blocks
– Every residual block has two 3x3 conv layers
– Periodically, double # of filters and downsample spatially using stride 2 (/2 in each 
dimension)
– Additional conv layer at the beginning
– No FC layers at the end (only FC 1000 to output classes)
 Training ResNet in practice:
– Batch Normalization after every CONV layer
– Xavier/2 initialization.
– SGD + Momentum (0.9)
– Learning rate: 0.1, divided by 10 when validation error plateaus
– Mini-batch size 256
– No dropout used 
 Able to train very deep networks without degrading (152 layers on ImageNet, 1202 on Cifar)

104

نزدیک شدن کاراییشبکه های پیچشی به عملکرد انسان
105

Improving ResNet
106

Toward Efficient Networks: MobileNet
 Efficient Convolutional
Neural Networks for
Mobile Applications
 Depth-wise separable
convolutions: much
more efficient
 channel-wise spatial
convolution
 pointwise convolution
1x1 convolution
 Much more efficient
computationally
107
An example

Convolutional vs. Depth-wise Convolution
108
در حاشیه

109
با مشاهده سیر تاریخی شبکه های عصبی پیچشی، چه ایده ها و 
درس هایی جهت طراحی معماری های شبکه خود گرفتید؟

110
با مشاهده سیر تاریخی شبکه های عصبی پیچشی، چه ایده ها و درسهایی جهت 
طراحی معماری های شبکه خود گرفتید؟ 
موارد زیر قابل بررسی است:
-شبکه های ساده ای نظیر LeNetدر بسیاری از مسائل می تواند تلاش اولیه کاملاً قابل احترامی باشد؛ 
-هرگز قدرت آن را دست کم نگیرید!
-اولویت بر بهره گیری از فیلترهایی با ابعاد کوچک (نظیر 3در3 )در طول شبکه
-استفاده از ماژول های چندشاخه در شبکه جهت جلوگیری از ناپدیدشدن گرادیان و همچنین استخراجویژگی های متنوع تر
-تلفیق ماژول های شبکه های مختلف به منظور بهره گیری از مزایای هر یک
-افزایش تعداد فیلترها در لایه های بالاتر نسبت به لایه های ابتدایی (که تصاویر سایز بزرگی دارند) 
-...

111
Transfer Learning

 By transfer learning,
 you can use the learned
features for a task (using a
large amount of data) in
another related task (for which
you don’t have enough data)
112
 “You need a lot of a data if you want to train/use CNNs”

113
چه شباهت های ظاهری در مراحل شناسایی اشکال زیر نظبر چهره انسان ها، گربه ها، فیل ها و... می بینید؟

Transfer Learning with CNNs
114
وزن های بخش آبی رنگ ثابت 
بوده و آپدیت نمی شوند

115

State-image Technique
 Time-series (e.g. movements, sound signals, EEG/EMG/ECG signals, etc.)
can be coded as pixels of a picture, which were then used as the
inputs for Deep NNs
 Transform the dynamic nature of the patterns to a static one
116

117
Training CNNs

 Backpropagation continues in the usual manner (i.e. BP in MLPs)
until the computation of the derivative of the divergence w.r.t the
inputs to the first “flat” layer (i.e. the Flatten Layer)
 Important to recall: the first flat layer is only the “unrolling” of the maps
from the final convolutional layer
118
Training CNNs: Backpropagation
هدف: یافتن مشتق lossنسبت بهتمامی وزن ها و بایاس های کللایه 
ها در شبکه به منظور به روزرسانی آن ها و رسیدن به نقطه کمینه تابع هزینه!!

 Backpropagation from the flatten layer requires special consideration of
 The shared computation in the convolution layers (i.e. the filter weights)
 The pooling layers (e.g. max pooling)
119
برای لایه های پیچش و نمونه برداری چگونه می توان انتشار به عقب را پیاده سازی کرد؟

120
•اگر تابع فعال سازیReLuباشد، مشتق آنبه ازای zهای مثبت یک؛ و به ازای zهای منفی صفراست!
•نتیجهاخلاقی:اگرمقدارzنرونیدرلایههایپیچشمنفیباشد،گرادیانlossنسبتبهآننرون(بهعلتصفرشدنمشتق)صفرخواهدبودووزن
هایمتصلوهمچنینلایههایقبلازطریقایننرونتغییرینخواهندکرد!

121
 Each 𝑎(𝑙 −1,𝑚,𝑥,𝑦) affects several 𝑧(𝑙,𝑛,𝑥,𝑦) terms for every n
 Affects terms in all 𝑙 th layer maps
 All of them contribute to the derivative of the loss w.r.t. 𝑎(𝑙 −1,𝑚,𝑥,𝑦)
 All of them contribute to the derivatives w.r.t filter weights

 In order for the loss to be
propagated to the other
gates, we need to find ∂L/∂x
and ∂L/∂y.
122
 Chain Rule in a Convolutional Layer

 Lets assume the function f is a
convolution between Input X
and a Filter F.
 Input X is a 3x3 matrix and
Filter F is a 2x2 matrix
123

 Convolution between Input X and
Filter F, gives us an output O.
 This gives us the forward pass!
124
+ b
+ b
+ b
+ b
توافق: در این نمادگذاری، اولی را ثابت و دومی را لغزنده می گیریم

125
 Let’s get to the Backward pass.
 we need to find ∂L/∂F and ∂L/∂X (چرا؟) 
یادآوری: درایه های Fهمان وزن های شبکه می باشند

 O and F are matrices.
 ∂O/∂F will be a partial derivative of a
matrix O with respect to a matrix F!
126
Finding ∂L/∂F
+ b

 If you closely look at it, this represents an operation we are quite familiar
with!
 We can represent it as a convolution operation between input X and loss
gradient ∂L/∂O
127

 We can represent it as a convolution operation between input X and
loss gradient ∂L/∂O
128
∂L/∂F is nothing but the convolution between Input X and Loss Gradient 
from the next layer ∂L/∂O

129
∂L/∂b is the some of the elements of the Loss Gradient from the next layer ∂L/∂O
Finding ∂L/∂b
+ b
+ b
+ b
+ b
 ∂L/∂b =  sum (∂L/∂O)
∂ b ∂ b
 ∂ b ∂ b
1
آپدیت بایاس هر فیلتر به سادگی انجام پذیر است:

130
 O and X are matrices!
 ∂O/∂X will be a partial derivative of a
matrix O with respect to a matrix X!
Finding ∂L/∂X
+ b

131
 Derivatives of ∂L/∂X using local gradients 
 Expanding the equation
 Believe it or not, even this can be
represented as a convolution
operation!!

 Believe it or not, even this can
be represented as a
convolution operation.
 ∂L/∂X can be represented
as ‘full’ convolution
between a 180-degree
rotated Filter F and loss
132

133
Slide it right to left, bottom to top 

 The orange part is image and the blue part
is filter.
 The full mode means that convolution is
started from the intersection of filter and
image, and the white part is filled with zero.
 The range of motion of the filter is shown in the
figure.
134
Padding: valid Padding: same Padding: full
در حاشیه

135
180 deg
rotated filter F
Slide it left to right, top to bottom 
Padded 
(∂L/∂O)
180 deg
rotated 
filter F
نمایش خودمونی...!

Both the Forward pass and the Backpropagation of a Convolutional 
layer are Convolutions!!
136
BP for Convolution Layers
∂L/∂b =  sum (∂L/∂O)

137

138

139
1 1 2 4
5 6 7 8
3 2 1 0
1 2 3 4
6 8
3 4
0 0 0 0
0 𝜕𝐿
𝜕𝑂11
0 𝜕𝐿
𝜕𝑂12
𝜕𝐿
𝜕𝑂21
0 0 0
0 0 𝜕𝐿
𝜕𝑂22
0
𝜕𝐿
𝜕𝑂11
𝜕𝐿
𝜕𝑂12
𝜕𝐿
𝜕𝑂21
𝜕𝐿
𝜕𝑂22
Max-pooling
Back 
Propagation
انتشار خطا در لایه نمونه برداریMax pooling
•گرادیانفقطبه نرون های بیشینه شده در لایه قبل می رسد!

140
1 1 2 4
5 6 7 8
3 2 1 0
1 2 3 4
3.25 5.25
2 2
1
4
𝜕𝐿
𝜕𝑂11
1
4
𝜕𝐿
𝜕𝑂11
1
4
𝜕𝐿
𝜕𝑂12
1
4
𝜕𝐿
𝜕𝑂12
1
4
𝜕𝐿
𝜕𝑂11
1
4
𝜕𝐿
𝜕𝑂11
1
4
𝜕𝐿
𝜕𝑂12
1
4
𝜕𝐿
𝜕𝑂12
1
4
𝜕𝐿
𝜕𝑂21
1
4
𝜕𝐿
𝜕𝑂21
1
4
𝜕𝐿
𝜕𝑂22
1
4
𝜕𝐿
𝜕𝑂22
1
4
𝜕𝐿
𝜕𝑂21
1
4
𝜕𝐿
𝜕𝑂21
1
4
𝜕𝐿
𝜕𝑂22
1
4
𝜕𝐿
𝜕𝑂22
𝜕𝐿
𝜕𝑂11
𝜕𝐿
𝜕𝑂12
𝜕𝐿
𝜕𝑂21
𝜕𝐿
𝜕𝑂22
Mean-pooling
Back 
انتشار خطا در لایه نمونه برداریAverage pooling
•گرادیان به اندازه یکسان به همه نرون های مربوطه در لایه قبل می رسد
•اندازه گرادیان تقسیم بر KxK

https://pavisj.medium.com/convolutions-and-backpropagations-46026a8f5d2c
141
https://www.jefkine.com/general/2016/09/05/backpropagation-in-convolutional-neural-networks/
https://www.youtube.com/watch?v=vbUozbkMhI0
https://www.youtube.com/watch?v=Pn7RK7tofPg
Videos on Backpropagation in CNN
CNNs’ Mathematics:
BP in CNNs:
For more details and better intuition, please see:

142
CNN Applications in Computer Vision Tasks

Some of Computer Vision Tasks
143

144
CNN Applications in Computer Vision
Example: Classification + Localization

145

146

147
Example: Pose Estimation

148

149
Example: Multi Object Detection
http://icml.cc/2016/tutorials/icml2016_tutorial_deep_residual_networks_kaiminghe.pdf

150
Example: Instance Segmentation + Human Pose Detection

Appendix
151
Sample Codes

CNN - Forward
152

Max Pooling layer at layer l
153

Backward Layer l
154

Derivatives for a single layer l: Vector notation
155

Derivative of max pooling layer at layer l
156

Variants on RNNs
157
 (1) Vanilla mode of processing without RNN, from fixed-sized input to fixed-sized output (e.g. image classification).
 (2) Sequence output (e.g. image captioning takes an image and outputs a sentence of words).
 (3) Sequence input (e.g. sentiment analysis where a given sentence is classified as expressing positive or negative
sentiment).
 (4) Sequence input and sequence output (e.g. Machine Translation: an RNN reads a sentence in English and then
outputs a sentence in French).
 (5) Synced sequence input and output (e.g. video classification where we wish to label each frame of the video).
 (6) Connectionist Temporal Classification (CTC)

158

Recurrent Neural Networks (RNN)
2022
1
Alireza
 Taheri, 
School 
, Tehran, 
Iran

2
 Applications of RNNs
 Basic Elements of RNN
 Variants on RNNs
 Common Architectures of RNN
 LSTM Networks
 RNN Visualization 
 Training RNNs
 Backpropagation Through Time (BPTT)
 Sample Codes

 Bhiksha Raj 
 Andrew Ng
 Ava Soleimani
3

4
Recall:
filters.

Recurrent Neural Networks
 A glaring limitation of Vanilla Neural Networks and also CNNs is that
their API is too constrained
 They accept a fixed-sized vector as input (e.g. an image) and produce a
fixed-sized vector as output (e.g. probabilities of different classes).
 RNNs allow us to operate over sequences of vectors
 Sequences in the input, the output, or in the most general case, both.
5
•شبکهعصبیبازگشتیعموماًبرایپردازشسریهایزمانی(Time Series)ودادههایترتیبی(Sequential)بهکارمیروند.
•شبکههایبازگشتیتوسعهیافتهMLP(بابازگشتازنرونهایمخفی)است.
•برخلافشبکههایعصبیروبهجلو،یالهامیتوانندتشکیلدوربدهند.
•بهدلیلداشتنیالهایبازگشتیدرساختارخود،قدرتحافظه(بهخاطرسپاریگذشته)ایدارند
•شبکهRNNسنتی،شبکهLSTMوشبکهGRUسهسلبریتیازخانوادهشبکهبازگشتیهستند.
شبکه های MLPوCNNخیلی خوب بودند، اما...
شبکه های عصبی بازگشتی
هدفاصلیازبهکارگیریشبکههایبازگشتی،مدلسازیوپیشبینیدادههایترتیبی/متوالیوسریهایزمانیاست.

Applications of RNNs
6
کاربردهایشبکههایعصبیبازگشتی:مدلسازیوپیشبینیدادههایترتیبی/متوالیوسریهایزمانی
تشخیصگفتارازسیگنالگفتار
آنالیزحرکتها،بازشناختکنشویادنبالکردناشیاازتصاویرپشتسرهم(ویدئو)
ترجمهمتونازیکزبانبهزباندیگر
تبدیلگفتاربهمتن؛تایپگفتاریویافرمانهایصوتی
تبدیلدستنوشتهبهمتنالکترونیکی
شرحنویسیعکسیاگزارشفوتبال!!
تایید/تشخیصهویتافرادازرویصداویانحوهامضا
تشخیصموضوعمتنازواژههایموجوددرآنمتن؛دستهبندیاخبار
پیشبینینرخارز/شاخصسهامبرحسبزمان
پیشبینیبارشباراندرروزهایمتوالیسال
پیشبینیمقدارمصرفآبدرروزهایمتوالی
...

7
تایید/تشخیصهویتافرادازنحوهامضا
...

8
...

9
...

10
...
In the case of language modeling words from time steps far away
are not taken into consideration when training to predict the next
word
Example: Jane walked into the room. John walked in too. It was late
in the day. Jane said hi to __?__
Predict the next word in a text
The network must know to “remember” for extended periods of 
time and “recall” when necessary 
Problem: Given a sequence of words (or characters), predict the next one
Language Modeling

11
...
https://www.danieldjohnson.com/2015/08/03/composing-music-with-recurrent-neural-networks/
Fun with RNNs: Composing Music With Recurrent Neural Networks

12
...
Fun with RNNs: Sampled Wikipedia articles!!
http://karpathy.github.io/2015/05/21/rnn-effectiveness/

13
...
Fun with RNNs: Sampled Latex!!

14
...
Fun with RNNs: Code Generation

RNN + GAN
تولید متن فارسی
شعر فردوسی!!
15
احسان منتهایی، مهدیه سلیمانی باغشاه، تولید متن با رویکرد جمعی مبتنی بر شبکه هاي مولد 
مقابله اي محورهاي موضوعی، مهندسی برق و کامپیوتر ایران، 1399
https://www.sid.ir/fa/journal/ViewPaper.aspx?id=555157
Fun with RNNs: Poem Generation

RNNs
Most of the previous examples were generated blindly by 
Recurrent Neural Networks!!
16
 It seems that they are excellent models for time-series analysis tasks
 Time-series prediction
 Time-series classification
 Sequence prediction
 They can even simplify problems that are difficult for MLPs

 Each rectangle is a vector and arrows represent functions (e.g. matrix
multiply).
 Input vectors are in red, output vectors are in blue and green vectors hold
the RNN's state
17

18

Representational Shortcut
 Input at each time is a vector
 Each layer has many neurons
 Output layer may have many neurons
 But will represent everything by simple 
boxes
 Each box actually represents an entire 
layer with many units
19

The Simple State-State Model
 The state (i.e. the h boxes) at any time is
determined by:
 the input at that time (i.e. X(t)),
 and the state at the previous time (i.e. h(t-1))
20
:
h :لایه پنهان/ حافظه/  
عصاره اتفاقات گذشته

Fruitful Intuition of RNNs
21
Example 1
https://howsam.org/recurrent-neural-network/

22
Example 2

23
Example 3

24
Example 3

Standard RNN
25
:

26
این دو شبکه(یا به بیان بهتردو تابع) دقیقا 
یکسانند؛ همانطور که آشپز دقیقا یکسان بود!!

Single hidden layer RNN 
 The initial values of the hidden states (e.g. h0) are generally learnable
parameters as well
27
فوق محبوب ترین و متداول ترین معماریRNN
Standard Form

28
 The same function and the same set of parameters are used at every time step.

 An example RNN with 4-
dimensional input and 4-
dimensional output layers, and
a hidden layer of 3 units
(neurons).
 This diagram shows the
activations in the forward pass
when the RNN is fed the
characters "hell" as input.
 The output layer contains
confidences the RNN assigns
for the next character
(vocabulary is "h,e,l,o");
 We want the green numbers
to be high and red numbers
to be low.
29
An Example: Character-Level Language Models

Multiple recurrent layer RNNs
30

31

More Complex Networks
32

33

RNN Computational Graph
34
Many to Many example

Long-term behavior of RNNs
 In linear systems, long-term behavior depends entirely on the
eigenvalues of the hidden-layer weights matrix
 If the largest Eigen value is greater than 1, the system will “blow up”
 If it is lesser than 1, the response will “vanish” very quickly
 Complex Eigen values cause oscillatory response
35

 The behavior of scalar non-linearities, 
 Left: Sigmoid, Middle: Tanh, Right: Relu
 Sigmoid: Saturates in a limited number of steps, regardless of 𝑤ℎ
 Tanh: Sensitive to 𝑤ℎ, but eventually saturates (“Prefers” weights close to 1.0)
 Relu: Sensitive to𝑤ℎ, can blow up.
36
Simple example

Traditional RNN Challenges
 Standard/Traditional Recurrent networks retain information from
the infinite past in principle
 In practice, they tend to blow up or forget!
 They are poor at memorization
 The “memory” of the network also depends on the activation of
the hidden units
 Sigmoid activations saturate and the network becomes unable to
retain new information
 RELUs blow up
 Tanh activations are the most effective at storing memory
 But still, for not very long!
 And … a particular problem with training deep networks (for any
deep network, not just recurrent nets) is the vanishing gradient
problem
37
فقط روی کاغذ!
در عمل!

38
Long Short-Term Memory

Long Short-Term Memory (LSTM)
 Explicitly latch information to prevent decay/blow up
 More complex hidden unit computation in recurrence!
39
http://colah.github.io/posts/2015-08-Understanding-LSTMs/
 Main ideas:
 Keep around memories to capture long distance dependencies
 Allow error messages to flow at different strengths depending on the inputs
حافظه کوتاه مدت ماندگار
شبکه LSTM قادربه یادگیری وابستگی بلندمدت می باشد.

LSTM
40
من در ایران به دنیا آمدم، کم و بیش بلد هستمکه … صحبت کنم.
https://howsam.org/lstm-neural-network/
کاش داش!!!
Necessity

LSTM
41
An interesting story
صرفاً جهت اطلاع!

LSTM Unit
 The repeating module in an LSTM contains four interacting layers.
42
وحشت نکنید!! شما قرار نیست کدهای مربوط به محاسبات پیش رو و انتشار به عقب آن را بنویسید! ... کتابخانه های موجود این کارها را انجام خواهند داد.
 The 𝜎 are multiplicative gates that decide if something is important or not
 Remember: every line actually represents a vector

LSTM
43
vs.
Simple RNN vs. LSTM Units

LSTM
 The Core Idea Behind LSTMs: Cell State
 The cell state is kind of like a conveyor
belt! It runs straight down the entire chain,
with only some minor linear interactions.
 It’s very easy for information to just flow
along it unchanged.
44
Key Components
 The second key component of LSTMs: Gates
 Gates are a way to optionally let information through.
 They are composed out of a sigmoid neural net layer and a
pointwise multiplication operation.
 The sigmoid layer outputs numbers between zero and one,
describing how much of each component should be let through:
 A value of zero means “let nothing through,”
 A value of one means “let everything through!”
حافظه بلندمدت(عملکردی شبیه سبد حافظه در شکل های گذشته)
منظور از دروازه (گیت)، یک دریچه یا پیچ قابلتنظیم 
هست که به ما امکان کنترل عبور (اطلاعات) را می دهد .

LSTM
45
 The first gate determines whether to carry over the history or to forget it
 More precisely, how much of the history to carry over
 A 1 represents “completely keep this” while a 0 represents “completely get rid of this.”
 Also called the “forget” gate
 Note, we are actually distinguishing between the cell memory andthe 
state ℎ that is coming over time! They’re related though
Forget Gate
گیت فراموشی در کارش بسیار سخت گیر است و به درایه های Ct-1به راحتی اجازه عبور نمی دهد ! گیت فراموشی، یک نگهبان امنیتی ویژه است!!!

LSTM
46
Input Gate
 The input section has two parts:
 ෩𝐶𝑡: A perceptron layer that determines if there’s something
new and interesting in the input
 𝑖𝑖: A gate that decides if its worth remembering

LSTM
 It’s now time to update the old cell state, 𝐶𝑡−1, into the new
cell state 𝐶𝑡.
 We multiply the old state by 𝑓𝑡 (forgetting the things we decided to
forget earlier).
 Then we add 𝑖𝑡 ∗ ሚ𝐶𝑡. This is the new candidate values, scaled by how
much we decided to update each state value.
47
Memory Cell Update

LSTM
48

LSTM
49
Output Gate
 Finally, we need to decide what we’re going to output.
 This output will be based on our cell state, but will be a filtered version:
 We put the cell state through tanh (to push the values to be between −1 and 1)
 We run a sigmoid layer: decides what parts of the cell state we’re going to output.
 Finally, multiply the above vectors elementwise; we only output the parts we
decided to.

LSTM
50
Summary

LSTM
51

Other Variants on LSTM
 One popular LSTM variant, introduced by Gers & Schmidhuber (2000),
 is adding “peephole connections.”
 This means that we let the gate layers look at the cell state.
52
Peephole Connections

53

 Another variation is to use coupled forget and input gates.
 Instead of separately deciding what to forget and what we should add
new information to, we make those decisions together.
 We only forget when we’re going to input something in its place.
 We only input new values to the state when we forget something older.
54
Toward Simpler Version

 Gated Recurrent Unit (GRU): a slightly more dramatic variation
on the LSTM:
 It combines the forget and input gates into a single “update
gate.”
 It also merges the cell state and hidden state.
55
Gated Recurrent Unit (GRU)

 GRU intuition:
 If reset is close to 0, ignore previous hidden state, allows model to drop
informationthat is irrelevant in the future
 Update gate z controls how much of past state should matter now.
 If z close to 1, then we can copy information in that unit through many time
steps! Less vanishing gradient!
 Units with short-term dependencies often have reset gates very active
56

 Do the differences matter?
 Greff et al. (2015), perform comparison of popular variants, finding that
they’re all about the same.
 Jozefowicz et al. (2015) tested more than ten thousand RNN
architectures, finding some that worked better than LSTMs on certain
tasks.
57

58
 Each green box can be an entire LSTM or GRU unit!
 Also keep in mind that each box is an array of neurons

Bidirectional RNN
 A forward net process the data from t=0 to t=T
 A backward net processes it backward from t=T down to t=0 
 Forward pass: Compute both forward and backward networks and final output 
 Note: This is not the backward pass of backpropagation. 
59
•درقالبیکلایهمخفی:
•بهصورتهمزمانهمازابتداتاانتهای
دنبالهرامیبینیم،همازانتهاتاابتدارا.
•دوسریبرداررفتوبرگشتپنهاندرنظرگرفته
شدهکهازبههمچسبیدنآنها،یکبردارh
بزرگترتشکیلشدهوخروجیشبکهازرویآن
محاسبهمیشود.

60
RNN Visualization

Understanding what’s going on
 Training Leo Tolstoy’s War and Peace and then generated samples … !
61
The evolution of samples while training

62
Searching for interpretable cells

 We can see that in addition to a large portion of cells that do not do anything interpretible,
about 5% of them turn out to have learned quite interesting and interpretible algorithms
63

64

65

66

Training RNNs
67
Backpropagation Through Time (BPTT)

BPTT
68
Graphical Overview

BPTT
69
Notation

BPTT
70

BPTT
71

BPTT
72

BPTT
73

BPTT
74

BPTT
75

BPTT
76

BPTT
77

BPTT
78

BPTT
79

BPTT
80

BPTT
81

BPTT
82

BPTT
83

BPTT
84
i

BPTT Computational Challenge
85

Truncated BPTT
86

87

88

BPTT for LSTM Units: an intuition 
89

90
RNN Applications

Text Modeling
 Learn a model that can predict the next character/word given a
sequence of characters/words.
91
Training
• The <eos> symbol is a special symbol included in the vocabulary, which indicates the termination of a sequence and 
occurs only at the final position of sequences

Delayed sequence to sequence 
92

Translation Model
93
 The input sequence feeds into a recurrent structure
 The input sequence is terminated by an explicit <eos> symbol
 The hidden activation at the <eos> “stores” all information about the sentence
 Subsequently a second RNN (with different weights) uses the hidden 
activation as initial state to produce a sequence of outputs 
 The output at each time becomes the input at the next time 
 Output production continues until an <eos> is produced

 The input sequence feeds into an recurrent structure
activation as initial state to produce a sequence of outputs
 Output production continues until an <eos> is produced 
94

95

96

Trick of the trade: Reversing the input
97

Image Captioning
98
CNN (feature extraction) + RNN (text generation/prediction)

99

100

101

102

103

104

Image Captioning: Interesting Results
105

Image Captioning: Failure Cases 
106

107

Appendix
108

Standard RNN: Assuming time-synchronous output
109

Standard RNN: BPTT
110

LSTM: Network Code
111

LSTM: Cell Code
112

Bidirectional RNN: Assuming time-synchronous output
113

Bidirectional RNN: Modular Code
114

115

116

E:\courses\LangChain Project\main root\data\SCR_Chapter04_DesignHRI.pdf

Chapter 4: Design human-robot interactions and 
evaluation of the interventions
2022
1
Alireza
 Taheri, 
School 
, Tehran, 
Iran

2
4.0
3.5
3.0
2.5
2.0
1.5
Movement
Mean
ASD+a
ASD+b
ASD+c
TD+a
TD+b
TD+c
 Chapter 4: Design human-robot interactions and evaluation of the 
interventions
 The necessity of this chapter
 Planning, Designing, Executing HRI Study
 Structure of papers for HRI studies
 Tests of Statistical Significance

 Kerstin Dautenhahn
 Saeed Khodaygan
3

4

5
The necessity of this chapter

6
خرید،
و یا 
شناختی 
نظر
پیاده سازی 
هوش مصنوعی 
ها 
شده
در حوزه 
آموزش، 
مروریnباره بر مهم ترین پیام این درس...

7
Planning, Designing, Executing HRI Study
11به بهانهکنفرانس بین المللی رباتیک اجتماعی (ICSR)
https://www.icsr2022.it/

8

Planning a study 
 What is your main research question?
 How many participants do I need?
 What type of study will be conducted (within-subjects, between-subjects, mixed-
model, etc.)?
 How many groups will be in the study?
 How many participants per group will be required?
 How will participants be recruited for the study?
 What type of robots will be used?
 How many different types of robots will be used?
 What types of tasks will the participants perform or observe (Study
Protocol)?
 What methods of evaluation will be used?
 self-assessments, behavioral measures, interviews, psychophysiological measures,
task performance, etc.?
9

 What type of equipment will be needed?
 computers, measurement equipment, recording devices, etc.?
 What type of environment and space is required to conduct the
study?
 field, laboratory, virtual, etc.
 How will contingencies and failures be handled?
 What type of assistance is needed to conduct the study?
 So … ready to start, now??
 Not yet …!!! You need to … 
 Pass Human Subject Protection Training 
 Get research permission
10

 Do not forget
 Mandatory training tutorial Human research ethics
 Submit ethics application
 Ethics application focusses primarily on experimental protocol (what happens to the
participants, how you recruit them, etc.)
 Only after approval, you are allowed to recruit participants
 While waiting for approval, you can still work on the technical
implementation details of the study
11

Human Subject Protection Training
12

IRB Permission
13

Research permit forms
14

15

Subjects' Rights
16
آزمودنی(Subjects, Participants):انسانهاوسایرجاندارانیکهآزمایشهاییکپژوهشبررویآنهاانجاممیشود
مواردمهمنقضحقوقآزمودنیها:
ارائهاطلاعاتنادرستدرموردآزمودنیهاتوسطپژوهشگروموسسهایکهپژوهشدرآنانجاممیشود.
عدمارائهاطلاعاتیاارائهاطلاعاتنادرستبهآزمودنیهادرارتباطبانوعآزمایشهاواثراتآنها.
اعمالاجبارجهتمشارکتآزمودنیهادرپژوهش.
عدمایجادفرصتهایمناسببرایآزمودنیهاجهتسرباززدنازادامهپژوهشدرصورتیکهپژوهشپرخطرباشد.
عدمرعایترازداریدرحفظاطلاعاتخصوصیآزمودنیهاوافشایهویتآنها.
عدمرعایتحریمخصوصیآزمودنیها.
استفادهازاطلاعاتمربوطبهآزمودنیهابرایاهدافیخارجازحیطهپژوهش.
عدمرعایتاستانداردهایمربوطبهسلامتوایمنیآزمودنیها.
استفادهازافرادآسیبپذیربهعنوانآزمودنیدرپژوهش،تنهابهدلیلموقعیتنامناسبایشان
11لازم است بدانید!

Consent vs. Assent form
 Consent may only be given by individuals who have reached the legal
age of consent.
 Assent is the agreement of someone not able to give legal consent to
participate in the activity.
 Work with children or adults not capable of giving consent requires the
consent of the parent or legal guardian and the assent of the subject.
17
11لازم است بدانید2!

HRI Considerations
18
یکموضوع(بخوانیدمعضل)جدی:
همانابتدایمطالعهبایدهمهچیزمشخصباشد!!
دنبالیافتنپاسخبرایچهپرسش(های)پژوهشیهستید؟
سناریویدقیقاجرایپژوهشتانچیست؟
چگونهاثربخشیمداخلاتخودراارزیابیمیکنید؟(ابزارهاوروشها)
...

Research Ethics
19
نوشتار«اخلاقدرپژوهش»
منتشرشدهتوسطکارگروهسلامتدرپژوهشدانشگاهصنعتیشریف
معرفیمعیارهایرعایتاخلاقدرپژوهشوآموزشوترویجآندرمیان
پژوهشگرانودانشجویانتحصیلاتتکمیلی
11آیا می دانید؟(منظور لازم است بدانید 3)! ...
For your information

20
Structure of papers for HRI studies

 Abstract
 Introduction 
 Related Work 
 Research Questions
 Robotics Implementation 
 Methodology (or Experiment)
 Results  
 Discussion
 Conclusions 
 Future work
 Acknowledgements
 Conflict of Interest, etc.
 References 
21
An overview

 1 Introduction 
 May be split into two sections: Introduction and Background
 for a journal paper, this is suitable since we have to describe the
background literature in great detail
 2 Related Work
 This may be a subsection of the introduction, or stand alone, this
depends
 3 Research Questions
 May include further more detailed/precise research hypotheses and
expectations
 if hypotheses can be defined based on previous findings/theories in the
literature
 if not (more exploratory work) we only have research questions that were
driving the research
22
11یکی از مهم ترین تفاوت ها با مقالات متداول حوزه مهندسی

23
بهصورتمتعارف،بخشابتداییمقالهشمابایدحداقلشاملسهپاراگرافزیرباشد:
1)اهمیتموضوعوحوزهموردبررسیشما
2)اهمپژوهشهایانجامشدهدیگراندراینحوزهبههمراهبیانخلاصهیافتههاوحتیاشارهبهمواردلحاظ
نشدهآنها(البتهبابیاناحترامآمیز)
3)تعریفدقیقمسئله(In this paper, …):
بیانپرسش(های)پژوهشی،فرضیهها،تفاوتبرجستهباکارهایگذشتگانو...
توجه:صرفانجامیکپژوهشبهعنواناولینباردردنیا/منطقه/کشور،دلیلیبراهمیتبالاوتضمینپذیرشآننیست!!

 Variables
 Independent variable: the variables that are manipulated by the
experimenter and is of interest.
 Dependent variables: the behavior that is evaluated as the outcome
of the experiment.
 Some examples:
24
Participants
Independent Dependent
The type of medication you gave to a patient Improvements in health
The type of food you feed to an animal Weight gain

 Experimental condition: the group(s) in an experimental design that
receive the experimental condition being evaluated in a study.
 Control condition: one of the groups in an experimental design that
does not receive the experimental condition being evaluated in a
study.
 e.g. evaluating robot tutor A vs. robot tutor B (two different sets of
behaviors, independent variable), measuring progress in teaching children
a second language
 Children assigned to robot tutor A or B are considered as the experimental group.
 Children who are working with a human tutor are considered as the control group.
25
Control condition

 Between-participants design: Participants are placed in different groups
with each group experiencing different experimental conditions.
 e.g. one group interacts only with robot A, the other group only interacts with a
different type of robot B
 Sample: a portion or subset of a population that you recruit for your experiment
 Try to be as inclusive as you possibly can within the constraints given (and usually there are
many)
 Within-participants design: each participant is exposed to all levels of the
independent variable(s).
 e.g. all participants interact with robot A and B (counterbalanced)
 Counterbalance: a procedure used in within-participants designs that changes
the order variables are presented to control for sequence/order effects.
 Mixed-model factorial design: include both between-subjects and within-
subjects design components
26
Designs

27
بیانیکذائقهشخصی(!):افزودنفهرستتصویریازمراحلانجامپژوهشومسبرآنالیزدادههادرانتهایمقدمه(درصورتامکان)

 4 Robotics Implementation 
 This section describes hardware and software and applies if part of the
work is a new robot design/new control architecture, etc.
 if not (i.e. if we use an existing robot with an existing program), then this
section is not necessary and the robot can just be described briefly in
the “Artifacts” section below.
 This section can have subsections on hardware, software, behavior
control/learning architecture, etc.
28

 5 Method (Experiment)
 5.1.1 Setting (scenario, location, etc.): this section may also be called
“Overall design”
 5.1.2 Participants: this section may also be called “Sample”
(“participants” is preferred if you talk about humans)
 5.1.3 Artifacts (what robots have been used and how were they
controlled, if you use Wizard-of-Oz you may include a subsection on
robot control)
29

30

31

 The study protocol involves determining exactly how the study will proceed from start
to finish once a participant arrives.
 It is a detailed description of instructions that will be provided to the participant, what
assessments will be done and in what order, what tasks the participant will perform, the
timing of events, recording of information, how the data and personal information will
be handled, and where this information will be stored for security purposes.
 This is necessary for completing the IRB paperwork required for human studies and for
maintaining privacy.
 Trial runs of experiments should be conducted until the study can be executed
smoothly from start to finish. This is the only way to determine where problems can
and likely will occur.
 It is important that once the study begins with participants that the study protocol is
discussed with each participant as part of the instruction process as well as providing
this information as part of the informed consent form participants will sign.
32
Study Protocol

 Wizard of Oz: the most classical method
 robots are remotely controlled, unbeknown to
the participants, by a human operator
 Fully autonomous
 Between the mentioned methods
 e.g. supervised autonomy
33
Robot Control Paradigms
یک دیدگاه که همپنان در مسیر تعریف 
موضوعات پژوهشی، راهگشاست!
علیرضا طاهری، رساله دکتری، 1396

34

 Method of recruiting participant?
 An a priori Power Analysis is a statistical calculation that can be
performed to determine the appropriate number of participants
needed to obtain accurate and reliable results
 based on the number of groups in the study, the alpha level (typically a =
.05), the expected or calculated effect size, and a certain level of statistical
power (commonly 80%).
 There are power analysis tables in the appendices of most statistical
textbooks that will provide group size values. Additionally, there is
software available online that will assist with this type of calculation
(e.g., G*Power3);
35

 5 Method (Experiment) (cont.)
 5.1.4 Procedures and measures
 What happens in the experiment, what measures are used (e.g. video data,
questionnaires, interviews etc.).
 Alternatively, instead of “Procedures and measures” you can have a
subsection called “Instruments” (describing the measures) and a separate
subsection called “Procedure”
 5.1.5 Data collection (optional)
 May be included in 5.1.4, depends on how extensive the methods were for
data collection, whether new data collection methods had been developed
etc.)
 5.1.6 Coding and Reliability (optional, needed when doing e.g.
behavioral data analysis)
 5.1.7 Statistical approach (optional, if statistical methods for data
analysis have been used)
36

etc.)
37

 Primary methods of evaluation (from a social interaction perspective):
 1. Self assessments
 Paper or computer-based scales, questionnaires or surveys, Personal assessment of robots, situation,
tasks, etc.
 Problems with validity and corroboration
 Biases (!)
 2. Interview
 3. Behavioral measures
 Interrater reliability in behavioral data: the degree of agreement among raters. It is a score of how
much homogeneity or consensus exists in the ratings given by various judges.
 Second coder who does not know about the codes percentage, e.g. 20-100%, statistical interrater reliability tests
 4. Psychophysiological measures
 The primary advantage for using psychophysiological measurements is that participants cannot
consciously manipulate the activities of their autonomic nervous system (heart rate, EEG, ECG, etc.).
 5. Task performance metrics
 These metrics are designed to measure how well a person/team performs or completes tasks.
 Each comes with advantages and disadvantages. Disadvantages can overcome by using
combinations of methods for evaluation.
38
Common assessment tools for evaluation of HRI studies

 Questionnaire examples in the field of social robotics:
 The Godspeed Questionnaire Series,
https://www.bartneck.de/2008/03/11/the-godspeed-questionnaire-series/
 The Godspeed questionnaire categorizes perception using the following: (1) anthropomorphism,
(2) animacy, (3) likability, (4) perceived intelligence, and (5) perceived safety.
 Unified Theory of Acceptance and Use of Technology (UTAUT)
https://en.wikipedia.org/wiki/Unified_theory_of_acceptance_and_use_of_technology
 The UTAUT aims to explain user intentions to use an information system and subsequent usage
behavior. The theory holds that there are four key constructs: 1) performance expectancy, 2)
effort expectancy, 3) social influence, and 4) enabling conditions.
39
پرسشنامه های تخصصی فراوانی در حوزه های مختلف وجود دارد که لازم است توسط محقق شناسایی و انتخاب شوند. 
تلاش کنید تا حد امکان از پرسشنامه های ترجمه شده موجود بهره گیرید. 
طراحی پرسشنامه های اختصاصی اگرچه شدنی است، اما نیاز به رعایت نکات و جزییات مربوط به خود را دارد. 
ملاحظات

40

etc.)
41

etc.)
42

 6 Results
 Usually with subsections, just presenting the quantitative and/or qualitative
results without much interpretation
 7 Discussion
 Interpretation of the results in light of the research questions/hypotheses,
also mention limitations
 8 Conclusions
 Brief summary of main results, “what have we learnt”, how can other
researchers benefit from this work
 9 Future work
43
اساسی ترین سوال این فصل: چگونه با یک تحلیل آماری معتبرنشان دهیم که مطالعه ما اثربخشبوده است؟ 
تا انتهای فصل با ما همراه باشید

 6 Results
44

 Do not forget to mention sponsors as well
as colleagues who are not authors but e.g.
gave practical help with the experiment or
the analysis
 References
45

46
Tests of Statistical Significance

12/21/2018
2
توزيع نرمال
توزيع احتمال بسياري از پديده ها و اتفاقاتنرمال است و يا نرمال مدل مي شود.توزيع نرمال تنها به مقدار متوسط و انحراف از معيار وابسته است.
توزيع نرمال استاندارد

3
تابع توزيع تجمعيCumulative Distribution Function)
نمونه برداري و توزيع هاي نمونه ايميانگيننمونه𝑺𝒂𝒎𝒑𝒍𝒆 𝒎𝒆𝒂𝒏)  :برآوردي از ميانگين نامعلوم.واريانس نمونه𝑺𝒂𝒎𝒑𝒍𝒆 𝒗𝒂𝒓𝒊𝒂𝒏𝒄𝒆) :برآوردي ازواريانس نامعلوم.انحراف از استاندارد نمونه𝑺𝒂𝒎𝒑𝒍𝒆 𝒔𝒕𝒂𝒏𝒅𝒂𝒓𝒅 𝒅𝒆𝒗𝒊𝒂𝒕𝒊𝒐𝒏) :       برآوردي ازانحراف از استاندارد نامعلوم.

4
تابع توزيع احتمال𝒔𝒕𝒖𝒅𝒆𝒏𝒕- 𝒕 t – student distribution with kdegrees of freedom𝑘 =  𝑛 − 1
انحراف از معيار ميانگين هاStandard Deviation of the Means)

5
تابع توزيع احتمال𝒔𝒕𝒖𝒅𝒆𝒏𝒕- 𝒕 
Coverage factor;
مقايسه آماري نتايج آزمايش هاآزمون فرض(Hypothesis Testing)يك فرض آماري ادعايي در مورد يك يا چند جمعيت موردمطالعه است كه ممكن است درست يا نادرست باشد.برايبررسي فرض، يك آزمايش تصادفي انجام مي دهيم، اگر نتيجه آزمايش تفاوت “معني داري” با آنچه كه انتظار داريم، داشته باشد فرض را رد مي كنيم و در غير ا ين صورت آن را رد نمي كنيم )مي پذيريم (.ارائه يك فرض صفر و فرض مقابل؛بررسي رد يا عدم رد  فرض صفر؛اگر دﻻيل كافي براي رد شدن فرض صفر وجود داشته  باشد، فرض صفر رد مي شود.اگردﻻيل كافي براي رد شدن فرض صفر وجود نداشته  باشد، فرض صفر رد نمي شود.
فرض صفر فرض مقابل

6
روشهاي مقايسه آماري نتايج آزمايش ها٢- بازه اطمينان confidence interval)هرچند آزمون فرض، ابزاري بسيار مفيد در نتيجه گيري و تصميم گيري است،  ولي ارائه گر تمام نتايج مورد نظر نمي باشد.گاهي ما نتيجه آزمون فرض را مي دانيم ولي نمي دانيم تغييرات متغير مورد بررسي با چه درصد اطمينان و در چه محدوده اي قرار دارد.در روش بازه اطمينان، محدوده هاي تغييرات متغيرها در قالﺐ بازه هايي با درصد اطمينان مﺸﺨﺺ، بيان مي شود.𝑦ത−𝑢௣≤𝜇௬≤𝑦ത+𝑢௣𝜇௬=𝑦ത±𝑢௣     ( % p)آزمونفرضHypothesis Testing)آزمون فرض:انواع خطاها:هر دو نوع خطا بايستي در حد امكان مينيموم باشند.معموﻻً استفاده از تعريف توان آزمون𝑷𝒐𝒘𝒆𝒓 𝒐𝒇 𝒕𝒉𝒆 𝒕𝒆𝒔𝒕) ساده تر است:

7
مفاهيم𝜶  و𝜷  در آزمون فرض
𝒕𝐜𝝁𝟎𝝁𝟏
 :احتمال قبول فرض وقتي صحيح است.:  احتمال رد فرض وقتي غلط است.
:  احتمال رد فرض وقتي صحيح است.:  احتمال قبول  فرض وقتي غلط است.𝛽مقدار𝒑مقدار بحراني يا آستانه رد فرض صفر )سطح معناداري آزمون( است.كوچكترين سطح 𝛼 كه منجر به معنادار شدن اختﻼف مي گردد.با درصد اطمينان1 − 𝑝 × 100 مي توان فرض صفر را رد كرد.مقدار 𝑝 احتمال شانسي بودن  رد فرض صفر را نﺸان مي دهد.محاسبه مقدار 𝑝 همواره كار ساده اي نيست كه غالباً با سعي و خطا قابل حصول است و معموﻻً از طريق محاسبات نرم افزاري انجام مي گردد.

48

49

8
تعداد تكرار آزمايش مورد نياز جهت انجام آزمون فرضيكي از سواﻻتي كه همواره مطرح استاين است كه؛ تعداد تكرار در آزمايش جهت  انجام يك آزمون فرض قابل قبول چقدر است؟محاسبه تعداد تكرار آزمايش جهت انجام آزمون آماري فرض، وابسته به پاسخسواﻻت زير است؛١- رزولوشن )ميزان اختﻼف معني دار( در آزمايش چقدر است؟٢- پراكندگي )انحراف از معيار( آزمايش چقدر است؟٣- خطاهاي مطلوب نوع اول 𝜶 )سطح معناداري آزمون( و نوع دوم 𝜷 چقدر است؟تعداد تكرار آزمايش جهت انجام آزمون فرضفرض كنيد ادعا شده است عمر نوعي باطري ليتيوم ٠٠٠١ ساعت است.  طي مجموعه آزمايش هايي مي خواهيم درستي اين ادعا را بررسي كنيم.  با چه تعداد تكرار آزمايﺸي مي توان با ٥٩ درصد معناداري آزمون، با حداقل  رزولوشن ٥/٠ساعت اين ادعا را بررسي كرد. بر اساس تجربيات گذشته انحراف از استاندارد عمر باطري ها ٢ ساعت است.حل: ابتدا به سواﻻت زير پاسخ مي دهيم؛١- رزولوشن )ميزان اختﻼف معنادار( در آزمايش چقدر است؟0.5h  =Res٢- پراكندگي )انحراف از معيار( آزمايش چقدر است؟مطابق با تجربه: 𝒉 𝝈 = 𝟐٣- خطاهاي نوع اول  𝜶  )سطح معناداري آزمون( و نوع دوم 𝜷 چقدر است؟𝜶=𝟎.𝟎𝟓  )مطابق صورت مساله( و فرض مي كنيم: 𝜷=𝟎.𝟏𝟎

9
تعداد تكرار آزمايش جهت انجام آزمون فرضمعادله خطاي نوع اول(𝛼):از طريق جدول𝑍଴.଴ହ= 1.64معادله خطاي نوعدوم(𝛽):از طريق جدول𝑍଴.ଵ଴= 1.282از حل دستگاه دومعادله و دومجهول: تعداد تكرار مورد نياز: 𝑛 = 136.9 ≈ 137حد بحراني مقايسه:𝑌ത௖= 999.7 در آزمايش٧٣١ نمونه اگر عمر ميانگين كمتر از 999.7 ساعتبود فرض رد و در غير اين صورت فرض پذيرفته است.ଵ଴଴଴ିത೎ଶ௡ ⁄=1.645௒ത೎ିଽଽଽ.ହଶ௡ ⁄=1.282𝑍ఈ=𝑌௖− 𝜇𝜎𝑛 ⁄
انواع فرض هاي مقابل

47

10
آزمون 𝒕جامعه آماري با واريانسمعلوم:مقايسه ميانگين  با مقدار مشخص
مثالي از آزمون  𝒕جامعهآماري با واريانس معلوم:مقايسه ميانگين  با مقدار مشخصمي دانيم انحراف معيار قطر ميله هاي فوﻻدي𝜎 = 0.0001 𝑖𝑛 است. متوسط قطر يك نمونه تصادفي مﺸتمل بر 10 ميله را برابر 0.2545 𝑖𝑛 بدست آورده ايم. مايليم اين فرض را كه ميانگين واقعي قطر اين ميله ها برابر0.255 𝑖𝑛  است را آزمون كنيم؟حل:مجموعه آماري داراي توزيع نرمال است:از طريق جدول توزيع نرمال براي فرض صفر در سطح 95% : از آنجا كه Z଴= | − 15.81| > 𝑍଴.଴ଶହ = 1.96 بنابراين فرض صفر رد مي شود؛
Z଴=௫̅ିఓఙ/√௡ =଴.ଶହସହ.ଶହହ଴.଴଴଴ଵ/√ଵ଴ = −15.81𝑍ఈ ଶ⁄ = 𝑍଴.଴ଶହ = 1.96

11
آزمون 𝒕جامعه آماري با واريانسنامعلوم:مقايسه ميانگين  با مقدار مشخص
آزمون  𝒕 دوجامعه آماري با واريانس هاي معلوم :  مقايسه ميانگين ها

12
مثالآزمون  𝒕 دو جامعه آماري با واريانس هاي معلوم : مقايسه ميانگين هادوگروه مجزا، جهت تﺨمين دامنه شتاب در تستهاي ارتعاشي نتايج زير را بدست آورده اند:در سطح98% آيا اختﻼف ميانگين هاي دو جامعه آماري معني دار است؟گروه مشخصات گروه ١ ٢تعداد تست90 100ميانگين نمونه76𝑚/𝑠ଶ81𝑚/𝑠ଶانحراف از معيار نمونه8.2𝑚/𝑠ଶ7.6𝑚/𝑠ଶ
مثال:بازه اطمينان جهت مقايسه دو جامعه آماري حل: الف( دو جامعه آماري به اندازه كافي بزرگ است و مي توان نرمال فرض كرد.آزمون فرض: درصد اطمينان 98% معادل با خطاي 𝛼 =0.02 است. از طريق جدول خواهيم داشت؛از آنجاكه𝑍଴> 𝑍଴.଴ଵ    فرض برابري ميانگين ها با %98 اطيمنان رد مي شود.
𝑍଴=𝑦̅ଵ− 𝑦̅ଶ𝜎ଵଶ𝑛ଵ+𝜎ଶଶ𝑛ଶ   =76 − 818.2ଶ90+7.6ଶ100   = −4.34𝑍ఈ ଶ⁄= 𝑍଴.଴ଵ= 2.326اختﻼف ميانگين هاي نتايج دو گروه معني دار است.

13
آزمون 𝒕 دو جامعه آماري با واريانس هاي نامعلوم : مقايسه ميانگين هاواريانس هاي واقعي𝝈𝒊𝟐): نامعلوم واريانس هاي نمونه 𝑺𝒊𝟐): معلوم
آزمون برابري دو واريانسدر بسياري از موارد، واريانس هاي واقعي𝜎௜) نامعلوم و واريانس هاي نمونه 𝑆௜) معلوم هستند.در اين شرايط بايد برابري واريانس هاي واقعي از طريق آزمون مقايسه واريانس هاي نمونه 𝑆௜) انجام گردد.𝐻଴∶ 𝜎ଵଶ= 𝜎ଶଶ𝐻ଵ∶ 𝜎ଵଶ≠ 𝜎ଶଶ در اين شرايط بايد نسبت واريانس هاي نمونه ها محاسبه گردد:به دليل اينكه نسبت واريانس ها داراي توزيع 𝐹 است، آزمون فرض مقايسه واريانس ها تحت اين توزيع بررسي و تحليل مي شود.

15
مثالي از آزمونبرابري دو واريانسمهندسي واريانس ذاتي )خطاي رندوم( دو سيستم اندازه گيري را بررسي مي كند. تعداد نمونه هاي 𝑛ଵ= 11 و 𝑛ଶ= 10 و واريانس ها 𝑆ଵଶ= 14.5 و 𝑆ଶଶ= 10.8  . وي گمان مي كند كه سيستم١ واريانس بيﺸتري نسبت به سيستم٢ دارد.  با طرح ريزي يك آزمون فرض مناسﺐ وي را ياري كنيد؟
حل: ابتدا آزمون فرضي به صورت زير طرح مي كنيم؛𝐻଴∶ 𝜎ଵଶ= 𝜎ଶଶ𝐻ଵ∶ 𝜎ଵଶ> 𝜎ଶଶ سپس نسبت واريانس ها را محاسبه مي كنيم؛𝐹଴=𝑆ଵଶ𝑆ଶଶ=14.510.8= 1.34
مقدار 𝐹 در آزمون فرض مربوطه با ٥٩درصد اطمينان )٥درصد خطا(:                 𝐹଴.଴ହ,ଵ଴,ଽ= 3.14 از آنجاكه  𝐹଴(1.34) < 𝐹଴.଴ହ,ଵ଴,ଽ(3.14)، فرض صفر قابل رد نيست )پذيرفته مي شود(.گمان مهندس در مورد وجود اختﻼف معني دار در واريانس )خطاي رندوم( ذاتي دو دستگاه صحيح نيست.اختﻼف  واريانس هاي دو دستگاه معني دار نيست.

52

16
بازه اطمينان جهت تخمينميانگين يك جامعه آماري جامعه آماري نرمال با واريانس معلوم يا جامعه آماري با اندازه بزرگتﺨمين ميانگين جامعه آماري با درصد اطمينان%1 −𝛼؛فرم بازه اي:𝑍ఈ ଶ⁄ :از طريق جدول توزيع نرمال 𝜎௡: انحرافاز معيارفرم تلرانسي:𝑥̅−𝑍ఈ ଶ⁄𝜎௡𝑛 ≤𝜇≤𝑥̅+𝑍ఈ ଶ⁄𝜎௡𝑛 𝜇=𝑥̅±𝑍ఈ ଶ⁄𝜎௡𝑛 بازه اطمينان جهت تخمينميانگين يك جامعه آماري جامعه آماري محدود با واريانس نمونه معلومتﺨمين ميانگين جامعه آماري با درصد اطمينان%1 −𝛼؛فرم بازه اي:𝑡ఈ ଶ⁄,௡ିଵ :از طريق جدول توزيع𝑡𝑆௡: انحرافاز معيار نمونهفرم تلرانسي:𝑥̅−𝑡ఈ ଶ⁄,௡ିଵ𝑆௡𝑛 ≤𝜇≤𝑥̅+𝑡ఈ ଶ⁄,௡ିଵ𝑆௡𝑛 𝜇=𝑥̅±𝑡ఈ ଶ⁄,௡ିଵௌ೙௡      ( 1−𝛼 )%

17
مثال: بازه اطمينانمي دانيم انحراف معيار قطر ميله هاي فوﻻدي𝜎 = 0.001 𝑖𝑛 است. متوسط قطر يك نمونه تصادفي مﺸتمل بر 10 ميله را برابر 1.1525 𝑖𝑛 بدست آورده ايم.  مطلوب است يافتن بازه اطمينان 90% براي اندازه ميانگين واقعي قطر اين ميله ها؟  حل: مجموعه آماري داراي توزيع نرمال با واريانس معلوم است:از طريق جدول توزيع نرمال براي فرض صفر در سطح 90% :𝑍଴.଴ହ = 1.645بنابراين؛𝜇 = 𝑥̅ ± 𝑍ఈ ଶ⁄𝜎𝑛       90%𝜇=0.2545±1.6450.00110   90%→1.1520<𝜇<1.1530
بازه اطمينان جهت مقايسه دو جامعه آماريدو جامعه آماري نرماليا به اندازه كافي بزرگتعداد نمونه ها، ميانگين هاي نمونه و واريانس هاي دوجامعه آماري معلوم است.اختﻼف ميانگين هاي دو جامعه با درصد اطمينان%1 −𝛼؛فرم بازه اي:𝑍ఈ ଶ⁄ :از طريق جدول توزيع نرمالفرم تلرانسي:𝑦തଵ−𝑦തଶ−𝑍ఈ ଶ⁄ 𝜎௣≤𝜇ଵ−𝜇ଶ≤𝑦തଵ−𝑦തଶ+𝑍ఈ ଶ ⁄𝜎௣𝜇ଵ−𝜇ଶ=𝑦തଵ−𝑦തଶ±𝑍ఈ ଶ⁄𝜎௣𝜎௣=𝜎ଵଶ𝑛ଵ+𝜎ଶଶ𝑛ଶ

18
بازه اطمينان جهت مقايسه دو جامعه آماريدو جامعه آماري با واريانس هاي نامعلوم)دو جامعه آماري محدود(تعداد نمونه ها، ميانگين هاي نمونه و واريانس هاي نمونهدو جامعه آماري معلوم است.اختﻼف ميانگين هاي دو جامعه با درصد اطمينان%1 −𝛼؛فرم بازه اي:فرم تلرانسي:𝜇ଵ−𝜇ଶ=𝑦തଵ−𝑦തଶ±𝑡ఈ ଶ⁄, ௡భା௡మିଶ  𝑆መ௉  𝑺෡𝑷 =𝑛ଵ− 1𝑆ଵଶ+𝑛ଶ− 1𝑆ଶଶ𝑛ଵ+𝑛ଶ− 21𝑛ଵ+1𝑛ଶ  𝑦തଵ−𝑦തଶ−𝑡ఈ ଶ⁄, ௡భା௡మିଶ 𝑆መ௉≤𝜇ଵ−𝜇ଶ≤𝑦തଵ−𝑦തଶ+𝑡ఈ ଶ⁄, ௡భା௡మିଶ 𝑆መ௉  𝒕𝜶 𝟐⁄, 𝒏𝟏ା𝒏𝟐ି𝟐 : 𝑡ازطريق جدول توزيعمثال: بازه اطمينان جهت مقايسه دو جامعه آماري دوگروه مجزا، جهت تﺨمين دامنه شتاب در تستهاي ارتعاشي نتايج زير را بدست آورده اند:بازه اطمينان98% را براي اختﻼف بين ميانگين هاي دو دسته نتايج بيابيد؟در سطح98% آيا اختﻼف ميانگين هاي دو جامعه آماري معني دار است؟گروه مشخصات گروه ١ ٢تعداد تست90 100ميانگين76𝑚/𝑠ଶ81𝑚/𝑠ଶانحراف از معيار8.2𝑚/𝑠ଶ7.6𝑚/𝑠ଶ

19
مثال:بازه اطمينان جهت مقايسه دو جامعه آماري حل: الف( دو جامعه آماري به اندازه كافي بزرگ است و مي توان نرمال فرض كرد: درصد اطمينان 98% معادل با خطاي 𝛼 =0.02 است. از طريق جدول خواهيم داشت؛ميانگين نتايج گروه 2 حداقل به اندازه 2.2𝑚 𝑠ଶ⁄  بزرگتر از ميانگين نتايج گروه 1 است.ب ( چون بازه اطمينان شامل صفر نيست، فرض برابري ميانگين ها با %98 اطيمنان رد مي شود.
𝜇ଵ− 𝜇ଶ=𝑦തଵ− 𝑦തଶ± 𝑍ఈ ଶ⁄𝜎௣𝜎௣=ఙభమ௡భ+ఙమమ௡మ   =଼.ଶమଽ଴+଻.଺మଵ଴଴   = 1.15𝜇ଵ− 𝜇ଶ= −4.8 ± 2.7−7.5 ≤ 𝜇ଵ− 𝜇ଶ≤ −2.2𝑦തଵ− 𝑦തଶ= 76 − 81 = −4.8𝑍ఈ ଶ⁄= 𝑍଴.଴ଵ= 2.33اختﻼف ميانگين هاي نتايج دو گروه معني دار است.
تحليل واريانس : طرح تك عامليAnalysis of Variance (ANOVA):One Way

50

51

20
مدل ميانگين هاMeans Model)فرض كنيد𝑎 سطح از يك عامل را در يك آزمايش با يكديگر مقايسه كنيم:مدل ميانگين هاMeans Model)
مدلاثراتEffect Model)مدلميانگين ها با استفاده از رابطه 𝜇௜= 𝜇 + 𝜏௜   به صورت زير قابل بيان است:      به مدل حاصل” مدل اثرات” گفته مي شود.مولفههاي خطاي تصادفي داراي ميانگين صفر و واريانس 𝜎ଶ هستند؛𝜀௜௝~𝑁(0 , 𝜎ଶ) 𝜇௜~𝑁𝜇 + 𝜏௜ , 0𝑦௜௝~𝑁(𝜇 + 𝜏௜, 𝜎ଶ)
𝜇௜= 𝜇 + 𝜏௜

21
تحليلواريانس و آزمون فرضهدف: انجام آزمون هاي فرض براي مقايسه ميانگين هاي حاصل از سطوح مﺨتلف است.فرض: متغيرهاي تصادفي نرمال و مستقل با واريانس يكسان.   آزمون فرض براي مقايسه𝒂 سطح از يك عامل:
تجزيه مجموع مربعاتتغييرپذيري كل)مجموع مربعات كل(:واژه تحليل واريانس از تجزيه تغييرپذيري كل به دو مولفه گرفته شده است. 𝑎 :تعداد سطوح عامل𝑛 :تعداد تكرار𝑁 = 𝑎𝑛 :تعداد كل آزمايش هااگر𝑆𝑆் بر درجه آزادي يعني𝑁 − 1 تقسيم شود، واريانس نمونه كل را نتيجه مي دهد.مي توان اثبات كرد:بنابراين مي توان نوشت:

22
تجزيه مجموع مربعات
𝑵 = 𝒂𝒏
تجزيه مجموع مربعاتدرجات آزادي مجموع مربعات:واريانس هاي سطوح و خطا:
𝑎𝑛 − 1 = 𝑎𝑛 − 𝑎 = 𝑁 − 𝑎

23
تجزيه مجموع مربعاتمولفه هاي خطاي تصادفي داراي ميانگين صفر و واريانس 𝜎ଶ هستند.بنابراين واريانس خطاها (𝑀𝑆ா) 𝜎ଶ را برآورد مي كند.اگر ميانگين سطوح برابر باشد(𝜇௜=𝜇௝)؛آنگاهواريانس سطوح (𝑀𝑆்௥௘௔௧௠௘௡௧௦) برابر 𝑀𝑆ா يعني𝜎ଶ است.اگر ميانگين سطوح برابر نباشد (𝜇௜≠𝜇௝)؛ آنگاهواريانس سطوح (𝑀𝑆்௥௘௔௧௠௘௡௧௦) بزرگتر 𝑀𝑆ா يعني𝜎ଶ است.لذا آزمون برابري ميانگين سطوح مي تواند با مقايسه𝑀𝑆்௥௘௔௧௠௘௡௧௦ و𝑀𝑆ா انجام گردد.𝐹଴=𝑀𝑆்௥௘௔௧௠௘௡௧௦𝑀𝑆ாآزمون مقايسه ميانگينها با روش تحليل واريانس 
 𝑭𝟎 داراي توزيع𝑭 با درجه آزادي صورت𝒂 − 𝟏 و مﺨرج𝑵 − 𝒂 است.اگر𝑭𝟎> 𝑭𝜶,𝒂ି𝟏, 𝑵ି𝒂 باشد، فرض𝑯𝟎 رد و تفاوت معناداري بين ميانگين ها وجود دارد.اگر𝑭𝟎< 𝑭𝜶,𝒂ି𝟏, 𝑵ି𝒂 باشد، فرض𝑯𝟎 رد نمي شودو تفاوتي بين ميانگين ها وجود ندارد.براي تعيين احتمال خطاي رد شدن فرض𝐻଴ مي توان𝑝−𝑣𝑎𝑙𝑢𝑒  را تﺨمين زد.
آزمون مقايسه ميانگين ها:

24
جدول توزيع𝑭
مثال:آزمون مقايسه ميانگين ها با روش تحليل واريانس بررسي اثر قدرت فركانس راديوييRF) در چهار سطح و پنج تكرار بر نرخحك كاري پﻼسما بر روي مدارهاي مجتمع.

25
مثال:آزمون مقايسه ميانگين ها با روش تحليل واريانس محاسبات دستي مربوط به ميانگين مجموع مربعات:
مثال:آزمون مقايسه ميانگين ها با روش تحليل واريانس 
با فرض𝜶 = 𝟎.𝟎𝟓 توجه به𝑭𝜶,𝒂ି𝟏,𝑵ି𝒂 از طريق جدول مربوطه:چون𝑭𝟎> 𝑭𝟎.𝟎𝟓,𝟑,𝟏𝟔،فرض 𝑯𝟎 رد وتغيير قدرت فركانس راديويي در نرخ حك كاري تاثير معنا داري دارد.

26
بررسي كفايت مدلبراي بررسي كفايت مدل مورد استفاده بايستي مفروضات بررسي گردد:مفروضات مدل: ١- نرمال بودن٢- مستقل بودن ٣- ثابت بودن واريانس ها.براي بررسي مفروضات مي توان باقيمانده ها𝑅𝑒𝑠𝑖𝑑𝑢𝑎𝑙𝑠) را بررسي كرد:𝑦ො௜௝  برآوردي از مقدار مﺸاهده𝑦௜௝ است؛     بنابراين؛

27
بررسي فرض نرمال بودن
تشخيص داده هاي پرت با استاندارد سازي باقيمانده ها−3≤𝑑௜௝≤+3
بررسي مستقل بودن مشاهداتاگر تغييرات در نمودار باقيمانده ها بر اساس ترتيﺐ يا زمان آزمايش رفتار مﺸﺨﺺ صعودي يا نزولي را دنبال نكنند مﺸاهدات داراي استقﻼل قابل قبولي هستند.

28
بررسيثابت بودن واريانس مشاهداتاگر در نمودار باقيمانده ها بر اساس مقادير برازش شده )مقادير مورد انتظار در هر سطح 𝑦ො௜௝ يا ميانگين هر سطح )𝑦ത௜ȉ(( تغييرات مﺸابه باشد، واريانس ها برابرند.براي بررسي برابري واريانس ها مي توان از آزمون هاي فرض نيز استفاده كرد.
در صورت عدم برابري واريانس ها مي توان از برخي تبديﻼت استفاده نمود؛
بازه اطمينان ميانگين هاي سطوح مختلفتﺨمين ميانگين هاي هر سطح با درصد اطمينان%1 −𝛼؛فرم بازه اي:𝑡ఈ ଶ⁄,ேି௔ :از طريق جدول توزيع𝑡𝑀𝑆ா ∶ ميانگين مربعات خطا𝑛 ∶ تعداد تكرارفرم تلرانسي:𝑦ത௜ȉ−𝑡ఈ ଶ⁄,ேି௔𝑀𝑆ா𝑛 ≤𝜇௜≤𝑦ത௜ȉ+𝑡ఈ ଶ⁄,ேି௔𝑀𝑆ா𝑛 𝜇=𝑦ത௜ȉ±𝑡ఈଶ⁄,ேି௔𝑀𝑆ா𝑛      ( 1−𝛼 )%

29
مثال: بازه اطمينان ميانگين هاي سطوح مختلف𝑹𝑭 (𝑾) 𝒚ഥ𝒊ȉ𝑺𝒊𝟗𝟓% 𝑪𝑰160 551.20 20.02(533.88, 568.52)180 587.40 16.74(570.08, 604.72)200 625.40 20.53(608.08, 642.72)220707.0015.25(689.68,724.32)𝑁 = 20𝑎 = 4𝑛 = 5𝛼 = 0.05(95%) 𝑀𝑆ா= 333.70𝑡ఈ ଶ⁄,ேି௔= 𝑡଴.଴ଶହ,ଵ଺= 2.120𝜇 = 𝑦ത௜ȉ± 𝑡ఈ ଶ⁄,ேି௔𝑀𝑆ா𝑛      ( 1−𝛼 )%
مطلوب است يافتن بازه اطمينان٥٩% ميانگين هاي سطوح RF)  در مساله پﻼسما؟

53

E:\courses\LangChain Project\main root\data\scr_code02_mnist_cnn.ipynb

'code' cell: '["'''Trains a simple convnet on the MNIST dataset.\n", '\n', 'Gets to 99.25% test accuracy after 12 epochs\n', '(there is still a lot of margin for parameter tuning).\n', '16 seconds per epoch on a GRID K520 GPU.\n', "'''\n", '\n', '# from __future__ import print_function\n', 'import keras\n', 'from keras.datasets import mnist\n', 'from keras.models import Sequential\n', 'from keras.layers import Dense, Dropout, Flatten\n', 'from keras.layers import Conv2D, MaxPooling2D\n', 'from keras import backend as K\n', '\n', '#from keras.optimizers import gradient_descent_v2\n', '#from keras.utils import np_utils\n', 'import tensorflow as tf\n', '\n', '\n', 'batch_size = 16\n', 'num_classes = 10\n', 'epochs = 2\n', '\n', '# input image dimensions\n', 'img_rows, img_cols = 28, 28\n', '\n', '# the data, shuffled and split between train and test sets\n', '(x_train, y_train), (x_test, y_test) = mnist.load_data()\n', '\n', "if K.image_data_format() == 'channels_first':\n", '    x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols)\n', '    x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols)\n', '    input_shape = (1, img_rows, img_cols)\n', 'else:\n', '    x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)\n', '    x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)\n', '    input_shape = (img_rows, img_cols, 1)\n', '\n', 'print(input_shape)\n', "x_train = x_train.astype('float32')\n", "x_test = x_test.astype('float32')\n", 'x_train /= 255\n', 'x_test /= 255\n', "print('x_train shape:', x_train.shape)\n", "print(x_train.shape[0], 'train samples')\n", "print(x_test.shape[0], 'test samples')\n", '\n', '# convert class vectors to binary class matrices\n', 'y_train = tf.keras.utils.to_categorical(y_train, num_classes)\n', 'y_test = tf.keras.utils.to_categorical(y_test, num_classes)\n', '\n', 'model = Sequential()\n', 'model.add(keras.layers.RandomRotation((-0.05,0.05), fill_mode="nearest"))\n', 'model.add(keras.layers.GaussianNoise(0.1))\n', 'model.add(Conv2D(32, kernel_size=(3, 3),\n', "                 activation='relu',\n", '                 input_shape=input_shape))\n', "model.add(Conv2D(64, (3, 3), activation='relu'))\n", 'model.add(MaxPooling2D(pool_size=(2, 2)))\n', 'model.add(Dropout(0.25))\n', 'model.add(Flatten())\n', "model.add(Dense(128, activation='relu'))\n", 'model.add(Dropout(0.5))\n', "model.add(Dense(num_classes, activation='softmax'))\n", '\n', 'sch = tf.keras.optimizers.schedules.ExponentialDecay(initial_learning_rate=1e-2,\n', '                                                  decay_steps=10000,\n', '                                                  decay_rate=0.9)\n', '\n', 'model.compile(loss=keras.losses.categorical_crossentropy,\n', '              optimizer=tf.keras.optimizers.SGD(learning_rate=sch),\n', "              metrics=['accuracy','Recall','Precision'])\n", '\n', 'from keras.callbacks import TensorBoard, EarlyStopping\n', "TB = TensorBoard(log_dir='./logs')\n", 'ES = EarlyStopping(monitor="val_accuracy", patience=0, restore_best_weights=True)\n', '\n', 'model.fit(x_train, y_train,\n', '          batch_size=batch_size,\n', '          epochs=epochs,\n', '          verbose=1,\n', '          validation_data=(x_test, y_test),\n', '          callbacks=[TB, ES])\n', 'score = model.evaluate(x_test, y_test, verbose=0)\n', '\n', "model.save('my_model.h5')\n", 'del model\n', '\n', 'from keras.models import load_model\n', "model = load_model('my_model.h5')\n", '\n', "print('Test loss:', score[0])\n", "print('Test accuracy:', score[1])"]'

'code' cell: '['# ! tensorboard --logdir="./logs"   ## for visualization on your own computer']'

'code' cell: '['model.summary()\n', '\n', 'import tensorflow as tf\n', 'from tensorflow import keras\n', '#keras.utils.plot_model(model, "my_first_model_with_shape_info.png", show_shapes=True)\n', '\n', '#model.weights\n', '#model.weights[0]\n', '#model.weights[0][1][1][0][4]\n', '\n', '#print(model.layers)\n', '#print(model.layers[0])\n', '#print(model.layers[7].weights)\n', '#print(model.layers[7].get_weights())\n', 'print(model.layers[7].get_weights()[0][0][0])\n']'

'code' cell: '['from sklearn.metrics import ConfusionMatrixDisplay\n', 'from sklearn.metrics import confusion_matrix\n', 'import matplotlib.pyplot as plt\n', 'import numpy as np\n', '\n', 'y_pred = model.predict(x_test)\n', 'print(y_test.shape)\n', 'y_pred_plot=np.argmax(y_pred, axis=1)\n', 'y_test_plot=np.argmax(y_test, axis=1)\n', '\n', 'cm = confusion_matrix(y_test_plot, y_pred_plot)\n', '\n', 'disp = ConfusionMatrixDisplay(confusion_matrix=cm)\n', '#disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=labels)\n', '\n', 'disp.plot(cmap=plt.cm.Blues)\n', 'plt.show()\n', '\n', 'import seaborn as sns\n', "cmn = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n", 'fig, ax = plt.subplots(figsize=(10,10))\n', "sns.heatmap(cmn, annot=True, fmt='.2f')\n", "plt.ylabel('Actual')\n", "plt.xlabel('Predicted')\n", 'plt.show(block=False)\n']'

E:\courses\LangChain Project\main root\data\scr_code02_mnist_cnn.py

"""scr_code02_mnist_cnn.ipynb

    https://colab.research.google.com/drive/1y-b1KQTiq6SWlroKx-XTDC1pxCv8-jC0
"""

'''Trains a simple convnet on the MNIST dataset.

Gets to 99.25% test accuracy after 12 epochs
(there is still a lot of margin for parameter tuning).
16 seconds per epoch on a GRID K520 GPU.
'''

# from __future__ import print_function
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras import backend as K

#from keras.optimizers import gradient_descent_v2
#from keras.utils import np_utils

batch_size = 16
num_classes = 10
epochs = 2

# input image dimensions
img_rows, img_cols = 28, 28

# the data, shuffled and split between train and test sets
(x_train, y_train), (x_test, y_test) = mnist.load_data()

if K.image_data_format() == 'channels_first':
    x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols)
    x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols)
    input_shape = (1, img_rows, img_cols)
else:
    x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)
    x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)
    input_shape = (img_rows, img_cols, 1)

print(input_shape)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
print('x_train shape:', x_train.shape)
print(x_train.shape[0], 'train samples')
print(x_test.shape[0], 'test samples')

# convert class vectors to binary class matrices
y_train = tf.keras.utils.to_categorical(y_train, num_classes)
y_test = tf.keras.utils.to_categorical(y_test, num_classes)

model.add(keras.layers.RandomRotation((-0.05,0.05), fill_mode="nearest"))
model.add(keras.layers.GaussianNoise(0.1))
model.add(Conv2D(32, kernel_size=(3, 3),
                 activation='relu',
                 input_shape=input_shape))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dense(128, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))

sch = tf.keras.optimizers.schedules.ExponentialDecay(initial_learning_rate=1e-2,
                                                  decay_steps=10000,
                                                  decay_rate=0.9)

model.compile(loss=keras.losses.categorical_crossentropy,
              optimizer=tf.keras.optimizers.SGD(learning_rate=sch),
              metrics=['accuracy','Recall','Precision'])

from keras.callbacks import TensorBoard, EarlyStopping
TB = TensorBoard(log_dir='./logs')
ES = EarlyStopping(monitor="val_accuracy", patience=0, restore_best_weights=True)

model.fit(x_train, y_train,
          batch_size=batch_size,
          epochs=epochs,
          verbose=1,
          validation_data=(x_test, y_test),
          callbacks=[TB, ES])
score = model.evaluate(x_test, y_test, verbose=0)

model.save('my_model.h5')
del model

model = load_model('my_model.h5')

print('Test loss:', score[0])
print('Test accuracy:', score[1])

# ! tensorboard --logdir="./logs"   ## for visualization on your own computer

model.summary()

#keras.utils.plot_model(model, "my_first_model_with_shape_info.png", show_shapes=True)

#model.weights
#model.weights[0]
#model.weights[0][1][1][0][4]

#print(model.layers)
#print(model.layers[0])
#print(model.layers[7].weights)
#print(model.layers[7].get_weights())
print(model.layers[7].get_weights()[0][0][0])

y_pred = model.predict(x_test)
y_test_plot=np.argmax(y_test, axis=1)

E:\courses\LangChain Project\main root\data\scr_code03_opencv.py

"""scr_code03_openCV

    https://colab.research.google.com/drive/1kQoB_t5Twoy7FfnlQf4qz6eSju5eyqFF

In this tutorial, we will see how to getting started with python3 OpenCV v.4

# Read, Display, and Write an image
"""

import cv2
import urllib.request
print("OpenCV-Python Version %s" % cv2.__version__)

req = urllib.request.urlopen('https://raw.githubusercontent.com/opencv/opencv/master/samples/data/messi5.jpg')
arr = np.asarray(bytearray(req.read()), dtype=np.uint8)
messi = cv2.imdecode(arr, cv2.IMREAD_COLOR)
# messi = cv2.imread('messi5.png')

# display an image using matplotlib
# plt.imshow(img) shown an image with wrong colorspace
plt.imshow(cv2.cvtColor(messi, cv2.COLOR_BGR2RGB))

cv2.imwrite('messi.png',messi)

!ls

"""# Drawing Functions in OpenCV"""

# Create a black image
img = np.zeros((512,512,3), np.uint8)

# Draw a diagonal blue line with thickness of 5 px
img = cv2.line(img,(0,0),(511,511),(255,0,0),5)

# Drawing Rectangle
img = cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)

# Drawing Circle
img = cv2.circle(img,(447,63), 63, (0,0,255), -1)

# Drawing Ellipse
img = cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)

# Drawing Polygon
pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts = pts.reshape((-1,1,2))
img = cv2.polylines(img,[pts],True,(0,255,255))

# Adding Text to Images
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv2.LINE_AA)

plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))

"""# Basic Operations on Images"""

# Accessing and Modifying pixel values
px = messi[100,100]
print(px)
messi[100,100] = [255,255,255]
print(messi[100,100])

# Change pixel values
for i in range(5):
    for j in range(5):
        messi[50+i, 235+j] = (0, 255, 0)

# Accessing Image Properties
print(messi.shape)
print(messi.size)
print(messi.dtype)

# Image ROI
ball = messi[280:340, 330:390]
messi[273:333, 100:160] = ball

# Splitting and Merging Image Channels
b,g,r = cv2.split(messi)
messi = cv2.merge((b,g,r))

print(b)

b = img[:,:,0]

print(b)

messi[:,:,2] = 0

"""# Making Borders for Images (Padding)"""

BLUE = [255,0,0]

req = urllib.request.urlopen('https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png')
img1 = cv2.imdecode(arr, cv2.IMREAD_COLOR)

replicate = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REPLICATE)
reflect = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REFLECT)
reflect101 = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REFLECT_101)
wrap = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_WRAP)
constant= cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_CONSTANT,value=BLUE)

plt.subplot(231),plt.imshow(img1,'gray'),plt.title('ORIGINAL')
plt.subplot(232),plt.imshow(replicate,'gray'),plt.title('REPLICATE')
plt.subplot(233),plt.imshow(reflect,'gray'),plt.title('REFLECT')
plt.subplot(234),plt.imshow(reflect101,'gray'),plt.title('REFLECT_101')
plt.subplot(235),plt.imshow(wrap,'gray'),plt.title('WRAP')
plt.subplot(236),plt.imshow(constant,'gray'),plt.title('CONSTANT')

"""# Arithmetic Operations on Images"""

# Image Addition
req = urllib.request.urlopen('https://raw.githubusercontent.com/opencv/opencv/master/samples/data/ml.png')
img2 = cv2.flip(img1, 1)

dst = cv2.addWeighted(img1,0.7,img2,0.3,0)

plt.imshow(cv2.cvtColor(dst, cv2.COLOR_BGR2RGB))

"""# Image Thresholding"""

# Simple Thresholding
req = urllib.request.urlopen('https://raw.githubusercontent.com/opencv/opencv/master/samples/data/gradient.png')
img = cv2.imdecode(arr, cv2.IMREAD_COLOR)
ret,thresh1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
ret,thresh2 = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)
ret,thresh3 = cv2.threshold(img,127,255,cv2.THRESH_TRUNC)
ret,thresh4 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO)
ret,thresh5 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO_INV)

titles = ['Original Image','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV']
images = [img, thresh1, thresh2, thresh3, thresh4, thresh5]

for i in range(6):
    plt.subplot(2,3,i+1)
    plt.imshow(images[i],'gray')
    plt.title(titles[i])
    plt.xticks([]),plt.yticks([])

# Adaptive Thresholding
import ssl
ssl._create_default_https_context = ssl._create_unverified_context

req = urllib.request.urlopen('https://aishack.in/static/img/tut/sudoku-original.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.medianBlur(img,5)

ret,th1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
th2 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,\
            cv2.THRESH_BINARY,11,2)
th3 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,\

titles = ['Original Image', 'Global Thresholding (v = 127)',
            'Adaptive Mean Thresholding', 'Adaptive Gaussian Thresholding']
images = [img, th1, th2, th3]

for i in range(4):
    plt.subplot(2,2,i+1),plt.imshow(images[i],'gray')

"""# Geometric Transformations of Images"""

# Scaling
res = cv2.resize(messi,None,fx=2, fy=2, interpolation = cv2.INTER_CUBIC)
plt.imshow(cv2.cvtColor(res, cv2.COLOR_BGR2RGB))

# Rotation
img.shape
rows,cols = img.shape

M = cv2.getRotationMatrix2D((cols/2,rows/2),90,1)
dst = cv2.warpAffine(messi,M,(cols,rows))

"""<p align="center">
<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/math/f3a6bed945808a1f3a9df71b260f68f8e653af95.png"/>
</p>

<p align="center">
<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/math/91ff2b9b1db0760f4764631010749e594cdf5f5f.png"/>
</p>

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/math/383c254fc602c57a059a8296357f90fdf421aee7.png"/>
</p>

```python
# Affine Transformation sample
img = cv2.imread('drawing.png')
rows,cols,ch = img.shape

pts1 = np.float32([[50,50],[200,50],[50,200]])
pts2 = np.float32([[10,100],[200,50],[100,250]])

M = cv2.getAffineTransform(pts1,pts2)

dst = cv2.warpAffine(img,M,(cols,rows))

plt.subplot(121),plt.imshow(img),plt.title('Input')
plt.subplot(122),plt.imshow(dst),plt.title('Output')
```

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/affine.jpg"/>
</p>

```python
# Perspective Transformation sample
img = cv2.imread('sudokusmall.png')

pts1 = np.float32([[56,65],[368,52],[28,387],[389,390]])
pts2 = np.float32([[0,0],[300,0],[0,300],[300,300]])

M = cv2.getPerspectiveTransform(pts1,pts2)

dst = cv2.warpPerspective(img,M,(300,300))

```

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/perspective.jpg"/>
</p>

# Smoothing Images
"""

# 2D Convolution ( Image Filtering )

kernel = np.ones((5,5),np.float32)/25
dst = cv2.filter2D(img,-1,kernel)

plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.subplot(122),plt.imshow(dst),plt.title('Averaging')

# Image Blurring (Image Smoothing)
# Averaging

blur = cv2.blur(img,(5,5))

plt.subplot(122),plt.imshow(blur),plt.title('Blurred')

"""```python
# Gaussian Filtering
blur = cv2.GaussianBlur(img,(5,5),0)

# Median Filtering (highly effective in removing salt-and-pepper noise)
median = cv2.medianBlur(img,5)
```

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/median.jpg"/>
</p>

```python
# Bilateral Filtering
blur = cv2.bilateralFilter(img,9,75,75)
```

# Morphological Transformations

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/j.png"/>
</p>

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/opening.png"/>
</p>

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/closing.png"/>
</p>

# Image Gradients
##### Laplacian Derivatives
<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/math/2e4e208edcbed72b60c09a9e8eb8c00c4b21dbd6.png"/>
</p>

```python
img = cv2.imread('dave.jpg',0)

laplacian = cv2.Laplacian(img,cv2.CV_64F)
sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=5)
sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=5)

plt.subplot(2,2,1),plt.imshow(img,cmap = 'gray')
plt.title('Original'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,2),plt.imshow(laplacian,cmap = 'gray')
plt.title('Laplacian'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,3),plt.imshow(sobelx,cmap = 'gray')
plt.title('Sobel X'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,4),plt.imshow(sobely,cmap = 'gray')
plt.title('Sobel Y'), plt.xticks([]), plt.yticks([])

```

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/gradients.jpg"/>
</p>

# Edge Detection
"""

# Canny Edge Detection

edges = cv2.Canny(messi,100,200)

plt.subplot(121),plt.imshow(messi,cmap = 'gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(edges,cmap = 'gray')
plt.title('Edge Image'), plt.xticks([]), plt.yticks([])

"""# Contours

```python
im = cv2.imread('test.jpg')
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,127,255,0)
image, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
```

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/extremepoints.jpg"/>
</p>

# Histograms
"""

req = urllib.request.urlopen('https://upload.wikimedia.org/wikipedia/commons/8/8f/%24700%2C000_Home.jpg')

plt.figure()
plt.title('Photo'), plt.xticks([]), plt.yticks([])
plt.hist(img.ravel(),256,[0,256])
plt.title('Gray and RGB Histogram'), plt.xticks([]), plt.yticks([])
color = ('b','g','r')
for i,col in enumerate(color):
    histr = cv2.calcHist([img],[i],None,[256],[0,256])
    plt.plot(histr,color = col)
    plt.xlim([0,256])

"""# Histogram Equalization

```python
img = cv2.imread('wiki.jpg',0)

hist,bins = np.histogram(img.flatten(),256,[0,256])

cdf = hist.cumsum()
cdf_normalized = cdf * hist.max()/ cdf.max()

plt.plot(cdf_normalized, color = 'b')
plt.hist(img.flatten(),256,[0,256], color = 'r')
plt.xlim([0,256])
plt.legend(('cdf','histogram'), loc = 'upper left')
```

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/histeq_numpy1.jpg"/>
</p>

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/histeq_numpy2.jpg"/>
</p>

# 2D Histograms

```python
img = cv2.imread('home.jpg')
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
hist = cv2.calcHist( [hsv], [0, 1], None, [180, 256], [0, 180, 0, 256] )

plt.imshow(hist,interpolation = 'nearest')
```

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/2dhist_matplotlib.jpg"/>
</p>

# Fourier Transform
```python
img = cv2.imread('messi5.jpg',0)
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
magnitude_spectrum = 20*np.log(np.abs(fshift))

plt.subplot(121),plt.imshow(img, cmap = 'gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(magnitude_spectrum, cmap = 'gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
```

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/fft1.jpg"/>
</p>

```python
rows, cols = img.shape
crow,ccol = rows/2 , cols/2

# create a mask first, center square is 1, remaining all zeros
mask = np.zeros((rows,cols,2),np.uint8)
mask[crow-30:crow+30, ccol-30:ccol+30] = 1

# apply mask and inverse DFT
fshift = dft_shift*mask
f_ishift = np.fft.ifftshift(fshift)
img_back = cv2.idft(f_ishift)
img_back = cv2.magnitude(img_back[:,:,0],img_back[:,:,1])

plt.subplot(122),plt.imshow(img_back, cmap = 'gray')
```

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/fft4.jpg"/>
</p>

# Why Laplacian is a High Pass Filter?
"""

# simple averaging filter without scaling parameter
mean_filter = np.ones((3,3))

# creating a guassian filter
x = cv2.getGaussianKernel(5,10)
gaussian = x*x.T

# different edge detecting filters
# scharr in x-direction
scharr = np.array([[-3, 0, 3],
                   [-10,0,10],
                   [-3, 0, 3]])
# sobel in x direction
sobel_x= np.array([[-1, 0, 1],
                   [-2, 0, 2],
                   [-1, 0, 1]])
# sobel in y direction
sobel_y= np.array([[-1,-2,-1],
                   [0, 0, 0],
                   [1, 2, 1]])
# laplacian
laplacian=np.array([[0, 1, 0],
                    [1,-4, 1],
                    [0, 1, 0]])

filters = [mean_filter, gaussian, laplacian, sobel_x, sobel_y, scharr]
filter_name = ['mean_filter', 'gaussian','laplacian', 'sobel_x', \
                'sobel_y', 'scharr_x']
fft_filters = [np.fft.fft2(x) for x in filters]
fft_shift = [np.fft.fftshift(y) for y in fft_filters]
mag_spectrum = [np.log(np.abs(z)+1) for z in fft_shift]

    plt.subplot(2,3,i+1),plt.imshow(mag_spectrum[i],cmap = 'gray')
    plt.title(filter_name[i]), plt.xticks([]), plt.yticks([])

"""# Template Matching
```python
img_rgb = cv2.imread('mario.png')
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template = cv2.imread('mario_coin.png',0)
w, h = template.shape[::-1]

res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where( res >= threshold)
for pt in zip(*loc[::-1]):
    cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,0,255), 2)

cv2.imwrite('res.png',img_rgb)
```

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/res_mario.jpg"/>
</p>

# Understanding Features

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/feature_building.jpg"/>
</p>

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/feature_simple.png"/>
</p>

# Harris Corner Detection
```python
filename = 'chessboard.jpg'
img = cv2.imread(filename)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

gray = np.float32(gray)
dst = cv2.cornerHarris(gray,2,3,0.04)

#result is dilated for marking the corners, not important
dst = cv2.dilate(dst,None)

# Threshold for an optimal value, it may vary depending on the image.
img[dst>0.01*dst.max()]=[0,0,255]

cv2.imshow('dst',img)
if cv2.waitKey(0) & 0xff == 27:
    cv2.destroyAllWindows()
```

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/harris_result.jpg"/>
</p>

# SIFT (Scale-Invariant Feature Transform)
```python
gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

sift = cv2.SIFT()
kp = sift.detect(gray,None)

img=cv2.drawKeypoints(gray,kp)

cv2.imwrite('sift_keypoints.jpg',img)
```

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/sift_keypoints.jpg"/>
</p>

# Feature Matching
```python
# Brute-Force Matching with ORB Descriptors
img1 = cv2.imread('box.png',0)          # queryImage
img2 = cv2.imread('box_in_scene.png',0) # trainImage

# Initiate SIFT detector
orb = cv2.ORB()

# find the keypoints and descriptors with SIFT
kp1, des1 = orb.detectAndCompute(img1,None)
kp2, des2 = orb.detectAndCompute(img2,None)

# create BFMatcher object
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)

# Match descriptors.
matches = bf.match(des1,des2)

# Sort them in the order of their distance.
matches = sorted(matches, key = lambda x:x.distance)

# Draw first 10 matches.
img3 = cv2.drawMatches(img1,kp1,img2,kp2,matches[:10], flags=2)

plt.imshow(img3),plt.show()
```

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/matcher_result1.jpg"/>
</p>

```python
# Brute-Force Matching with SIFT Descriptors and Ratio Test
import cv2
from matplotlib import pyplot as plt

kp1, des1 = sift.detectAndCompute(img1,None)
kp2, des2 = sift.detectAndCompute(img2,None)

# BFMatcher with default params
bf = cv2.BFMatcher()
matches = bf.knnMatch(des1,des2, k=2)

# Apply ratio test
good = []
for m,n in matches:
    if m.distance < 0.75*n.distance:
        good.append([m])

# cv2.drawMatchesKnn expects list of lists as matches.
img3 = cv2.drawMatchesKnn(img1,kp1,img2,kp2,good,flags=2)

```

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/matcher_result2.jpg"/>
</p>

# Optical Flow
```python
# Lucas-Kanade Optical Flow
cap = cv2.VideoCapture('slow.flv')

# params for ShiTomasi corner detection
feature_params = dict( maxCorners = 100,
                       qualityLevel = 0.3,
                       minDistance = 7,
                       blockSize = 7 )

# Parameters for lucas kanade optical flow
lk_params = dict( winSize  = (15,15),
                  maxLevel = 2,
                  criteria = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 0.03))

# Create some random colors
color = np.random.randint(0,255,(100,3))

# Take first frame and find corners in it
ret, old_frame = cap.read()
old_gray = cv2.cvtColor(old_frame, cv2.COLOR_BGR2GRAY)
p0 = cv2.goodFeaturesToTrack(old_gray, mask = None, **feature_params)

# Create a mask image for drawing purposes
mask = np.zeros_like(old_frame)

while(1):
    ret,frame = cap.read()
    frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # calculate optical flow
    p1, st, err = cv2.calcOpticalFlowPyrLK(old_gray, frame_gray, p0, None, **lk_params)

    # Select good points
    good_new = p1[st==1]
    good_old = p0[st==1]

    # draw the tracks
    for i,(new,old) in enumerate(zip(good_new,good_old)):
        a,b = new.ravel()
        c,d = old.ravel()
        mask = cv2.line(mask, (a,b),(c,d), color[i].tolist(), 2)
        frame = cv2.circle(frame,(a,b),5,color[i].tolist(),-1)
    img = cv2.add(frame,mask)

    cv2.imshow('frame',img)
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break

    # Now update the previous frame and previous points
    old_gray = frame_gray.copy()
    p0 = good_new.reshape(-1,1,2)

```

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/opticalflow_lk.jpg"/>
</p>

```python
# Dense Optical Flow
import cv2
cap = cv2.VideoCapture("vtest.avi")

ret, frame1 = cap.read()
prvs = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY)
hsv = np.zeros_like(frame1)
hsv[...,1] = 255

while(1):
    ret, frame2 = cap.read()
    next = cv2.cvtColor(frame2,cv2.COLOR_BGR2GRAY)

    flow = cv2.calcOpticalFlowFarneback(prvs,next, None, 0.5, 3, 15, 3, 5, 1.2, 0)

    mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1])
    hsv[...,0] = ang*180/np.pi/2
    hsv[...,2] = cv2.normalize(mag,None,0,255,cv2.NORM_MINMAX)
    rgb = cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR)

    cv2.imshow('frame2',rgb)
    if k == 27:
        break
    elif k == ord('s'):
        cv2.imwrite('opticalfb.png',frame2)
        cv2.imwrite('opticalhsv.png',rgb)
    prvs = next

```

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/opticalfb.jpg"/>
</p>

# Background Subtraction
```python
# BackgroundSubtractorMOG
cap = cv2.VideoCapture('vtest.avi')

fgbg = cv2.createBackgroundSubtractorMOG()

while(1):

    fgmask = fgbg.apply(frame)

    cv2.imshow('frame',fgmask)
    if k == 27:
        break

```

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/resframe.jpg"/>
</p>

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/resmog.jpg"/>
</p>

# Depth Map from Stereo Images
```python
imgL = cv2.imread('tsukuba_l.png',0)
imgR = cv2.imread('tsukuba_r.png',0)

stereo = cv2.createStereoBM(numDisparities=16, blockSize=15)
disparity = stereo.compute(imgL,imgR)
plt.imshow(disparity,'gray')
```

<img src="https://opencv-python-tutroals.readthedocs.io/en/latest/_images/disparity_map.jpg"/>
</p>

Author : [FarrokhKarimi](https://zil.ink/farrokhkarimi)  
Reference : [opencv.org](https://opencv.org/)
"""

'code' cell: '['import keras\n', 'from keras import Model\n', 'from keras.layers import Flatten, Dense\n', 'from keras.applications.vgg16 import VGG16\n', 'from keras.datasets import mnist, cifar100\n', 'from keras import backend as K\n', '\n', '#from keras.optimizers import gradient_descent_v2\n', '#from keras.utils import np_utils\n', 'import tensorflow as tf\n', '\n', 'batch_size = 16\n', 'num_classes = 100\n', 'epochs = 10\n', '\n', '# input image dimensions\n', 'img_rows, img_cols = 32, 32\n', '\n', '# the data, shuffled and split between train and test sets\n', '(x_train, y_train), (x_test, y_test) = cifar100.load_data()\n', '\n', "if K.image_data_format() == 'channels_first':\n", '    x_train = x_train.reshape(x_train.shape[0], 3, img_rows, img_cols)\n', '    x_test = x_test.reshape(x_test.shape[0], 3, img_rows, img_cols)\n', '    input_shape = (3, img_rows, img_cols)\n', 'else:\n', '    x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 3)\n', '    x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 3)\n', '    input_shape = (img_rows, img_cols, 3)\n', '\n', "x_train = x_train.astype('float32')\n", "x_test = x_test.astype('float32')\n", 'x_train /= 255\n', 'x_test /= 255\n', "print('x_train shape:', x_train.shape)\n", "print(x_train.shape[0], 'train samples')\n", "print(x_test.shape[0], 'test samples')\n", '\n', '# convert class vectors to binary class matrices\n', 'y_train = tf.keras.utils.to_categorical(y_train, num_classes)\n', 'y_test = tf.keras.utils.to_categorical(y_test, num_classes)\n', '\n', '\n', 'vgg = VGG16(include_top=False,\n', '                weights="imagenet",\n', '                input_shape=input_shape,\n', '                classes=num_classes,\n', '                classifier_activation="softmax")\n', 'vgg.trainable = False\n', 'out = Flatten()(vgg.output)\n', 'out = Dense(128)(out)\n', "out = Dense(num_classes, activation='softmax')(out)\n", '\n', 'model = Model(inputs=vgg.input, outputs=out)\n', 'model.summary()\n', '\n', 'sch = tf.keras.optimizers.schedules.ExponentialDecay(initial_learning_rate=1e-2,\n', '                                                  decay_steps=10000,\n', '                                                  decay_rate=0.9)\n', '\n', 'model.compile(loss=keras.losses.categorical_crossentropy,\n', '              optimizer=tf.keras.optimizers.SGD(learning_rate=sch),\n', "              metrics=['accuracy','Recall','Precision'])\n", '\n', 'from keras.callbacks import TensorBoard, EarlyStopping\n', "TB = TensorBoard(log_dir='./logs')\n", 'ES = EarlyStopping(monitor="val_accuracy", patience=0, restore_best_weights=True)\n', '\n', 'model.fit(x_train, y_train,\n', '          batch_size=batch_size,\n', '          epochs=epochs,\n', '          verbose=1,\n', '          validation_data=(x_test, y_test),\n', '          callbacks=[TB])\n', 'score = model.evaluate(x_test, y_test, verbose=0)\n', '\n', "print('Test loss:', score[0])\n", "print('Test accuracy:', score[1])\n"]'

"""scr_code04_vgg16_cifar100_transfer_learning.ipynb

    https://colab.research.google.com/drive/1_BMGN4QMFebpoidAy_3LrHI05QQ5W-ql
"""

from keras import Model
from keras.layers import Flatten, Dense
from keras.applications.vgg16 import VGG16
from keras.datasets import mnist, cifar100

num_classes = 100
epochs = 10

img_rows, img_cols = 32, 32

(x_train, y_train), (x_test, y_test) = cifar100.load_data()

    x_train = x_train.reshape(x_train.shape[0], 3, img_rows, img_cols)
    x_test = x_test.reshape(x_test.shape[0], 3, img_rows, img_cols)
    input_shape = (3, img_rows, img_cols)
else:
    x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 3)
    x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 3)
    input_shape = (img_rows, img_cols, 3)

vgg = VGG16(include_top=False,
                weights="imagenet",
                input_shape=input_shape,
                classes=num_classes,
                classifier_activation="softmax")
vgg.trainable = False
out = Flatten()(vgg.output)
out = Dense(128)(out)
out = Dense(num_classes, activation='softmax')(out)

model = Model(inputs=vgg.input, outputs=out)

          callbacks=[TB])

'markdown' cell: '['# Transfer Learning tutorial:\n', '> How to use pretrained models\n', '\n', '\n', '> A simple implementation of transfer learning on MNIST dataset\n', '\n', '\n', '> How to load data in google colab\n', '\n', '\n', '\n', '\n', '\n']'

'markdown' cell: '['First, we have to import required libreries:']'

'code' cell: '['import numpy as np\n', 'import tensorflow as tf\n', 'import matplotlib.pyplot as plt\n', 'import matplotlib.mlab as mlb\n', 'import cv2\n', 'from sklearn.preprocessing import OneHotEncoder\n']'

'markdown' cell: '['In this code, the MNIST dataset is chosen. We can upload this dataset with a simple line of code:\n', '\n']'

'code' cell: '['(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()\n', '#normalizing\n', 'x_train=x_train/255\n', 'x_test=x_test/255']'

'code' cell: '['print("Number of training data: {} \\nNumber of test data: {}\\nsize of each picture: ({},{})".format(x_train.shape[0],x_test.shape[0],x_train.shape[1],x_train.shape[2]))']'

'markdown' cell: '['Some samples of our data can be visualized by matplotlib as follows:']'

'code' cell: '['for i in range(9):\n', '\tplt.subplot(330 + 1 + i)\n', "\tplt.imshow(x_train[i], cmap=plt.get_cmap('gray'))\n", 'plt.show()']'

'markdown' cell: '['We should notice that our labels are integers in the range 0-9 and are not one-hot vectors, which is necessary for training. So, we should convert our labels to one-hot vector in this step. In order to do this, one way is to use sklearn library:']'

'code' cell: '['#convert training data to single channel\n', 'x_train = x_train.reshape((x_train.shape[0], 28, 28, 1))\n', 'x_test = x_test.reshape((x_test.shape[0], 28, 28, 1))\n', '### One hot encoding\n', 'onehot_encoder = OneHotEncoder(sparse=False)\n', 'y_train_1hot = onehot_encoder.fit_transform(y_train.reshape(len(y_train), 1))\n', 'y_test_1hot = onehot_encoder.fit_transform(y_test.reshape(len(y_test), 1))']'

'markdown' cell: '['many pre-trained models are available in Keras. You can find them at https://keras.io/api/applications/ in detail. Here, the VGG16 network is chosen. To upload this network, we have to use the following line of code, but ensure that *include_top=False* is set to avoid including fully connected layers at the top of the network. The input shape should also be determined (our pictures are (28,28,1)).']'

'code' cell: '['VGG_model=tf.keras.applications.VGG16(include_top=False,weights="imagenet",input_shape=(32,32,3))']'

'markdown' cell: '["The VGG16 model, just allows inputs with 3 channels and a minimum size of (32,32), So we will modify our pictures later in the network to fulfill this requirement. When the model is downloaded, we should freeze the convolutional layers' weights and add extra dense layers and dropouts for training. We also resize our input to the network to (32,32) and repeat it three times, so the final input to the VGG model will be (32,32,3), which satisfies the input shape limit. The function below will handle the mentioned procedures."]'

'code' cell: '['def get_final_model(base_model,dropout,class_layers,num_classes):\n', '    input_1=tf.keras.Input(shape=(28,28,1))\n', '    input_2=tf.keras.layers.Resizing(32, 32)(input_1)\n', '    input_3=tf.keras.layers.Concatenate()([input_2,input_2,input_2])\n', '    final_conv=base_model(input_3)\n', '\n', '    for layer in base_model.layers:\n', '        layer.trainable=False\n', '\n', '    layer=tf.keras.layers.Flatten()(final_conv)\n', '    drop=tf.keras.layers.Dropout(dropout)(layer)\n', '\n', '    for nodes in class_layers:\n', '        layer=tf.keras.layers.Dense(nodes,activation=tf.keras.layers.LeakyReLU(alpha=0.3))(drop)\n', '        drop=tf.keras.layers.Dropout(dropout)(layer)\n', '\n', "    output=tf.keras.layers.Dense(num_classes,'softmax')(drop)\n", '    final_model=tf.keras.Model(inputs=input_1,outputs=output)\n', '\n', '    return final_model']'

'markdown' cell: '["Now, it's time to create the model and compile it. You can see the architecture of the final model and the number of the parameters. Also a graphical demonstration of the model is provided."]'

'code' cell: '['#Defining full model\n', 'final_model=get_final_model(VGG_model,0.3,[64,32,32],10)\n', 'final_model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=2e-3,amsgrad=True),loss="categorical_crossentropy",metrics=["accuracy",tf.keras.metrics.FalseNegatives(),tf.keras.metrics.Recall(),tf.keras.metrics.Precision()])\n', "earlystopping=tf.keras.callbacks.EarlyStopping(monitor='val_loss',patience=5,verbose=1,restore_best_weights=True)\n", 'final_model.summary()']'

'code' cell: '['tf.keras.utils.plot_model(final_model, show_shapes=True, show_layer_names=False, dpi=70)']'

'code' cell: '['final_model.fit(x_train,y_train_1hot,epochs=6,validation_split = 0.1,callbacks=[earlystopping],batch_size=128)']'

'markdown' cell: '['after the model is trained, we should evaluate the performance of the model on the test data. we can do that as follows:']'

'code' cell: '['final_model.evaluate(x_test,y_test_1hot)']'

'markdown' cell: '['we can see the predictions of the model and the actual values for some test data that model predicted the class with low certainty.']'

'code' cell: '['def plot_image(i, predictions_array, true_label, img):\n', '  plt.xticks([])\n', '  plt.yticks([])\n', "  plt.imshow(img[i,:,:], interpolation='none', cmap='gray')\n", '  predicted_label = np.argmax(predictions_array)\n', '  b=true_label[i]\n', '  plt.xlabel(b)\n', '\n', 'def plot_value_array(i, predictions_array, true_label):\n', '  true_label = true_label[i]\n', '  plt.grid(False)\n', '  predictions_array=predictions_array.reshape(10,)\n', '  plt.xticks(range(10))\n', '  plt.yticks([0,0.25,0.5,0.75,1])\n', '  thisplot = plt.bar(range(10), predictions_array, color="#777777")\n', '  plt.ylim([0, 1])\n', '  predicted_label = np.argmax(predictions_array)\n', "  a='false prediction'\n", '  if predicted_label == true_label:\n', "        a='true prediction'\n", "  thisplot[predicted_label].set_color('red')\n", "  thisplot[true_label].set_color('blue')\n", '  print(a)']'

'code' cell: '['Predictions=final_model.predict(x_test)\n', 'a=np.zeros((x_test.shape[0],1))\n', 'index=[]\n', 'for i in range(x_test.shape[0]):\n', '  if np.max(Predictions[i]) < 0.60:\n', '    index.append(i)\n', '\n', 'img=x_test.reshape((x_test.shape[0],28,28))\n', '\n', 'for i in index[0:10]:\n', '  plt.figure(figsize=(6,3))\n', '  plt.subplot(1,2,1)\n', '  plot_image(i, final_model.predict(x_test[i].reshape(1,28,28,1)), y_test,img)\n', '  plt.subplot(1,2,2)\n', '  plot_value_array(i,final_model.predict(x_test[i].reshape(1,28,28,1)), y_test)\n', '  plt.show()']'

'markdown' cell: '['# Uploading custom datasets from your computer to colab:']'

'markdown' cell: '['When we want to work with our dataset in google colab, first, we need to upload our data to Google Drive. Then as follows, we will mount our google drive.']'

'markdown' cell: '['Here, we will load a small part of the cats and dogs Kaggle dataset. After we upload our data to the google drive, we should create a list of the names of the pictures in the directory: (dataset is available at https://www.microsoft.com/en-us/download/details.aspx?id=54765)\n', '\n', '\n']'

'code' cell: '['from os import listdir\n', 'from os.path import isfile, join\n', 'Cats_folder_path="/content/drive/MyDrive/sample_kaggle/Cat"\n', 'Dogs_folder_path="/content/drive/MyDrive/sample_kaggle/Dog"\n', 'Cats = [f for f in listdir(Cats_folder_path) if isfile(join(Cats_folder_path, f))]\n', 'Dogs = [f for f in listdir(Dogs_folder_path) if isfile(join(Dogs_folder_path, f))]']'

'markdown' cell: '['now we will open pictures using Opencv and save them in the form of matrices.\n', '\n', '\n']'

'code' cell: '['img=[]\n', 'for i in range(len(Cats)):\n', '    img.append(cv2.imread(join(Cats_folder_path, Cats[i])))\n', '    img.append(cv2.imread(join(Dogs_folder_path, Dogs[i])))\n']'

'markdown' cell: '['Besides matplotlib, we can use opencv to visualize our pictures too:']'

'code' cell: '['from google.colab.patches import cv2_imshow\n', 'cv2_imshow(img[6])']'

'markdown' cell: '['now everything is ready and our pictures are uploaded succesfully!']'

E:\courses\LangChain Project\main root\data\scr_code05_transferlearning_mnist.py

"""scr_code05_TransferLearning_mnist.ipynb

    https://colab.research.google.com/drive/1441PPok_Yioi3DUHPPEfE7ZJyOIFJpge

# Transfer Learning tutorial:
> How to use pretrained models

> A simple implementation of transfer learning on MNIST dataset

> How to load data in google colab

First, we have to import required libreries:
"""

import matplotlib.mlab as mlb
import cv2
from sklearn.preprocessing import OneHotEncoder

"""In this code, the MNIST dataset is chosen. We can upload this dataset with a simple line of code:

"""

(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
#normalizing
x_train=x_train/255
x_test=x_test/255

print("Number of training data: {} \nNumber of test data: {}\nsize of each picture: ({},{})".format(x_train.shape[0],x_test.shape[0],x_train.shape[1],x_train.shape[2]))

"""Some samples of our data can be visualized by matplotlib as follows:"""

for i in range(9):
	plt.subplot(330 + 1 + i)
	plt.imshow(x_train[i], cmap=plt.get_cmap('gray'))

"""We should notice that our labels are integers in the range 0-9 and are not one-hot vectors, which is necessary for training. So, we should convert our labels to one-hot vector in this step. In order to do this, one way is to use sklearn library:"""

#convert training data to single channel
x_train = x_train.reshape((x_train.shape[0], 28, 28, 1))
x_test = x_test.reshape((x_test.shape[0], 28, 28, 1))
### One hot encoding
onehot_encoder = OneHotEncoder(sparse=False)
y_train_1hot = onehot_encoder.fit_transform(y_train.reshape(len(y_train), 1))
y_test_1hot = onehot_encoder.fit_transform(y_test.reshape(len(y_test), 1))

"""many pre-trained models are available in Keras. You can find them at https://keras.io/api/applications/ in detail. Here, the VGG16 network is chosen. To upload this network, we have to use the following line of code, but ensure that *include_top=False* is set to avoid including fully connected layers at the top of the network. The input shape should also be determined (our pictures are (28,28,1))."""

VGG_model=tf.keras.applications.VGG16(include_top=False,weights="imagenet",input_shape=(32,32,3))

"""The VGG16 model, just allows inputs with 3 channels and a minimum size of (32,32), So we will modify our pictures later in the network to fulfill this requirement. When the model is downloaded, we should freeze the convolutional layers' weights and add extra dense layers and dropouts for training. We also resize our input to the network to (32,32) and repeat it three times, so the final input to the VGG model will be (32,32,3), which satisfies the input shape limit. The function below will handle the mentioned procedures."""

def get_final_model(base_model,dropout,class_layers,num_classes):
    input_1=tf.keras.Input(shape=(28,28,1))
    input_2=tf.keras.layers.Resizing(32, 32)(input_1)
    input_3=tf.keras.layers.Concatenate()([input_2,input_2,input_2])
    final_conv=base_model(input_3)

    for layer in base_model.layers:
        layer.trainable=False

    layer=tf.keras.layers.Flatten()(final_conv)
    drop=tf.keras.layers.Dropout(dropout)(layer)

    for nodes in class_layers:
        layer=tf.keras.layers.Dense(nodes,activation=tf.keras.layers.LeakyReLU(alpha=0.3))(drop)
        drop=tf.keras.layers.Dropout(dropout)(layer)

    output=tf.keras.layers.Dense(num_classes,'softmax')(drop)
    final_model=tf.keras.Model(inputs=input_1,outputs=output)

    return final_model

"""Now, it's time to create the model and compile it. You can see the architecture of the final model and the number of the parameters. Also a graphical demonstration of the model is provided."""

#Defining full model
final_model=get_final_model(VGG_model,0.3,[64,32,32],10)
final_model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=2e-3,amsgrad=True),loss="categorical_crossentropy",metrics=["accuracy",tf.keras.metrics.FalseNegatives(),tf.keras.metrics.Recall(),tf.keras.metrics.Precision()])
earlystopping=tf.keras.callbacks.EarlyStopping(monitor='val_loss',patience=5,verbose=1,restore_best_weights=True)
final_model.summary()

tf.keras.utils.plot_model(final_model, show_shapes=True, show_layer_names=False, dpi=70)

final_model.fit(x_train,y_train_1hot,epochs=6,validation_split = 0.1,callbacks=[earlystopping],batch_size=128)

"""after the model is trained, we should evaluate the performance of the model on the test data. we can do that as follows:"""

final_model.evaluate(x_test,y_test_1hot)

"""we can see the predictions of the model and the actual values for some test data that model predicted the class with low certainty."""

def plot_image(i, predictions_array, true_label, img):
  plt.xticks([])
  plt.yticks([])
  plt.imshow(img[i,:,:], interpolation='none', cmap='gray')
  predicted_label = np.argmax(predictions_array)
  b=true_label[i]
  plt.xlabel(b)

def plot_value_array(i, predictions_array, true_label):
  true_label = true_label[i]
  plt.grid(False)
  predictions_array=predictions_array.reshape(10,)
  plt.xticks(range(10))
  plt.yticks([0,0.25,0.5,0.75,1])
  thisplot = plt.bar(range(10), predictions_array, color="#777777")
  plt.ylim([0, 1])
  a='false prediction'
  if predicted_label == true_label:
        a='true prediction'
  thisplot[predicted_label].set_color('red')
  thisplot[true_label].set_color('blue')
  print(a)

Predictions=final_model.predict(x_test)
a=np.zeros((x_test.shape[0],1))
index=[]
for i in range(x_test.shape[0]):
  if np.max(Predictions[i]) < 0.60:
    index.append(i)

img=x_test.reshape((x_test.shape[0],28,28))

for i in index[0:10]:
  plt.figure(figsize=(6,3))
  plt.subplot(1,2,1)
  plot_image(i, final_model.predict(x_test[i].reshape(1,28,28,1)), y_test,img)
  plt.subplot(1,2,2)
  plot_value_array(i,final_model.predict(x_test[i].reshape(1,28,28,1)), y_test)
  plt.show()

"""# Uploading custom datasets from your computer to colab:

When we want to work with our dataset in google colab, first, we need to upload our data to Google Drive. Then as follows, we will mount our google drive.
"""

"""Here, we will load a small part of the cats and dogs Kaggle dataset. After we upload our data to the google drive, we should create a list of the names of the pictures in the directory: (dataset is available at https://www.microsoft.com/en-us/download/details.aspx?id=54765)

"""

from os import listdir
from os.path import isfile, join
Cats_folder_path="/content/drive/MyDrive/sample_kaggle/Cat"
Dogs_folder_path="/content/drive/MyDrive/sample_kaggle/Dog"
Cats = [f for f in listdir(Cats_folder_path) if isfile(join(Cats_folder_path, f))]
Dogs = [f for f in listdir(Dogs_folder_path) if isfile(join(Dogs_folder_path, f))]

"""now we will open pictures using Opencv and save them in the form of matrices.

"""

img=[]
for i in range(len(Cats)):
    img.append(cv2.imread(join(Cats_folder_path, Cats[i])))
    img.append(cv2.imread(join(Dogs_folder_path, Dogs[i])))

"""Besides matplotlib, we can use opencv to visualize our pictures too:"""

from google.colab.patches import cv2_imshow
cv2_imshow(img[6])

"""now everything is ready and our pictures are uploaded succesfully!"""

E:\courses\LangChain Project\main root\data\scr_code08_RNN_LSTM_mnist.ipynb

'code' cell: '['from keras.models import Sequential\n', 'from keras.layers import LSTM, Dense, Activation, SimpleRNN , Dropout\n', 'from keras.datasets import mnist\n', '#from keras.utils import np_utils\n', '#from tensorflow.keras.utils import to_categorical, plot_model\n', 'import matplotlib.pyplot as plt\n', 'import numpy as np\n', 'import tensorflow as tf\n', '\n', '# Hyper parameters\n', 'batch_size = 128\n', 'nb_epoch = 2\n', 'dropout = 0.2\n', '\n', '# Parameters for MNIST dataset\n', 'img_rows, img_cols = 28, 28\n', 'nb_classes = 10\n', '\n', '# Parameters for LSTM network\n', 'nb_lstm_outputs = 128\n', 'units=nb_lstm_outputs\n', 'nb_time_steps = img_rows\n', 'dim_input_vector = img_cols\n', '# Load MNIST dataset\n', '(X_train, y_train), (X_test, y_test) = mnist.load_data()\n', "print('X_train original shape:', X_train.shape)\n", 'input_shape = (nb_time_steps, dim_input_vector)\n', '\n', "X_train = X_train.astype('float32') / 255.\n", "X_test = X_test.astype('float32') / 255.\n", 'Y_train = tf.keras.utils.to_categorical(y_train, nb_classes)\n', 'Y_test = tf.keras.utils.to_categorical(y_test, nb_classes)\n', '\n', "print('X_train shape:', X_train.shape)\n", "print(X_train.shape[0], 'train samples')\n", "print(X_test.shape[0], 'test samples')\n", '# Build LSTM network\n', 'model = Sequential()\n', '\n', '##Model 1\n', 'model.add(LSTM(nb_lstm_outputs, input_shape=input_shape))\n', '#model.add(Dropout(0.25))\n', "model.add(Dense(nb_classes, activation='softmax'))\n", '\n', '## Model 2\n', 'model.add(LSTM(nb_lstm_outputs, input_shape=input_shape, return_sequences= True))\n', '#model.add(Dropout(0.25))\n', 'model.add(LSTM(nb_lstm_outputs))\n', '#model.add(Dropout(0.25))\n', "model.add(Dense(nb_classes, activation='softmax'))\n", '\n', '## Model 3\n', '#model.add(SimpleRNN(units=units,dropout=dropout, input_shape=x_train.shape[1:]))\n', '#model.add(Dropout(0.25))\n', "#model.add(Dense(nb_classes, activation='softmax'))\n", '\n', '\n', 'model.summary()']'

'code' cell: '["model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])\n", '#model_history = model.fit(X_train, Y_train, epochs=nb_epoch, batch_size=batch_size, shuffle=True, verbose=1, validation_data=(X_test, Y_test))\n', '\n', "#model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])\n", 'model_history=model.fit(X_train, Y_train, epochs=nb_epoch, batch_size=batch_size, validation_data=(X_test, Y_test))\n', '_, acc = model.evaluate(X_test, Y_test, batch_size=batch_size, verbose=0)\n', 'print("\\nTest accuracy: %.1f%%" % (100.0 * acc))']'

'code' cell: '['preds = model.predict(X_test)\n', '\n', 'score = model.evaluate(X_test, Y_test)\n', 'print("Test loss", score[0])\n', 'print("Test accuracy", score[1])\n', '\n', 'plt.figure(figsize=(18,6))\n', '\n', '# Loss Curves\n', 'plt.subplot(1,2,1)\n', "plt.plot(model_history.history['loss'], linewidth=3.0)\n", "plt.plot(model_history.history['val_loss'], linewidth=3.0)\n", "plt.legend(['Training loss', 'Validation Loss'], fontsize=18)\n", "plt.xlabel('Epochs', fontsize=16)\n", "plt.ylabel('Loss', fontsize=16)\n", "plt.title('Loss Curves', fontsize=16)\n", '\n', '# Accuracy Curves\n', 'plt.subplot(1,2,2)\n', 'plt.plot(model_history.history["accuracy"], linewidth=3.0)\n', "plt.plot(model_history.history['val_accuracy'], linewidth=3.0)\n", "plt.legend(['Training Accuracy', 'Validation Accuracy'], fontsize=18)\n", "plt.xlabel('Epochs', fontsize=16)\n", "plt.ylabel('Accuracy', fontsize=16)\n", "plt.title('Accuracy Curves', fontsize=16)\n", '\n', 'plt.show()']'

'code' cell: '['from keras.models import load_model\n', '\n', "model.save('MNIST_RNNorLSTM_model.h5')"]'

'code' cell: '['from sklearn.metrics import ConfusionMatrixDisplay\n', 'from sklearn.metrics import confusion_matrix\n', 'import matplotlib.pyplot as plt\n', 'import numpy as np\n', '\n', 'y_pred = model.predict(X_test)\n', 'print(y_test.shape)\n', 'y_pred_plot=np.argmax(y_pred, axis=1)\n', 'y_test_plot=np.argmax(Y_test, axis=1)\n', '\n', 'cm = confusion_matrix(y_test_plot, y_pred_plot)\n', '\n', 'disp = ConfusionMatrixDisplay(confusion_matrix=cm)\n', '#disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=labels)\n', '\n', 'disp.plot(cmap=plt.cm.Blues)\n', 'plt.show()\n', '\n', 'import seaborn as sns\n', "cmn = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n", 'fig, ax = plt.subplots(figsize=(10,10))\n', "sns.heatmap(cmn, annot=True, fmt='.2f')\n", "plt.ylabel('Actual')\n", "plt.xlabel('Predicted')\n", 'plt.show(block=False)']'

E:\courses\LangChain Project\main root\data\scr_code08_rnn_lstm_mnist.py

"""scr_code08_RNN_LSTM_mnist.ipynb

    https://colab.research.google.com/drive/1avht5BcXOsWVdEGrOWVb7WqHpnTgFM7I
"""

from keras.layers import LSTM, Dense, Activation, SimpleRNN , Dropout
#from tensorflow.keras.utils import to_categorical, plot_model

# Hyper parameters
batch_size = 128
nb_epoch = 2
dropout = 0.2

# Parameters for MNIST dataset
nb_classes = 10

# Parameters for LSTM network
nb_lstm_outputs = 128
units=nb_lstm_outputs
nb_time_steps = img_rows
dim_input_vector = img_cols
# Load MNIST dataset
print('X_train original shape:', X_train.shape)
input_shape = (nb_time_steps, dim_input_vector)

X_train = X_train.astype('float32') / 255.
X_test = X_test.astype('float32') / 255.
Y_train = tf.keras.utils.to_categorical(y_train, nb_classes)
Y_test = tf.keras.utils.to_categorical(y_test, nb_classes)

print('X_train shape:', X_train.shape)
print(X_train.shape[0], 'train samples')
print(X_test.shape[0], 'test samples')
# Build LSTM network

##Model 1
model.add(LSTM(nb_lstm_outputs, input_shape=input_shape))
#model.add(Dropout(0.25))
model.add(Dense(nb_classes, activation='softmax'))

## Model 2
model.add(LSTM(nb_lstm_outputs, input_shape=input_shape, return_sequences= True))
model.add(LSTM(nb_lstm_outputs))

## Model 3
#model.add(SimpleRNN(units=units,dropout=dropout, input_shape=x_train.shape[1:]))
#model.add(Dense(nb_classes, activation='softmax'))

model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
#model_history = model.fit(X_train, Y_train, epochs=nb_epoch, batch_size=batch_size, shuffle=True, verbose=1, validation_data=(X_test, Y_test))

#model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
model_history=model.fit(X_train, Y_train, epochs=nb_epoch, batch_size=batch_size, validation_data=(X_test, Y_test))
_, acc = model.evaluate(X_test, Y_test, batch_size=batch_size, verbose=0)
print("\nTest accuracy: %.1f%%" % (100.0 * acc))

preds = model.predict(X_test)

score = model.evaluate(X_test, Y_test)

model.save('MNIST_RNNorLSTM_model.h5')

y_pred = model.predict(X_test)

E:\courses\LangChain Project\main root\data\scr_code_mnist_mlp_2_14012.ipynb

'code' cell: '["'''Trains a simple deep NN on the MNIST dataset.\n", '\n', 'Gets to 98.40% test accuracy after 20 epochs\n', '(there is *a lot* of margin for parameter tuning).\n', '2 seconds per epoch on a K520 GPU.\n', "'''\n", '\n', '# from __future__ import print_function\n', 'import keras\n', 'from keras.datasets import mnist\n', 'from keras.models import Sequential\n', 'from keras.layers import Dense, Dropout\n', '#from keras.optimizers import SGD\n', '\n', 'import tensorflow as tf\n', '\n', 'batch_size = 16\n', 'num_classes = 10\n', 'epochs = 10\n', '\n', '# the data, shuffled and split between train and test sets\n', '(x_train, y_train), (x_test, y_test) = mnist.load_data()\n', '\n', 'x_train = x_train.reshape(60000, 784)\n', 'x_test = x_test.reshape(10000, 784)\n', "x_train = x_train.astype('float32')\n", "x_test = x_test.astype('float32')\n", 'x_train /= 255\n', 'x_test /= 255\n', "print(x_train.shape[0], 'train samples')\n", "print(x_test.shape[0], 'test samples')\n", '\n', '## convert class vectors to binary class matrices\n', '\n', 'y_train = tf.keras.utils.to_categorical(y_train, num_classes)\n', 'y_test = tf.keras.utils.to_categorical(y_test, num_classes)\n', '\n', '\n', 'model = Sequential()\n', "model.add(Dense(64, activation='relu', input_shape=(784,)))\n", 'model.add(Dropout(0.2))\n', "model.add(Dense(32, activation='relu'))\n", "model.add(Dense(num_classes, activation='softmax'))\n", '\n', 'model.summary()\n', '\n', "model.compile(loss='categorical_crossentropy',\n", '              optimizer=tf.keras.optimizers.SGD(learning_rate=0.01),\n', "              metrics=['accuracy'])\n", '\n', 'history = model.fit(x_train, y_train,\n', '                    batch_size=batch_size,\n', '                    epochs=epochs,\n', '                    verbose=1,\n', '                    validation_data=(x_test, y_test))\n', 'from matplotlib import pyplot as plt\n', 'plt.figure()\n', 'plt.subplot(2,1,1);\n', "plt.plot(range(1,epochs+1), history.history['loss'], 'b',\n", "         range(1,epochs+1), history.history['val_loss'],'r')\n", "plt.ylabel('loss'); plt.ylim(0,1.4); plt.grid()\n", 'plt.subplot(2,1,2);\n', "plt.plot(range(1,epochs+1), history.history['accuracy'], 'b',\n", "         range(1,epochs+1), history.history['val_accuracy'],'r')\n", "plt.ylabel('accuracy'); plt.ylim(0.6,1); plt.grid(); plt.xlabel('epoch')\n", 'plt.show()\n', 'score = model.evaluate(x_test, y_test, verbose=0)\n', "print('Test loss:', score[0])\n", "print('Test accuracy:', score[1])"]'

'code' cell: '['my_test_id=231\n', 'plt.imshow(x_test[my_test_id].reshape(28,28))\n', '#print(x_test[my_test_id].reshape(28,28))\n', 'model.predict(x_test[my_test_id].reshape(1,784))']'

'code' cell: '['#Getting the weights of the first layer:\n', 'print(model.layers[0].weights)\n']'

'code' cell: '["model.save('my_model.keras')\n", "#model.save('my_model.h5')\n", '\n', 'del model\n', '\n', 'from keras.models import load_model\n', "#model = load_model('my_model.h5')\n", "model = load_model('my_model.keras')\n", '\n', "print('Test loss:', score[0])\n", "print('Test accuracy:', score[1])\n"]'

'code' cell: '['import numpy as np\n', 'plt.figure(figsize=(10, 8), dpi=100)\n', 'for i in range(16):\n', '  random=np.random.randint(0, 63, size=1)\n', '  weights=model.layers[0].weights[0][:,random[0]].numpy()\n', '  weights=weights.reshape(28,28)\n', '  plt.subplot(4, 4, i+1)\n', "  plt.imshow(weights,cmap='gray',interpolation='bicubic')"]'

E:\courses\LangChain Project\main root\data\scr_code_mnist_mlp_2_14012.py

"""scr_code_mnist_mlp_2_14012.ipynb

    https://colab.research.google.com/drive/1wkoRW4aROw_VNjpZfDuRtSWNDQ8lWrR0
"""

'''Trains a simple deep NN on the MNIST dataset.

Gets to 98.40% test accuracy after 20 epochs
(there is *a lot* of margin for parameter tuning).
2 seconds per epoch on a K520 GPU.
'''

from keras.layers import Dense, Dropout
#from keras.optimizers import SGD

epochs = 10

x_train = x_train.reshape(60000, 784)
x_test = x_test.reshape(10000, 784)

## convert class vectors to binary class matrices

model.add(Dense(64, activation='relu', input_shape=(784,)))
model.add(Dropout(0.2))
model.add(Dense(32, activation='relu'))

model.compile(loss='categorical_crossentropy',
              optimizer=tf.keras.optimizers.SGD(learning_rate=0.01),
              metrics=['accuracy'])

history = model.fit(x_train, y_train,
                    batch_size=batch_size,
                    epochs=epochs,
                    verbose=1,
                    validation_data=(x_test, y_test))
plt.subplot(2,1,1);
plt.plot(range(1,epochs+1), history.history['loss'], 'b',
         range(1,epochs+1), history.history['val_loss'],'r')
plt.ylabel('loss'); plt.ylim(0,1.4); plt.grid()
plt.subplot(2,1,2);
plt.plot(range(1,epochs+1), history.history['accuracy'], 'b',
         range(1,epochs+1), history.history['val_accuracy'],'r')
plt.ylabel('accuracy'); plt.ylim(0.6,1); plt.grid(); plt.xlabel('epoch')

my_test_id=231
plt.imshow(x_test[my_test_id].reshape(28,28))
#print(x_test[my_test_id].reshape(28,28))
model.predict(x_test[my_test_id].reshape(1,784))

#Getting the weights of the first layer:
print(model.layers[0].weights)

model.save('my_model.keras')
#model.save('my_model.h5')

del model

#model = load_model('my_model.h5')
model = load_model('my_model.keras')

plt.figure(figsize=(10, 8), dpi=100)
for i in range(16):
  random=np.random.randint(0, 63, size=1)
  weights=model.layers[0].weights[0][:,random[0]].numpy()
  weights=weights.reshape(28,28)
  plt.subplot(4, 4, i+1)
  plt.imshow(weights,cmap='gray',interpolation='bicubic')

E:\courses\LangChain Project\main root\data\SCR_ContinualLearning(EWC).ipynb

'code' cell: '['import numpy as np\n', 'def task_seperate(x,y):\n', '\n', '  indx0 = np.where(y==0)[0]\n', '  y0 = y[indx0]\n', '  x0 = x[indx0,:,:,:]\n', '\n', '  indx1 = np.where(y==1)[0]\n', '  y1 = y[indx1]\n', '  x1 = x[indx1,:,:,:]\n', '\n', '  indx2 = np.where(y==2)[0]\n', '  y2 = y[indx2]\n', '  x2 = x[indx2,:,:,:]\n', '\n', '  indx3 = np.where(y==3)[0]\n', '  y3 = y[indx3]\n', '  x3 = x[indx3,:,:,:]\n', '\n', '  indx4 = np.where(y==4)[0]\n', '  y4 = y[indx4]\n', '  x4 = x[indx4,:,:,:]\n', '\n', '  indx5 = np.where(y==5)[0]\n', '  y5 = y[indx5]\n', '  x5 = x[indx5,:,:,:]\n', '\n', '  y_task1 = np.concatenate((y0,y1),axis=0)\n', '  x_task1 = np.concatenate((x0,x1),axis=0)\n', '\n', '  y_task2 = np.concatenate((y2,y3),axis=0)\n', '  x_task2 = np.concatenate((x2,x3),axis=0)\n', '\n', '  y_task3 = np.concatenate((y4,y5),axis=0)\n', '  x_task3 = np.concatenate((x4,x5),axis=0)\n', '\n', '  Y = [y_task1, y_task2, y_task3]\n', '  X = [x_task1, x_task2, x_task3]\n', '\n', '  return X,Y']'

'code' cell: '['def compile_model(model, learning_rate, extra_losses=None):\n', '    def custom_loss(y_true, y_pred):\n', '        loss = keras.losses.sparse_categorical_crossentropy(y_true, y_pred)\n', '        if extra_losses is not None:\n', '            for fn in extra_losses:\n', '                loss += fn(model)\n', '\n', '        return loss\n', '\n', '    model.compile(\n', '        loss=custom_loss,\n', '        optimizer=keras.optimizers.Adam(learning_rate=learning_rate),\n', '        metrics=["accuracy"]\n', '    )\n', '\n', 'def report(model, epoch, validation_datasets, batch_size):\n', '    result = []\n', '    for inputs, labels in validation_datasets:\n', '        _, accuracy = model.evaluate(inputs, labels, verbose=0,\n', '                                     batch_size=batch_size)\n', '        result.append("{:.2f}".format(accuracy * 100))\n', '\n', '    # Add 1: assuming that we report after training has finished for this epoch.\n', '    print(epoch + 1, "\\t", "\\t".join(result))\n', '\n', 'def train_epoch(model, train_data, batch_size,\n', '                gradient_mask=None, incdet_threshold=None):\n', '    """Need a custom training loop for when we modify the gradients."""\n', '    dataset = tf.data.Dataset.from_tensor_slices(train_data)\n', '    dataset = dataset.shuffle(len(train_data[0])).batch(batch_size)\n', '\n', '    for inputs, labels in dataset:\n', '        with tf.GradientTape() as tape:\n', '            outputs = model(inputs)\n', '            loss = model.compiled_loss(labels, outputs)\n', '\n', '        gradients = tape.gradient(loss, model.trainable_weights)\n', '\n', '        model.optimizer.apply_gradients(zip(gradients, model.trainable_weights))\n']'

'code' cell: '['def fisher_matrix(model, dataset, samples):\n', '    """\n', '    Compute the Fisher matrix, representing the importance of each weight in the\n', '    model. This is approximated using the variance of the gradient of each\n', '    weight, for some number of samples from the dataset.\n', '\n', '    :param model: Model whose Fisher matrix is to be computed.\n', '    :param dataset: Dataset which the model has been trained on, but which will\n', '                    not be seen in the future. Formatted as (inputs, labels).\n', '    :param samples: Number of samples to take from the dataset. More samples\n', '                    gives a better approximation of the true variance.\n', '    :return: The main diagonal of the Fisher matrix, shaped to match the weights\n', '             returned by `model.trainable_weights`.\n', '    """\n', '    inputs, labels = dataset\n', '    weights = model.trainable_weights\n', '    variance = [tf.zeros_like(tensor) for tensor in weights]\n', '\n', '    for _ in range(samples):\n', '        # Select a random element from the dataset.\n', '        index = np.random.randint(len(inputs))\n', '        data = inputs[index]\n', '\n', '        # When extracting from the array we lost a dimension so put it back.\n', '        data = tf.expand_dims(data, axis=0)\n', '\n', '        # Collect gradients.\n', '        with tf.GradientTape() as tape:\n', '            output = model(data)\n', '            log_likelihood = tf.math.log(output)\n', '\n', '        gradients = tape.gradient(log_likelihood, weights)\n', '\n', '        # If the model has converged, we can assume that the current weights\n', '        # are the mean, and each gradient we see is a deviation. The variance is\n', '        # the average of the square of this deviation.\n', '        variance = [var + (grad ** 2) for var, grad in zip(variance, gradients)]\n', '\n', '    fisher_diagonal = [tensor / samples for tensor in variance]\n', '    return fisher_diagonal\n', '\n', '\n', 'def ewc_loss(lam, model, dataset, samples):\n', '    """\n', '    Generate a loss function which will penalise divergence from the current\n', '    state. It is assumed that the model achieves good accuracy on `dataset`,\n', '    and we want to preserve this behaviour.\n', '\n', '    The penalty is scaled according to how important each weight is for the\n', '    given dataset, and `lam` (lambda) applies equally to all weights.\n', '\n', '    :param lam: Weight of this cost function compared to the other losses.\n', '    :param model: Model optimised for the given dataset.\n', '    :param dataset: NumPy arrays (inputs, labels).\n', '    :param samples: Number of samples of dataset to take when estimating\n', '                    importance of weights. More samples improves estimates.\n', '    :return: A loss function.\n', '    """\n', '    optimal_weights = deepcopy(model.trainable_weights)\n', '    fisher_diagonal = fisher_matrix(model, dataset, samples)\n', '\n', '    def loss_fn(new_model):\n', "        # We're computing:\n", '        # sum [(lambda / 2) * F * (current weights - optimal weights)^2]\n', '        loss = 0\n', '        current = new_model.trainable_weights\n', '        for f, c, o in zip(fisher_diagonal, current, optimal_weights):\n', '            loss += tf.reduce_sum(f * ((c - o) ** 2))\n', '\n', '        return loss * (lam / 2)\n', '\n', '    return loss_fn\n']'

'code' cell: '['import numpy as np\n', 'import tensorflow as tf\n', 'from tensorflow import keras\n', 'from keras.datasets import mnist\n', 'from copy import deepcopy\n', '\n', '# Hyperparameters\n', 'learning_rate = 0.001\n', 'epochs = 2\n', 'lambda_ewc = 10  # Importance of past tasks\n', '\n', '# Load MNIST dataset\n', '(x_train, y_train), (x_test, y_test) = mnist.load_data()\n', 'x_train = x_train.reshape(-1, 28, 28, 1).astype("float32") / 255.0\n', 'x_test = x_test.reshape(-1, 28, 28, 1).astype("float32") / 255.0\n', '\n', 'x_train_task, y_train_task = task_seperate(x_train,y_train)\n', 'x_test_task, y_test_task = task_seperate(x_test,y_test)\n', '\n', '# Define model (replace with your desired architecture)\n', 'model = keras.Sequential([\n', '  keras.layers.Flatten(input_shape=(28, 28, 1)),\n', '  keras.layers.Dense(128, activation="relu"),\n', '  keras.layers.Dense(10, activation="softmax")\n', '])\n', '\n', '# Compile model with Adam optimizer\n', 'compile_model(model, learning_rate)\n', '\n', 'regularisers = []\n', '\n', 'for task in range(3):\n', '  inputs = x_train_task[task]\n', '  labels = y_train_task[task]\n', '\n', '  for epoch in range(epochs):\n', '    train_epoch(model, (inputs, labels), batch_size=64)\n', '    valid_sets = [(x_test_task[task], y_test_task[task])]\n', '\n', '  print(f"Model Trained on Task {task}")\n', '\n', '\n', '  for iTask in range(task+1):\n', '    test_loss, test_acc = model.evaluate(x_test_task[iTask], y_test_task[iTask])\n', '    print(f"Test Accuracy on Task {iTask} = {test_acc:.2f}")\n', '\n', '  loss_fn = ewc_loss(lambda_ewc, model, (inputs, labels), x_train_task[task].shape[0])\n', '  regularisers.append(loss_fn)\n', '  compile_model(model, learning_rate, extra_losses=regularisers)\n', '\n']'

E:\courses\LangChain Project\main root\data\scr_continuallearning(ewc).py

"""SCR_ContinualLearning(EWC).ipynb

    https://colab.research.google.com/drive/15TSrED7xbbFtXZKFOpcHb7hrG3yydg_5
"""

def task_seperate(x,y):

  indx0 = np.where(y==0)[0]
  y0 = y[indx0]
  x0 = x[indx0,:,:,:]

  indx1 = np.where(y==1)[0]
  y1 = y[indx1]
  x1 = x[indx1,:,:,:]

  indx2 = np.where(y==2)[0]
  y2 = y[indx2]
  x2 = x[indx2,:,:,:]

  indx3 = np.where(y==3)[0]
  y3 = y[indx3]
  x3 = x[indx3,:,:,:]

  indx4 = np.where(y==4)[0]
  y4 = y[indx4]
  x4 = x[indx4,:,:,:]

  indx5 = np.where(y==5)[0]
  y5 = y[indx5]
  x5 = x[indx5,:,:,:]

  y_task1 = np.concatenate((y0,y1),axis=0)
  x_task1 = np.concatenate((x0,x1),axis=0)

  y_task2 = np.concatenate((y2,y3),axis=0)
  x_task2 = np.concatenate((x2,x3),axis=0)

  y_task3 = np.concatenate((y4,y5),axis=0)
  x_task3 = np.concatenate((x4,x5),axis=0)

  Y = [y_task1, y_task2, y_task3]
  X = [x_task1, x_task2, x_task3]

  return X,Y

def compile_model(model, learning_rate, extra_losses=None):
    def custom_loss(y_true, y_pred):
        loss = keras.losses.sparse_categorical_crossentropy(y_true, y_pred)
        if extra_losses is not None:
            for fn in extra_losses:
                loss += fn(model)

        return loss

    model.compile(
        loss=custom_loss,
        optimizer=keras.optimizers.Adam(learning_rate=learning_rate),
        metrics=["accuracy"]
    )

def report(model, epoch, validation_datasets, batch_size):
    result = []
    for inputs, labels in validation_datasets:
        _, accuracy = model.evaluate(inputs, labels, verbose=0,
                                     batch_size=batch_size)
        result.append("{:.2f}".format(accuracy * 100))

    # Add 1: assuming that we report after training has finished for this epoch.
    print(epoch + 1, "\t", "\t".join(result))

def train_epoch(model, train_data, batch_size,
                gradient_mask=None, incdet_threshold=None):
    """Need a custom training loop for when we modify the gradients."""
    dataset = tf.data.Dataset.from_tensor_slices(train_data)
    dataset = dataset.shuffle(len(train_data[0])).batch(batch_size)

    for inputs, labels in dataset:
        with tf.GradientTape() as tape:
            outputs = model(inputs)
            loss = model.compiled_loss(labels, outputs)

        gradients = tape.gradient(loss, model.trainable_weights)

        model.optimizer.apply_gradients(zip(gradients, model.trainable_weights))

def fisher_matrix(model, dataset, samples):
    """
    Compute the Fisher matrix, representing the importance of each weight in the
    model. This is approximated using the variance of the gradient of each
    weight, for some number of samples from the dataset.

    :param model: Model whose Fisher matrix is to be computed.
    :param dataset: Dataset which the model has been trained on, but which will
                    not be seen in the future. Formatted as (inputs, labels).
    :param samples: Number of samples to take from the dataset. More samples
                    gives a better approximation of the true variance.
    :return: The main diagonal of the Fisher matrix, shaped to match the weights
             returned by `model.trainable_weights`.
    """
    inputs, labels = dataset
    weights = model.trainable_weights
    variance = [tf.zeros_like(tensor) for tensor in weights]

    for _ in range(samples):
        # Select a random element from the dataset.
        index = np.random.randint(len(inputs))
        data = inputs[index]

        # When extracting from the array we lost a dimension so put it back.
        data = tf.expand_dims(data, axis=0)

        # Collect gradients.
            output = model(data)
            log_likelihood = tf.math.log(output)

        gradients = tape.gradient(log_likelihood, weights)

        # If the model has converged, we can assume that the current weights
        # are the mean, and each gradient we see is a deviation. The variance is
        # the average of the square of this deviation.
        variance = [var + (grad ** 2) for var, grad in zip(variance, gradients)]

    fisher_diagonal = [tensor / samples for tensor in variance]
    return fisher_diagonal

def ewc_loss(lam, model, dataset, samples):
    """
    Generate a loss function which will penalise divergence from the current
    state. It is assumed that the model achieves good accuracy on `dataset`,
    and we want to preserve this behaviour.

    The penalty is scaled according to how important each weight is for the
    given dataset, and `lam` (lambda) applies equally to all weights.

    :param lam: Weight of this cost function compared to the other losses.
    :param model: Model optimised for the given dataset.
    :param dataset: NumPy arrays (inputs, labels).
    :param samples: Number of samples of dataset to take when estimating
                    importance of weights. More samples improves estimates.
    :return: A loss function.
    """
    optimal_weights = deepcopy(model.trainable_weights)
    fisher_diagonal = fisher_matrix(model, dataset, samples)

    def loss_fn(new_model):
        # We're computing:
        # sum [(lambda / 2) * F * (current weights - optimal weights)^2]
        loss = 0
        current = new_model.trainable_weights
        for f, c, o in zip(fisher_diagonal, current, optimal_weights):
            loss += tf.reduce_sum(f * ((c - o) ** 2))

        return loss * (lam / 2)

    return loss_fn

from copy import deepcopy

# Hyperparameters
learning_rate = 0.001
epochs = 2
lambda_ewc = 10  # Importance of past tasks

x_train = x_train.reshape(-1, 28, 28, 1).astype("float32") / 255.0
x_test = x_test.reshape(-1, 28, 28, 1).astype("float32") / 255.0

x_train_task, y_train_task = task_seperate(x_train,y_train)
x_test_task, y_test_task = task_seperate(x_test,y_test)

# Define model (replace with your desired architecture)
model = keras.Sequential([
  keras.layers.Flatten(input_shape=(28, 28, 1)),
  keras.layers.Dense(128, activation="relu"),
  keras.layers.Dense(10, activation="softmax")
])

# Compile model with Adam optimizer
compile_model(model, learning_rate)

regularisers = []

for task in range(3):
  inputs = x_train_task[task]
  labels = y_train_task[task]

  for epoch in range(epochs):
    train_epoch(model, (inputs, labels), batch_size=64)
    valid_sets = [(x_test_task[task], y_test_task[task])]

  print(f"Model Trained on Task {task}")

  for iTask in range(task+1):
    test_loss, test_acc = model.evaluate(x_test_task[iTask], y_test_task[iTask])
    print(f"Test Accuracy on Task {iTask} = {test_acc:.2f}")

  loss_fn = ewc_loss(lambda_ewc, model, (inputs, labels), x_train_task[task].shape[0])
  regularisers.append(loss_fn)
  compile_model(model, learning_rate, extra_losses=regularisers)

به نام خدا 
تمرین سری اول درس رباتیک اجتماعی و شناختی 
(شبکه های عصبی مصنوعی) 
مدرس: علیرضا طاهری 
دانشکده مهندسی مکانیک، دانشگاه صنعتی شریف 
 
1- برای انجامیک طبقه بندی دو کلاسه با داده های آموزش داده شده، می خواهیم از شبکه عصبی ساده سه لایه زیر استفاده 
کنیم. با درنظر گرفتن تابع فعال سازی tanh برای نرون های لایه های (مخفی) اول و دوم و تابع فعال سازی sigmoid برای
نرون لایه سوم (خروجی) و همچنین تابع هزینه میانگین مربعات خطا (MSE)، مطلوبست 
الف) محاسبه عبارت های 
𝜕𝐿𝑜𝑠𝑠
𝜕𝑤11
[3] ،
𝜕𝐿𝑜𝑠𝑠
𝜕𝑤11
[2]  و
𝜕𝐿𝑜𝑠𝑠
𝜕𝑏1
[1] به صورت پارامتری 
ب) با وزن های تصادفی داده شده و با نرخ آموزش 𝜂 = 0.01،الگوریتم انتشار به عقب (BP) رابه میزان یک دوره (epoch )
اجرا کرده و تمامی وزن هاو بایاس ها) را به روزرسانی کنید (مقادیر تمامی بایاس ها در حالت اول صفر فرض شده است). 
 
y x2 x1 Sample # 
1 0 1 1 
1 0 -1 2 
1 1 0 3 
1 -1 0 4 
0 0 2 5 
0 0 -2 6 
0 2 0 7 
0 -2 0 8  
 
2- به صورت کیفی به پرسش های زیر پاسخ دهید 
الف) اگر به جای توابع فعال سازی غیر خطی معرفی شده، برای تمامی نرون های یک شبکه MLP از تابع همانی (یا هر تابع
خطی دیگری) استفاده کنیم، خروجی نهایی بر حسب ورودی چگونه خواهد بود؟ این موضوع، چه مشکلی را به وجود می آورد؟  
ب) در آموزش شبکه های عصبی به هیچ عنوان مناسب نیست که وزن های تصادفی اولیه همگی یکسان (مثلا صفر) باشند. به 
نظر شما دلیل این امر چیست؟  
پ) اگرچه الگوریتم انتشار به عقب به صورت سیستماتیک برای هر تعداد لایه در شبکه های MLP قابل اجراست، با در نظرگرفتن
توابع سیگمویید یا تانژانت هذلولوی به عنوان توابع فعال سازی نرون ها، چرا ما تاکنون در عمل، (عمدتاً) تعداد لایه های مخفی 
را محدود به یک یا دو در نظر می گیریم؟

3- یک شبکه عصبی چندلایه پیشنهاد دهید که با آن بتوانیم تابع 𝑦 = 2sin(𝑥) + sin(2𝑥) را بازتولید کنیم (ورودی
شبکه: اسکالر x؛ و خروجی شبکه: اسکالرy .)ساختار و وزن های شبکه و خروجی آن را برای بازه𝑥𝜖[0,3𝜋] ارائه نمایید. در
نظر داشته باشید که داده های آموزش فقط از مجموعه 𝑥𝜖{0,
𝜋
20 ,
2𝜋
20 ,
3𝜋
20 , … , 2𝜋 } (وy های مربوطه به عنوان برچسب
به عنوان ورودی به شبکه داده شوند. آیا شبکه شما در درون یابی و برون یابی تابع مورد نظر، قدرت های یکسانی دارد؟ (اگرچه 
مجازید از هر بستر/بسته نرم افزاری برای آموزش شبکه خود استفاده کنید، اما پیشنهاد می کنم تلاش کنید که خودتان کدهای 
مربوط به الگوریتم انتشار به عقب را نوشته و اجرا کنید.)  
 
4- یکی از قابلیت های مورد انتظار از یک ربات اجتماعی،توانمندی تشخیص حالت چهره افراد (نظیر شادی، غم، خشم و ...) 
می باشد. در این مسئله، مجموعه عکس هایی مستخرج از پایگاه داده CK+ به عنوان داده های آموزش در اختیار شما قرار می 
گیرد. شما می بایست یک شبکه عصبی چندلایه طراحی کنید که تا حد امکان، طبقه بندی 8 کلاسه شناسایی حالت های چهره 
کاربران را به خوبی انجام دهد. عکس ها در ابعاد 490×640 پیکسل (عمدتاً در محدوده طیف خاکستری) می باشند و در هشت 
پوشه مختلف قرار داده شده اند؛ به عبارتی، نام پوشه ها، معادل برچسب عکس موجود در آن ها است. ما در نهایت کدهای شما 
را روی مجموعه دادگانی به عنوان داده های تست (که هم اکنون در اختیار شما نیست) نیز پیاده سازی خواهیم کرد تا میزان 
توانمندی شبکه پیشنهادی شما را در طبقه بندی داده های جدید محک بزنیم.  
لینک دانلود داده های آموزش:  
https://drive.google.com/file/d/1XL0W5YdJjdE4WVfo9YHjddH4V6CJ6H10/view?usp=sharing   
 
توضیح تکمیلی 1 :در صورتی که عکس رنگی در مجموعه دادگان وجود داشت، با دستورات نمونه زیر از کتابخانه opencv می
توانید آن را به طیف خاکستری تبدیل نمایید:  
import cv2 
image= cv2.imread("picture.jpg",0) 
 
توضیح تکمیلی2 :با استفاده ازمجموعه دستورات نمونه زیر می توان با مشخص کردن مسیر پوشه مورد نظر، تمامی تصاویر 
موجود در آن پوشه با فرمت مشخص را خواند و در یک آرایه ذخیره نمود: 
import cv2 
import glob  
 
image_dir = "./image/" 
cv_img = [] 
for img in glob.glob(image_dir+"*.jpg"): 
    image= cv2.imread(img) 
    cv_img.append(image)

1 
 
• هم فکری و هم کاری شما در انجام تمارین مانعی ندارد اما پاسخ ارسالی هر فرد  در نهایت  حتما باید توسط خود او  حل و  
نوشته شده باشد.  
• در صورت هم فکری و یا استفاده از منابع خارج درسی، نام همفکران و آدرس منابع مورد استفاده برای حل سوال مورد نظر را  
ذکر کنید.  کمک گرفتن از LLM  ها در حل تمارین مجاز است!!  
• نتایج و پاسخ های خود را در یک فایل  فشرده  (ترجیحاً  به نام  HW1-Name-StudentNumber  )در سامانه قرار دهید
پیشنهاد می شود  برای بخش نرم   افزاری از زبان برنامه نویسی پایتون در یکی از محیط های  Jupyter notebook  و یا
Google Colab برای کدنویسی و تست کدهای خود استفاده نموده و فایل کدها را به فرمIPYNB ارسال کنید    
 
سوالات  تشریحی   (250  نمره 
1- با دانش خود و یا بهره گیری از جستجوهای اینترنتی یا سایر منابع،به پرسشهای زیر پاسخ دهید:  
الف) به دلخواه خود، جزییات یکی از روش های بهینه سازی Adam،Adadelta یاAdagrad راتوضیح دهید.   
ب)  به صورت مختصر توضیح دهید  در یادگیری ماشین،  L2 Regularization  چیست و چگونه به ما در فرآیند هموارسازی کمک
می کند.   
پ)  یک شبکه عصبی تا حد امکان ساده پیشنهاد دهید   که  با  گرفتن یک ورودی و همچنین  استفاده از  توابع  فعال سازی  ReLu 
برای نرون های آن،  تابع   sigmoid  را با دقت مناسب  در خروجی  ایجاد کند .  وزن ها و بایاس های شبکه پیشنهادی شما چه 
مقایری خواهند داشت؟  مشتق در مبدا و مقادیر در کرانهای اشباع  تابع شما چقدر است؟ (لزوماً نیازی به کدنویسی نیست و احتمالاً  
با نوشتن روابط ریاضی به صورت دستی، می توانید شبکه مناسبی را بیابید.)  
ت)  یکی از مواردی که همواره در  عملکرد  شبکه های عصبی اهمیت خود را نشان می دهد،  نحوه انتخاب پارامتر های اصلی 
(Hyper Parameters Tuning) است  تحقیق کنید چه روش هایی برای انتخاب  بهینه  پارامتر های اصلی شبکه وجود دارد   
(راهنمایی: دو مورد از معروف ترین این روش ها Mesh Grid Search وRandom Search  می باشد 
ث) در مورد روش های مقداردهی اولیه شبکه های عصبی تحقیق نموده  و توضیحات مختصری در مورد کارایی سه روش بالقوه  1 )
وزن دهی یکسان بههمه نرون ها، 2 )نمونه گیری از توابع گوسی، و 3 )روش زیویر (Xavier initialization) ارائه دهید.  
ج) روش k-fold cross validation را توضیح دهید.  
 
به نام خدا  
 رباتیک اجتماعی و شناختی 
 مدرس : علیرضا طاهری 
دانشگاه صنعتی شریف 
دانشکدهی مهندسی مکانیک  نیمسال دوم 02-1402 
 
مهلت ارسال17 فروردین1403 " شبکههای عصبی مصنوعی" تمرین سری اول

2 
 
سوالات عملی057  نمره 
1-  برای انجامیک  طبقه بندی دو کلاسه با داده های آموزش داده شده، می خواهیم از شبکه عصبی  ساده سه  لایه زیر استفاده کنیم. با  
درنظر گرفتن تابع فعال سازی  tanh  برای نرون های لایه  های   (مخفی) اول  و دوم   و تابع فعال سازی  sigmoid  برای نرون لایه سوم 
(خروجی) و همچنین تابع هزینه میانگین مربعات خطا (MSE)، مطلوبست 
الف) محاسبه عبارت های  
𝜕𝐿𝑜𝑠𝑠
𝜕𝑤11
[3] ،
𝜕𝐿𝑜𝑠𝑠
𝜕𝑤11
[2]  و
𝜕𝐿𝑜𝑠𝑠
𝜕𝑏1
 
1 0 1 1 
1 0 -1 2 
1 1 0 3 
1 -1 0 4 
0 0 2 5 
0 0 -2 6 
0 2 0 7 
0 -2 0 8 
1 0 0 9 
0 2 2 10 
0 -2 2 11 
0 2 -2 12 
0 -2 2 13 
1 0 4 14 
1 0 -4 15 
1 4 0 16 
1 -4 0 17  
 
بهدف از این بخش، آشنا شدن شما با جزییات پیاده سازی روش انتشار به عقب است.  بدون بهره گیری از کتابخانه های آماده و موجود  
شبکه های عصبی و با کدنویسی از ابتدا (در متلب،   پایتون  یا هر زبان برنامه نویسی دیگر)، شبکه عصبی  داده شده   را  برای  8 دادهاول  ارائه 
شده در  جدول   آموزش  دهید   ( در این قسمت  به داده های  9  تا17  کاری نداشته باشید).  با وزن های تصادفی   داده شده و با نرخ آموزش 
𝜂 = 0.001  و بهره گیری از روشSGD، الگوریتم انتشار به عقبBP) راابتدا  به میزان یک دوره (epoch) اجرا کرده و تمامی وزن
ها (و بایاس ها) را به روزرسانی  و گزارش  کنید (مقادیر تمامی بایاس ها در حالت اول صفر فرض شده است).  سپس تعداد دوره ها  را افزایش  
دهید تا دقت شبکه روی داده های آموزش داده شده، حداکثر  مقدار  خود شود.  مقادیر نها یی وزن های شبکه را گزارش نمایید.   همچنین 
هندسه  مرزهای  تفکیکی  دو دسته  شبکه خود  را  در طول دوره آموزش  و پس از به روزرسانی وزن ها  رسم نمایید ( به عنوان نمونه به ازای 
5 ایپاک دلخواه با فاصله های مساوی در کل طول دوره آموزش).  
پ) حال با بهره گیری از کتابخانه های موجود شبکه های عصبی نظیر کراس، پایتورچ یا تولباکس شبکه عصبی متلب،  برای کل 17 داده  
آموزشی  ارائه شده در جدول،  شبکه  ای  سه لایه  را  آموزش دهید. در  شبکه مذکور، تعداد  نرون های لایه مخفی شما بین  1  تا4  متغیر بوده
و برای  این  16  حالت ممکن،از توابع فعال سازی  tanh  وReLu  استفاده نماییدمرزهای  نهایی هر یک از شبکه های  آموزش دیده  شده  
را برای  این مس ئله  جداسازی  رسم نمایید.  هدف از این بخش، مشاهده  تفاوت تعداد نرون ها  در ایجاد مرزهای غیرخطی  در شبکه  های 
عصبی است.  در صورتی که هیچ یک از شبکه های آموزش دیده نتوانستند دسته بندی شما را انجام دهند، می توانید تعداد نرون های  لایه 
مخفی تان را از 4 بیشتر نمایید        
 
2-  شبکه عصبی زیر، یک شبکه  پیشرو  (feed forward  )دو لایه است؛  با این تفاوت که یک ارتباط از  ورودی به لایه دوم  نیز  اضافه  
شده است!  هدف از این تمرین،   به دست آوردن تمامی آپدیتهای الگوریتم عقب  گرد برای تمامی پارامترهای شبکه است. در واقع بعد

3 
 
از انجام این تمرین،  انتظار می رود که  شما بتوانید مفهوم الگوریتم  بازگشت به عقب (BP)  را برای هر شبکه با تغییرات جزئی در معماری
یا توابع فعال ساز آن پیادهسازی کنید.   
(راهنمایی: ابتدا فرمولهای  forward pass  را به شکل زیر در نظر گرفته و سپس مشتقات
∂𝐹
∂𝑤𝑖𝑗
𝑚  ،
∂𝐹
∂𝑏𝑖
𝑚   و
∂𝑛𝑖
2
∂𝑤𝑖𝑗
2 1  را برحسب آنها  
محاسبه کنید. در نهایت هم معادلات آپدیت را به فرم ماتریسی بنویسید.) 
 
3-  مسئله رگرسیون:  یک شبکه عصبی چندلایه پیشنهاد دهید که با آن بتوانیم  تابع  𝑦 = 2sin(𝑥) + sin(2𝑥)  را بازتولید کنیم
(ورودی شبکه: اسکالر  x؛ و خروجی شبکه: اسکالرy  .)خروجی شبکه  آموزش دیده تان  را  در  بازه  𝑥𝜖[0,4𝜋]  رسم  نمایید. در نظر داشته 
باشید که داده های آموزش فقط  از مجموعه  𝑥𝜖{0,
𝜋
20 ,
2𝜋
20 ,
3𝜋
20 , … , 2𝜋 }  (وy  های مربوطه به عنوان برچسببه عنوان ورودی به  
شبکه داده شوند.  آیا   شبکه شما در درون  یابی و برون  یابی تابع مورد نظر، قدرت های یکسانی دارد؟  متریک پیشنهادی برای این  گونه 
مسائل، MAE است 
 
4-  تشخیص الفبای لاتین با حرکات دست  در این سوال قصد  داریم که شبکهای برای تشخیص حروف لاتین با توجه به حرکت  
دست انسان آموزش دهیم.  دو فایل  CSV  برایآموزش  و  تست  در اختیار شما قرار گرفته است. ستون  اول در هر فایل نشاندهندهی  
برچسب آن  سطر میباشد و  784  ستون بعدی، نشان دهنده مقادیرپیکسل های هر تصویر میباشد. برچسب هر کلاس هم به این صورت  
میباشد که عدد  0  معادل کلاسA، عدد1  معادل کلاسB  و به همین ترتیب عدد24  معادلکلاس  Y  میباشد. توجه داشته باشید  
که تصاویر به صورت تک کاناله (طیف خاکستری) میباشد .  
الف)  ابتدا  5  داده تصادفی  از دیتاست  آموزش را بعد از استاندارد سازی در قالب تصویر به همراه کلاس مربوطه  به هر تصویر نمایش  
دهید.  
ب)  حال دادههای  اعتبارسنجی (validation)  را از دادههای آموزش با  نسبت  1  به6  جدا نموده ویک شبکه  MLP  را آموزش
دهید. میتوانید در آموزش از تابع هدف  categorical cross-entropy  استفاده نمایید. در انتخاب تعداد لایه و تعداد نرون
موجود در هر لایه  کاملاً  آزاد هستید. استفاده از هر کتابخانه  keras  و یاpytorch  نیز آزاد است  مشخصات و ویژگی های بهترین 
شبکه ای که در قسمت های قبل آموزش  دادید را بیان کنید (حداقل درصد قابل قبول  دقتی  بین بازهی  75  تا80  درصد بر روی
داده های تست است.)

4 
 
5-  یکی از قابلیت های مورد انتظار از یک ربات اجتماعی، توانمندی تشخیص حالت چهره افراد (نظیر شادی، غم، خشم و ...) می باشد. در 
این مسئله، مجموعه عکس هایی مستخرج از پایگاه داده  CK+  به عنوان داده های آموزش در اختیار شما قرار می گیرد. شما می بایست
یک شبکه عصبی چندلایه  طراحی کنید که تا حد امکان، طبقه بندی  8  کلاسه شناسایی حالت های چهره کاربران را به خوبی انجام
دهد. عکس ها در ابعاد 490 ×640 پیکسل (عمدتاً در محدوده طیف خاکستری) می باشند ودر هشت پوشه مختلف قرار داده شده اند؛ به 
عبارتی، نام پوشه ها، معادل برچسب عکس موجود در آن ها است.  همچنین  به  دلخواه خود،  وزن های منتهی به  حداقل   10  نروناز  لایه 
های مخفی یا پایانی شبکه تان را در قالب عکس ارائه دهید. آیا وزن های ارائه شده شما،  ویژگی قابل فهمی را ارائه می نمایند؟   
ما در نهایت کدهای شما را روی مجموعه دادگانی به عنوان داده های تست (که هم اکنون در اختیار شما نیست) نیز پیاده سازی خواهیم  
کرد تا میزان توانمندی شبکه پیشنهادی شما را در طبقه بندی داده های جدید محک بزنیم.   
https://drive.google.com/file/d/1XL0W5YdJjdE4WVfo9YHjddH4V6CJ6H10/view?usp=sharing  
توضیح تکمیلی1: در صورتی که عکس رنگی در مجموعه دادگان وجود داشت، با دستورات نمونه زیر از کتابخانه opencv می توانید آن
را به طیف خاکستری تبدیل نمایید:   
import cv2 
 
توضیح تکمیلی2  :با استفاده ازمجموعه دستورات  نمونه  زیر  می  توان با مشخص کردن مسیر  پوشه  مورد نظر،  تمام ی  تصاویر  موجود در 
آن پوشه با فرمت مشخص را خواند و در یک آرایه ذخیره نمود: 
import cv2 
 
cv_img = [] 
    cv_img.append(image) 
 
البته راه های دیگری نیزدر این خصوص وجود دارد که شما می توانید با کمک دستیاران آموزشی درس و یا جستجوهای اینترنتی آن ها  
را بیابید.   
 
6-  هنگامی  که مغز فرمان حرکت عضله ای  را می  دهد، سیگنالی  از مغز به عضله داده م ی  شود که ناشی  از آن فعل و انفعالاتی   در عضله 
ایجاد  شده و عضله به حرکت در م ی  آید . ناشی   از این   فعل و انفعالات درون عضله ای،  بار های   الکتریکی  ایجاد   می   شوند که دارای  اطلاعات 
مربوط به فرامین  مغزی  هستند. به این  سیگنال  ها، سیگنال  های  الکترومایوگرافی  گفته می  شود. دیتاست  زیر  حاوی  اطلاعات مربوط به 
سیگنال های الکتروما یوگرافی چهار کانال عضله ای پا، برای افراد سالم و  همچنین افراد دارای محدودیت می  باشد:

5 
 
https://archive.ics.uci.edu/ml/machine-learning-databases/00278/SEMG_DB1.rar  
 
* پوشهN_TXT  حاوی  سیگنال  های  الکترومایوگرافی   افراد نرمال و  A_TXT  حاوی  سیگنال  های  افراد داری  محدودیت   م ی  باشد.  4  ستون 
اول دیتاست، داده های sEMG و ستون پنجم داده زاویه می  باشد.  
الف-1) به منظور دسته بندی  داده های  افراد  نرمال و  دارای محدودیت  (دو کلاس) ،  شبکه عصبی  دلخواهی  را طراحی  کنید  که  3   لایه 
پنهان داشته باشد. نمودار هدررفت  (loss)  و دقت را گزارش کنید.  ورودی  این شبکه،  داده های مربوط  به  4  کانال  سیگنال  EMG  (4 
ستون اول مجموعه دادگان) و خروجی آن نرمال بودن یا نبودن افراد است.    
الف-2) شبکه را با سه تابع فعال سازReLU،PReLU  وELU  تست کنید  و به صورت جداگانه نتای ج  را گزارش  نمایید. کدام  یک  بهتر 
عمل کرده اند؟  
ب-1) حال به سراغ مسئله تخمین  زاویه زانو  (ستون پنجم مجموعه دادگان)  می   رویم! چهار کانال  sEMG  را به عنوان ورودی  به شبکه 
داده و با  یک  شبکه دلخواه (با  3  لایه  پنهان)،  زاویه  زانو   را تخمین  بزن ید. برای  تخمین زاویه  نیاز  است که ابتدا  بر روی دادگان سری زمانی 
موجود،  پ نجره  (Data Frame )مناسبیاستخراج کنید.Data Frame  ها را به نحوی  استخراج کنید که از گذشته  2  داده توسط شبکه
دیده   شود  (به عبارتی  8  داده ورودیشامل  2  بسته4  تایی از سیگنال ها)  و در آینده   1  مرحله تخمی ن  زده شود. نمودار  Loss  و  متریک 
MAE را برای کل شبکه گزارش کنید.   
-  پارامتر های  شبکه را به کمک  یکی  از روش های  Random Search  ویا  Mesh Grid  تنظیم  کرده  و دلیل  انتخاب خود بین  این  
روش ها را بیان  کنید.  
ب-2) درپ نجره زنی بخش قبل،   مدت زمان  را از  2  به10  افزایش   داده و  موارد خواسته شده در بخش قبل   را گزارش کنید. نتا یج  بدست 
آمده را با بخش ب-1 مقایسه کنید.  
 
7-  در کلاس درسی،   با مفهوم  PINN  (Physics-Informed Neural Network)  آشنا شدی د. حال در این   تمرین به پ ی اده   سازی   آن  
خواهید  پرداخت. شما به عنوان  یک  مهندس مکانیک،   با هر زمینه  تحقیقاتی   اعم از سیالات،   جامدات و کنترل رباتیک،   در درجه اول با  
معادلات دینامیکی  سیستم  ها   مواجه می  شوید. این  معادلات د یفرانسیل  ممکن است از نوع  ODE  یا  PDE  باشند. می  دانید  که بعضی  از 
معادلات PDE ساده دارای حل دق یق هستند. اما اگر این  معادلات کمی پ یچیده شوند، چه؟!! در این  صورت، از روش های حل عددی ای ن 
معادلات کمک می  گیریم. استفاده از شبکه های   عصبی   (ع میق)   نیز یک  روش حل عددی برای  حل ای ن  معادلات به شمار می   رود ؛   اگرچه 
روش های   حل عددی  امروزی  هنوز  از  PINN  استفاده نمی   کنند. مبحث  PINN  یک  موضوع تحقیقاتی  بسیار  جدی د،   حتی   در میان  
موضوعات هوش مصنوع ی  است و احتمالاً به زودی جا یگزین روش ها ی حل عددی مرسوم امروزی خواهد شد. شما قرار است قدم به قدم 
با علم روز، یک معادله PDE را حل کنید!  
در  این  تمرین  یکی  از معروف ترین  معادلات  PDE  یعنی  معادله موج  یک  بعدی  را  برای حل  انتخاب کرده ایم. علت این  انتخاب این  است 
که می  توانید  حل  PINN  را با حل دقیق  معادله موج که در دسترس است مقایسه  کنید؛  اگرچه قدرت روش  PINN  در جایی  است که از 
حل دقیق  ناتوانیم!   برای  سادگی   کار شما،  خودمان   حل دقیق  آن را با روش جداسازی  متغیرها  پ یاده  سازی  کرده ایم   (فایل   با نام  wave 
در پوشهutils). اما حل آن با استفاده از روش  PINN  به عهده شما خواهد بود. دقت کنید که در نهای ت  پاسخ شما با پاسخ حل دقیق  با ید  
یکسان  باشد، وگرنه پ ی اده  سازی  شما صحیح  نیست. به این  منظور  پ یاده  سازی  فایل   های  model،  pinn  وtrain  در پوشهutils  می
بایست  تماماً  توسط شما   کامل  گردد. بق یه  فایل   ها کامل هستند و ن یازی  به تکم یل  ندارند. در پا یان  م ی  توانید   با اجرا ی  نوتبوک  
wave_equation_1d نتایج خود را ملاحظه کنید و ببینید که آیا با حل دقیق نتایج مشابه ی گرفته اید یا خیر. به دلیل چالشی بودن

6 
 
این  تمرین،  لطفا وقت خود را برای   حل آن مدیریت  کنید . اگرچه این  تمرین  کمی  چالشی  است،   اما موضوع ی  جدید   و پرثمر و آینده  دار در 
علوم مهندسی  و پایه به خصوص مهندسی مکانیک و فیزیک محض می باشد.  
به  صورت خلاصه، نیاز  به تغییر  فا یل  های  wave  (فایل  مربوط به حل دقیق) و  vis  (فایل  مربوط به توابع سازنده پلات ها برای  مقایسه  
حل دقیق  و حل  PINN) ندارید.  همچنین  نیازی  به تغییر  نوتبوک  wave_equation_1d  ندارید. فا ی ل  ها را از پوشه  utils  خارج نکنید .  
در نهایت  نوتبوک  wave_equation_1d  به عنوان موتور اصلی  باید  ران شود و فایل  های  پایتون  در پوشه  utils  برای  ران شدن نی ستند.  
تنها تکمیل  کردن فایل  های model وpinn وtrain به عهده شما است که در زیر  در رابطه با هر کدام توضیح داده شده است. به ای ن 
توضیحات  اکتفا نکنید؛  در خود نوتبوک نیز  توضیحاتی  داده  شده  که می  توانید   مطالعه کنید  و از همه مهمتر،  جستجو  کردن و مطالعه 
درباره موضوع PINN را فراموش نکنید. منابع بسیار زیاد  و مناسبی  در اینترنت موجود است.  
 
فایل  pinn   :در این فا یل باید  کلاس PINN و تابعcompute_grad را کامل کنید .   
برای  تکمیل  compute_grad  می  توانید   از تابع آماده  torch.autograd.grad  برای  پایتورچ  و  ی ا  tf.GradientTape  برای  تنسورفلو 
استفاده کن ید  (پ یشنهاد  می  شود  که برا ی  این  تمرین  از پا یتورچ  استفاده کن ید). توجه کن ید  که مدل  PINN  برای  حل معادله موج 
u_tt=c^2 u_xx  قرار است که به شماu  را خروجی  دهد؛  اما دست یابی  به  u_tt  وu_xx  از طریق  استفاده از تابع  compute_grad 
صورت می گیرد. 
و  اما در رابطه با کلاس  PINN، همانطور که ملاحظه می  کنید،  سه تابع زیان  مختلف داریم  که تابع زیان  نهایی  از مجموع آنها بدست می  
آید. همانطور که می  دانید،   هر صورت سوال  PDE  سه قسمت دارد:  خود معادله  PDE،شرایط  مرز ی  و  شرایط  اولی ه. مدل پ یش  بینی  کننده  
PINN  قرار  است مقادیر  x  وt  رابه عنوان  ورودی  گرفته و  یک  u  خروجی  بدهد که هر سه اینها  را با هم ارضا کند. به همین  جهت،  سه 
تابع زیان خواهیم داشت تا هر کدام مدل را به سمتی  ببرد تا این سه مورد را ارضا کند.  
برای  تابع زیان  برآمده از خود معادله  PDE، خروجی  u  را از مدل شبکه عصبی  بگیرید  و سپس مقاد یر  u_tt  وu_xx  را بدست آورید  و  
سپس  یک  تابع زیان   بنویسید  که معادله را ارضا کند. برای  تابع زیان  نیاز  به  یک   مقدار پ یش  بینی   شده و  یک   مقدار برچسب داریم. حال 
چالش شما این  است که برچسب چه چیز ی  باشد تا معادله   u_tt=c^2 u_xx  با در دست داشتن مقادیر  پ یش   بینی  شده  u_tt  وu_xx  
ارضا شود 
از  سمتی  دیگر،  شرایط  مرزی را دارید. می  دانیم  که شرایط  مرزی  به ازای  تمامی  زمان ها با شرایط  مرزی  خاص داده شده، بای د  در معادله 
صدق  کند. مقادیر  داده شده برای  شرایط  مرزی  به عنوان  برچسب برای  مقدار  u  استفاده می شود!  حال  همین  شرایط  را (تمامی  زمان ها  
با شرایط مرزی خاص) به عنوان ورودی به مدل بدهی د و خروجی آن را بگیرید. تابع زیان  میان این دو تعریف می  شود.  
همچنین،  شرایط  اولی ه  را دارید  که به ازای  تمامی  مکان ها و زمان صفر در معادله صدق م ی  کند . روند شرایط  مرزی  در این  جا نیز  صادق 
است. برچسب توسط صورت سوال به عنوان شرایط  مرزی  داده شده و مقدار پ یش  بینی   شده  توسط مدل با ورودی  تمامی   مکان ها و زمان 
صفر بدست خواهد آمد. تابع زیان  مربوطه نیز از مقایسه آنها تعریف می شود.  
مجموع  این  سه زیان،  زیان  کل را خواهد ساخت که آن را در تابع  physics_loss  بدست آورید. همچنین  تابع  data_loss  نیز  وجود 
دارد. این  زیان  که به عنوان زیان  چهارم به  کار می  رود،  زمانی  است که شما جدا از معادله، شرایط  مرزی  و شرایط  اولی ه،  یک  سری  داده  
دارید  که مثلا از طریق  تجربی  و آزمایش  بدست آمده اند  (در اینجا  مکان  x، زمانt  و مقدارu). می  توانید  برای  این  داده ها نیز  یک  تابع 
زیان  بنویسید  (ورودی های   مکان x، زمانt  را دارید   که توسط مدل u  را پیش بینی  م ی کند   و برچسب را نیز  خود داده به عنوان مقدار  u  
در اختیار  شما گذاشته است).  از آنجا  که داده ای  جداگانه برای  حل معادله در اختیار  نداریم،   در این مسئله (خوشبختانه!!)  به این تابع زیان 
کاری نداریم.  اما کماکان نوشتن کد تابع زیان آن لازم است.

7 
 
در  تابع  make_collocation  باید  ورودی  مناسب برای  سه تابع زیان  را بسازید.  برای  ایجاد  داده،   م ی  توانید  از مقادیر  تصادفی   در  ی ک 
بازه مکان ی   و زمان ی،   ی ا   مقاد یر  با گام ثابت در  یک   بازه مکان ی   و زمان ی   استفاده کنید. و سپس آنها را به ابعاد مناسب  reshape  کرده و به
صورت یک دیکشنری خروجی بدهید.  
در  تابع  forward  باید  به صورت واضح  روند محاسبه مقدار  u  توسط مدل بدست آید  (یک  گام رو به جلو که مکان  x، زمانt  را ورودی  
می گیرد  و  u  را خروجی می   دهد). حال مدل از کجا م ی   آید؟!   مدل از کلاس  make_fc_model  که ایمپورت  شده است، فراخوانی  می  
شود (که این  کلاس در فا یل model قرار دارد و توسط شما نوشته می  شود) و باید  در قسمت init کلاسPINN مقداردهی  اولیه شود.  
همچنین  ضریب  c  و بازه های  زمان ی  و مکانی   و تعداد داده ها را نیز  م ی  توانید  از کلاس  Wave_1D_Equation  که ایمپورت  شده است 
فراخوانی  کنید  (که این  کلاس در فایل  wave  شامل حل دقیق  موجود است و  این  به منظور  یکسان  کردن متغیرها  برای  هر دو حل است).  
 
فایل  model  :در این  فایل  بای د  تابع  make_fc_model  را تکمیل  کنید. این  مدل  یک  شبکه عصبی  MLP  خواهد بود. برای  پ یاده   
سازی مدل از توابع آماده استفاده کنید. تابع فعال ساز به دلخواه خودتان است. شبکه بیش از سه چهار لایه نیاز نیست.  
 
فایل  train  :در این  فایل بای د  حلقه  آموزش مدل را بنویس ید. ابتدا تابع زیان  را از  physics_loss  در فایل  pinn  فراخوانی  کنید. این کار 
را در  test_pinn  انجام دهید  که  اگر صرفاً  خواستید  در آینده  مدل را تست کنید،  از همین  تابع استفاده کنید. سپس از مقادیر  زیان 
بدست آمده از  test_pinn  در تابع train_pinn  استفاده کن ید  و  حلقه  آموزش را کامل کن ید. م ی  توانید  از توابع آماده مانند  
loss.backward استفاده کنید. ضمناً آموزش مدل بسیار کوتاه خواهد بود و وقت گیر نیست. 
فراموش نکنید  که در نوتبوک  wave_equation_1d  باید  آدرس جایی  که در آن فایل  utils  قرار دارد را بدهید  (ولی  نیاز به تکمیل 
هیچ چیز دیگری را در این نوتبوک ندارید .). مثلا فایل  utils درcontent/my_notebooks/’ قرار دارد. نحوه نوشتن آن:  
path = ‘content/my_notebooks/’ 
 
لینک مستقیم دانلود فایل های مربوط به این سوال: 
https://drive.google.com/file/d/18i6L4fsp20CQa03_H82UUMdATo5j7ErL/view?usp=sharing  
 
نکات موردتوجه  در زمینه ارائه فایل های سوالات عملی:   
o ترجیحاً صفحاتhtml از صفحه گوگل کولب یا جوپیتر که هم دارای کدها و هم پاسخ ها در زیر سلول های مربوطه می باشند  
را برای ما ذخیره و ارسال نمایید.   
o پیشنهاد می شودبهترین  مدل خود  در هر سوال  عملی   را با فرمت  h5  ذخیره کنیدتا در صورت نیاز ما در آینده به آن ها،  
دسترسی ها مقدور باشد.  
o دربخش  عملی  الزامی   به ارائه گزارش  نبوده و تنها  کافی  است توضیحات  و فرضیات  مورد نظر  و   همچنین  بحث روی  نتایج  حاصله ،   
به صورت مختصر و قابل فهم  در کد پایتون نوشته شود.

به نام خدا 
تمرین سری دوم درس رباتیک اجتماعی و شناختی 
(شبکه های عصبی پیچشی) 
 
1- همانطور که اطلاع دارید، شبکه های عصبی عمیق قادر به تولید داده های مصنوعی نظیر تصویر، صدا، ویدئو و حرکت های 
غیر واقعی ( و البته بعضاً غیر قابل تشخیص  برای انسان ها ) نیز می باشند. از سایت   
https://thispersondoesnotexist.com با ریفرش های متوالی، تعدادی عکس (حداقل 30 تصویر) ذخیره کرده و 
میانگین آن ها را رسم کنید. آیا تصویر به دست آمده از میانگین گیری شما، چهره فرد خاصی است؟    
 
2- با جستجوی اینترنتی وبه صورت کیفی به پرسش های زیر پاسخ دهید: 
الف) هنگامی که در فرآیند آموزش شبکه های عصبی از drop-out بهره می گیریم، دیگر در زمان تست از drop-out استفاده 
نکرده و در عوض وزن یال های خروجی را در keep probability) p ضربمی کنیم. علت این امر را توضیح دهید.  
ب) ممکن است از اسلایدهای درس به خاطر داشته باشید که در شبکه های عصبی عیمق (نظیر ResNet) بعضاً از ماژولی به
نام  (Batch-Normalization (BN)) استفاده شده بود. تحقیق کنید BN چگونهبه آموزش شبکه های عصبی کمک می 
کند؟ 
 
3- شبکه عصبی پیچشی زیر را در نظر بگیرید.  
 
الف) با فرض ورودی 3×32×32 و تعداد کلاس 10 تعداد پارامترهای شبکه را تعیین کنید 
ب) شبکه داده شده را برای داده های Cifar10 پیاده سازی کرده و نمودار دقت و تابع هزینه را گزارش دهید (این دیتاست در 
کراس موجود است). 
پ) با استفاده از مفهوم Transfer Learning می خواهیم وزن های یادگرفته شده در شبکه بخش ب را برای آموزش روی 4 
کلاس از پایگاه داده Cifar100 (بهعنوان نمونه: bicycle, mountain, table, dolphin )استفاده کنیم. برای این منظور 
از وزن ها ی یادگرفته شده لا یه های پیچشی بخش ب  استفاده کنید که فریز شده و آپدیت نمی ش وند؛ ولی لایه های

fully connected آنقابل آموزش و تغییر می باشند. طبیعتاً در مسئله ذکر شده، لایه آخر باید 4 نرون معادل 4 کلاس ذکر 
شده، داشته باشد. نمودار دقت و تابع هزینه را گزارش دهید (این دیتاست نسخه کامل تر Cifar10 ودارای 100 طبقه بوده و 
در کراس موجود است). 
ت) یک شبکه غیر ترتیبی (منظور با بهره گیری از Functional API در کراس) با معماری دلخواه (خواه کاملاً دست ساز و یا 
با بهره گیری ترکیبی از ماژول/ایده های اینسپشن، ResNet و) برای طبقه بندی دادگان Cifar10 ارائه دهیدتصویر معماری 
شبکه های خود را رسم کرده و ماتریس درهم ریختگی را بر روی دادگان تست نمایش دهید. 
 
4- اجازه دهید مجدداً به سوال پایانی تمرین سری قبلدر زمینه تشخیص حالت چهره افراد (نظیر شادی، غم، خشم و ...) بر 
اساس مجموعه عکس هایی مستخرج از پایگاه داده CK+ بازگردیم.  
الف) شما می بایست یک شبکه عصبی پیچشی طراحی کنید که تا حد امکان، طبقه بندی 8 کلاسه شناسایی حالت های چهره 
کاربران را به خوبی انجام دهد. عکس ها در هشت پوشه مختلف قرار داده شده اند و نام پوشه ها، معادل برچسب عکس موجود 
در آن ها است. ما در نهایت کدهای شما را روی مجموعه دادگانی به عنوان داده های تست (که هم اکنون در اختیار شما نیست) 
نیز پیاده سازی خواهیم کرد تا میزان توانمندی شبکه پیشنهادی شما را در طبقه بندی داده های جدید محک بزنیم.  
ب) یک عکساز این پایگاه داده انتخاب کنید. به دلخواه، یک یا تعدادی از فیلترهای لایه های پیچشی و همچنین نتیجه اعمال 
آن فیلترها بر عکس انتخابی خود را به صورت گرافیکی رسم نمایید. آیا فیلتر های انتخابی شما در حال آموزش ویژگی خاص و 
قابل بیانی از تصویر می باشند؟ 
پ) شبکه نهایی خود را جهت ارزیابی میزان دقت شناسایی حالت چهره (خود یا اطرافیان) از طریق وب کم لپ تاپ آزمایش 
کرده و نتیجه را گزارش دهید (بد نیست فیلمی در حد یک دقیقه از عملکرد این شبکه بر روی چهره خودتان را نیز بارگذاری 
کنید). ورودی شبکه تان عکس های گرفته شده در هر فریم توسط وب کم است.   
 
علاوه بر خواسته های مسائل، می بایست تمامی کدهای خود را نیز بارگذاری کنید.

1 
 
الف)  برای بدست آوردن  loss  تاکنون، روش هایی همانند  MSE  را آموختیم.  در خصوص روش های دیگری  مانند  nRMSE  و
rRMSE  تحقیق کنید و ویژگی های این روش ها را بیان کنیداین روش ها را با روش  MSE  که پیش  تر در کلاس آموختید،  مقایسه 
کنید.  
ب)  تحقیق کنید که توابع فعال سازی  LeakyReLU،PReLU،  RReLU،  ELU،  SELU  وGelu  چه ویژگی هایی دارند. این
توابع را با ReLU  کهتاکنون آموخته اید، مقایسه کنید.   
پ)  در شبکههای عصبی گاهی از دراپاوت1  دوبعدی و سهبعدی استفاده میشود. کاربرد و مزایای این دو روش را توضیح داده و بگویید 
چه تفاوتی با دراپاوت معمولی دارند.  
ت)  همانطور که میدانید در شبکههای عصبی عمیق بعضا از روشی به نام نرمالسازی دستهای2  استفاده میشود. تحقیق کنید نرمالسازی 
دسته ای چگونه به آموزش شبکه های عصبی کمک میکند. همچنین به طور مختصر توضیح دهید چه پارامترهای قابل یادگیری در روش 
نرمالسازی دستهای وجود دارد. 
 
1Dropout  
2Batch Normalization  
 
به نام خدا  
 
مهلت ارسال4 اردیبهشت 1403 " شبکههای عصبی پیچشی" تمرین سری دوم

2 
 
ث)  در خصوص شبکه های خودرمزگذار3 با لایههای کانولوشنی تحقیق کنید. ساختار، کاربرد و ویژگیهای این شبکهها را بیان نمایید.  
 
2-  همانطور که میدانید،  در شبکههای پیچشی معمولاً  از لایه های کانولوشن ساده استفاده میشود. نوع دیگری از لایه های کانولوشن نیز 
وجود دارد که لایههای کانولوشن گسترش یافته4  نام دارند. در این لایهها، همانطور که در شکل  1  مشاهده میشود، فیلتر هنگام اعمال بر 
ورودی و انجام ضرب کانولوشنی، بین خانههای ورودی فاصله میاندازد و با طول گام 5 بزرگتری حرکت میکند. توجه کنید که این طول  
گام با مفهوم stride در شبکههای پیچشی تفاوت دارد.  
الف) در مورد مزایا و معایب لایههای کانولوشن گسترش یافته تحقیق کنید و حداقل دو مورد از هر کدام را بیان کنید.  
ب)   در لایههای کانولوشن گسترشیافته،  مفهوم میدان دید 6  اهمیت بیشتری پیدا میکند. فرض کنید سه لایه کانولوشن گسترش یافته 
با سایز فیلتر  k × k  و طول گامd  بر روی یک ورودی اعمال میشود. محدوده ورودی را که عنصر  i, j  ام خروجی مشاهده میکند،  
به صورت پارامتری مشخص کنید (مقدار stride را1 در نظر بگیرید 
پ)  فرض کنید یک لایه با  m  فیلتر با اندازهk × k × 3  با پارامتر گسترشd  به یک ورودی با اندازه N × N × 3اعمال شود
ابعاد خروجی این لایه را بر حسب N, m, k, d محاسبه کنید 
 
3Auto Encoder  
4Dilated Convolution  
5Dilation Rate  
6Receptive Field  
شکل  1: فیلترکانولوشن معمولی و کانولوشن گسترش یافته

3 
 
3-  شبکه کانولوشنی با ساختار ذکر شده در جدول زیر را در نظر بگیرید. برای هر کدام از لایههای موجود در جدول، ابعاد خروجی هر لایه 
و تعداد پارامترهای آن را محاسبه کنید. ابعاد خروجی هر لایه به  صورتH×W×C   بیان میشود که  حروف  به ترتیب بیانگر ارتفاع، عرض و  
عمق خروجی میباشد. نحوه نمایش لایهها به صورت زیر است: 
● CONVx-N(S, P)   بیانگر یک لایه کانولوشن است که دارایN  فیلتر با ابعادx × x × D  میباشد، که  D  عمق خروجی
لایه قبل است. همچنین  S  بیانگرstride  وP  بیانگرpadding  میباشد .  در صورت عدم بیان این دو مقدار، هر دو را یک در  
نظر بگیرید.  
● POOL-n بیانگر یک لایهmax-pooling با اندازهn × n و پدینگ0 است 
● FC-N بیانگر یک لایهfully-connected  باN نورون است 
 
Number of parameters Output dimension Layer 
 32 × 32 × 3 Input 
  CONV3-8 
  ReLU 
  POOL-2 
  BATCHNORM 
  CONV5-16(3, 2) 
  ReLU 
  POOL-2 
  FLATTEN 
  FC-10 
 
4- شبکه کانولوشنی یک بعدی زیر را در نظر بگیرید. در شرایطی که همه متغیرها اسکالر هستند، به سوالات زیر پاسخ دهید 
شکل  2  :شبکهکانولوشن یک بعدی

4 
 
الف) پارامترهای این شبکه را مشخص کنید.  
ب) مقادیر  
𝜕𝐿
𝜕𝑤1
 و
𝜕𝐿
𝜕𝑤2
 و
𝜕𝐿
𝜕𝑎 را بدست آورید 
پ) با فرض اینکه داشته باشیم:  
𝜕𝐿
𝜕𝑣1
= 𝛿1   
𝜕𝐿
𝜕𝑣1
=  𝛿2 
 
مقادیر
𝜕𝐿
𝜕𝑧𝑖
 را محاسبه کنید 
ت) با فرض اینکه داشته باشیم:  
𝜕𝐿
𝜕𝑧1
= 𝛼1       
𝜕𝐿
𝜕𝑧2
= 𝛼2       
𝜕𝐿
𝜕𝑧3
= 𝛼3 
مقادیر
𝜕𝐿
𝜕𝑘𝑖
 و
𝜕𝐿
𝜕𝑏 را بدست آورید 
ث) در حالت کلی لایه کانولوشن یک بعدی زیر را در نظر بگیرید:  
با فرض اینکه داشته باشیم:  
      
𝜕𝐿
𝜕𝑧𝑖
= 𝛼𝑖 
مقادیر
𝜕𝐿
𝜕𝑘𝑖
 و
𝜕𝐿
𝜕𝑏 رابدست آورید.

5 
 
سوالات عملی750  نمره 
1-  هدف از این تمرین مقایسه عملکرد شبکههای  MLP  وCNN  در یکمسئله  طبقه بندی مشابه میباشد. در ابتدا قصد داریم با استفاده  
از مجموعه دادگان  EMNIST  و با ساختار مبتنی برMLP، یک بار طبقهبندی دادهها را انجام دهیم. سپس  آموزش را با استفاده از 
شبکه های پیچشی و با تعداد پارامترهای تقریباً   مشابه تکرار میکنیم، تا با مزایا و معایب هر کدام از این شبکهها آشنا شویم   (توجه شود  
که از طبقه بندی  byclass، که شامل کل دادههای موجود در این دیتاست است، استفاده شود. این طبقه بندی  62  کس دارد که شامل 
اعداد 0 تا9  و حروف کوچک و بزرگ انگلیسی است).  
الف) برای آشنایی با دادگان، یک تصویر از هر کلاس را به عنوان نمونه نمایش دهید.  
ب)  یک شبکه  MLP  را طراحی کرده و آموزش دهید. برای جلوگیری از بیشبرازش 7  از تکنیکهای  Regularization  مانندDropout 
وL2 Regularization   استفاده کنید. توجه کنید که در طول آموزش بهترین مدل را ذخیره کنید. سعی کنید تعداد پارامترهای شبکه
با تعداد پارامترهای شبکه پیشنهادی شما در قسمت  CNN  تقریباً  مشابه باشد. تعداد پارامترهای شبکه و نیز  Accuracy،Recall  و
Precision را گزارش نمایید 
پ)  تنسوربورد 8  ابزاری  است که به ما امکان مشاهده چگونگی تغییرات تابع خسارت و یا چگونگی تغییر وزن ها را در طول زمان میدهد. از 
این ابزار استفاده کنید و نمودار دقت و تابع خسارت را برای دادگان آموزش و تست رسم کنید.  
ت)  یک شبکه پیچشی با معماری دلخواه را طراحی کرده  و آموزش دهید. مانند بخش قبل میتوانید از تکنیکهایی نظیر  Dropout  و
Batch Normalization   استفاده کنید. هایپرپارامترها را مشابه بخش قبل در نظر بگیرید. در طول آموزش بهترین مدل خود را ذخیره
کنید. تعداد پارامترهای شبکه و نیز  Accuracy،Recall  وPrecision  را گزارش نمایید و با استفاده از تنسوربورد نمودارهای دقت و  
تابع خسارت را برای دادگان آموزش و تست رسم کنید.  
ث) نتایج به دست آمده را با نتایج بخش قبل مقایسه کنید.  
ج) فاکتوریزیشن کرنلها روشی است که در آن بجای استفاده از یک کرنل با سایز بزرگتر از چند کرنل متوالی با سایز کوچکتر استفاده  
میشود (برای مثال در این روش یک فیلتر  3    ×3  به دو فیلتر1    ×3  و3    ×1  متوالی تبدیل میشود). معماری شبکه پیچشی خود را به 
این منظور به  روز کنید و شبکه را مجدداً  آموزش دهید. تعداد پارامترها را با بخش قبل مقایسه کنید. بطور کلی مزایای استفاده  از این 
روش را بیان کنید.  
 
2-  هدف از این تمرین انجام مسئله  طبقه بندی برای تشخیص حالت چهره افراد (نظیر شادی، غم، خشم و ...) با استفاده از  
دادگان FER-2013 میباشد.  
الف)  یک شبکه عصبی پیچشی با معماری دلخواه طراحی کنید و آن را با  دادگان 2013-FER آموزش دهید، بطوری که تا حد امکان
طبقه بندی  ۷  کلاسه شناسایی حالت چهره افراد را به خوبی انجام دهد. عکسها در دو پوشه آموزش و تست قرار دارند و نام هر پوشه 
معادل برچسب آن کلاس میباشد. 
● Accuracy،Recall وPrecision را گزارش کنید 
 
7Overfitting  
8Tensorboard

6 
 
● نمودار خسارت و دقت را برای دادگان آموزش و تست رسم کنید 
● ماتریس درهم ریختگی9 را رسم نمایید 
ب)  یک عکس از این پایگاه داده انتخاب کنید. به دلخواه،  تعدادی از فیلترهای لایههای پیچشی و همچنین  نتیجه اعمال آن فیلترها بر 
عکس انتخابی خود را به صورت گرافیکی رسم نمایید. آیا فیلتر های انتخابی شما در حال آموزش ویژگی خاص و قابل بیانی از تصویر می  
باشند؟  
پ)  شبکه نهایی خود را جهت ارزیابی میزان دقت در شناسایی حالت چهره (خود یا اطرافیان) از طریق وبکم لپتاپ آزمایش کرده و  
نتیجه را گزارش دهید (بد نیست فیلمی در حد یک دقیقه از عملکرد این شبکه بر روی چهره خودتان را نیز بارگذاری کنید). ورودی 
شبکه تان عکسهای گرفته شده در هر فریم توسط وبکم است.  
 
3-  در یادگیری عمیق،  مدلهای شبکه عصبی میتوانند بسیار بزرگ باشند. در بسیاری از مواقع برای کاربردهای کوچک به  خصوص در 
شرایطی که با محدودیت در منابع محاسباتی مواجه هستیم، استفاده از این مدلهای بزرگ مقرون به صرفه نیست. در چنین مواقعی  
مجبور هستیم تا با فدا کردن مقداری از عملکرد و دقت، به استفاده از مدلهای کوچکتر و با تعداد پارامترهای کمتر روی بیاوریم و دادگان  
خود را با این مدل کوچک تر آموزش دهیم.  طبیعتاً  با کوچکتر کردن مدل، یادگیری بسیاری از خواص پیچیده دادگان برای مدل دشوار  
میشود. در این شرایط یکی از کارهایی که در راستای بهبود دقت مدل می توانیم انجام دهیم، پیاده سازی  
روش  Knowledge Distillation  است که در آن از یک مدل بزرگتر به  عنوان آموزگار استفاده میشود. به  عبارتی دیگر  در این روش،  
از یک مدل بزرگتر که از پیش روی دادگان مرجع آموزش دیده است، استفاده میکنیم تا مدل کوچک تر را آموزش دهیم. برای مطالعه 
بیشتر میتوانید به این  مرجع  مراجعه کنید. همچنین در این  مقاله   به  طور دقیقتر به  این موضوع پرداخته شده است. به  طور خلاصه، در 
این روش، لاجیتها 10ی مدل بزرگتر به  عنوان برچسب و به جای برچسب های اصلی دادگان ورودی، به مدل کوچکتر داده میشود تا  
آن را یاد بگیرد. تابع خسارت نهایی به صورت زیر است:  
که در این رابطه  x  بیانگر ورودی،W  پارامترهای مدل کوچکتر،  y  برچسبهای واقعی،  H  تابع خسارتCross-Entropy،σ  تابع 
Softmax،   αضریبی برای ترکیب تابع خسارت عادی وdistiller،و  T  نیز بیانگرTemperature  اعمال شده در تابعSoftmax  
است که بصورت زیر میباشد:  
در این تمرین قصد داریم یک شبکه عصبی با معماریMobileNetV2   را برایمسئله  طبقه بندی با مجموعه دادگان  CIFAR-10 
آموزش دهیم 
الف)  در این بخش قصد داریم از مفهوم  Transfer Learning  استفاده کنیم. برای این کار مدل از پیش آموزش دیدهResNet-50 
رویImageNet  را آماده کنید. سپس لایهfully-connected  نهایی آن را  با یک لایه با سایز مناسب برای دادگان  CIFAR-10 
 
9Confusion Matrix  
10 مقادیر خروجی  شبکه پس از عبور از لایه connected-fully نهایی

۷ 
 
جایگزین کنید. حال پارامترهای دیگر شبکه را ثابت نگه دارید و تنها لایه آخر را بر روی دادگان  CIFAR-10  آموزش دهید و نتایج را
ارزیابی و ارائه نمایید.  
ب)  مدلی که در بخش قبل آموزش دادید را بعنوان مدل آموزگار انتخاب  کنید و با آن یک مدل  MobileNetV2  را از صفر بر روی
دادگان  CIFAR-10  آموزش دهید و نتایج را ارزیابی کنید. برای انتخاب هایپرپارامترα  وτ  آزمون انجام دهید و تا جای امکان بهترین
مقادیر را انتخاب کنید  (توجه شود که برای انتخاب هایپرپارامترها نیاز نیست فرایند آمو زش را با تعداد epoch  زیاد انجام دهید. برای این
کار دو یا سه بار آزمون با تعداد  epoch  کم کافیست. نتایج این آزمونها را در جدولی ارائه کنید و بهترین هایپرپارامتر را انتخاب نمایید).  
پ)  در این مرحله مدل  MobileNetV2  را از صفر و بدون آموزگار بر رویCIFAR-10  آموزش داده و ارزیابی کنید. دلیل تفاوت را
توضیح دهید.  
ت)  در صورتی که در بخش (الف) به جای آموزش لایه آخر، کل مدل را  Fine-tune  میکردیم چه اتفاقی میافتد. این آزمایش را انجام 
دهید و ارزیابی نمایید و دلیل تفاوت را گزارش کنید. 
 
نکات مورد  توجه  در زمینه ارائه فایل  های سوالات عملی:   

به نام خدا 
تمرین سری سوم درس رباتیک اجتماعی و شناختی 
(شبکه های عصبی بازگشتی و مدل های مخفی مارکوف) 
 
1- یک سیستم دینامیکی (به عنوان مثال یک سیستم مکانیکی) دلخواه را تحت ورودی های متغیر با زمان در نظر بگیرید. ابتدا 
آن را به صورت تحلیلی و یا با بهره گیری از روش های عددی (نظیر ode45 در متلب حل کرده، سپس پاسخ های به دست 
آمده را به بخش های دادگان آموزش و دادگان آزمون تقسیم کنید. یک شبکه بازگشتی مناسب آموزش دهید تا این سیستم 
دینامیکی را مدل کند. ورودی های شبکه را در هر گام زمانی، ورودی سیستم دینامیکی (به عنوان مثال نیروها/گشتاورهای وارد 
به سیستم در هر لحظه، موقعیت اعمال آن نیروها و گشتاورها، و در صورت تمایل و به صورت عمومی تر، جرم ها و ممان های 
اینرسی اجزا و ...) و همچنین خروجی لحظه قبل (به عنوان مثال موقعیت ها و سرعت های خطی/زاویه ای گام پیش) در نظر 
بگیرید.  
الف) خروجی شبکه را از t=0 تا زمان دلخواهرسم کرده و دقت شبکه خود را گزارش نمایید. قدرت شبکه خود را در دادگانی 
در خارج از مجموعه آموزش خود (به عبارتی در زمان هایی بیش از حداکثر زمان آموزش شبکه) نیز بررسی کنید؛ پیش تر 
مشاهده کردیم که شبکه های عصبی چندلایه معمولی، لزوماً برونیابی مناسبی ندارند. آیا با بهره گیری از شبکه های عصبی 
بازگشتی، این شرایط ارتقا یافته است؟     
ب) با تغییر ورودی سیستم دینامیکی و بدون آموزش مجدد شبکه، بررسی کنید که آیا شبکه همچنان قادر به یافتن خروجی 
های صحیح می باشد یا خیر.  
یک پیشنهاد برای سیستم دینامیکی، یافتن موقعیت و سرعت یک جسم متصل به یک فنر و دمپر تحت نیروی نوسانی غیرخطی 
(پالس مربعی) بر حسب زمان است: 
𝑚𝑥̈ + 𝑐𝑥̇ + 𝑘𝑥 = 𝑓(𝑡)  
𝑓(𝑡) = {1
0
       0 ≤ 𝑡 < 1
       1 ≤ 𝑡 < 2 ,     𝑓(𝑡 + 2) = 𝑓(𝑡) 
اگرچه شما می توانید به دلخواهسیستم های دینامیکی جذاب تری (!) را نیز مدل کنید. 
 
الف) در مدل های مارکوف، تاکنون فرض ما بر وابستگی حالت ها (states) فقط به یک گام زمانی قبل بودفرض کنید باریدن 
باران امروز، بستگی به شرایط هر دو روز گذشته خود دارد. ماتریس انتقال حالت (robabilityPransition Ttate S) در این
وضعیت چگونه است؟

بدر شبکه های بازگشتی دنباله-به-دنباله (sequence-to-sequence)، از دو روند متفاوت برای آموزش و تست استفاده 
می شود. در فاز آموزش، در مرحله t از برچسب واقعی مرحله t-1 استفاده می شود و شبکه، خروجی درست مرحله قبل را 
استفاده می کند. در فاز تست، از خروجی مدل در مرحله t-1 به عنوان ورودی مرحله t استفاده می شود. این تفاوت باعث وجود 
مشکل Exposure Bias می شود. این مشکل را توضیح دهید. چه راه حلی برای آن ارائه شده است؟ 
پ) یکی از مشکلات شبکه های عصبی عمیق، می تواند بیش برازش (فیت شدن بیش از حد آن ها بر روی داده های آموزشی) 
باشد. از این رو برای آموزش آن ها، می توان از تکنیک های منظم ساز مثل Batch Normalization استفادهکرد که در 
تمرین سری دوم با آن آشنا شدید. بیان کنید که آیا می توان به طور مستقیم از این روش در شبکه های عصبی بازگشتی نیز 
استفاده کرد؟ چه مشکلاتی برای استفاده از آن وجود دارد و راه حل چیست؟ 
 
3- مجموعه مدل های مخفی مارکوف مناسب برای شش حرف فارسی «ب»، «ت»، «ح»، «ص»، «ع» و«ک» ارائه کنید (هر 
حرف یک HMM) .جهت جمع آوری دادگان می توانید از کدهای ارائه شدهما در سامانه درس افزار بهره گیرید. برای هر حرف 
حداقل از 5 نمونه آموزشی استفاده کنید. جهت آموزش مدل مخفی مارکوف خود نیز می توانید از کدهای متلب ارائه شده توسط 
دکتر کلینون استفاده نمایید. الف) برای هر مدل، A،B و𝜋 راگزارش نمایید. ب) دقت مدل های خود را در تعدادی نمونه 
آزمون (حداقل 3 نمونه برای هر دسته) با ارائه ماتریس درهم ریختگی ارزیابی نمایید.          
 
4- لب خوانیخودکار توسط سامانه های رباتیک اجتماعی به صورت بالقوه در تشخیص بهتر علائم زبان اشاره ایرانی کاربرد دارد. 
(جهت اطلاع شما، متاسفانه به علت عدم آشنایی افراد عادی در جامعه و حتی معلمین افراد ناشنوا/با مشکلات شنوایی در کشور 
با زبان اشاره ایرانی، افراد ناشنوا از همان ابتدای دوران تحصیل به لب خوانی عادت کرده و (به جای تعامل مستمر دوطرفه با 
دیگران از طریق حرکات دست و دهان به صورت همزمان،) برای رفع نیازهای خود، ناچار به خبره شدن در زمینه لب خوانی 
هستند!! بگذریم ...) در این سوال مجموعه دادگانی در قالب داده های آموزش و آزمون به شکل فیلم های کوتاه (بدون صدا) با 
پسوند mp4 در اختیار شما قرارمی گیرد که شما می بایست با طراحی شبکه ای مناسب، یک مسئله دسته بندی انجام دهید. 
تعداد کلمات استفاده شده در این سوال 5 کلمهشامل 1: ایران، 2: خوشحال،3: معلم،4: سلام،5: خداحافظ) است که توسط 
10 فرد مختلف، هر یک به تعداد 4 مرتبه، بیان شده اند. تعداد افراد آموزش 8 (شماره های 1 تا8) وتعداد افراد تست 2 (شماره
های 9 و10) می باشدنام گذاری فایلها بدین صورت است که عدد بعد از s شماره فرد، عدد بعد ازw شماره کلمه و عدد بعد 
از r مرتبه تکرار را نشان میدهد (برای مثال s1-w2-r3 فایل مربوط به تکرار سوم کلمه 2: خوشحال توسط فرد شماره 1 
است). یک شبکه تلفیقی پیچشی-بازگشتی ارائه دهید تا دسته بندی این 5 کلمه را انجام دهدالف) ساختار مورد نظر خود را 
برای انجام این تکلیف طبقه بندی توضیح دهید. ب) ماتریس درهم ریختگی را بر روی دادگان آزمون ارائه کنید. 
  
لینک دانلود دادگان آموزش و آزمون: 
https://drive.google.com/drive/folders/19po4DgGLAobWcn2Je-
hp9lawUWXLYWv2?usp=sharing  
 
1 
 
ذکر کنید.  کمک گرفتن از LLM ها در حل تمارین مجاز است!!  
Google Colab برای کدنویسی و تست کدهای خود استفاده نموده و فایل کدها را به فرمIPYNB ارسال کنید 
•  در صورت داشتن هرگونه سوال و ابهام با دستیاران آموزشی این بخش در ارتباط باشید:  
o سیده نیلوفر حسینیs.n.hoseini1379@gmail.com ) 
o علی مجیبیalimojibi99@gmail.com) 
 
سوالات  تشریحی   (002  نمره 
الف) مشکل Vanishing Gradient را توضیح دهید و بیان کنید  چگونه در شبکه های LSTM از این مشکل جلوگیری میشود؟ 
ب) چگونه گیت  ورودی،  گیت  فراموشی  و گیت  خروجی  در  یک  شبکه  LSTM  به توانایی  آن در  یادگیری  وابستگی  های  طولانی  مدت 
کمک می  کند؟  
پ) شبکه های RNN وLSTM  چگونه دادههای گمشده ی ا ناقص را در توالی مدیریت  میکنند؟  
ت) درمورد اصطلاح Teacher Forcing در آموزش شبکههای  عصبی جستوجو کنید و مزایا و معایب آن را بیان کنید.   
ث) معماری  Vision Transformer  را به صورت مختصر شرح دهید. به نظر شما این  معماری  چگونه قابلیت  تعمیم  برای  استفاده  
ورودی از جنس فیلم را دارد؟    
 
به نام خدا  
 
مهلت ارسال30 اردیبهشت 1403 " شبکههای بازگشتی و ترنسفورمر" تمرین سری سوم

2 
 
2- شبکه بازگشتی یک بعدی با گراف محاسباتی زیررا درنظر بگیرید. در این شبکه تنها پارامتر اسکالر w را داریم 
 
شکل 1: گراف محاسباتی برای یک شبکه بازگشتی ساده 
الف) یک رابطه بازگشتی برای شبکه مذکور بنویسید. 
ب) با نوشتن روابط انتشار به جلو مقدار 𝑝,𝑞,𝑟,𝑠, 𝑡, 𝑦̂ را برحسب ورودیها محاسبه کنید.  
پ) تابع خطا را به صورت  (𝑦 − 𝑦̂)2  در نظر بگیرید و سپس با استفاده از الگوریتم انتشار خطا به عقب و گراف محاسباتی شکل  1،
مشتقات جزئی روی هرکدام از یالهای خروجی از w رابدست آورید.  
ت) با استفاده از نتیجه قسمت پ، مشتق خطا نسبت w را محاسبه کنید 
ث) با توجه به روابطی که در قسمتهای قبل بدست آوردید، درمورد دو مشکلی که میتواند آموزش شبکههای عصبی بازگشتی را دشوار 
کند توضیح دهید.

3 
 
3-  در این مسأله میخواهیم از یک شبکه بازگشتی برای پیاده سازی جمع  اعداد باینری استفاده کنیم. بهعنوان مثال جمع زیر را 
درنظر بگیرید.  
[100111 + 110010 = 1011001] 
برای سادگی عملیات جمع را از کم اهمیت ترین بیت (بیت سمت راست) شروع میکنیم. به عبارتی ورودیهای شبکه را بهصورت  
زیر درنظر می گیریم. توجه کنید که دنبالهها را با 1 بیت اضافهpad میکنیم.  
𝐼𝑛𝑝𝑢𝑡1:1,1,1,0,0, 1,0 
𝐼𝑛𝑝𝑢𝑡2:0,1,0,0,1, 1,0 
𝑜𝑢𝑡𝑝𝑢𝑡:1,0,0,1,1,0,1 
بهنوعی شبکه را میتوان بهصورت زیر نمایش داد  
 
شکل 2: یک شبکه بازگشتی برای جمع اعداد باینری 
هدف طراحی وزنها و بایاسها برای این شبکه بازگشتی است. برای سادگی فرض کنید که هر واحد  RNN،3  نورون مخفی دارد.  
همچنین از تابع فعالساز پله با رابطه زیر استفاده کنید:  
𝑓(𝑥) = {1 𝑥 > 0
0 𝑂𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒 
مطلوب است محاسبه ماتریسهای 𝐔,𝐕,𝐖 و همچنین مقادیر بایاس𝐛h,𝑏𝑦 برای معماری زیر: 
 
شکل 3: نمایش فشرده برای شبکه بازگشتی

4 
 
4- در مقاله معرفی مدل ترنسفومر (Attention is all you need)، از کدگذاری موقعیت به صورت زیر استفاده شده است 
𝐩𝑡 =
[
 
 sin𝜔1𝑡
cos𝜔1𝑡
sin𝜔2𝑡
cos𝜔3𝑡
⋮
sin𝜔𝑑
2
𝑡
cos𝜔𝑑
2
𝑡
 ]
 
𝑑×1
 
که در آن 
𝜔𝑘 = 1
100002𝑘/𝑑 
الف) توضیح دهید که پارامترهای  𝑑 و𝑡 بیانگر چه هستند؟ 
ب) در بخشی از مقاله مذکور، نویسندگان به علت انتخاب این شیوه از کدگذاری موقعیت اشاره می کنند: 
"We chose this function because we hypothesized it would allow the model to easily learn to attend by relative 
positions, since for any fixed offset 𝑘, 𝑃𝐸𝑝𝑜𝑠 + 𝑘 can be represented as a linear function of 𝑃𝐸𝑝𝑜𝑠." 
در این قسمت میخواهیم اثباتی برای این عبارت ارائه دهیم. ابتدا برای یک جفت  sin  وcos  با فرکانس𝜔𝑘  نشان دهید ماتریس  
M  یوجود دارد که:   
𝐌.[sin𝜔𝑘𝑡
cos𝜔𝑘𝑡] = [sin(𝜔𝑘(𝑡 + 𝜑))
cos(𝜔𝑘(𝑡 + 𝜑))] 
پ) با استفاده از نتیجه قسمت ب ثابت کنید تبدیل خطی T وجود دارد که به کمک آن میتوان نوشت: 
𝐓(𝑘).𝐩𝑡 = 𝐩𝑡+𝑘

5 
 
سوالات عملی800  نمره 
1-  با استفاده از معماری  LSTM، مدلی   برای  پ یشبینی   سری  زمان ی  مربوط به دادگان تغییرات  آب و هوایی  دهلی   ارائه دهید   و دقت مدل 
خود را ارزیابی کنید . نوت بوک مربوطه به سوال پ یوست است.  
 
2- هدف از این سوال طبقه بندی تصاویر با استفاده از مدلهای از پیش آموزش داده شده Vision Transformer است. برای این کار
به دلخواه یکی از مدل های از پیش آموزش داده شده Vision Transformer  (ViT  )را انتخاب نموده و این مدل را برای تسک طبقه
بندی تصاویر روی دادگان  CIFAR10،Fine Tune  کنید. نوت بوک این سوالپیوست است.  توجه کنید که حداقل دقت قابل قبول  
برای این سوال 80% است  
 
3-  لب خوانی خودکار توسط سامانه های رباتیک اجتماعی به صورت بالقوه در تشخیص بهتر علائم زبان اشاره ایرانی کاربرد دارد  (جهت 
اطلاع شما، متاسفانه به علت عدم آشنایی افراد عادی در جامعه و حتی معلمین افراد  ناشنوا/با مشکلات شنوایی در کشور با زبان اشاره 
ایرانی، افراد ناشنوا از همان ابتدای دوران تحصیل به لب خوانی عادت کرده و (به جای تعامل مستمر دوطرفه با دیگران از طریق حرکات 
دست و دهان به صورت همزمان،) برای رفع نیازهای خود، ناچار به خبره شدن در زمینه لب خوانی هستند!! بگذریم ...).  در این سوال  
مجموعه دادگانی در قالب داده های آموزش و آزمون به شکل فیلم های کوتاه (بدون صدا) با پسوند  mp4  در اختیار شما قرار می گیرد
که شما می بایست با طراحی شبکه ای مناسب، یک مسئله دسته بندی انجام دهید.  تعداد کلمات استفاده شده   در این سوال  5  کلمه
(شامل  1: ایران،  2: خوشحال،3: معلم،4:  سلام،5: خداحافظ) است که توسط  10  فرد مختلف، هر یک به تعداد4  مرتبه، بیان شده اند
تعداد  افراد آموزش  8  (شماره های  1  تا8)  وتعداد  افراد تست  2  (شماره های  9  و10)  می باشدنام   گذاری  فایلها  بدین  صورت است که 
عدد بعد از  s  شماره فرد، عدد بعد ازw  شماره کلمه و عدد بعد ازr  مرتبه تکرار را نشان میدهد   (برا ی  مثال  s1-w2-r3  فایل  مربوط به 
تکرار سوم کلمه 2: خوشحال توسط فرد شماره1 است).    
الف)  یک شبکه تلفیقی پیچشی-بازگشتی ارائه دهید تا دسته بندی این  5  کلمه را انجام دهد. ساختار مورد نظر خود را برای انجاماین 
تکلیف طبقه بندی توضیح دهید.  ماتریس درهم ریختگی را بر روی دادگان آزمون ارائه کنید. 
ب) سوال بخش الف را به کمک طراحی یک شبکه تلفیقی پیچشی-ترنسفورمر مجدداً انجام دهید و نتایج را با بخش الف مقایسه نمایید.   
پ) سوال بخش الف را با یک شبکه پیچشی سه بعدی حل کرده و نتایج را با دو بخش قبل مقایسه نمایید.   
 
حداقل دقت قابل قبول برای این سوال، 70 درصد می باشد 
 
لینک دانلود دادگان آموزش و آزمون:  
https://drive.google.com/drive/folders/19po4DgGLAobWcn2Je-hp9lawUWXLYWv2?usp=sharing

6 
 
4-  در این سوال هدف پیاده سازی یک مدل برای توصیف عکس1  بر رویدادگان  flickr8k  است. شکل4  شماتیکی از مدلی که قصد
توسعه آن را داریم نشان میدهد.   برای این سوال بایستی نوت بوک مربوطه را گام به کام کامل فرمایید. جزئیات لازم برای پیاده سازی در 
نوتبوک آورده شده است. توجه کنید که در این سوال برای مکانیزم  توجه استفاده ازتوابع از  پیش آماده شده مجاز نیست. 
 
شکل 4: پیاده سازی مدل توصیف عکس با استفاده از1 - شبکه های پیچشی2-  مکانیزم توجه3-  شبکهLSTM 
 
به صورت مختصر و قابل فهم  در کد پایتون نوشته شود.  
 
1 Neural image captioning

1 
 
ذکر کنید.    
 
1- میانگینجرم شکلات های مورد علاقه میلاد مرادی (!)  در 10 آزمایشبر حسب گرم به صورت زیر به دست آمده است:   
92.2, 97.4, 95.0, 98.1, 99.0, 100.1, 89.4, 91.5, 93.2, 88.5 
اگر بدانیم که انحراف معیار جامعه اصلی  𝜎 = 0.35 است، آیا می توان با95 درصد اطمینان، جرماین نوع شکلات را 100 گرم در نظر
گرفت؟   
 
2-  در یکمطالعه میدانی برای آموزش  زبان دوم به  7  کودک،   یک بار از ربات اجتماعی و یک بار از بازی های واقعیت مجازی  استفاده  
نموده ایم.  نتایج آزمون پایانی این  کودکان در دو  آزمایش ذکر شده به شرح زیر است. با سطح ریسک  5  درصدسطح اطمینان  95  درصد)،  
آیا اختلاف معناداری میان نتایج دو آزمایش انجام شده وجود دارد؟   
 
کودک 7 کودک 6 کودک 5 کودک 4 کودک 3 کودک 2 کودک 1  
92.03 93.49 91.91 91.60 91.39 92.59 93.08 نتایجآزمایش با  
ربات اجتماعی  
92.31 93.91 91.70 92.17 91.86 92.85 92.97 نتایجآزم ایش  
واقعیت مجازی  
 
3-   جهت انجام یک آزمایشمبتنی بر اندازه گیری، یک نیروی  غیرمتخصص 12 نمونهو یک نیروی متخصص 9 نمونهرا آنالیز  کرده اند.  
نتایج بررسی ها،   واریانس های دو نمونه را به ترتیب  𝑆1
2 = 0.183  و𝑆2
2 = 0.062  نشان می دهدبا فرض این که این دو تحقیق از 
جامعه نرمال تبعیت کرده  باشند، تعیین کنید با سطح اطمینان  90  درصد، آیامیان  واریانس های دو نمونه تفاوت معنادار آماری  وجود 
دارد؟  
 
برای دسترسی به جداول  Z،t وF می توانید از منابع اینترنتی یا نرم افزارها بهره گیرید.   
 
به نام خدا  
 
مهلت ارسال22 خرداد 1403 " ارزیابی مطالعات میدانی" تمرین سری چهارم

2024
Alireza Taheri, PhD, Assistant Professor
Sharif University of Technology, Tehran, Iran
1
Chapter 3+: Large Language Models

Outlines
► What is a Language Model? 
► Language Model
► Representations for Language
► What is a Large Language Model?
► Definition. Self-Supervised Learning, SSL tasks for LLMs, Transformer Architecture, Types of LLMs
► Parameter Efficient Fine-Tuning
► Adapters, Soft Prompts, LoRA
 Multimodal Models
 Vision Language Alignment methods
 Adapted LLMs
 LLM Agents
2

What is a language model?
Language model: probabilistic model over a distribution of vocabularies.
In simple terms, a language model learns to predict the probability of a sequence of words (It assigns probability 
to each word and selects word with highest probability).
3

Representation Learning for NLP
• ML models expect numerical values as input, so for processing text by ML methods, we need initial 
numerical representations.
• First convert (typically by a neural network) text into a new space and then use ML methods.
• All the methods we learned so far are applicable on NLP tasks, such as RNN/LSTMs.
4

Word representations in NLP
► But today, using pre-trained language models is standard approach to do it.
► LLMs do representation learning and typical machine learning End2End.
► Pipeline is similar to models in computer vision such as ResNet.
5

► Most important characteristic of these representations is being contextualized.
► Meaning of a word is determined by the words and the sentence it is used.
► Word2vec only put similar words close to each other in embedding space.
► It does not have anything to do with sentence-level semantic.
► ELMo paper in 2018 introduced contextualized word embeddings which takes into account other 
words in the sentence and final embeddings (using attention mechanism and LSTM).
Contextualized Word Embeddings
شیر سلطان جنگل استاز  سوپرمارکت شیر پاکتی خریدیمشیر آب خراب شده
Before 2018, we didn’t have any direct method to differentiate 
these 3. But with ELMo paper, it was made possible.
6

What is a Large Language Model?
► They are neural language models but their size and also the size of data they have been 
trained on, are massively scaled up.
► For learning from these massive dataset we need special architectures and also better 
objectives.
► self-supervised objective
► transformer architecture
7

Self-Supervised Learning
► Self-Supervised Learning (SSL) at the intersection of supervised learning and unsupervised 
learning.
► It is unsupervised because there is no human supervision via labeling.
► But it also is supervised because actually there is labels (pseudo-labels), but 
supervision comes from data itself (hence the name self supervised).
At each step predict next word. Labels are 
next words in the sequence.
8

Involves two step
1. Pre-training: Involves defining a pre-text task
2. fine-tuning: with learned representations, fine-tune for downstream task.
9

Why Self-Supervised learning?
► There are huge amounts of unlabeled data. 
► Human supervision is hard and time-consuming and also not perfect.
► Also, supervised learning is very limiting: Yann LeCun’s cake analogy.
10

SSL in NLP
There two widely used objectives and both are types of language modeling.
1. Causal Language Modeling (CLM or Autoregressive (AR)): Predicting future tokens given previous
2. Masked Language Modeling (MLM): Predicting masked tokens given other tokens in a sentence.
Masked Language ModelingAutoregressive Models
11

Transformer Architecture
12

Large Language Models
► Transformers and SSL objective allow language models to be trained on massive scale 
(both size of model and size of data).
► Typical LLMs have at least 1 Billion parameters. GPT-4 which is largest LLM to date has 
over 1.5 Trillion paramters!
► The datasets are also massively scaled.
Some of the datasets used to train LLMs
13

Tokenizers
14

Types of LLMs
15

History of LLMs
16

Evolutionary Tree of LLMs
17

Important Characteristics of LLMs
1. Zero-Shot Learning (In-context Learning)
► LLMs become meta-learners. They can adapt quickly to new tasks without 
any fine-tuning. No meta-learning objective, only massive dataset achieves 
this.
18

2. Scaling laws
► Scaling law: the ratio of pre-training data to size of the model. It was 
demonstrated in GPT-3 paper that this ratio is around 3 or 4. So more 
data meant better models.
► In 2022, DeepMind in Chinchilla paper showed ratio is at least 20.
19

3. Emergent behaviors
► The model is not trained on Persian QA, after certain size it can solve 
the task!
20

Parameter Efficient Fine-Tuning
Why?
1. Adaptation to new domains (not present in pre-training dataset such as math, 
LLMs are bad at math)
2. Instruction following
3. Alignment (LLMs must follow some guidelines, for example not talk about very 
sensitive topics)
4. Transfer learning to new tasks and even modalities (multimodal models).
21

Parameter Efficient Fine-Tuning (PEFT)
22

Important Methods of PEFT
1. Adapter
2. Soft Prompts
3. LoRA
23

Adapters
24

Adapters
► Bottleneck architecture (similar to 1*1 kernels in inception modules)
► The adapter has a skip connection itself.
► New layer normalization parameters per task as well.
► All other weights are frozen.
► Near identity initialization of the adapter.
Parameter-Efficient Transfer Learning for NLP (2019)
25

Adapters
26

Other Variants of Adapters
Pfeiffer adapter
27

Modularity of adapters
28

Soft Prompts
► Providing proper task-specific context in the input can steer the LM to
► solve the task more efficiently.
► Encoding of the original input x will change. Guiding the model to extract relevant 
information from x.
► We can find this context automatically.
► Prepend certain trainable prefix tokens to the input/hidden activations.
29

In prompt engineering, we provide context to Language Learning Models (LLMs) to solve tasks. Soft 
prompts automate this process. By fine-tuning LLMs and learning trainable tokens, we can extract 
context without explicit specification.
30

Prefix Tuning
It adds trainable tokens to key, value vectors. 
31

Low-Rank Adaptation (LoRA)
► Full fine-tuning involves updating weight matrices for key, query, value, and other 
weights.
► LoRA assumes the weight update matrix (the gradient of loss with respect to 
parameters) is sparse, meaning most values are close to zero and the 
corresponding parameters are not crucial for the downstream task.
► If the matrix is sparse, it can be represented with fewer parameters as most are 
near zero.
► Instead of directly computing these values, LoRA freezes all model parameters 
and adds some parameters to represent the weight matrices.
32

► LoRA uses two low rank matrices to 
construct weight update matrix.
Results of LoRA paper on GPT-3
33

LoRA vs. Other methods
34

Summary of PEFT methods
35

What is multi-modality?
Awais et al., “Foundational Models Defining a New Era in Vision: A Survey and Outlook”, 2023
36

A lesson from LLMs
37

Vision-Language Alignment Methods
 We aim for vision concepts and their corresponding descriptions to be close in the embedding 
space, similar to word embeddings.
 For instance, an image of an apple and the embedding of “apple” should be near each other in 
the embedding space.
 Given a batch of images and their plain language descriptions, we strive to bring images closer to 
their descriptions in a shared embedding space.
 This approach enhances the model’s semantic learning from each pair, even without exact labels, 
using image pairs such as those from Instagram.
38

The approach used in previous slide, is exactly what CLIP does.
Text encoder can models such as BERT and image encoder can be models like resnet50 or ViT.
Each batch consisted of image-pairs. 
Image-pairs on diagonal correspond to 
same concept.
We want image-pairs on diagonal to get 
close to each other in shared embedding 
space and others get farther to each 
other.
39

CLIP (Contrastive Learning of Image-Pairs)
 The method of closing similar image-pairs and push away dissimilar image-pairs called Contrastive 
Self-Supervised Learning.
 CLIP can be used for almost all computer vision tasks. A very important differences of CLIP is ability 
of zero-shot learning.
 Without seeing any label from a class, it can predict the label!
40

CLIP
Zero-shot CLIP outperfoms SOTA models on ImageNet! (on 2021)
41

CLIP
42

Variants of CLIP
43

Other Vision-Language Alignment methods
The trend is going toward generative self-supervised learning like 
LLMs instead of contrastive methods.
44

Encoder-Decoder Example
SimVLM
45

Fusion Decoder Example
CoCa
46

Summary of VLMs (alignment)
47

Adapted LLMs
 VLMs bridge the vision and language spaces.
 VLMs showcase impressive capabilities for zero-shot adaptation to unseen tasks
 However, they are still restricted to tasks in a pre-defined form, struggling to 
match the open-ended task capabilities of LLMs.
 How can we utilize the potentials of LLMs for creating a general-purpose 
assistant?
 various tasks can be explicitly represented in language
 They must be able to ingest a multimodal prompt containing images and/or videos 
interleaved with text.
48

49

50

Frozen
It uses the idea of soft-prompts to encode image semantics into embedding space of LLMs.
51

Frozen
52

Other Adapted LLM methods
 Flamingo
 BLIP 2
 They use more sophisticated methods to encode vision information into pre-trained LLMs.
 For example flamingo uses perceiver-resampler. Refer to paper for more info.
53

Summary of Multi-Modal LLMs 
 Main focus on research is on vision modality (either image or video).
 We reviewed important models for working with vision and language together.
54

LLM Agents
55

LLM Agents
56

LLM Agents
57

LLM Agents
58

LLM Agents
59

LLM Agents
60

Summary of LLM Agents
61

62

E:\courses\LangChain Project\main root\data\SCR_Session01_transcript.txt

به نام خدا دوستان عزیز و ارجمند درس رباتیک اجتماعی شناختی عرض سلام و ادب خیلی خیلی خوشحالم که در خدمتتون هستم با این درس و افتخار دارم که معلم برخی از شماها باشم بعضیاتون حتی برای بیش از بار اول اجازه بدید بریم سر کارمون و توضیح بدیم که ما چه خواهیم داشت به درس رباتیک اجتماعی را شناختی خوش آمدید

خب بنده طاهری هستم استادار دانشکده مهندسی مکانیک و خیلی خوشحالم که در خدمتتون هستم با درس رباتیک اجتماعی شناختی درس درس که داره برای اولین بار نه تنها در دانشگاه شریف که در ایران برگزار میشه و با یک

تا حدودی من درآوردی بسته به نیاز پژوهشی که دوستان گروه ما در آزمایشگاه رباتیک اجتماعی شناختی دارند و همینطور تشخیص و تخمینی از مواردی که ممکنه شماها در شاخه‌های مختلف باهاش مواجه باشید تصویری که می‌بینید یکی از آخرین عکس‌هایی که در آزمایشگاه رباتیک اجتماعی شناختی قبل از شیوع همه گیری کرونا گرفته شد به همراه اساتید و همکاران دانشجویان وقت و همینطور تعدادی از ربات های ما من همون ابتدا بر خودم لازم میدونم تقدیر و تشکری داشته باشم از دو استاد عزیز و ارجمندم در این زمینه آقایان دکتر علی مقدادی و خانم دکتر مینو عالمی که در این زمینه ما را کمک کردند حالا افراد دیگه هستند آقایان دکتر وثوقی آقای دکتر محمد حسین ماهور خانم دکتر لرا با کانفیوزو که هر کدوم توی مراحل پیشبرد پ

بنده از سال ۹۲ به این و خیلی بنده رو کمک کردند تا تونستیم آزمایشگاه رباتیک اجتماعی شناختی رو راه بندازیم و به این نقطه‌ای که در حال حاضر هست برسونیم خب اگه بخوام در مورد درس صحبتی داشته باشم عنوانش هست رباتیک اجتماعی و شناختی شماره درس ۲۸۶۲۸ خواهد بود ایمیل بنده اینجا قرار داده شده وبسایت هستش شما احتمالاً نیاز به وبسایت زیاد نخواهید داشت چون موارد در سامانه درس افزار و cو خدمتتون بارگذاری میشه در مورد این درس ما پنج نمره ورک هامون خواهد بود و تمارینی که تو طول ترم به شما خواهیم داد خدمتتون عرض می‌کنم از چه حوزه‌هایی خواهد بود پنج نمره امتحان پایانی و ۱۰ نمره هم پروژه که شما باید تحویل بدید و حالا الان اجازه بدید تعیین کنیم به صورت تقریبی که تعیین

پروژه تا آخر فروردین ۱۴۰۱ فرصت داره و تحویلش تا ۱۵ مرداد ۱۴۰۱ بسته به شرایط ممکنه این عددها یه مقدار اینور اونورتر هم بشن و در ضمن اگر هم نیاز به رفع اشکال یا دغدغه‌ای بود بیان دغدغه‌ای بود می‌تونید از طریق ایمیل با بنده هماهنگ بفرمایید ما به صورت حضوری یا مجازی در خدمتتون خواهیم بود خب همونطور که اشاره شد این درس یه جورایی داره بار اول تو ایران برگزار میشه واقعیت بخوام بگم با این عنوان و به شکل کاملاً مشابه حتی در سطح بین المللی هم برگزار نمیشه سیلاب سیلاب یک خودم چفت و جورش کردم و تا لحظاتی دیگه خواهیم دید به خاطر همین ما ریفرنس و در واقع کتاب واحدی برای این درس نداریم یکی از در واقع جدی ترین منابعی که حالا ممکنه بهش سرک بکشیم یه جاهاییش

با جزئیات زیادتری بگیم یه جاهاییشو کم عمق رد بشیم کتابیه که ۶ نویسنده با کمک همدیگه نوشتن اسمش هست هیومن ربات اینتراکشن اینتروداکشن خدمتتون عارضم که این کتاب فصول مختلفش خوب جدا جدا توسط نویسندگان آپلود شده بنده اینا رو به همدیگه چسبوندم و یه حجمی نزدیک به ۲۰۰ مگابایت داره که توی سامانه درس افزار خدمتتون قرار داده می‌شه و می‌تونید دانلود بفرمایید که کتاب کتاب روانی کتاب خیلی ساده‌ایه هدفش اصلا پیچیده کردن هیچ کدوم از آیتم ها و موارد ریاضی نبوده و دوست داشته خواننده که از صفر صفر میخواد با حوزه ربات رباتیک اجتماعی و ربات های اجتماعی و کاربردهاش و ملزوماتش الی آخر آشنا بشه آشنا بکنه خب تو نویسنده های این کتاب افراد مختلفی قرار دارند اگه میخوید یه نگاه اجمالی بهشون بندازیم این فایل

پی‌دی‌اف خود کتاب این شش نویسنده اینجا قرار دارند حالا هر کدومشون تو حوزه‌های مختلفی از سوشال رباتیک شناخته شده و برجسته هستند یکی از اونا خانم به اصطلاح تو حوزه اچ‌آرایی حتی ژورنال هم هست یا این خانم آلمانی که حالا با توجه به اطلاعات شخصیم یه همسر ایرانی هم داره چون بنده توی کنفرانس ربات اجتماعی چند بار ایشون رو بالاخره ملاقات کردم اطلاع دارم اینا رو و خوب هر کدوم توی حوزه کار کردن و یه بخش های از این کتاب نوشتن به جز کتاب ما خوب به شکل جدی به حوزه های لرنینگ ورود میکنیم و تقریبا نیمی از جلسات ما تو حوزه لرنینگ خواهد بود که خوب به صورت خاص کتاب های حوزه دیپ لرنینگ

می‌تونه مناسب احوالتون باشه هر کتابی که بخواید مطالعه بفرمایید واقعیت اینه که با توجه به اینکه رویکرد آدم‌ها و مهندس‌ها تو این چند سال اخیر به این سمت خیلی خیلی خیلی زیاد بوده شما نه تنها با کمبود منابع مواجه نیستید که بلکه با تعدد منابع مواجه خواهید شد و بعضی وقتا اگر خودتون بخواید خودسر اینا رو پیش ببرید می‌بینید که اصلاً نمی‌دونید از کجا باید شروع بکنید خدمت شما عارضم که آقای دیوید ورنون یکی از شخصیت های فوق برجسته توی زمینه طراحی معماری‌های شناخت ویژه ربات های انسان نما و کلاً ربات اجتماعی که تو این زمینه بنده یک کتاب ایشون رو انتخاب کردم اگرچه خیلی بیشتر مطلب دارند تو این زمینه و این کتاب هم حالا پی دی افش میتونه در صورت علاقه در اختیارتون قرار داده بشه منابع دیگه هم هستند که میتونید بسته به شرایط بهشون مراجعه بفرمایید و خوب میتونن

راهگشاتون باشن توی پیشبرد اهداف آموزشی و همینطور پژوهشیتون در این راستاها اگر بخوام رویکرد و دیدگاه ما خودمون رو در حوزه رباتیک اجتماعی شناختی در دانشگاه صنعتی شریف بیان بکنم عموماً این رویه فکری رو دنبال می‌کنیم ما ابتدا مثل خیلی از مسائل دیگه یک نیاز در جامعه شناسایی می‌کنیم یک نیاز واقعی و تا الان این نیاز عمدتاً برای کمک به کودکان و توی این گروه عمدتاً برای کمک به کودکان با نیازهای ویژه بوده خب بعد از اینکه یک مسئله تعریف شد ما با سه رویکرد میتونیم مسائل مان را پیش ببریم یا برای این مسئله یک ربات آماده داریم که بتونه اون کار انجام بده که طبیعتاً مرحله اول بای پس میشه و اگر وجود نداشته باشه مجبوریم یا به سمت خرید اون تجهیز بریم یا به

ساخت اون تجهیز متناظر با متناسب با اون نیاز مورد نظرمون فکر کنیم و براش اقدام بکنیم که این خودش یکی از حوزه‌های پژوهشی بچه‌های آزمایشگاه ما را شامل میشه بعد از اینکه خب اون تجهیز خریداری شد ساخته شد و یا یه تجهیزی که از قدیم وجود دارد به کار گرفته شد گام بعدی اینه که اون عروسک بیجان اون عروسک حالا کم عقل و چیکار کنیم توانمندش کنیم و برای این کار از الگوریتم های کنترلی و هوش مصنوعی استفاده میکنیم که میتونه خیلی خیلی حوزه جذابی باشه بسیار بسیار داغ از اون حوزه‌هاییه که اگه بخواید بگید از کدوم الگوریتم استفاده کنم بهتره جوابش میشه الان یا الان یعنی در این حد واقعا رشد و پیگیری توش وجود داره و بسیار بسیار داغه و بعضی از این مطالبی که شما

استفاده می‌کنیم یا ارائه می‌شه برخلاف کتابهای کلاسیکی مثل استاتیک و دینامیک و قوانین نیوتون و الی آخر که کتاب شدن و دیگه سال‌ها که هیچی دهه‌هاست اصلاً تغییر نکردن اینا اصلاً همچین اتفاقی براشون وجود نداره و شما مجبورید در صورت نیاز خودتونو هی به روز نگه دارید و بعد از اینکه خب رباتتونو یا اون تجهیزتون رو توانمند کردید با الگوریتم های کنترلی و هوش مصنوعی باید ببینید آیا واقعاً به اون جامعه هدفی که فکر می‌کردید خدمات میده یا نمیده یا فقط صرفا چون شما فکر میکنید که این مفیده مفیده طبیعتاً انجام مطالعات میدانی و مداخلات بالینی برای بررسی اینکه این تکنولوژی مقبولیت دارد یا نه و یا چه اثرات آموزشی توانبخشی و غیره دارد بر روی جامعه هدف که می‌تونن کودکان با نیازهای ویژه میتونن سالمندان باشند یا هر آدم عادی تو جامعه در کل چقدره و چه اثربخشی خواهد داشت و این یکی از مهمترین بخش های

حالا دوستانی که به حوزه کاری ما ورود می‌کنند می‌تونن ۱ ۲ یا سه تا از این بخش‌ها رو همزمان پوشش بدن و این رویه که ما توی هفت هشت سال گذشته در آزمایشگاه رباتیک اجتماعی شناختی داشتیم حالا با این اوصاف میتونید انتظار داشته باشید که چرا من این آیتم‌ها رو برای تدریس انتخاب کردم طبیعتاً مثل هر درس دیگه‌ای شروع کار ما که از جلسه آینده خواهد بود با معرفی و تعریف مفاهیم پایه خواهد بود این که ربات های اجتماعی چه هستند اینکه چرا به یک ربات میتونیم بگیم ربات شناختی تعامل انسان را چیست و مواردی از این نمونه و در نهایت به یه سری کاربردها و جهتگیریشون توی ایران و جهان منجر بشیم عکس هایی که مشاهده میفرمایید نمونه‌هایی از کارهای ما در سال‌های گذشته بر روی ربات های اجتماعی بومی بر روی کودکان ایرانیه گام

آشنا شدن با ملزومات نرم‌افزاری و سخت‌افزاری ربات‌های اجتماعی یعنی اینکه ربات‌های اجتماعی در حالت عادی نیاز به چه سخت‌افزارهایی دارند چه چیزهایی بینشون مشترکه و اگر شما یه روزی بخواید یه ربات اجتماعی بسازید چه مواردی رو براش لحاظ می‌کنید و همینطور چه ملزومات نرم‌افزاری دارند چه مفاهیمی پیش میاد به عنوان لازمه کار اینا آشنا خواهیم شد که این ربات ها برای اینکه بتونن حضور اثربخشی در زندگی کودکان داشته باشند یا در زندگی آدم‌ها باید بتونن حس و حال اونا رو بهتر درک کنند باهاشون همدم بشن بتونن حالت چهره ش را شناسایی کنند بتونن جهت های صوت رو تشخیص بدن و و مواردی از این دست و این بهانه ای میشه که ما در بخش سوممون به سمت هوش مصنوعی و یادگیری ماشین گامی کم عمق به سوی یادگیری عمیق داشته باشیم

ما توی فصل سوممون که تقریبا ۵۰ درصد این ترم رو توی این درس پوشش میده ابتدا با شبکه‌های عصبی مالتی لیر پرسپترون شروع خواهیم کرد شما با مفاهیم پرسپترون با لایه‌های پنهان با ام ال پی آشنا میشید و می‌بینید که چگونه یک شبکه عصبی که نقل و نقل کلام این روزهای تمامی محافل علمیه به صورت یک ابزار قدرتمند میتونه یه سری کارها را برای شما در بیاره یه سری تشخیص ها را انجام بده توسط ماشین و ماشین شبیه انسان عمل بکنه بعد از اینکه با ام ال پی آشنا شدیم گام بعدون آشنایی با شبکه های کانولوشنال نتورک یا شبکه های عصبی پیچشی که کاربردهای بسیار بسیار گسترده در آنالیز عکس و تصاویر داره که نمونه از ساختار اونو تو این شکل ملاحظه میفرمایید و همینطور

یکی دوتا از کارهایی که ما تو این زمینه منتشر کردیم و خدمتتون ارائه میدیم و شما یاد می‌گیرید که بتونید با دیتا ست‌ها و پایگاه داده‌های مختلف یه سری کارهایی که ما ازتون انتظار داریم عموماً تو حوزه‌های طبقه‌بندی‌اند برای ما چیکار کنید انجام بدید گام بعدی یه پله خفن‌تره و آشنا شدن با شبکه‌های ریکارنت نورال نتورک یا آر ان ها هستند شبکه هایی که بهشون شبکه های بازگشت گفته میشه و قدرت بسیار بالاتری دارند در تحلیل سری های زمانی کاربرد دارند در آنالیز ویدیوها در آنالیز صوت و یه سری کارهای دیگه که توش ترتیب زمانی مهمه و حالا به مرور آشنا خواهیم شد و حتی یه پله بعدش اگر فرصت کنم یک جلسه میزارم به تلفیق اون چیزهایی که شما تو سی ان ان یاد می‌گیرید و تو آرنت که حالا به صورت خاص ماژول های اینجا

مشاهده می‌کنید زیر مجموعه از ریکارندرال نتورک‌ها هستند و خدمت شما عرض کنم که چگونه تلفیق اینا می‌تونه یه کارهایی رو برای شما در بیاره و تو این زمینه از شما تمریناتی هم خواسته میشه خدمتتون عارضم که تا اینجا معیار بر اینکه کاری که شما می‌خواستید بکنید دادگان زیادی رو پیش روتون قرار داشته شما دسترسی به داده های زیادی داشتید اما اگر بخواهیم یک نگاه سنتی داشته باشیم به ماجرا اینه که همیشه اینجوری نیست قبل از اینکه شبکه های عصبی عمیق رشد بکنند و به کار گرفته بشن بالاخره متخصصین حوزه های پردازش تصویر یا گفتار بیکار ننشسته بودند و به صورت دستی یه سری فیچر استخراج میکردن و تلاش می‌کردن با همون داده های محدود کار خودشون رو راه بندازن برخلاف شبکه های عمیق که به صورت ان تو

بعدا خدمتتون باز خواهیم کرد و تعاریفشو خواهیم گفت و ما به صورت نمونه توی بخش بعدیمون که اسمشو می‌ذاریم یادگیری از طریق مشاهده یا لرنینگ دیمانستریشن بحث‌های مادل یا جی ام ام ها و بعدش هیدن مارک آف مدل‌ها یا hm ها رو خدمتتون ارائه خواهیم داد که عرض کردم کاربردهای مختلفی میتونن توی تحلیل سری‌های زمانی داشته باشند البته درسته که سریال های زمانی احتمالا اگر برای کامپیوتر صحبت کنید در درجه اول نگاهش به صوت یا یه سری از این موارد میخوره یا متون و بررسی و آنالیز متون یا ترجمه مثلا یک عبارت از زبان ای به زبان بی اما برای ما میتونه برای ما مکانیکی ها میتونه مفهوم آنالیز حرکت هم داشته باشه که کاملاً یک مفهوم زمانی و مجموعه از حالا سیگنال های زمانی از جوینت ها یا مفاصل مختلف

وجود دارند که این قابلیت به ما خواهند داد خدمت شما عرض کنم که بحث بعدیمون که خب کوتاه‌تر دیگه بهش می‌پردازیم یه بحث فوق العاده جدیه تو حوزه تکنولوژی و تو حوزه رباتیک اجتماعی که البته فقط محدود به این نیست و اسم اون آموزش یا یادگیری تطبیقیه اینه که ربات بتونه بسته به اینکه شرایط کاربرش چیه خودش با اون تطبیق بده یا به عبارتی مراحل آموزش یا کمک درمان و برای کاربر شخصی سازی کنه با علی متفاوت از حسن برخورد کنه و تجربه گذشته کار با علی و حسن رو لحاظ بکنه قوی بودن و ضعیف بودن و لحاظ بکنه و توی انتخاب تمارین سخت و دشوارش اینا رو لحاظ بکنه که خب با سعی میکنیم با یه سری شبکه های فازی خیلی ساده این مطلب هم خدمتتون آموزش بدیم و پایان

پخش این کار ما توی فصل هوش مصنوعی زمانمون تنگ بشه پیاده سازی سیستم کنترل نگاه و توجه توی ربات‌ها منظورمون توجه دیداری و ارتباطات غیر کلامی زمانی که توی میدان دید ربات بیشتر از یک نفر قرار بگیره ربات به کی نگاه بکنه شما وقتی که جلوتون بیش از یک نفر قرار داره برای نگاه کردن کی و اولویت میزارید چی میشه که شما نگاهتون از یک آدم به یک آدم دیگه تو طول زمان تغییر میدید و اینا مواردیه که ما یه کوچولو سعی می‌کنیم روش بحث بکنیم و البته آیتم به آیتمی که خدمتتون دارم اینجا بیان میکنم اینها هزاران مسئله پژوهشی میشه تو حوزه رباتیک اجتماعی و یا غیر از این تعریف کرد توشون و هیچکدوم هم تهشون بسته نیست همه پایان بازن و هی مدام و مدام میشه چیکار کرد عمیق تر کرد من امیدوارم با کمک شما بتونیم

یه ساختار جذاب طراحی کنیم انشالله اگه عمری باقی باشه دوره‌های بعدی تو این درس وجود داشته باشه تلاش بکنیم که خروجی های شما را به عنوان ورودی به نفرات بعدی تحویل بدیم تا اونا بتونن چی کارهای ارزشمندتر و برجسته‌تر دیگه‌ای انجام بدن خدمت شما عرض کنم که فصل بعدیمون در مورد آشنایی با کاگنیتیو آرکتکچرا یا معماری‌های شناختیه که برای عملکرد ربات یا برای مغز ربات چه ماژول های باید لحاظ بشه تا تلاش بکنه یه ساختار مناسب تصمیم ساز داشته باشه و اینکه اگه لازم شد حتی از الگوهای فکری و مغزی آدم‌ها یا سایر جانداران استفاده بکنه مطلبی که توی فصل بعدیش بهش پرداخته میشه و اونجا مجددا میتونید با انواع چالش های پژوهشی و انواع مسائل جذاب در صورت

مواجه بشید و فصل آخرمون که خودش حالا برای خودش زیر شاخه‌هایی داره در مورد طراحی واسط های یا تعاملات انسان ربات تو شرایط مختلف و در ضمن سنجیدن اینکه آیا مداخلات بالینی یا مطالعات میدانی که انجام دادید برای اون گروه هدف حالا کودکان با نیازهای ویژه مثل کودکان مبتلا به طیف اوتیسم مثل کودکان مبتلا به نارسا خوانی مثل افراد مبتلا به کمایی یا با مشکلات شنوایی و غیره اثربخش بوده یا نبوده نیاز به اینه که راه‌های سیستماتیک و علمی و فرا بگیرید که چیکار کنید بتونید اینا رو ارزیابی بکنید که تو این مسیر شما با آزمون های تی تست آشنا خواهید شد اگر از پیش آشنا نبودید و خوب میتونید برای خودتون جمع بندی داشته باشید از تمام مواردی که تو این درس اتفاق میفته خدمت شما عرضم که اجازه بدید برگردم

به عقب اگه یادتون باشه گفتم که ما رویه فکریمون اینه که یا طراحی و ساخت ربات داریم یا هوش مصنوعی داریم و یا کارهای بالین داریم هر کدوم جدا جدا توی فصول مربوطش بحث خواهند شد فقط برای نمونه فیلمی از مراحل حالا طراحی و ساخت و یا معرفی ربات آرش ۲ رو داشته باشیم با همدیگه

بعد از اینکه هر سامانه مکاترونیکی و توی درس ما ربات‌های اجتماعی طراحی و ساخته شدن لازمه که توانمندی بهشون داده بشه این توانمندی میتونه پیاده سازی الگوریتم های کنترلی هوش مصنوعی و یا تلفیقی از آنها باشه و این اتفاقی که بسیارترسکشن و نقطه تقاطع جذابیه بسیار نقطه داغیه و اگر یه زمانی بخواهید برای انتخاب موضوعات پژوهشی تو یا ادامه تحصیلتون فکر بکنید میتونید کاملاً به این حوزه ها فکر کنید و بدونید که هم ذائقه امروز دانشکده فنی مهندسی و هم

بسیار جای کار داره و جذابه برای ما مهندسان خدمت شما عرض کنم که خب شاید امروز یه وقت مناسب باشه که حالا که از کلمه دیپ لرنینگ نام بردیم اصلا بگیم که دیپ لرنینگ چیه و چرا باید ازش استفاده بشه احتمالاً خیلی از شماها اینا رو شنیدید حتی بهتر از بنده بلد هستید من اجازه می‌خوام که در قالب این اسلاید فشرده که برگرفته از کارهای آقای پروفسور الکساندر نوری الکساندر امینی از دانشگاه مای تی و همینطور یه آقایی به نام دنیل در قالب آموزش تنسرفلو و دیپ لرنینگ باشه خدمتتون بیان بکنم خب دسته بندی که ایشون ارائه دادن اینه که اگر ما هوش مصنوعی را تعریف کنیم تمامی تکنیک های که ماشین ها و کامپیوترها را قادر بکنه که شبیه انسان ها رفتار بکنند و موارد این دست رو توی شاخه ای آی قرار

ام ال یا ماشین لرنینگ زیر مجموعه این میشینه و میگه که قابلیت‌ها و توانایی ماشین برای یادگیری بدون اینکه بخواد مستقیماً برنامه نویسی بشه ایفوفورهای متوالی براش نوشته بشه رول‌ها از قبل قانون‌ها از قبل شناخته شده باشند این زیر مجموعه ماشین لرنینگ می‌شینه خود ماشین لرنینگ زیر مجموعه ای آی توی ماشین لرنینگ میتونه یه سری از اتفاقات به صورت دستی رخ بده یه سری فیچرها یه سری ویژگی ها به صورت دستی استخراج بشن حالا مجدداً بعداً برسم توضیحات خدمتتون میدم اما همین قدر بدونید اگر شما مثلاً فرض کنید تا الان برای خرید یه سری چیزهای عجیب غریبی که تا الان بهش فکر نکردید یا زیاد تو زندگیتون اتفاق نمیفته اقدام بکنید مثلاً خرید مبل توی زندگیتون من نمی‌دونم تا الان با یه سری کلمات آشنا هستید یا نه تا میرید تو بازارش وارد میشید می‌بینید افرادی هستند که برای شما

فکر نکرده بودید و اصلاً نمی‌دونستید که اینا چیزای مهمی‌ان در مورد چوب راش برای شما صحبت می‌کنه چوب‌های مجارستانی نمیدونم ام دی اف و و اونجاست که باید شما تفاوت اینا رو بدونید بعد می‌بینید یه سری اتفاقاتن که مثل اینکه تاثیر گذارند یه سری جاها شما وقتی می‌خواید کارای ماشین لرنینگتون رو انجام بدید مجبورید که خبره باشید یا از افراد خبره کمک بگیرید که بیان برای شما یه سری ویژگی ها رو استخراج کنن به شما مشاوره بدن که چه چیزهایی توی قیمت این توی کیفیت این اثرشه و اونو به شما گزارش بکنند تا شما بتونید این کارها رو انجام بدید اما یه زیرمجموعه‌ای از اون وجود داره به نام دیپ لرنینگ یا یادگیری عمیق که آدم ها خودشون رو مثل ما استان فارسی‌ها کنار می‌کشن و تلاش میکن همه چی رو واگذار بکنن به کامپیوتر به کامپیوتر میگن ببین من اگه به شما بگم این مواد اولیه رو داده یکی و این ازش در اومده تو

چه مراحلی وجود داشته که از این مواد خام به این برسم اینا میشن ماشین لرنینگ و در یک اشل بالاتر دیپ لرنینگ در حالی که برنامه نویسی‌های سنتی جوری بوده که مواد خام موجود بودند رول‌ها و مراحل معلوم بودن از شما انتظار داشتند که تخمین بزنید خروجی چیه ها در حالی که توی دیپ لرنینگ ماشین لرنینگ این اتفاق نمیفته سر و ته ماجرا رو دارید داده ها داده های کرکسیف خیابونی اند انواع نویزات توشونه برخلاف اون مواردی که تو کتاب های استاتیک و دینامیک میدیدیم از مقاومت هوا صرف نظر شود از اصطکاک صرف نظر شود شما اونجا از هیچی صرف نظر نمیکنید تمام داده های کلسیف رو میدید به عنوان ورودی تمام خروجی های که واقعی دیدید و میدید و تلاش می‌کنید که چی شبکه هایی رو بسازید که اون بتونه به صورت هوشمند این مراحل رو برای شما بره یعنی در بیاره استخراج بکنه که چی که این مراحل باید بین داده های ورودی طی بشه تا به خروجی برسه به عبارت علمی تر میشه

تابع داره از ورودی و خروجی برای ما می‌سازه اما این تابع بسیار بسیار پیچیده و غیر خطیه و اصلاً تو اشلی نیست که شما بخواید بهش فکر کنید و بخواید رو کاغذ اینا رو بنویسید و چون حجم محاسباتش زیاده اینا به کامپیوتر واگذار میشه اما چرا ما باید از دیپ لرنینگ استفاده کنیم یه جواب ساده اینه هر جا که نیازی نیست از دیپ لرنینگ استفاده کنید واقعاً نیازی نیست و نرید سمتش اگر میشه یه سری کارا رو رول بیس نوشت و به صورت سنتی رفت جلو این کارو براش بکنید اما پدیده های زیادی توی دنیای اطراف ما دنیای فوق العاده غیر خطی اطراف موجود دارند که چی ما هیچی ازشون نمی‌دونیم و یه ورودی میبینیم و یه خروجی برای ما همه چی بلک باکسه ما آرایشی آرایه‌ای از وضعیت هوای شهون تو ۱۰ روز اخیر داریم یا تو یک سال و دو سال گذشته داریم میخویم فردای خودمون تخمین بزنیم بازار داریم رصد میکنیم میخویم فرداش تخمین بزنیم یه حرکتی اتفاق

می‌خوایم ببینیم بعدش چی میشه اگر یه عکسی یه تصویری به ماشین یا کامپیوتر داده شد می‌خوایم کامپیوتر متوجه بشه که اون چیه شاید ما یه روزی بخوایم کامپیوتر چیکار کنه برای ما یه بازی فوتبال گزارش کنه ها یا یه ربات این کارو برای ما انجام بده یک ربات توی شهر قدم بزنه و به آدم‌ها نخوره یک خودرو خودران شما رو بتونه به سلامت از نقطه آب نقطه بی برسونه به چه چیزهایی نیاز دارید به این فکر کردید تا الان خب ممکنه ازتون بپرسم من اگه یه عکس به شما بدم و بگم آدم ها رو توش مشخص کن همون کاری که دوربین های موبایلتون انجام میدن دور آدم ها کار قرمز میکشن و عموماً شما رو ضایع میکن توی جمع دور همه کادر قرمز میکشن حتی دور قاب عکس مادربزرگتون اما دور شما نمیکشن کامپیوتر باید چیکار بکنه خب اگر شما به شکل و شمایل سنتی بخواید فکر کنید میگید خب من باید تلاش کنم که صورت انسان رو شناسایی کنم یعنی چی یعنی جاهایی پیدا کنم که دو تا چشم ابرو دماغ و دهن یه گردو وجود داشته باشه خب لازمه

چشم‌ها رو جدا دماغ و جدا دهن و جدا پیدا بکنم لازمه اون چیه لازمه پیدا کردن چشم اینه که خطوط منحنی‌هایی پیدا کنم که اونا بتونه با هم شکل‌ها رو به وجود بیاره و سبب می‌شده که کارهای سنتی فرض کنید پردازش تصویر و ویدیو به این سمت بره که آدم‌ها یا متخصصین به صورت دستی برن یه سری چیزا رو استخراج بکنند اما با اومدن کامپیوترهایی که خیلی قوی اند و میتونن از جی پی یو ها استفاده کنند برای انجام محاسباتشون نرم افزارهای بسیار قوی مثل تنسرفلو پایتورچ و انواع موارد اوپن سورس و غیر اوپن سورسی که وجود دارن و میتونن این کارها رو برای شما در بیارن و خیلی خیلی خیلی مهمتر از اون وجود داده از آدم ها و از پدیده های اطراف و تلفیق هم زدن و تنگ هم زدنش واقعاً این شانس رو به شما میده

که اگر یه سری ورودی و یه سری خروجی بهش بدید اگر داده‌هاتون به اندازه کافی باشه قدرت پردازشیتون مناسب باشه و از نرم‌افزارها و مدل‌های مناسبی استفاده کنید انشاالله بتونه اون مراحل رو برای شما در بیاره اون مسیر مپینگ رو در بیاره البته مشکلاتی داره فعلاً نمی‌خوام ذائقه‌تون را بکنم به موقعش به اون اشاره‌ای می‌کنیم فعلاً این نباشه که دستمون به گوشته نمیرسه و بگیم پیف بو میده فعلا تلاش بکنیم همین رو یاد بگیریم با تمام نقطه ضعف های که داره ایرادی نداره بسیار تکنیک های ارزشمندی اند و در موردش صحبت خواهیم کرد خوب خدمت شما عارضم که قبل از اینکه در واقع ادامه بدیم فکر می‌کنم امروز از اون روزهایی که میشه به کاربردهای دیپ لرنینگ نگاه کرد اطرافمون چه کاربردهای خفن و جذابی داره به ربات اطلس نگاه بکنیم ربات که ساخته شرکت بوستان

قابلیت‌هایی داره تو هر دو ویدیو سمت چپ و راست انواع قابلیت‌های حرکتیش برای اینکه مسیرو یاد بگیره برای اینکه نخوره زمین چه مراحلی رو طی کرده تو دنیای پیچیده غیر خطی تصادفی غیر دترمینستیک یه روزایی ممکنه یه جاهایی ممکنه

حتی میبینید مواردی وجود داره که ربات بخوره زمین

به نظر میاد لرنینگ کلمه لرنینگ و آموزش کلمه اساسی لرنینگ خیلی اساسیه از مناظر مختلف میشه بهش نگاه کرد برای ماها مهم باشه میتونه مفهومش یادگیری یاد دادن یک کار یک تسک یک مجموعه رفتارها به یک ماشین یک ربات و یک ایجنت باشه میتونه یادگیری واقعا خود فرد باشه و مخاطبین ما بچه های ما سالمندان ما که با ربات های ما در تعامل باشند یه مسائلی رو یاد بگیرند و حتی یه پله یه عده پا رو فراتر میزارند و بعضا نگاه های خیلی خیلی جزئی تری دارند اینکه توی زبان های مغز داره چه اتفاقی میفته تا یه آدم یه چیزی رو یاد بگیره اینا همه از مواردی که کلمه لرنینگ یک کلمه خیلی جذاب در حوزه

خدمت شما عرضم که کاربردهای جذاب دیگه‌ای که وجود داره و اسمشو شنیدید در مورد کارها یا خودروهای خودران سمت چپ نمایی از در واقع سیستم‌های تسلا رو می‌بینید که داره تلاش میکنه ادوات موجود روی زمین و اطراف و شناسایی بکنه ساین ها را بشناسه ماشین هاورهای پیاده را بشناسه و تصویر سمت راست هم کاری که باز الکساندر امینی در ام ای تی انجام داده تو حوزه خودروهای خودرانه تو اون ویدیویی که داره پخش میشه مشخصه که با افزایش اپیزودها چگونه ماشین بهتر یاد میگیره که یک مسیر کاملا ناشناخته را به سلامت طی کنه و تصمیم انسان وارانه بگیره و این مواردی که

بسیار جذاب و البته حوزه‌های خیلی خیلی داغ پژوهشی دنیا هم هست اینی که انتظار میره تا ۲۰۲۵ ماشین‌های خودران به صورت قانونمند وارد جاده‌های شهری بشن چه قوانین راهنمایی رانندگی براشون لحاظ باید بشه و همه مواردی که در کنار هوش مصنوعی داره به شکل خیلی گسترده پرداخته راننده یکی از خفن ترین مدرسین حوزه دیپ لرنینگ در ام ای تی و شما میتونید دوره های آموزشی اون رو در از طریق یوتیوب و یا سایت مشاهده بفرمایید

از کاربردهای دیگه‌ای که میشه بهش اشاره کرد کاربردیه با نام اکشن ریکاگنیشن یا بازشناخت کنش اینی که به این فکر کنید یه بازی بسکتبال داره پخش می‌شه اولاً دور هر آدمی یه کادر قرار داده شده کادرهای مختلف رنگ های مختلف دارند یعنی مشخصه که آدم‌های مختلفی شناسایی شدن تخمین داره میزنه با چه احتمالی اون فرد داره چیکار میکنه و اونو داره برای شما گزارش میکنه و این میتونه در نهایت منجر به این بشه که یک ربات برای شما یک بازی فوتبال یا بسکتبال رو گزارش بکنه و رفتن به این مسیر نیازمند چیه یکی دیگه از کارهای حوزه اکشن ریکاگنیشن با نگاه دیتکشن علائم زبان اشاره آمریکایی که یکی از دوستان حاضر در کلاس خودمون اینو انجام داده روی

مجموعه کدی که البته وجود داشته و خب ایشون ریپلیکیت کردن باز تکرار کردن و وقتی که دستشونو به علامت هلو تنکیو یا آی لاو یو تکون میدن سیستم به صورت اتومات اینو شناسایی می‌کنه حداقل احتمال میده که شما دارید چیو بیان می‌کنید و توی یک جمله برای شما بالا درج می‌کنه حالا تا الان سوال شده براتون که همچین اتفاقاتی چگونه رخ می‌ده ماجرای بعدی نگاه کردن به این تصاویر شما ممکنه به من بگید خب اینا یه سری آدمن دیگه چه فرقی می‌کنن و چه دلیلی دارن آیا مخترعین آیا بازیگر معروف اند واقعیت اینه که این آدم ها اصلا وجود خارجی ندارند و توسط الگوریتم های یادگیری عمیق و شبکه های جنریتیو و شبکه های گن ساخته شدن توسط بر بچه های تیم ام دیا سایتی وجود داره به نام دیس پرسنات اگزیست.com و این مسیر رو طی کردن و شما میتونید این

آدرسو براتون بیان کردم میتونید هر دفعه که می‌خواید اینو ران کنید و هر بار رفرش برای شما یک تصویر یک فرد جدیدو می‌ده که اصلاً اون آدم وجود خارجی نداره و این خیلی اتفاق عجیبیه و ممکنه برای شما سوال بشه که چگونه این اتفاقات داره رخ میده یه پله بالاترش ویدئوهای فیکه یعنی اینکه یه ویدئو می‌سازید که یک فرد خاصی یه سری جملات رو بیان میکنه بدون اینکه کاربر اصلا بتونه تشخیص بده اون فرد آیا واقعی هست یا نیست همین تیم امیدیا کارهای دیگه هم کرده مثلا یکی از کارهای که در حوزه هنر انجام داده اینه که شما فرض کنید براش می‌نویسید یه چیزی نقاشیش براتون میکشه یا عکس براتون میسازه ها این گفت که مثلاً نمی‌دونم طلوع خورشید و در یک مثلاً جنگل با درخت های بلند می‌خوام و اینو تایپ

شبکه‌های در واقع دیپ براش می‌سازه یا اینکه شما صرفاً مثلاً یه چیز اولیه می‌کشید خدمتتون عارضم که تعیین می‌کنید که تو فصل پاییز باشه زمستان باشه روز باشه شب باشه و بقیه اونو این می‌سازه شاید براتون سوال باشه آیا واقعاً بشر به این روزها باید می‌رسید به نظر من که انتظار در واقع غیر عقلانی نبود شما لحاظ بکنید خب خیلی ها قدیم دست خط خوبی نداشتند از روزی که ورد اومد همه پایان نامه ها همه متن ها شدن بی نازنین ۱۴ و هیچ فرقی بین آدم ها نبود یه سری از کارهایی که قبلا با دست انجام میشد با ماشین ها جایگزین شدند و الان یه پله بالاتره یعنی قدیم دوربین های عکاسی در اختیار هر نفر نبود ولی الان هر نفر روی گوشیش بیش از یک دوربین داره و عکاس ها برای اینکه بخوان خدمت شما عرض کنم که تو این وادی همچنان فعالیت های حرفه ای خودشون ادامه بدن مجبورن که سطح خودشونو بالاتر ببرند

اتفاقی که دیپ لرنینگ به عنوان یک هنر امروزی داره این تزریق تو جامعه جهانی انجام میده و دیر یا زود همچین اپلیکیشن‌هایی وارد زندگی آدما می‌شن به صورت جدی و شاید شما مجبور باشید که خودتون درگیر کنید حالا بازم سوال هست چرا یادگیری عمیق پاسخ‌های کلاسیک رو بذاریم کنار پاسخ‌های تکمیلی که میشه بهش داد اولاً بله چرا که نه چرا از یادگیری عمیق با این سطح توانمندی استفاده نکنیم اما شاید پاسخ دومی که بخوام گستاخانه‌تر بیان بکنم اینه که ما داریم به نقطه ای میرسیم تازه اگه نرسیده باشیم که ندونستن این ماجرای دیپ لرنینگ زشته زشت میفهمیم حالا سوال بعدی اینه که آیا من بدون هیچ پیشینه هوش مصنوعی و با موارد مورد نظری که تو این درس یا

مشابهی گفته میشه میتونم در حد مناسبی دیپ لرنینگ و پیاده سازی بکنم و شبکه‌های مختلفی رو ترین کنم مدل خودمو بسازم و به بیان عامیانه بزنم تو گوش دیپ لرنینگ خب پاسخ‌ها باز می‌تونه متنوع باشه اما یک اول توکلتون به خدا شاید نتونیم با این ابزارهایی که یاد می‌گیریم تهشو نون بگیریم اما تلاش می‌کنیم با همین چیزایی که یاد گرفتیم لنگان خرک خویش به منزل برسونیم و این میتونه نقطه دستاورد مهمی باشه دو اینکه آیا بالاخره میشه این کار کرد ارجاعتون میدم به یکی از کلیپ های محمد بحرانی در زمان راهیابی ایران به جام جهانی ۲۰۱۴ برزیل لینکش روی عکس موجوده بعداً می‌تونید پیگیری بکنید یه جایش میگه فکر کن فکر کردن که عیب نداره و سوم هم اینه که آیا چیزهایی که من مشاهده کردم و یک روزی خودم میتونم اجرا کنم یا نه و

میتونه این باشه تصور کن تو می‌تونی بشی تعبیر این رویا با تمام این تفاسیر انتظاری که از خروجی این درس داریم یا میتونیم خوب پولی داشته باشیم اینه که انشالله شما بتونید یک تعاریف و مفاهیم پایه حوزه تعامل ربات انسان رو یاد بگیرید با ادوات و ملزومات سخت افزاری و نرم افزاری ربات‌های اجتماعی شناختی آشنا بشید شبکه های عصبی عمیق خودتون از اسکرج از صفر صفر بتونید بیارید بالا و بسازید طراحی بکنید هیومن ربات اینتراکشن ها یا تعامل تعاملات انسان ربات تو شرایط مختلف و همینطور بتونید به شکل کمی و کیفی ارزیابی کنید آیا این مطالعاتی که انجام دادید توانمندی های هوش مصنوعی محوری که به ربات هاتون دادید و بعدا رفتید برای یک جامعه هدف پیاده کردید آیا واقعاً موثر بود یا

میزان اثربخشیش چقدر بود در مورد آنالیز کمی و کیفی اینا یه مقدار برای شما در انتهای درس و فصل انتهایی صحبت خواهیم کرد و خیلی مهمتر از اون اینکه بدونید کاربردهای مختلف ربات‌های اجتماعی برای شاید به این کلمه فکر کردم ارتقاء کیفیت زندگی مخاطبینش که عمدتاً توی ذهن من کودکان با نیازهای ویژه هستند کودکانی که ما تو ایران عموما کودکان استثنایی ممکن ازشون نام ببریم نابینایان ناشنوایان کودکان مبتلا به طیف اوتیسم کودکان مبتلا به اختلالات یادگیری و الی آخر بالاخره ربات های اجتماعی چگونه میتونن اثربخش باشند یا شما چگونه میتونید با خلاقیتتون با دانشتون با پشتکارتون با پیگیریتون مواردی رو برای این بچه ها به وجود بیارید تلاش بنده بر این بوده که توی درس

اجتماعی و شناختی یک بستر غنی و تا حد امکان جذاب جهت فراگیری موارد ضروری در مباحثی مثل طراحی ربات‌های اجتماعی تعاملات انسان ربات یادگیری عمیق به صورت کم عمق اما کاربردی و طراحی و ارزیابی مداخلات بالینی مطالعات میدانی را داشته باشیم برای شما و این مواردی که من از این درس انتظار دارم ما چندین سری تمرین خواهیم داشت عموما توی مباحث هوش مصنوعی مونه که تمرین‌ها مبتنی بر برنامه نویسی یا تحویل کاغذی و نوشتاری خواهد بود خدمت شما عارضم که انتظار داریم تا آخر فروردین با همفکری همدیگه یه پروژه انتخاب کنید برای این درس و از تکنیک های که تو این درس بهتون یاد داده شده استفاده بکنید و اونو پیش ببرید و تا فعلا تاریخ بذاریم بر ۱۵ مرداد ماه اونو برای ما تحویل بدید تا بتونیم ارزیابی

عملکرد شما داشته باشیم امیدواریم تو این مسیر چیزهای زیاد و مفید یاد بگیرید و خدمتتون عارضم که اولویت اول فعلی بنده برای اینکه این در واقع پروژه‌ها یه جوری یا مستقیماً تو حوزه ربات اجتماعی باشند یا یه خیری به رباتیک اجتماعی بتونن برسونن اما اگر به هر دلیلی شاخه‌ای که دارید توش کار می‌کنید خیلی خیلی از این حوزه دوره و خب شما این درس رو به هر حال اخذ کردید که یه سری مهارت یاد بگیرید ایرادی نداره با مشورت و تایید ما شدنی هست که پروژه‌هاتون خارج از این محدوده هم باشه و خب عرض کردم باید بنده در جریان باشم و تایید کنم و اگر نیاز بود استادان محترم راهنماتون هم در جریان قرار بدید اگر دارید تو حوزه‌های پژوهشی مورد نظر خودتون و پایان نامه هاتون کار پیش می‌برید حتماً بهشون بگید اگر زیرمجموعه عضو از اونو برای درس ما تعریف کردید خدمت شما عارضم که اگر کسی در

حاضر با الگوریتم‌های دیپ لرنینگ در همین حدی که اشاره کردم یعنی الفبای cnn‌ها آر ان‌ها ال‌اس‌ام‌ها آشنا اینا بلدینگ بلاک‌هایی هستند گام‌های اساسی هستند که می‌تونه شما رو سوق بده به سمت این کاربردهایی که من در قالب فیلم بهتون نشون دادم به عنوان اهداف نهایی و آلتیمیت گل‌های ما اگرچه ما لزوماً با مهارت‌هایی که بهتون یاد میدیم شما نمی‌تونید فردا خودروی خودران بسازید ولی میتونید درک کنید که اگر بعدا مقاله تو این زمینه مطلع کردید یا فیلمی دیدید تخمین بزنید که احتمالاً داره چه اتفاقی اون پشت مشتا میفته و چقدرشو شما ممکنه خودتون بلد باشید انجام بدید اگر با این مباحث آشن زیادی دارین این درس به دردتون نخواهد خورد و مگس خواهید پروند چیز جدیدی یاد نمیگیرید همینطور اگر با نحوه آنالیز داده ها آشنا هستید توی یه سری مطالعات آماری میتونه لزوماً تو حوزه‌های انسان و در واقع حیوانی نباشه و

چیزهای دیگه ارتباط داشته باشه اگر با آزمون‌های آماری آخرم آشنا هستید بخش‌های پایانی کلاس ما برای شما تکراری خواهد بود اگر با هر دو آشنا هستید به هیچ عنوان توصیه نمی‌کنم که این درس رو بخواید نگه دارید و برید به دروس بهتر فکر کنید آیا دیپ لرنینگ پایان راهه نه اتفاقاً امروزه داره متال لرنینگ داغ میشه کانتینیوال لرنینگ داره داغ میشه و اینکه دیپ لرنینگ هم یه سری مشکلاتی داره و دارن تلاش میکن با الگوریتم های جدید و رویکردهای جدید اونا رو پوشش بدن که خوب به هر حال یاد گرفتن مفاهیم این مدلیه که راه و هموارتر میکنه برای اینکه برید باز دوباره خودتون رو با روز آشنا بکنید مباحث دیگه هم وجود داره مثل ریفرسمنت لرنینگ یا کاربردهای دیپ لرنینگ توی آر ال که اینا باز خارج از محدوده درسی ماست اما بسیار بسیار ممکنه کمک

حال شما باشه در پیشبرد پروژه‌های تحقیقاتی جذاب یا تعریف پروژه‌های جذاب و خوب ابزارهای لازمشو اگه نیاز شد برید یا برای خودتون مطالعه بفرمایید یا دروس مربوطش رو اخذ بکنید و در انتها در جلسه آینده خواهیم دید تعاریف و مفاهیم پایه با ما همراه باشید انشالله تا جلسه بعد خدانگهدار اگه سوالی هست در خدمتتون هستم من به سبک و سیاق همیشگیم جزوات و پی براتون بارگذا میکنم سامانه سی درس افزار خدمتتون عارضم که ویدیو ها را خودم ضبط می‌کنم اگرچه فکر می‌کنم دوستان ممکنه آشنا باشند بعضی وقتا کامپیوتر من بی خبر اسلیپ میشه و خوب این سبب میشه که حالا همین مقدار معطل بشید تا من برگردم و دو معمولاً تجربه نشون داده که در واقع صدا و تصویر از روی ویدیو ها خارج میشه و این حالا چالش های که من باهاش مواجه هستم رو لپتاپ فعلیم و امیدوارم این چالش ها تو طول ترم کمتر

من امروز به نظرم همینجا نگه داریم من ویدیو رو متوقف می‌کنم در حد توان پاسخگوی سوالاتتون هستم انشالله درس رو به شکل جدی از یکشنبه آینده شروع خواهیم کرد خوش و خرم باشید دوستان عزیز من براتون آرزوی سلامتی و موفقیت می‌کنم و ازتون خداحافظی می‌کنم اگر نیاز به جلسات اضافه شد به خاطر حالا تعطیلی‌هایی که داریم برخوریم یا یه جایی بنا به تشخیصی که ما میدیم ممکنه نیاز باشه از یه سری مطالب عمیق تر براتون صحبت بشه من ممکنه یه سری جاها ویدیو براتون بفرستم اما قبل از اون حتماً به شما اطلاع میدم و توی ذهنم هست ما یه سری در واقع دوره های آموزشی حالا نرم افزاری مثل کار کردن با لایبراری کراس یا یه پله بالاتر تنسرفلو توسط یه سری دوستان یا خود بنده برای شما خواهیم داشت و شماره حالا تو این مفاهیم تو این مسیر با یه سری مفاهیم و مهارت ها

می‌کنیم در حد وقت و توان و سوادمون و طبیعتاً هر کسی بسته به نیاز و پروژه‌اش اگه نیاز شد باید بره چیکار کنه بیشتر و بیشتر و بیشتر یاد بگیره خوش و خرم باشید انشالله خدا یار و نگهدارتون خیلی ممنون که بودید و من انشالله یکشنبه آینده در خدمتتون هستم اگه سوالی هست تشریف داشته باشید خدا یار و نگهدار

E:\courses\LangChain Project\main root\data\SCR_Session02_transcript_part1.txt

به نام خدا دوستان عزیز و ارجمند درس ربات اجتماعی شناختی سلام و ادب و احترام خیلی ممنون بابت حضور و تشریف فرماییتون در خدمتتون هستیم با جلسه دوم درسمون و پیشبری مطالب اجازه بدید که صفحه نمایش به اشتراک بذارم باهاتون و بریم سر کارمون من با توجه به اینکه توی پاورپوینت هستم بعضاً سوالاتتون رو ریل تایم نمیبینم و هر از گاهی سعی میکنم مراجعه بکنم ببینم اگر دغدغه‌ای هم دارید بشنوم اجازه بدید که بریم سر کارمون و بعدا هم میام خدمتتون اگه دغد

سالی هست پاسخگو هستم در حد توانشات خوب من یه معذرت خواهی بکنم جلسه گذشته همونطور که در جریان هستید به علت کسالتی که داشتم امکان برگزاری کلاس وجود نداشته و امروز در خدمتتون هستیم با شروع رسمی درسمون شروع فصل اول درسمون که مثل خیلی از دروس دیگه در مورد معرفی تعاریف و مفاهیم پایه باشه ما هم در حوزه سوشال رباتیک میخویم این کار برای شما انجام بدیم رئوس مطالبی که تو این فصل میبینید اینست ما تعاریفی از ربات ربات های اجتماعی ربات های شناختی و تاریخچه های کوتاهی ازشون اشاره میکنیم کلید واژه های مثل اچ آر آی و اچ سی خدمتتون میگیم و خدمتتون عارضم که کاربردهای ربات های اجتماعی را بیان میکنیم خدمتتون پاره ای از اونها اجازه بدید با درس ما که در مورد

ربات‌ها یا ربات‌های اجتماعی شناختی اما اجازه بدید با کلمه ربات شروع کنیم چی ازش می‌دونیم و هر کسی چه تعبیری داره ممکنه از گذشته تا به الان شما با کلمه ربات آشنا بوده باشین حداقل ربات‌ها رو توی فیلم‌ها و تلویزیون دیدین و ممکنه هم نوع کارتون جوری بوده که بالاخره با یک گونه‌ای از ربات ها کار کرده باشید ربات‌ها می‌تونستن انسان نما بوده باشند حیوان گونه باشند ربات های چرخدار باشند ربات های سیارات های بازو ربات های زیر سطحی ربات های پرنده و الی آخر همه اینا جز حوزه رباتیک حساب میشه یه فضولی و کنجکاوی کردیم رفتیم به چند تا دیکشنری سر زدیم ببینیم که رباتیک رو ربات چی ترجمه میکنه مثلا دیکشنری وبستر تعریف میکنه میگه دستگاه یا وسیله خودکاره که وظایفی که معمولاً به انسان نسبت

میشه انجام میده البته این توضیح توضیح خیلی دقیقی نیست چون فرض کنید ماشین لباسشویی چراغ راهنمایی با خیلی از این چیزا می‌تونه تو این تعریف بشینه با گذر زمان این تعریف‌ها بهتر و بهتر شد بعضی از دیکشنری ها بیش از یک تعریف دارند مثلاً فرض کنید که موسسه رباتیک آمریکا میگه که یک منیپولیتور ری پروگرم یا حالا قابلیت برنامه ریزی چندباره مجدد داره خود کلمه من نمیدونم آشنا دارید یا نه به ربات های بازو میگن خود معنای لغویش هم یعنی دستکاری کننده خب میشه میگه حالا منیپولیتور چند منظوره قابل برنامه ریزی چندباره است که برای جابجایی مواد قطعات ابزارها یا دستگاه تخصصی از طریق حرکت های برنامه ریزی شده متغیر برای انجام انواع وظایفی که براش طراحی شده چیکار میکنه عمل میکنه یه لغت نامه به نام آبادیس به فارسی

رفتیم براتون استخراج کردیم تو بخش دانشنامه عمومیش نوشته ربات یک دستگاه الکترومکانیکی یا یک نرم‌افزار هوشمند برای جایگزینی با انسان و هدف انجام وظایف گوناگونی که خب اینجا باز کرده گفته اگر فیزیک داشت بهش میگیم ربات اگر نرم افزاری بود بهش میگیم بات و اینم تعاریفی که ایشون در واقع اون سایت ارائه داده اما با گذر زمان این تعاریف هی کامل و کامل‌تر شده فرض کنید دیکشنری آکسفورد در سال ۲۰۱۶ این لغت رو ارائه داده که تعریف بدی نیست گفته ربات ماشینی که توسط کامپیوتر قابل برنامه ریزیه که قادر مجموعه پیچیده از اقدامات را به طور خودکار انجام بده اما اجازه بدید من دو سه تا تعریف ملموس خدمتتون ارائه بدم که صرف نظر از این لغت‌بازی ها اینا رو سعی کنیم به خاطر اون بسپاریم حالا تعریف کاری که میشه ارائه داد اینه که یک عامل فیزیکی یا یک ایجنت که یک ارتباط هوشمند بین حسگرها یا سنسورها همینطوررا یا عملگراش به وجود میاره این چیزی که

شما آشنا هستید می‌دونید که هر ربات مجموعه از سنسورها داره برای دیدنشو شنیدنشو خدمت شما عرض لامسش حس کردن فاصله تا در و دیوار و الی آخر از اونور هم یه سری موتور داره اکچتور داره که میتونه دستی پای سری تکون بده چرخی داره و حرکت در بیاره و ارتباط هوشمند بین اینا به وجود آوردن توی وسیله اگر یه همچین اتفاقی بیفته ما به اون وسیله بگیم ربات ها خدمت شما عرض کنم یه تعریف اینجا ارائه دادم

بچه صدای بنده هستش من کامپیوترم همونطور که جلسه اول خدمتتون عرض کردم بعضی وقتا خودسر میشه کلاً خسته است مثل خود من استان فارسی‌ها و این الان این اتفاق براش افتاد معمولاً یه دقیقه دو دقیقه طول میکشه تا برگردم حالا من مجدداً ضبط رو میزنم و ادامه میدیم عرض میکردم خدمتتون اجازه بدید این تعریف رو از ربات به خاطر بسپاریم که ربات یک وجود یا یک موجودیتیه که میتونه حس کنه فکر کنه و عمل کنه تعریف کلاسیک ربات ها بچه ها حرف از چیزهایی میزنه که قراره برن جاهایی که یا برای انسان ها خطرناک بوده یا قراره دقت کاری که می‌خواستن

انجام بدن خیلی خیلی بیشتر از آدم بوده که آدم نتونه از پسش بربیاد برای اینکه تعداد دفعاتی که می‌خواستن انجام بدن به گونه‌ای بوده که آدم از پسش برنمی‌اومده مثلاً فرض کنید که شما تو یک محیط با تشعشعات هسته‌ای قرار دارید خب اینجا وجود ربات خیلی میتونه مثمر ثمر باشه به جای یک انسان یا اینکه فرض کنید یه چیزی رو مثلا هزار بار در دقیقه گره بزنید خب این توسط آدم شدنی نیست اما ممکنه یه ماشین بتونه این کارو انجام بده یا اینکه دقت بالایی برای انجام یک کاری بخواهید مثلاشکاری در حد فرض کنید دهم میلی متر که یه در واقع وسیله دست ساز به نام ربات بتونه انجام بده ولی از اونور یک انسان خیلی از پسش برنیاد و اینا تعاریف کلاسیکی از خود کلمه رباتن شاید براتون جالب باشه اصلا فلسفش چیه از کجا اومده احتمالا دیدگاه های مختلفی وجود داره شاید با این چیزی که میگم خیلی موافق نباشید ولی دو تا از مواردی که تو منابع دیدم و

به نظرم جالب بود و خدمتتون بیان کنم ایناست ۱ اینکه آدم‌ها تو تمام ادوار تاریخ نشون دادن که دوست دارن از خودشون کپی کنن و کپی بسازن ها یعنی تصور کنید از کشیدن نقاشی روی غارها بگیرید تا کشیدن در واقع نقاشی روی کاغذ از اشیا و مجسمه سازی و الی آخر اینا همه از اون گرایش های ذاتی بشر که دوست داشته یه چیزی عین خودش بسازه شایدم دوست داشته خالق باشه ها شاید دوست داشته خالق باشه و یه حس خوب می‌داده که یک اثر و خلق کنه دومین چیزی که وجود داشته اینه که خدمتتون عارضم تمدن های بزرگ بشری گذشته نظیر رومی های باستان یونانی ها مصریا و حتی ایرانی ها عموم کارشون بر اساس برده داری بوده و شاید شاید ساخت ربات ها میتونسته به این

پاسخ بده و استفاده از ربات‌ها به عنوان همون نیروهای به عنوان جایگزین انسان‌ها به عنوان برده بتونه بخش زیادی از بی‌عدالی‌های اقتصادی امروز رو از بین ببره و خب اینا دیدگاه و تفکراتیه که چرا اصلاً بشر رفته سمت اینکه ربات بسازه احتمالاً دلایل دیگه هم وجود دارد ولی خب اینا فقط برای اینکه ورود بکنیم به بحث سوال بعدی اینه که شاید براتون جالب باشه کلمه ربات از کجا اومده یا کلمه رباتیک از کجا آمده منابع بیان میکن که اولین بار سال ۱۹۲۳ میلادی یه فردی به نام کارل چابک یه نویسنده اهل کشوره چک برای اولین بار تو یک نمایشنامه با مخفف یو آر که توی پاریس اجرا میشه از کلمه ربات استفاده میکنه و توی اون همونطور که از تصاویر میبینید نمادی از آدم های مصنوعی یا آدم آهنی هایی که تو اون نمایشنامه حضور داشتند و به شدت

تحت سلطه اربابان خودشون بودند و باید تمامی چیزهایی که اون اربابان می‌گفتن و اجرا می‌کردن منابع بیان می‌کنند که توی زبان چکی و روسی خوب کلمه‌ای به نام رباتیک از ریشه ربات‌ها وجود داره که معنیش کار سخت و طاقت فرسا و بعضی ها میگن به معنای برده میشه حالا جالبه بدونید تو این نمایشنامه هم حتی در انتها ربات ها علیه صاح هاشون شورش میکن و بماند که دو تا ربات به نام هایس و هلینا هم توی نمایشنامه عاشق همدیگه میشن و اون چیزی که برداشت میشه اینه که اولین ربات ها عموما ماشین های شیطانی به نظر میرسیدند از دید آدم ها این کلمه ربات بود اما یکم اونورتر سال ۱۹۴۲ فردی به نام آقای ساک آس آسموف همون اسحاق خودمونه اسحاق سیمف از کلمه رباتیکس تو یکی از

با نام رانه روند استفاده میکنه که در اوایل ۱۹۵۰ توی کالکشن آیروبات منتشر میشه و توی اون به یه مسئله جالبی اشاره میکنه که هنوز که هنوزه توی دنیای رباتیک مطرحه و اون قوانین رباتیک آسیموفه آسیموف سه تا قانون رو برای ربات‌ها در نظر گرفته که خب اون زمان طبیعتاً همش تخیل بود ولی الان بالاخره داره به این سمت میره که حداقل تا بخش قابل توجهش واقعیت باشه و حالا سوال جدی اینه که این قوانین چقدر باید رعایت شن قانون اول حرفش اینه میگه یک ربات نباید به انسان آسیب برسونه و یا نباید با عدم اقدام خودش سبب بشه که به یک انسان آسیب برسه یعنی حتما ربات باید چیکار کنه از جون آدم محافظت کنه محافظت کنه قانون اول قانون دوم میگه یک ربات باید از تمامی دستوراتی که

داده شده توسط انسان‌ها تبعیت کنه مگر اینکه قانون اول نقض بشه قانون سومش میگه چی میگه یک ربات باید از موجودیت خودش محافظت کنه و دفاع کنه مادامی که قوانین اول و دوم نقض نشه و اینجوری رسماً ربات‌ها برده‌های انسان یعنی اینکه باید از جون آدما محافظت کنند تا جایی که به جون آدما صدمه نزنن باید دستورات آدما رو تبعیت کنند و در مادامی که در واقع به آدم صدمه نمیزنند و در ضمن دستورات آدم ها رو هم دارن تبعیت میکن یعنی این مسائل نقض نکنند از جون خودشون هم باید چیکار کنن تلاش کنن محافظت کنند و این هم ریشه کلمه رباتیکسه که اینجوری وارد جامعه شده و وارد جامعه علمی شده و بعدش ادامه پیدا کرد و از همون ۱۹۵۰ ش دیگه تقریبا اولین ربات ها به صورت رسم

طبیعتاً پس با این حساب میشه یک عمر حول و حوش ۶۰ ۷۰ ساله را برای حوزه رباتیک در نظر گرفت بریم سر کلمه بعدی کلمه بعدی ما هست سوشال ربات یا ربات‌های اجتماعی که گام بعدیمونه ربات‌های اجتماعی هم مثل ربات‌ها تعاریف مختلفی دارند چند تا تعریفی که خدمتتون اینجا بیان کردم ایناست مثلاً فرض کنید تعریفی که از ویکی پدیا استخراج شده اینه که یک ربات اجتماعی یک ربات خودکاره که با پیروی از رفتارهای اجتماعی و قوانین مرتبط با نقش خودش با انسان یا سایر عوامل فیزیکی خود مختار تعامل و ارتباط برقرار میکنه اگه بخوام معادل کنم به اون تعریفی که قبلا دورش کادر آورده بودم این تعریفی که حالا آقای دکتر مهرداد بنده شاید ارائه دادیم اینه که یک ربات اجتماعی رباتی که موجودیه که نه تنها میتونه حس کنه فکر کنه و عمل کنه بلکه میتونه چیکار کنه

ارتباط برقرار کنه با چی با آدمها یا سایر حالا ایجنت‌های دیگه من جمله ربات‌های اجتماعی دیگه به بیان ساده همون چیزی که اینجا براتون نوشتم رباتیک اجتماعی به عنوان یک مفهوم جوان در ادبیات پژوهشی رباتیک که تقریباً از اوایل سال ۲۰۰۰ با کارهای برجسته خانم‌ها کریستین تاتنهان از دانشگاه هارد فورشایر انگلیس که البته ایشون الان استاد دانشگاه واترلو کانادا هستند و همینطور خانم سینتیا بریزیل از میدیا لب ام تی شکل گرفت و پا گرفت صحبت از ربات های داره که قراره با انسان ها و یا حالا حتی با خودشون تعامل داشته باشند این تعاملات میتونه تعاملات عاطفی کلامی و غیر کلامی شنیداری دیداری و غیره باشه که میتونه خودش به صورت نیمه یا تمام هوشمند اتفاق بیفته این ربات ها به عنوان دوست همدم دستیار معلم کمک درمانگر یا سایر نقش های از این دم میتونن وارد زندگی آدما بشن که به خصوص برای ما این آدم ها

جامعه کودکان با نیازهای ویژه یا سالمندان هستند البته ربات‌های اجتماعی محدود به این جامعه نمی‌شن و در تصویر می‌تونید را تصویر بنده با تعدادی از ربات‌های اجتماعی ساخته شده در آزمایشگاه رباتیک رو ببینید که خدمتتون معرفی خواهیم کرد اما برای اینکه سوال داشته باشید ربات‌های اجتماعی در دنیا چه جوری اند بد نیست این فیلمو با همدیگه ببینیم و حالا خدمتتون عرض میکنم معرفی اول ربات بندیته ساخت دانشگاه کالیفرنیا جنوبی زیر نظریک روی پلتفرم حباب ساز سیار قرار داره ربات بعدی یا ربات بادیه که توی اروپا ساخته شده ربات خرسی شکل در بیمارستان بوستون برای تعامل با کودکان مریض به کار گرفته میشه ربات آیسوی یه رباتی برای تعامل با بچه های طیف اوتیسم ساخته شده این بچه که میبینید اسمش خوان ربات فیس یه رباتی به صورت سیلیکونی شبیه صورت آدما موتور تو صورتشه فلش یه رباتی با تعداد زیادی درجه آزادی

اینفنوید ساخت کوزیما در ژاپن رباتی با قابلیت توجه بروز توجه اشتراکی آیرومک جزئی از پروژه اتحادیه اروپا بوده اون زمان دانشگاه pfl دانشگاه روش کار می‌کردند کسپر یه رباطیه که بچه ها ساخته شده نسخه‌های مختلفش در دانشگاه انگلستان توسعه پیدا کرده کیپان یه ربات جوجه شکلی بوده که خب نسخه اولش قابلیت های بیشتری داشته بعدش به عروسک تبدیل میشه چهار درجه آزادی داره تو اون بخش سیاه رنگی که داره ربات مگی یه ربات کمک دستیار تو بیمارستان ها میتونه به کار گرفته بشه میلو یکی از ربات های که فکر میکنم ساخت شرکت روک هانسون باشه خواهر برادرهای مختلفی داره که یکیش ما داریم به نام آلیس ربات مو یه شخصیت کارتونی داره توی صورتشون هم بعضا این ربات ها المان های دارند که بتوانند حالت چهره از خودشون بروز بدن

ربات دایناسور شکل رومیبو یه رباتی که بدنه داخلش یه تبلته و البته مجهز به یکی دو تا درجه آزادی که میتونه تکون بخوره سایمون رباتیه که تحت نظر خانم آندرا توماس که اون زمان تو دانشگاه جورجیاتک بودن الان دانشگاه آستین هستند توسعه پیدا کرده آیکت یه ربات گربه ای شکل کریسمس یکی از اولین ربات انسان نماست که خانم ساخته در ایالت ربات لکای ربات توپی شکل کرویه که روی زمین میتونه مثل یه توپ سر بخوره اما وجه های اجتماعی بهش دادن ربات نائو بدون شک سوپر معروف ترین ربات اجتماعی و تجاری موجود در دنیاست که تقریباً همه آزمایشگاه رباتیک دنیا دارند تو این حوزه و سایر ربات های دیگه که صرفاً تو اینجا یکی دو تا نمونه دیگر به اتمام میرسه اما قطعا محدود به این عناوین نمیشه خدمتتون عارضم که

اطلاعتون توی حوزه ادبیات موضوعی رباتیک اجتماعی تعاریف دیگه‌ای یا بیان‌های دیگه‌ای از ربات اجتماعی هم وجود داشته به خصوص تا قبل سال ۲۰۰۷ که از یکی از مقالات خانم داتنهان من اینو انتخاب کردم معادل لغت‌های مثلاً سوشالیت روبات سو ولی آخر کلمات معادلی که به کار رفتن اگه دلتون میخواد میتونید بهش مراجعه بکنید اما واقعیت اینه که تقریباً الان آدم ها روی به کارگیری یک یا دو تا اصطلاح تقبا چیز اند همه متفق القول اند یا کلمه سوشال رو به کار میبرند به عنوان رات اجتماعی حالا رباتی که قابلیت تعامل اجتماعی داشته باشه و یه سری جزئیاتی که بعضا هر کدوم از این در نظر گرفتن بعضی از تعاریف سعی کردن خیلی دقیق باشن که لازمش اینه که شما با اون حوزه آشنا باشید مثلا فرض کنید که چهم به تعریف سوشبل ربات توسط سین نگاه بکنید یه تعریف تخصصی میگه ربات های که به طور فع

با انسان‌ها درگیرند تا اهداف اجتماعی درونی و برآورده کنند این ربات‌ها به مدل‌های عمیق شناخت اجتماعی نیاز دارند خب و اینا لازم ببینم تعاریف سوشال یعنی چی و اینا یه مقدار جزئیاتی داره که از محدوده بحث و علاقه ما خارجه و هر کسی نیاز باشه میره با جزئیات بیشتر اینا رو مطالعه میکنه اما در کنار سوشال ربات یه اصطلاح دیگه هست که شکل گرفته و دو تا از پایونیر های این حوزه در دنیا به نام آقای دکتر براییناسیک خودش براینس صدا میکنه و همینطور خانم مایا ماتاریک کلمه سوشالی اسستی ربات یا اس ای آر یا سا هم به کار میبرند یعنی ربات های اجتماعی دستیار خب که این دو تا کلمه رو حالا یا سوشال ربات یا سوش ربات اگه شنیدید بدونید داریم در مورد این حوزه صحبت میکنیم و به نظر من بیشتر از این ورود کردن خیلی ضرورتی نداره و در همین حد ما ربات های اجتماعی بشناسیم کافیه ربات های اجتماعی زیادی تو دنیا وجود دارند

یکی دوتا همکار داشته خانم بوده و یکی هست که این فارغ التحصیل ام ای تی اند برایان اسکی از دانشگاه یل الان هیئت علمیه استاد تمام کالیفرنیا توی لس آنجلس و اینا همچنان دارن این حوزه‌ها رو ادامه میدن بعضا هم دارن با هم کار می‌کنن تیمشون هم به خوبی همدیگه رو میشناسند حالا من یه مدت تو گروه آقای دکتر اسکس بودم و خب بین همدیگه مراوده داشتند پروژه مشترک داشتند خدمتتون عارضم که یکی از فوق فوق معروف ترین ربات های اجتماعی ربات نائو و ربات پیپررن یعنی این دوتا ربات که سمت چپ و راست وایستادن ساخت شرکت آلدباران فرانسه که با هلدینگ سافت که ژاپن با همدیگه در ارتباط اند و خوب کلا این ربات ها رو توسعه دادند بسیار بسیار

قابل اعتمادی هم خیلی از نقاط دنیا وقتی که پروژه سوشال رباتیک می‌خوان انجام بدن و ران کنند قبل از اینکه برن خودشون ربات بسازن کلی علاف بشن و خرج کنن حالا آیا کار کنه آیا نکنه میان این ربات‌ها رو آماده می‌خرن و تمام اون ایده‌هاشون به خصوص الگوریتم‌های هوش مصنوعی شونو روی این پلتفرم های مکانیکی آماده قابل اطمینان بالا میارن ربات کیو تی باته که شاید براتون جالب باشه توی هسته سازندش یه سری افراد ایرانی وجود دارند ربات خدمت شما عارضم که ایشیگرا آقای ایشیرو یکی از اساتید یکی از دانشگاه ژاپننه که یه ربات ساخته شکل خودش عموما توی حالا پوست صورتشون از مواد سیلیکون بیس استفاده میشه شبیه آدم ها ساخته میشن داخل صورت موتور کار گذاشته میشه و ربات های خیلی خیلی مشابه انسان اند که حالا ما جلسه آینده در مورد این یه مقدار صحبت خواهیم کرد ربات جیبو باز پروژه که توسط شروع شد چند سال قبل و تلاش کردن تجاریش کنند خدمت شما

سایر ربات‌های تجاری دیگه و غیرتجاری حتی که یه نمونه فقط ساخته شده و بعضیاشو تو فیلم‌های گذشته دیدید و تعدادی از ربات‌هایی که با افتخار در دانشکده مهندسی مکانیک دانشکده دانشگاه صنعتی شریف و در آزمایشگاه ربات اجتماعی شناختی ساخته شده طراحی ساخته شده که حالا باهاشون آشنا خواهیم شد اگر تا الان نبودید ربات‌های تاوان یک و تابان دو رسای یک و رسای دو خدمت شما عرض کنم آرش یک آرش دو ربات آرمین که نسخه کوچک شده ربات های که شبیه مانکن ربات آپ یا ربات مایا که اینا همه مواردی از این دست باش خب خدمت شما عارضم که باز شاید براتون سوال باشه کلمه سوشال ربات یا عبارت سوشال رو کی به کار گرفته شد دو دیدگاه وجود داره منابع مویسند که خود عبارت سوشال ربات که البته معنیش معنی ربات نبود تو یک در واقع نوشته به کار گرفته شد سال ۱۹۳۵ ماجراش این بود که در مورد یک

فردی به کار گرفته شد که یک شخصیت سرد و حالا فکر می‌کنم بی‌روح داشته و تو این متن استفاده کرده جمله آخرشم با این عبارت تموم می‌کنه که او تبدیل به یک ربات اجتماعی یک چرخ دنده تجاری شده است و بیشتر از نگاهش از کلمه سوشال ربات این بود که اون آدم یه آدم بی حس و بی روحیه و بسیار سرده ولی به معنای رباتیکش سال ۱۹۷۸ عبارت سوشال رو توی یک مفهوم رباتیکی به کار گرفته میشه توی مجله‌ای به نامترفیس ایج یه مقاله توضیح میده که چگونه یه ربات خدماتی یا ربات های سرویسی که داشته مثل فرض کنید مثلا چه میدونم جاروبر خودکار علاوه بر یه مهارت های مثل عدم برخورد به موانع حفظ تعادل یا راه رفتنش به مهارت های اجتماعی هم برای کار توی محیط خانگی نیاز داشته اینکه چه میدونم به آدمما سلام کنه این که وقتی از دو تا آدم دارن با هم صحبت می‌کنن نره وسطشون رد شه چون واقعاً

بی احترامی اجتماعیه و الی آخر انواع موارد اجتماعی رو رعایت بکنه خب اینا خدمتتون عارضم که به این حوزه در واقع شروع اصطلاحاً به کارگیری ربات‌های اجتماعی توی در واقع حوزه ادبیات مهندسی مکانیک بوده خدمتتون عارضم و اما داستان ربات اجتماعی و بنده داستان‌های زیادی داریم ما به عبارت به این اصطلاح رایج میگن ما فکر کنم با هم محشور میشیم خدمتتون عارضم که سال ۲۰۱۷ ما تو کنفرانس سوشال رباتیک که شرکت کردیم به علت حضور پر تردد مون این در واقع ربات آس را از طرف شرکت هوندا به ما هدیه دادند بالاش این رباته به ما گفته آقای لاو یو به نظرم اولین کسی بود که این حرفو میزد بهمون برای شروع بد نبود به نظر و خب بعد از دفاعمون هم خدمتتون عارضم که حالا سایت های خبری تیتر زدن که اولین دانشجوی دکترای رباتیک اجتماعی در کشور فارغ التحصیل شد و خب

اینا مواردی که تو زندگی بنده در مورد سوشال ربات‌ها وجود داشته از سال ۹۲ سه به اینور تا به امروز که به صورت جدی داریم کار می‌کنیم من تا اینجاش ببینم بچه‌ها سوالی دارید دغدغه‌ای دارید یا نه و بعدش باز ادامه بدیم صدا و تصویر بوده دیگه درسته مرسی آره خیلی ممنونم ازتون خب بریم ادامه بدیم خدمت دوستان عارضم که مفهوم بعدی که میخویم معرفی بکنیم مفهومی به نام کاگنیتیو ربات یا ربات‌های شناختی من اسلاید های که تو بخش کاتی ربات استفاده کردم از درس اینتروداکشن تو رباتیکس آقای دیوید ورنون هستش ایشون در حال حاضر توی شعبه آفریقای دانشگاه کارنینگ ملون تدریس میکن و این هم تصویر بنده با ایشونه در حاشیه کنفرانس آیکرا ۲۰۱۵

شهر سیاتل امریکا خدمتتون عارضم که باز دوباره این برای خودش تعریف‌های تخصصی داره من اول برگردم همینجوری نمیدونم کسی در مورد کلمه کاگنیتیو ساینس یا علوم شناختی اطلاعی داره یا نه یا شنیده یا نه خدمتتون عارضم که خب علوم شناختی مطالعه علم ذهن نوشتیم منظور از ذهن مجموع هر آنچه که نمودهای هوشمندی و آگاهی هستند مثل تفکر ادراک حافظه احساس استدلال و تمام روندهای ناآگاهانه شناختی و خدمتتون عارضم که کلا حرفش اینه میگه که تو این علم یا تو علوم مرتبط با این به پرسش های مانند اینکه ذهن چگونه کار می‌کند یا مغز چگونه هوشمندی رو ایجاد می‌کند اینا از جمله پرسش های بسیار بسیار مهمی که تو اون شاخه علمی بررسی میشه و افراد مختلف با تخصص های مختلف از ابعاد مختلف

شاید ما صادقانه اعتراف کنیم ذائقه ما اینه که چی بریم استفاده کنیم مثلاً از هوش مصنوعی یا معماری‌های شناختی برای اینکه الگو بگیریم از عملکرد ذهنی انسان و اینکه چگونه ذهن انسان می‌تونه سبب بشه که چی یه ربات یا یه ایجنت یا یه موجود دست ساز این کارا رو برای ما چیکار کنه انجام بده خب تعریف شکیل و حالا پر پیمونی که آقای دیوید ورنون از کا رباتیک ارائه دادند اینه گفته که اولا بینش ها و روش های را از رباتیک هوش مصنوعی و علوم شناختی و حتی بیولوژیک با همدیگه تلفیق میکنه خدمتتون عارضم که این سیستم رفتارهای حسی حرکتی و عملکردهای سطح بالاتر و قابلیت های اجتماعی یک ربات هوشمند رو هم با همدیگه چیکار میکنه تلفیق و ترکیب میکنه تعریف تعریف به نظر پیچیده و سختیه ولی به

تعریف خیلی ساده و ملموس ازش ارائه بدیم تا بتونیم با همدیگه یه جمع‌بندی داشته باشیم خب دیوید برون میگه که اگه اینو رباتیک در نظر بگیریم در نظر بگیریم و این کاگنیتیو ساینس مرز بین این سه تا با همدیگه بهش میگن رباتیکس خب که میتونه چیکار کنه از الهام بگیره از همینطور موجودات زنده که شامل انسان ها و حیوان ها باشند در مورد مهارت های مختلف شناختی صحبت بکنه در واقع سنسورینگ موتور اسکیل نالج پرزتیشن ریزنینگ و الی آخر سوشترکشن و همینطور بسیار بسیار بین رشته ای این اتفاقی که توی حوزه سوشال رباتیک هم تو تعریفش گفتیم و اینجا هم باز این اتفاق میفته که افراد مختلف با تخصص های مختلف تو این حوزه ها درگیر میشن و الان شاید در جریان باشید که در واقع رشته های دکترای علوم شناختی یا کاگنیتیو ساینس با شاخه های مختلف تو خود کشور راه اندازی شده

یه سری مجموعه‌ها مثل دانشکده پژوهشکده علوم شناختی آی پی ام یا پژوهشکده علوم شناختی و مغز دانشگاه بهشتی یا پژوهشکده در واقع تحت نظر آقای دکتر خرازی اینا مجموعه هستند که از قدیم داشتن اداره می‌شدن تو این زمینه و سابقه کار حالا قابل توجه تری دارند ولی شاید براتون جالب باشه این تقلب بهتون برسونم که دانشگاه شریف هم در تلاشه که دوره دکترای علوم شناختی رو سعی کنه در اولین فرصت راه اندازی بکنه و یه سری افراد بتونن حالا یا به دور دکترا یا بعضا مستقیم به دکترا بعد از کارشناسی ش وارد بشن و برن عملکرد مغز آدم ها را با حوزه های مختلف بررسی کنند که خود مغز آدم را بررسی کنند مغز حیوان ها را بررسی کنند فرایند یادگیری و لرنینگ یا اینکه روی ایجنت ها مثل ماها پیاده کنند یعنی الگوریتم های که به ذهنشون می‌رسه رو چیکار کنن روی ربات ها روی دستگاه های دست ساز یا الکترومکانیکی پیاده کنند باز دوباره اگه دوست داشته باشید به تعریف ها

E:\courses\LangChain Project\main root\data\SCR_Session02_transcript_part2.txt

پردازیم خب طبیعتاً کلمه کاگنیشن باید ببینیم از کجا اومده از یک کلمه لاتین با این ریشه کاگنوسکو میاد که معنای مربوط به دانستنو میده خب یعنی در کل مربوط به دانستن میده که طبیعتاً سبب میشه که حوزه رباتیک شناختی به شکل بسیار وحشتناکی در واقع چی به نالج یا دانش ارتباط پیدا کنه یعنی که چگونه در واقع ربات ها با داده های خامی که میگیرن اینو برای خودشون به دانش تبدیل کنند و در نهایت توی تصمیم سازی هاشون توی شناخت بیشترشون از محیط و همینطور توی اقدامات بعدیشون برای انجام چیکار کنند عمل بکنند خدمت شما عارضم که تعاریف مختلفی ارائه داده آقای دیوید برنون عمده این مبتنی بر هند بوک کاگتیو رباتیکسه که خدمتتون عارضم در حال چاپ

و داغ داغ اصطلاحا که جمع بندی داشتن از تمامی تعاریفی که تو حوزه جمعش کنیم سر تهش هم بیاریم میگه که داره در مورد حوزه صحبت میکنه که ربات‌ها اولاً بدونن چیکار دارن میکنن و بعدش بدونن چرا دارن این کارو می‌کنن یعنی شما اگه به این ربات‌هاتون قابلیت دادید شما دارید از تکنیک‌های رباتیک شناختی استفاده میکنید یا تو این حوزه فعالیت می‌کنید خب ح حوزه های پژوهشی از گذشته به امروز رصد شده باز توسط همون آقای کانگلوسی فکر میکنم دانشگاه منچستر هیئت علمی هستند و آقای آسدا که یکی از دانشگاه ژاپن فکر می‌کنم باشن تو هندبوک کاگتیو رباتیکس ش که در حال چاپه این جدول رو ارائه دادن و گفتن از ۱۹۵۰ به این و چه حوزه های در واقع تجهیزاتی یا رباتیک کار شده تو حوزه رباتیک شناختی و چه مجموعه های منتشر شده که میتونید ببینید مثلاً کار قبلی

پیشنهاد دادن یا یه رباتی رو مشاهده می‌کنید به نام آیکاپ که دقایق آینده باهاش آشنا بیشتر خواهیم شد و از قابلیت‌هاش سر در میاریم که همین ورنون و امثالهم و همکاراشون تو این حوزه چه کارهایی با این ربات انجام دادند بچه‌ها بخوام خیلی ساده صحبت بکنم و جمع بندی بکنم خدمت شما عارضم که اولاً رباتیک شناختی میره از قابلیت های شناختی باید بره استفاده بکنه البته همینجا اعتراف می‌کنم که اینا رویا یعنی اینکه الان همه این اجرا نمیشه یا اگر اجرا میشه با عمق زیادی انجام نمیشه اگر بچه کوچیک اطرافتون دارید همین قدر بدونید که یک کودک توی چند ماهگی خودش بعضاً مهارت های داره که یک ربات دست ساز شما به هیچ عنوان بهش نزدیک هم نمیشه خب حالا کاری هم ندارم که این مقایسه درسته یا نه بالاخره انواع سنسورها تو بدن یک انسان وجود داره تعدادش خیلی زیاده نیرون های عصبی زیاد قابلیت های زیاد

چه میدونم دو تا سنسور لامسه تو فلان نوک انگشتاش نهایتاً بذارید و کلاً قابل قیاس نیست ولی آدم‌ها نه تنها برای اینکه ایده‌های شناختی رو پیاده کنن اینو بلندتر بشنوید برای خودتون بلکه برای اینکه بیشتر تو حوزه شناختی سردر بیارن چیه به سمت رباتیک اومدن یعنی میان ایده هاشون تو حوزه رباتیک پیاده میکنند تا بیشتر از فرایندهای کاگتیو در انسان مطلع بشن یه جورایی بستریه برای اینکه ایده هاشون را پیاده کنند شبیه سازی ها و مدل سازی هاشون انجام بدن که ما حالا انشالله خواهیم داشت و بالاخره تلاش میکنیم همون کارهایی که آدما می‌کنن مثل تشخیص چهره چه میدونم و و و الی آخر رو از کارهای خیلی ساده بگید انجام بدیم بیایم جلو و حالا با تکنیک های هوش مصنوعی بخشی از این رو انجام بدیم همون چیزی که مشخصه اینه که به زبان علمی یک

در واقع کسی که تو حوزه رباتیک شناختی کار میکنه باید از مجموعه در واقع چیز استفاده بکنه توانایی‌های شناختی مختلف اونم تازه به صورت پویا استفاده کنه شامل چی ادراک توجه انتخاب کنش حافظه یادگیری استدلال و حالا کلمات حتی پیچیده تری که نیازمند دانش عمیق‌تری تو این حوزه هستند مثل فراشناخت آینده نگری و الی آخر که اینا خوب همه تعاریف کتابی میشینن اما به شکل واضح مثلا بخواهیم با چند تا عکس بیان بکنیم خدمتتون یا با یه مثال خدمتتون بگم خیلی واضح براتون راه میفته فرض کنید شما یه ربات دارید که یه لباس مثلاً چیزو ببینه آلوده رو ببینه این ربات باید بتونه تجسم بکنه که اوکی این آلوده است آلودگی داره باید شسته بشه و در ضمن بعدش پهن بشه روی تخت روی چیز رخت در حالی که به نظر میاد یک فعالیت روزمره بسیار روتین و ساده باشه ولی میتونه واقعا پیچیده باشه

برنامه‌ریزی و پیاده سازی بر روی یک ربات یا اینکه نه تنها به کارهای خودش رسیدگی کنه بلکه درکی از دیگران و درخواست‌های اونا داشته باشه مثلاً یک فردی که دستش مجروحه بدون اینکه خب این طرف تشنه اش میشه بره براش آب بیاره و دم دهنش بگیره و چی اینو بخوره این ربات خودش بفهمه و اما فوق پیچیده‌تر از اون اینه که با یک نفر همکاری کنه ما این حوزه رو اسمشو می‌ذاریم هیومن ربات کلبریشن یا اچ آر سی که یکی از داغ ترین حوزه های پژوهشی در دنیاست همونطور که دو تا آدم می‌خوان با همدیگه یه کار انجام بدن مثلاً شما میگی یه و میز رو بگیر با هم ببریم تو یا یه و یخچال بگیر اینور جابجاش کنیم فلان کنیم تصور کنید که یه ربات میخواد با شما این کار را انجام بده دقیقا باید پا به پای شما تجسم بکنه مراحل و دسته بندی بکنه و توی مراحل به شما کمک کنه در ضمن اگه شما دست چپ و راست عقب جلو کردی اونم چیکار کنه باید شما تطبیق بده و در ضمن بتونه آینده خوانی داشته باشه و همه این کارها رو باید بتونه به صورت پیوسته انجام بده

و اینا همه سبب سبب میشه که یه شاخه جدی به وجود بیاد به نام کاگنیتیو رباتیکس یکی از معروف‌ترین ربات‌ها در این حوزه رباتی به نام آیکاب که متصدی اون الان دانشگاه آی تی ایتالیاست و یکی از آزمایشگاه‌هایی که تحت کنترلش از خانم وایکوفسکا اینو هندل میکنه این ربات روزی که ساخته شد یه پروژه مشترک بود توی اتحادیه اروپا که دانشگاه مختلفی توش درگیر شدن و اینو ساختن و برنون و همکاران اومدن مهارت های شناختی رو به این یاد دادن مثلاً نگاه کنید به اینکه ربات حالا از خواب بیدار شده در ضمن حالا داره بدن خودشو شناسایی میکنه مثل یک کودک فرض کنید که یک کودک در بدو تولد هیچ اطلاعی نداره از اینکه چه اتفاقی داره مثلاً فرض کنید که به این نگاه کنید خیلی پدیده فوق العاده پیچیده شناختیه که آدم ها به راحتی اجراش می‌کنن اینکه یه توپو شما به ربات نشون بدید توپو ببینه بعد به صاحب نگاه کنه بعد دوباره به توپ نگاه کنه و

خیلی پدیده پیچیده‌ایه زیر مجموعه حالا فرایندهای به نام مثلاً توجه اشتراکی یا جوینت اتنشن اینکه ردیابی کنه با چشمش و الی آخر شناساییش کنه حتی کنجکاوی کنه همون کاری که بچه‌ها از بدو تولد انجام دادن انجام دادیم و تصور کنید شما یه رباتی رو میخوید بسازید که مثل آدم فکر کنه یا حداقل وانمود کنیم که مثل آدم فکر کنه و این مراحل رو انجام بده بماند به اینکه تازه خیلی کار آسونی هم همچین نیست که فرض کنید من به شما یه جایی نقطه یوتیوب تو فضا در نظر بگیرم یه عروسک رو بگیرم و ربات بره دستشو بذاره اونجا و اونو بگیره اگر در واقع اینجوری باشه که من به ربات به تک تک موتورهاش بگم که تو چه زاویه قرار بگیرند و بعدش بخوام حساب کنم که اندکتور یا عملگر نهاییش کجاست از یه تکنیکی به نام فوروارد کینتیکس استفاده می‌کنم یه پله سخت ترش اینه که من بگم که ببین عروسکه اینجاست تو این

خودتی که باید بری حساب کنی موتورهاش زاویه‌اش باید چند باشند در حالی که شما به راحتی این کارو انجام میدید یعنی وقتی یکی یه چیزیو جلوتون قرار میده به راحتی میرید اونو می‌گیرید و حتی اگه نگاه کنید اطرافتون تو بچه ها هم به سادگی این کارو زیر یک سال انجام میدن و این پدیده شناختی بسیار پیچیده که سالها شاید درگیر کرده آدما رو تو حوزه رباتیک فقط روی مثلاً پارامترهای دیتنبرگ و سینماتیک مستقیم معکوس وقت بزارن کار بعدی کار شناختی این مدلیه که مثلاً می‌خوان به ربات یاد بدن که باید شما محتویات ظرف سبز رنگ رو در این لیوان قهوه ای رنگ خالی کنی ببین باید مفهوم رو یاد بگیره نه فقط اینی که لیوان سر جاش باشه و ظرف هم سر جاش باشه یعنی اگه ظرف یکم رفت اینورتر لیوان هم یکم رفت اینورتر بازم در واقع ربات یاد بگیره که اصل فعل رو انجام بده اگر این اتفاق رقم خورد شما دارید تو حوزه رباتیک شناختی کار می‌کنید بچه‌ها

دیگه تلاش کردم در حد ساده و به زبان ساده خدمتتون بیان کنم که رباتیک اجتماعی و رباتیک شناختی چی هستند حالا یه جمع‌بندی هم با همدیگه خواهیم داشت خب و در کل اینه بیشتر از این به نظرم مته به خشخاش نذاریم ربات اجتماعی شناختی رو در کل جمع بندی اینجوری بکنیم که ربات های هستند که برای تعامل با انسان‌ها و با همدیگر طراحی میشن و قراره در تعاملات انسانی حالا رویای ما اینه که تقریباً مشابه انسان ها عمل کنند هدف از طراحی و ساخته شون ایجاد هم افزایی تو سیستم های ترکیبی انسان رباته که به شما زور بیشتر قابلیت بیشتری بده اینکه بتونید با کمک ربات یه کارتون رو سریعتر با دقت بهتر با کیفیت بهتر انجام بدید و یا حداقل اینکه کمتر خسته بشید قرار نیست که این ربات ها جایگزین آدمما بشن فعلا ما اینجوری لحاظ میکنیم البته یه عده بیان می‌کنند که تا ۲۰ ۳۵ ۵۰ درصد شغل های فعلی انسان ها توسط

سامانه‌های رباتیک اجتماعی شناختی هندل خواهد شد اما فعلاً ما اینو فراموش بکنیم نگرانش نباشیم راهکار داره جای بحثم داره بعداً حتی میشه با خودتون به بحث گذاشت فعلاً اینجوری ببینید که ورود این ربات‌ها قراره قدرت اجتماعی و شناختی ما را افزایش بده و به عنوان یک یک ابزار به ما کمک کنه تا قابلیت بالا ببریم خیلی ساده بخوام بیان کنم اینه که شما توی ارائه هاتون فرض کنید از مثلاً پاورپوینت استفاده می‌کنید از لپتاپ استفاده می‌کنید یا ممکنه از گوشی استفاده کنید برای یه ارتباط خاص و این ابزارها به شما کمک میکن تا شما بهتر کار خودتون رو انجام بدید همینو در نظر بگیرید ما با کمک ربات ها بتونیم انجام بدیم این ربات های که بتونن بیان جایگزین معلم بشن نه جایگزین نه کمکی یار معلم بشن کمک یار پرستارا تو بیمارستان بشن و همدم بچه ها تو خونه باشن و بتونن با اونا بازی کنن و سرگرمی براشون به وجود بیارن مطالبی به اونا آموزش بدن و رویای ما اینه که تو بعد شناختی این ربات ها دارای حافظه

مشاهده و تجربیات خودشون باشند در زمانهای مختلف بتونن با همدیگه تعامل کنند و در ضمن بتونن از همدیگه یاد بگیرند یعنی اینکه شما یه رباتی رو طراحی بکنید که خب فقط یه کار خاصو انجام بده این میشه تفکرات رباتیک قدیم الان دارن کاری می‌کنن که بستری رو فراهم کنند که ربات بسته به اینکه چه فضایی وارد میشه بتونه چیزهای لازم تو اون فضا یاد بگیره و حالا میتونید ببینید که چقدر جای کار داره ورود به این حوزه پژوهشی و چقدر میتونه جذاب باشه شما یه موجود خلق میکنید که تلاش می‌کنید روز به روز هوشمندی اونو بالاتر ببرید این حوزه تحقیقاتی به شدت بین رشته‌ایه و تخصص های مختلفی تو خودش درگیر میکنه شما خیلی منتظر نباشید که با یه تخصص فرزند مهندسی مکانیک یا مکاترونیک بتونید گلیم خودتونو از آب بکشید و کامل تمام ابعادش ببینید شما لازمه که با بعضاً مهندس های کامپیوتر رو برق در ارتباط باشین با افراد هوش مصنوعی کار

و روانشناس‌های متخصصین علوم شناختی برای آگاهی و اطلاع از نظریه‌های موجود مختلف و اینکه بررسیش بکنیم چقدر صحت دارند با زبان شناسان با فلاسفه اینکه چقدر این کارهایی که ما می‌کنیم اخلاق مدار اینکه به یه بچه یه رباتی نشون بدیم ولی بهش نگیم که این ربات خودش این کارا رو نمی‌کنه و من در واقع اپراتور دارم از بیرون براش دستورات ارسال میکنم چقدر مسائل اخلاقیه به صورت جدی بهتون بگم داره خیلی بحث میشه شاید خیلی خیلی براتون عجیب باشه توی دانشگاه یک رشته تو کارشناسی ش وجود داشت به نام هوش مصنوعی و روانشناسی یعنی طرف لیسانس گرفت که در کل از تلفیقی از اینا بدونه و یه چیز عجیب غریبیه که احتمالا تو کشور ما به این راحتی تعریف نمیشه و باید طرف خیلی علاقمند باشه که هوش مصنوعی کار باشه بره در واقع روانشناسی کار کنه یا بالعکس مثلاً روانشناسی روانشناس باشه که توان لازم بزاره و بیاد هوش مصنوعی رو کار کنه در

به شدت بین رشته‌ای زیر شاخه‌های مختلفی رو شامل میشه مثل سوشال ربات‌ها یا بعضاً بعضی از منابع از کالکتیو ربات‌ها استفاده می‌کنند سوشال ربات‌ها رو می‌ذارن رو های که قراره با انسان ها تعامل داشته باشند کالکتیو ربات ها میگن ربات های که با خودشون تعامل داشته باشند ولی حالا بهانه که چند تا کلیپ از ربات های موجود در ساخته شده در آزمایشگاه رباتیک و در واقع دهه های گذشته دانشگاه خدمتتون نشون بدم به شدت رشته های مختلف رو درگیر خودش میکنه و هر کسی با هر زمینه یا هر حوزه میتونه تو این حوزه ها کار بکنه و بالاخره کانتریبیوشن داشته باشه خب اما کلیپ اولی که میخوام خدمتتون پخش کنم به بهانه کالتیو ربات ها یا ربات های قرار با همدیگه تعامل داشته باشند اشاره بکنیم به اولین ربات انسان نمای شریف یا شاید اولین ربات ساخته شده انسان نمای ایران

سال ۱۳۸۴ ۲۰۰۵ ساخته می‌شه و در مسابقات رباتیک فوتبالیست ربات‌های فوتبالیست در ژاپن شرکت می‌کنه و خب توی در واقع شکلی که حالا اجازه بدید من اول اینو پخش بکنم ویدیوهای سمت راست رو پخش می‌کنم تو ویدیو سمت راست خوب ربات ژاپنی میخواد پنالتی بزنه ربات ایرانی دروازه بانه بعد ربات ژاپنی تمرکز میکنه یه نگاه به توپ یه نگاه به دروازه و شلیک میکن و بعدش ربات دروازه بان ایرانی جهش میزنه که متاسفانه گل می‌خوره حالا از این ربات ایرانی میخواد در واقع همین کار تکرار بکنه این دفعه ربات دروازه بان ژاپننه

ربات ایرانی می‌خواد حرکت بکنه فعلاً تعادلشم خودش موجب سواله خودشو به توپ نزدیک می‌کنه احتمالاً داره با یه دوربین شناسایی می‌کنه که توپ کجاست خودمو باید بهش نزدیک کنم اون کاری که آدما به راحتی انجام میدن اما برای یک ربات بسیار بسیار پیچیده است و بعدش هم شوتشو می‌زنه و حتی از خط کرنر هم بیرون نمیره یعنی در این حد بهتون بگم همیشه دکتر مقداری اینجا تاکید می‌کردن می‌گفتن ما تلاش کردیم کاملا در واقع شبیه سازی کنیم بازیکنان ایرانی و دروازه بان رو و کاملاً در واقع مدل ایرانی ها رفتار خدمت شما عرض کنم گونه دیگه از ربات های کالکتیوی که توی آزمایشگاه رباتیک اجتماعی شناختی حالا آزمایشگاه رباتیک دانشگاه شریف توسعه پیدا کرد بهره گیری از مثلاً

ایده جانداران بود که به صورت گروهی می‌توانند کارایی انجام بدن فرض کنید که یه ربات میمون شکلی که بتونه در واقع با در واقع دو تا دستش حالا شاخه‌هایی رو بگیره و هی خودشو بره به شاخه‌های بعدی برسونه یا اینکه اگه یه دستش رها شده چگونه مثلا خودش یاد بگیره که در واقع دستشو برسونه به یه شاخه و اینجوری عملیات انجام بده آقای دکتر محمد حسینی لواسانی انجام دادن دکترا شدند حتی میبینید هم ارتفاع هم نیست شاخه هایی که باید بگیره یا آقای دکتر علیرضا نعمتی البته در زمان پایان نامه ارشدشون در مورد سوم ربات ها کار میکردند که مجموعه از ربات ها با همدیگه باید فلاینگ یا فورمیشن داشته باشند در یک فاصله یک ثانیه از هم قرار بگیرند شکل منتظمی قرار

اینجوری کارشونو انجام بدن اینم نمونه‌هایی از کالکتیو ربات‌های اما قبل از اینکه ادامه بدم باز ببینم سوالی هست یا نیست اگه هست در خدمتتون هستم وگرنه ادامه بدیم صدا که فعلاً هست درسته آقا خیلی ممنون انشالله که دنبال می‌کنید امیدواریم براتون جذابم باشه بچه‌ها در قبل در واقع سوشیکس واقعا دلم نیومد مفهوم یا کلمه هیومن ربات اینتراکشن یا اچ آر جا ندم تعامل ربات انسان جز یعنی اصطلاح جدایی ناپذیر حوزه کاری ما خواهد بود و شما اگر تو این حوزه‌ها بخواید کار کنید یا مقاله‌ای انجام بدید بخونید یا بنویسید احتمالاً مدام با این اصطلاح مواجه خواهید شد خدمتتون عارضم که هیومن ربات اینتراکشن البته حرفش از تعامل انسان با رباته خیلی تمرکز نمیکنه به ذات روی مسئله اجتماعی بودنش ولی ما اجازه بدید که این هیومن ربات اینتراکشن

بخش اجتماعی ماجرا یعنی اینکه بعضیا چه میدونم ربات‌های جراح هم که بعضاً با آدما در تعاملن از کلمه چهارراهی براشون استفاده می‌کنند یا phri می‌نویسن مثلاً فیزیکال هیومن ربات اینتراکشن ولی ما بیشتر هدفمون از در واقع تعامل انسان ربات همانطور که اینجا ذکر کردیم مطالعه تعاملات انسان و ربات در دنیای اجتماعیه خب درسته که برای آدم ها خیلی از قوانین اجتماعی را دست ولی واقعا برای ربات شناخته شده نیست یعنی اینکه ما آدما میدونیم که اگر از در رفتیم تو باید به آدم ها سلام بکنیم عرض کردم اگر از دو نفر دارن با هم حرف میزنن بینشون رد نشیم و در ضمن به در و دیوار این هم نمیخوریم یعنی اینا جدا از موارد اجتماعیه و الان یه پله بالاتره اگر شما بتونید به ربات ها همه این قوانین رو هنجارهای اجتماعی رو که ناشناخته هستند یاد بدید حالا تونستید اون ربات رو یک ربات اجتماعی خفن بار بیارید که خوب نیازمند

ارتباط مناسبش با آدم‌هاست و واقعاً باید از همون لحظه طراحی به این نکته توجه بشه که حداقل قابلیت‌هاش رو کاغذ دیده بشه که بعداً بشه حالا قابلیت‌های نرم‌افزاری و سخت افزاری با افورت مناسب اینا رو برای ربات بارگذاری کرد میتونه در واقع بر روی ربات های تمرکز بکنه که می‌تونن با افراد در محیط های مختلف روزمره تعامل داشته باشند این بیان های مختلفی از اچ آر آی و خودش یک فرصت منحصر به فردی برای مطالعه عاطفه شناخت و رفتار انسان در هنگام مواجه با عوامل اجتماعی غیر از حالا انسان های دیگه و خدمت شما عارضم که میتونه دو سر برد باشه هم برای بخش رباتیک مفید باشه و هم برای انسان ها و همانطور که عرض کردم به انسان ها این قابلیت را میده که بتونن شناخت و تمرین کنند و پیاده سازی از شناخت از کاگنیتیو از عملکرد

مغز خودشون بیشتر سر در بیارن اگر ایده‌هاشون رو ربات‌ها پیاده کنند و وایسن ببینن که آدم‌ها چقدر اینا رو می‌پز می‌پسندن و می‌پذیرند و اینا مواردی که بچه‌ها وجود دارد دیگه از یه سری مواردی مثل هیومن ربات کلبریشن و اینا حالا صرف نظر شد فقط در همون حد کوتاه بیان شد خدمتتون و از این به بعد کلا درس ما قراره امروز جلسه ما در مورد کاربردهای ربات اجتماعی شناختیم که چی به چه درد میخورن شاید اول بهتر بود که کاربردهاش بیان بشه و بعدش میومیم معرفی میکردیم لغت ها رو ولی چون عمدت اون آشناییت داشتید یا ممکنه تو سیلاب سه درس کلیات دونستید من آگاهانه تصمیم گرفتم بچه این مسیری که من رفتم جلو ببخشید کاملا من درآوردی بود یعنی تعاریف و مفاهیم پایه گشت و گذار اینور و اونور بود یه ملغمه بود همشون پیوسته یه جایی وجود نداشتن یا من نتونستم پیدا کنم و تلاش کردم که تو این ۲۷ تا اسلاید گذشته یه جوری بزنم تنگ هم یه داستان به وجود بیارم حالا امیدوارم این

خوشایند حال و احوالتون بوده باشه که مهمترین بخش و میتونه به ما انگیزه بده اینان کاربردهاش می‌تونن در راستای کمک درمان باشند که تقریبا سوپر معروف‌ترین کاربردهای رباتیک اجتماعی و تنها جاییه که یه جورایی اولین جایی که یه جورایی سرمایه گذارا حاضرن روش سرمایه بزارن یا حتی دولت ها حاضرند سرمایه گذاری کنند در حوزه توانبخشی کمک کمک رسانی به پرستاران و کلا نقش کتیست یا هم در واقع دستیار درمانی گر حالا میتونن در حوزه ایجوکیشن و آموزش به کار برند البته من اینجا نوشتم تی ای در نقش تی ای ها باشند ولی واقعیت اینه که میتونن کلا سه نقش را بپذیرند میتونن حالا نقش تی ای یا معلم باش یعنی فراتر از دانش آموز بدونن می‌تونن کاملاً کامپنی یا همدم دانش آموز و هم سطح دانش آموز باشند در حد دانش آموز بدونن یعنی آگاهانه حداقل عامدانه

ما در این حد بیشتر نمی‌دونیم و یا اینکه خنگ‌تر از دانش آموز باشند کلمه خوبی نبود یعنی در واقع با دانش کمتری نسبت به اون فرد باشند و این اجازه داشته باشه که دانش آموز به اینا یه چیزی رو یاد بده یه بار پرسیدن از در واقع یکی از دوستان آیا باید معلم ها استادای دانشگاه نگران باشند با ورود ربات‌های اجتماعی به دانشگاه‌ها که قراره از کار برکنار شن تاکید بر این بود که نه اینا فعلاً قراره تی ای بشن و کسی که باید نگران باشه به نظر من فعلا استادا کمتر نگران تو فاز اول میتونه کاربردهای اینترت یا سرگرمی داشته باشه که ربات ها خوب عروسک های باشند که از انسان ها پیچیدگی کمتری دارند اما از عروسک های خیلی معمولی چی باشند لولشون بالاتر باشه و هوشمندتر باشند و بعضی ها مثلاً من جمله کانون پرورش فکری کودکان

خودمون از اینجور عروسک‌ها به نام عروسک‌های الکترونیک نام می‌برند به جای سوشال ربات‌ها ولی می‌دونیم که داستان همینه یعنی عروسک‌هایی که یه میزانی از هوشمندی توشون باشه مثلاً ببینه کاربرشو حداقل بتونه صداش کنه یا اگه صداش کرد کاربر صداش کرد رباته بتونه بهش نگاه کنید در این حد از هوشمندی یا حالا هر چیزی هی بالا و بالاتر مثلاً بتونه خنده و ناراحتیشو شناسایی کنه و الی آخر می‌تونن یه پله بالاتر تورگاید باشند توی هتل ها توی اداره ج توی بیمارستان ها به عنوان دستیار باشند راه رو نشون بدن و یا یه سری چیزا رو جابجا کنند میتونن یه پله باز بالاتر و رویایی تر تو حوزه های کشاورزی تو حوزه های تمیز کاری به کار بیان تو حوزه های اسپیس ربات ها یا رو های فضایی به کار بیان و یا حتی یه پله از این رویایی تر تمام این ربات های که تا الان دیدید یه وجهه مثلا سوشال بهش بدید ممکنه معقولیت بیشتری داشته باش فرض کنید مثلا شما یک کوادرا

سلامم بکنه خب و حالتونم بپرسه یه جوک وجود داشت همیشه که خیلی جالبه من سال ۸۶ ۷ یادمه دریافت کردم ولی کاملا بیانگر حداقل رویا یا تفکر آدماست کسانی که می‌تونن آینده رو ببینند نوشته بود سیر تحولات تلفن همراه در کشور نوشته بود ۱۳۸۰ حالا ۱۳۸۰ من نمی‌دونم متولد چند هستید ولی همینجوری جهت اطلاعتون تا قبل ۱۳۸۳ خیلی تلفن همراه تو ایران متداول نبود و بسیار گرون بودن اگر خودتون خاطرتون میاد که هیچی اگر نه میتونید از یه نسل بزرگترتون بپرسید چند سال بزرگتر خودتون اینو تایید میکن که از سال ۱۳۸۳ به اینور بود مثلاً عدد بهتون بگم شاید یه مقدار جا بخورید سال ۱۳۸۳ یه سیم کارت موبایل یک میلیون تومن بود در حالی که سکه مثلاً شاید ۶۰ ۷۰ هزار تومن بود یا نهایتاً ۱۰۰ هزار تومن یعنی یک سیم کارت موبایل ۱۰ سکه تمام قیمتش بود خب در حالی که الان سیمکار های

اگه مجانی گیرتون نیاد حداکثر ۵۰۰۰ تومن خب خدمتتون عارضم که اینایی که دارم بهتون می‌گم کاملاً واقعیه تحولات گوشی در ایران مثلاً نوشته بود که سال ۱۳۸۳ مثلاً گوشی تو جیب جا میشه چون اون زمان گوشی‌ها قد دمپایی هم بود خدمت شما عرض کنم سال ۸۴ ۸۵ نوشته گوشیت آنتن دهی خوبی داره مثلاً ۸۶ نوشته گوشیت اس ام اس میاد ۸۶ نوشته بود مثلاً گوشیت میتونه ام پی تری پخش بکنه بعد تخمین زده بود نوشته بود ۱۴۵ گوشیت بهت توجه میکنه و این نشون میده که مثل اینکه ما واقعا آدما این از خودمون یه همچین چیزی داریم که هر موجودی هم که داریم می‌سازیم و خلق میکنیم یه کوچولو و سوسکی دوست داریم همدممون هم باشه دوست داریم که ازمون یه استعلاماتی هم بگیر و حال و احوالمون هم بپرسه ولی آخر و این مواردی که میتونه وجود داشته باشه اهمیت سوشال رو بیشتر و بیشتر کنه بچه‌ها از این به بعد می‌خوام با خوشحالی

تمام در واقع به مدت ۲۰ دقیقه براتون فیلم‌هایی از نمونه‌های ربات‌های اجتماعی و اپلیکیشن‌ها و کاربردهایش که تا الان توی دانشکده مهندسی مکانیک به کار گرفته شده براتون پخش بکنم ما در مورد نتایج بعضی از این یافته‌ها به جزئیات بعداً صحبت خواهیم کرد اما الان در این حد فقط همینجوری آشنا بشید بدونید که فضا چهه و این کارها کارهایی که فقط توی آزمایشگاه خودمون انجام شده یعنی اینکه نشون میده بالاخره شدنیه دوستان و رفقای خودتون حالا قبل یا بعدش شما این کارها رو بالاخره یا کردن و میکن و این مشابه کارها را ادامه میدن و خب چند تاشو ببینیم اولین پروژه ما که بخوام به عنوان خاطره و داستان براتون بگم سال ۱۳۹۲ بود با ورود خانم دکتر مینو عالمی به گروهمون به عنوان پژوهشگر تصاد ایشون ایده به کارگیری ربات ها را در آموزش زبان اشاره داشتند با مطالعه به عنوان روبات اسست لنگویج لرنینگ یا کلمه رال بچه جهت اطلاع ربات و آر او بی او تی مینویسند ولی رو نخونید حتی

انگلیسی‌ها اینو ربات می‌خونن یعنی اینکه در واقع اینکه کتاب‌های فارسی بعضاً از کلمه ربات استفاده می‌کنند کلمه مناسبی نیست در ضمن ما چند سالیه که تصمیم گرفتیم ربات و ر به الف ت مینویسیم و ربات نمی‌نویسیم باز آگاهی یعنی تصمیم با خودتونه نمونه از عملکرد حضور ربات به عنوان کمک معلم در کلاس‌های آموزش انگلیسی ببینید

کاری که تو این انجام می‌شد این بود که ربات در نقش کمک معلم وارد میشد مثل کلاه قرمزی یا جناب خان ورود می‌کرد کمک می‌کرد اگه می‌خواست فعلو لغتی رو به بچه‌ها یاد بده در حد امکان با انجام اکت انجام می‌داد شما اینو براتون انجام بده و بگه فوتبال پلیر یا نکروبات شما حتی این کلمه رو هم ندونید به زاد چی بوده میتونید حدس بزنید که چه معنی داره و احتمالاً ماندگاری بیشتری براتون داره که حالا یافته‌هاش بعداً صحبت خواهیم کرد خدمتتون عارضم کار بعدی که ما تو این حوزه کردیم به کارگیری ربات های اجتماعی در آموزش بچه های مبتلا به سرطان خون به منظور کاهش خشم و اضطراب و افسردگیشون بود از ربات تجاری نائو با نام ایرانی نیما استفاده میشه تو این مطالعه و به کمک یکی از بهاران محک آقای دکتر آرش و آقای دکتر اشکان

زاده که الان دکتراشونو از دانشگاه نور سیستم گرفتن حالا چند سال ایران بودن الان اطلاع ندارم کجان اون زمان دانشگاه کارشناسی ما بودند و بهیار محکم بودن و یه سری مسائل رو به بچه‌ها یاد می‌دادن اینکه چه غذایی باید بخورید چرا بهتون شیمی درمانی براتون انجام میشه چیکار کنید که کمتر دردتون بگیره ولی آخر و این مجموعه سناریو اتفاق می‌افتاده و در نهایت می‌سنجیدیم که آیا تونستیم با این آموزش ها خشم و اضطراب و افسردگی افرادی که شرکت کردن که حالا کودکان بی گناه مبتلا به سرطان خونین باشند و کاهش بدیم یا نه که خب این مقاله مستخرج از این کار کنفرانس رباتیک اجتماعی سال ۲۰۱۴ کنفرانس سیدنی هم به دست آورد که در آزمایشگاه ربات اجتماعی شناختی لوحش موجوده خدمت شما عارضم که ما از سال ۹۵ به بعد به سمت طراحی و ساخت ربات ها رو آوردیم در مورد اینکه

E:\courses\LangChain Project\main root\data\SCR_Session02_transcript_part3.txt

ربات‌های اجتماعی چه شکل‌هایی می‌تونن داشته باشند جلسه آینده صحبت خواهیم کرد ولی نمونه از عملکرد ربات‌هایی که ساخته شده رو ببینید این آرش ۱ اسم من آرشه من یه ربات کمک درمانگرم که می‌تونم با بچه‌ها مخصوصاً بچه‌های بیمار دوست بشم می‌تونم باهاشون صحبت کنم و به حرفاشون گوش بدم من می‌تونم نقش‌های مختلفی بازی کنم مثل یه معلم دکتر و حتی یه بچه هدف من کم کردن استرس بچه‌ها و پدر مادراشونه در کنارش می‌تونم یه سری چیزا بهشون یاد بدم مثل رژیم درست غذایی مراحل درمان بیماری و هر چیزی که از من خواسته بشه امیدوارم بتونم دوست خوبی برای بچه‌ها باشم و از ته دلم آرزو می‌کنم که هیچ بچه‌ای مریض نباشه راستی تو یادم نرفته

می‌خوام به خاطر حادثه ناراحت کننده‌ای که اتفاق افتاده به مردم و بچه‌های خوب کرمانشاهی به زبان خودشون تسلیت بگم این کلیپ زمان زلزله کرمانشاه پخش شد و اینم مجموعه از قابلیت‌های هوش مصنوعی که اون زمان برای ربات در نظر گرفته شده بود

خدمت شما عرض کنم که پروژه بعدی ما طراحی ساخت ربات رسای یک بود که برای آموزش زبان اشاره به کودکان ناشنوا طراحی و ساخته شد اینم به زبان اشاره ایرانی داره میگه سلام اسم من رسا است

خب با کمک حمایت وزارت ارتباطات رسا ادامه پیدا کرد و نسخه دومش ساخته شد بدن براش در نظر گرفته شد و به شکل حرف

حرکت دستش همون قبلی بود بخش تعاملاتش مشاهده می‌فرمایید که بعداً حالا خدمتتون به موقعش توضیح میدم چه کاری داره کار بعدیمون یه کاری به نام ربات مایا که یه ر

به شکل فیلم

سلام من مایا هستم می‌تونم با بچه‌ها ارتباط برقرار کنم اونا رو ببینم احساساتشونو تشخیص بدم و به حرفاشون گوش کنن امیدوارم خیلی زود بیام پیشتون بچه‌ها خداحافظ

خدمت شما عارضم که نمی‌خوام الان بگم خداحافظ اما می‌خوام اینجا جلسه ۱و نگه دارم فیلم باقی ربات‌هامونو در خلال جلسه دوم که در مورد حالا موارد طراحی ظاهری و همینطور تعاملی ربات‌های اجتماعی شناختی میشه صحبت کرد و بحث خواهیم کرد اونجا براتون پخش می‌کنم و انشالله دیگه اگر بتونیم جلسه آینده این مبحث هم تمام کنیم از دو جلسه بعد بتونیم هوش مصنوعی مون رو شروع کنیم و بریم ببینیم حالا چگونه میشه هی به ربات ها قابلیت ها و توانمندی داد اما قبل از اینکه بخواید کلاس رو ترک کنید یه خواهشی ازتون دارم اگرچه کلاس از نظر بنده تمام شده است الان از لحاظ محتوای درسی ولی میتونم این خواهش ازتون بکنم که تشریف داشته باشید به یک مصاحبه ضبط شده نگاه بکنید من دارم در تلاشم که بتونم تو طول ترم با یه سری از افراد برجسته این حوزه در کشور و دنیا مصاحباتی انجام

اگر فرصت به ما بدن و همکاری بکنند ببینیم که دیدگاه‌هاشون چیه نه تنها در مورد رباتیک اجتماعی اینکه چگونه رباتیک اجتماعی اینا رو بعضاً به خداشناسی می‌رسونه به جهان‌بینی‌های متفاوت می‌رسونه حس و حال خودشونو بهتر میکنه بپردازیم و دعوت می‌کنم از شما برای دیدن یک مصاحبه حول و حوش ۲۵ دقیقه‌ای از مصاحبه بنده با آقای دکتر علی مقدادی استاد بنده و رئیس سابق آزمایشگاه رباتیک اجتماعی شناختی اینو با همدیگه ببینیم من فیلم مصاحبه کاملشون که حول و حوش پنجاه و خورده دقیقه هستم براتون تو سامانه درس افزار میتونم بارگذاری بکنم اگر کسی دوست داشت اینو مطالعه بکنه مشاهده بکنه حتماً این کار بکنه بالاخره حیفه که آدم بیاد مکانیک شریف و پای صحبت بزرگانی مثل دکتر دور علی دکتر مقدادی و کلاً سنیور های دانشکده نشینه این

به بنده است ولی پیشنهاد بنده به شماست ولی اگر دوست داشتید می‌تونم تشریف ببرید من این مصاحبه رو براتون پخش می‌کنم و در نهایت هم میایم از همدیگه خداحافظی می‌کنیم آقای دکتر علی مقداری خب استاد تمام بازنشسته دانشکده مهندسی مکانیک هستند ۳۵ سال سابقه کار دارند از سال ۱۳۶۶ وارد کشور شدند و پست‌های کلیدی و حساس بسیار زیادی داشتن رسماً یه جورایی اولین فردی بودم که رباتیک رو وارد ایران کردن زمانی که اومدن اصلاً کلمه ربات رو کسی تو ایران به اون معنا نمی‌شناخت با همدیگه ببینیم به نام خدا دوستان عزیز و ارجمند عرض سلام و ادب و احترام با افتخار تمام در خدمت آقای دکتر علی هستیم استاد بازنشسته به اذعان خودشون به هنگام دانشکده مهندسی مکانیک با کهکشانی از افتخارات مدیر سابق قطب طراحی رباتیک و اتوماسیون سرپرست آزمایشگاه های رباتیک کارگاه آموزشی ر

آزمایشگاه رباتیک اجتماعی را شناختی و انواع در واقع پست‌های مهم و کلیدی دیگه‌ای که بر عهده داشتند آقای دکتر خیلی ممنون خیلی خوش آمدید یه معرفی کوتاهی از خودتون داشته باشید در خدمتتون هستم سلام و عرض ادب و احترام دارم خدمت شما استاد جوان آقای دکتر طاهری عزیز و دانشجویانی که در کلاس شما ثبت نام کردند و حضور دارند و برای اولین بار این درس جدید رو تجربه میکن انشالله که براشون مفید بوده باشه از خودتون بگید بگید که چی شد برگشتین و رباتیک را راه انداختین چجوری پیشش بردین و اینو بشنویم بله من در بله درست فرمودید من

دوره لیسانسم که تموم شد تو آمریکا فوق لیسانس رو که شروع کردم تو دانشگاه شمالی اولین جایی بود که با به اصطلاح حوزه رباتیک آشنا شدم از نظر حوزه تخصصی و علمی البته نام ربات رو قبلاً در کودکی در فیلم‌های هالیوودی که تلویزیون ایران پخش میکرد شنیده بودم و دیده بودم ولی در مورد تخصصی از ابتدای دوره فوق لیسانس باهاش آشنا شدم و پروژه فوق لیسانس ما تو همین زمینه بود درس های در گرفتم و بعد دکترا هم تو همین زمینه ادامه دادم و در دانشگاه که بودم و در انتها هم یک سال پس دکترا در آزمایشگاه ملی کار کردم که اونجا هم اتفا تو بخش ر

کار کردم که بیشتر اون موقع روی منیپولیتورها یا بازوهای مکانیکی کار می‌کردیم تو محیط‌های به اصطلاح هضرس یا محیط‌های سمی ناشی از تشعشعات رادیواکتیو و غیره و در انتهای اون همونطور که شما فرمودید سال ۶۶ به ایران برگشتند تقریبا یکی دو سال قبل از پایان جنگ ایران و عراق دقیقا یادمه که ۲۷ آذر ۱۳۶۶ وارد ایران شدم و از اول دی ۱۳۶۶ دانشکده مکانیک صنعت شریف استخدام شدم در مورد خود حالا راه اندازی رباتیک در شریف صحبت کنیم عزیزان میخوام راجع به رباتیک صحبت کنم موقعی که من اومدم ایران واژه ربات و رباتیک خیلی شناخته شده نبود در بین دانشگاه

دانشگاهیان ایران خوب از طرفی اولین کاری که کردم همون کاری که آقای دکتر طاهری داره میکنه الان نوشتن سیلابس درس رباتیک بود حالا در مقطع کارشناسی تحت عنوان رباتیک و در مقطع کارشناسی ارشد سینماتیک و دینامیک ربات‌ها اولین کاری که کردم در اون زمان نوشتن سیلابس درس رباتیک بود چون جزو سیلاب درست اختیاری تعریف نشده بود و خوب یه درسی بود که بایستی همراه با تجربه بود فقط به صورت نظری بچه هامون حس لازم رو پیدا نمیکردند با خوندن کتاب حالا اون موقع هنوز من ترجمه کامل کتاب رباتیک نکرده بودم در سال های اول همون کتاب انگلیسی رو استفاده میکردم و سعی میکردم حالا به صورت با توضیح وها کارمو ببرم جلو که بعدها

حکومتی که از دانشجویان خودم که لیسانسش را شریف گرفتم مکانیک مهندس فخرایی ما اولین نسخه فارسی این رو ترجمه کردیم و این ترجمه هم با مجوز مولف اصلی کتاب که آقای دانشگاه استنفورد اتفاق افتاد و انتشارات دانشگاه شریف چاپ کرد که سالها در دسترس هست لذا این رو علم رو ما تدریجی وارد ایران کردیم ارائه درس ترجمه کتاب و راه اندازی اولین آزمایشگاهی که من توی دانشکده مکانیک راه انداختم ساختمان قدیم همون آزمایشگاهی بود که بغل آزمایشگاه سیالات هست همیشه ذهنم این بود که خودم رو با شرایط تطبیق بدم با شرایط جامعه و علمی

اولین پروژه‌ای که تعریف کردیم مثلا اون موقع اولین دانشجویان من که ارشد یا مکانیک و الکتریک برق بودن تو ارشد آقای دکتر وحدت پروژه طراحی ساخت دست مصنوعی ما کار کردیم چون اون موقع بحث جنگ و جانبازان و به اصطلاح مطرح بود ما سریع اومدیم حوزه رباتیک رو بردیم به سمتی که به اصطلاح شاید توش چیزی درآورد که به درد جامعه اون موقع بده ما خوب من در دوره خدمتم دوبار به فرصت مطالعاتی رفتم به امریکا یک بار به دانشگاه کالیفرنیا در دهیس رفتم با یه مرکزی اونجا فعالیت

دانشگاه مرکز پژوهشی شبیه همین حالا قطب رباتیک بود اونجا رباتیک رو هم به صورت قطب‌های علمی رو به صورت سنتر اکسلنت یا سنترال اکسلنس ترجمه کننده‌ها معرفی می‌کنند اکسلنسی بود در حوزه به اصطلاح هوشمندسازی اتوبان ها و شاهراه ها با تکنولوژی های رباتیکی فناوری های هوشمند که دوره بعد که رفتم فرصت مطالعاتی رفتم دانشگاه کلرادو در شهر گلدن و اونجا هم باز توی سنترال اکسلنس دیگه ای کار کردم یک سال فرصت مطالعاتی رو اونجا حوزه رباتیک رو در حوزه های حالا بیشتر مهندسی پزشکی و

این‌ها کار می‌کردم یعنی بیشتر استفاده از فناوری رباتیک در جراحی نمی‌دونم ارتوپدی کارهای اینطوری استفاده می‌کردند خب یک سالم اونجا من کار کردم در واقع با شکل گیری و مزایای داشتن یک خطبه علمی آشنا شدم دیگه هم در کلرادو اینو دیده بودم هم در کالیفرنیا دوتا ایالت مختلف و سال ۲۰۰۱ بود که برگشتم ایران 201 بود میلادی که برگشتن ایران همونجا که تو آمریکا بودم سالها ماه های آخر و اینها نشستم پیشنهاد یک سنترال اکسلنس رو تدوین کردم یه چیز حالا پروپوز

خامی رو تهیه کردم با تجربیاتی که حالا اونجا کسب کرده بودم و سوالاتی که از دوستان و همکارانی که اونجا بودن پرسیده بودم و اینها بعد که اومدم ایران دیدم که خوشبختانه تو ایرانم دارن این موضوع رو پروموت می‌کنند یعنی هم توی سازمان برنامه وزارت علوم ولی هیچ الگویی ندارن که مثلاً حالا می‌خوان درست کنن چجوری باید باشه یا چون به نظر میومد که کسی تجربه رو حالا حداقل مستقیم نداشته یا اگر هم داشته همتش نکرده که به اصطلاح بره دنبالش من معتقدم حالا تو صحبت ها معتقدم به دو چیز توی زندگیم مهم هست که کمک میکنه آدم به اون چیزی که میخواد برسه یا تاثیرذار باشه یک اولیش باوره یعنی

آدما باید باور داشته باشند که می‌تونن اگر بخوان می‌تونن هوش و استعداد و اینا همه خوبه ها خیلی عالیه ولی اگر باور و همت نباشه دومیش همته اونا به یعنی از هوش و استعداد خیلی خوب استفاده نمیشه طرف داره ولی همتشو نداره یا باورش نداره ازش هیچ موقع خودم رو آدم باهوشی نمیدونم ولی این دو ویژگی رو فکر میکنم در خودم در طول زمان تقویت کردم داشتم یا به نوعی تقویتش کردم و هم به خودم باور دارم همت دارم هم دانشجوهایی که باهام کار کردن هم باور داشتم شما از بپرسید همه دانشج که من همیشه بهشون اعتماد داشتم و دارم همه چی رو در اختیار خودشون گذاشتن چون باور داشتم که دانشجوها دانشجوهای خوب و قوی

فضا که آماده شد و وقتی برگشتم ایران یه پروپوزال رو دادم به وزارت علوم برای تشکیل قطب علمی سال ۱۳۸۰ ما می‌شد تقریباً و جز اولین جز اولین قطب علمی کشور بود توی این قط ما بایستی یه سری آزمایشگاه ها رو شکل میدادیم یعنی جزو اهداف و ماموریت های خود بود که در حوزه های مختلف طراحی رباتیک و اتوماسیون مثلا ما فعالیت بکنیم لذا رباتیک رو داشتیم چون شروع شده بود از سال ۶۶ تا سال ۸۰ چند سال میشه خوب تقریبا سال ۱۴ ۱۵ سال ما تجربه اش داشتیم یه بچه ها تربیت کرده بود دکتر علی اومد آزمایشگاه طراحی

آزمایشگاه کنترل پیشرفته و اینها رو دکتر اصولی اومد آزمایشگاه مکاترونیک راه انداخت و عملاً حوزه‌هایی که به نوعی به رباتیک مرتبط بود در حد توان و بضاعت کشور و دانشگاه و اینها شکل دادیم رسیدیم به سال ۱۳۹۲ چی شد که رباتیک اجتماعی رو انتخاب کردید آزمایشگاه جدید و راه اندازی کردید و به چی رسید باهاش یکی از همکاران خانم دکتر عالمی دکتراش گرفته بود و توی یکی از به اصطلاح بحث ها توی ناهارخوری و اینها من یادمه پیشنهاد اینکه استفاده از ربات برای آموزش زبان رو ایشون مطرح کرد ما اون موقع ربات های انسان نما به اون صورت نداشتیم یا کمتر توی ایران هنوز وارد شده بود بیشتر هم اگر بود

فوتبالیست با کارهای سرگرمی و اینها ولی اینکه واقعاً از ربات برای حل معضل یا مشکل استفاده بشه هنوز مشکل اجتماعی یا آموزشی استفاده بشه ایران وارد نشده بود تجربه های اندکی هم سه چهار سالی بود ما یه سرچی که کردیم توی اینترنت و اینها دیدیم که تجربه های شروع شده چهار پنج سال یا مثلا تو کشورهای مختلف دارن از جمله آمریکا و دانشگاه و توی سنگاپور و اینها دارن یه کارهایی رو میکنن من تقریبا اواسط دوره اواسط دوره معاونتم یعنی سال های ۸۶ ۸۵ ۸۶ با آقای سنجی به صورت اسمی آشنا شدم که در واقع میتونیم بگیم پدر همین

اولین کساییه که حوزه ربات اجتماعی رو به صورت یه مجله‌ای که الان همون اینترنشنال ساشا رباتیکس هست ایشون درآورد ولی من یه سفری رفتم سنگاپور برای کنفرانس و اینها اونجا دیدم هم دانشگاه سنگاپور رفتم دیدم و بعد اونجا این واژه به گوش من خورد راستش بخوام بگم ولی خیلی جدی نگرفتم یعنی خیلی برام هنوز جا نیفتاده تو ذهنم که واقعا میتونه این یه حوزه دگرگون کننده در آینده باشه تا اینکه فرصتی پیش اومد یعنی این بحث پیش اومد که مطالعه مطرح کردم گفتم اتفاقا یه همچین حوزه ای یه عده ای شروع کردن ما نکردیم ما نکردیم به هر حال علاقمند بود بیاد به صورت تصاد و اون موقع برای همه هم تعجب داشت برای خیلی از مهندس ها عادت نداشتیم با مهندس غیر

آزمایشگاهمون تحمل بکنیم یه چیز عجیب غریبی بود و ایشون ولی خب خیلی انگیزه بالایی داشت و دوست داشت تو این حوزه کار بکنه اومد یه یه سالی سالی روی حوزه استفاده از ربات‌ها توی آموزش زبان اینا کار کرد و از اونجا ما فهمیدیم که خب بعد مسئله اوتیزم پیش اومد بعد مسئله سندروم پیش اومد موضوعات مختلف آموزشی و پژوهشی با استفاده از ربات ها پیش اومد که مخاطبش هم کودکانی بودن که حالا به نوعی مشکلاتی رو در آموزش یادگیری اینها داشتن و دارند و کودکان مبتلا به سرطان آموزش ش اینها لذا ما این در ناخودآگاه درگیر یه سری پروژه های شدیم که مخاطبانمون یه سری

مشکلاتی رو داشتن ولی علاقمند شدیم که چقدر میتونه ربات‌ها به این‌ها کمک بکنه خب با سمینارها و کنفرانس‌هایی هم که رفتیم اینور اونور دنیا دیدیم که این حوزه داره عملاً فلوریش میکنه داره شکل میگیره و لذا گفتیم اینو شکلش بدیم دیگه این رو با توجه به اینکه قطب رباتیک هم داشتیم گفتیم یکی از فعالیت های رباتیک آزمایشگاه شکل گیری آزمایشگاه ربات های اجتماعی باشه و از اونجا بود که دیگه با ورود دانشجویان دکترا مثل آقای دکتر طاهری و سایر دانشگاه اینها این آزمایشگاه انسجام پیدا کرد پروژه های تحقیقاتی رو تونستیم از ستاد بگیریم از صندوق حمایت از پژوهشگران بگیریم از وزارت مخابرات بگیریم بعد میگم وقتی که

شما ذهنتون رو باز می‌کنید یعنی خیلی باریک فکر نمی‌کنید ناخودآگاه هی ایده‌های جدید به ذهن شما میاد یعنی میگم ما با آموزش زبان شروع کردیم بعد یهو شد بعد شد سندروم دان بعد شد کودکان سرطانی بعد شد نمیدونم ربات برای بچه‌های ناشنوا آموزش زبان اشاره و همینطور هم نهضت ادامه داره یعنی همینطور داره روش ما موضوع جدیدی رو مطرح میکنیم دانشجوهایی که تربیت کردیم الان دارن پژوهش میکنن همکارا همه دارن من دیگه جلو زدن دیگه ذهن ها همه رفته جلو و خیلی چیز شده و این خوشحال کننده است من از دیپلم آمریکا بودم درس خوندم ولی در یکی از کنفرانس ها که اتفا با دکتر طاهری رفته بودیم امریکا البته ایشون اونجا بود منم

دانشگاه کازاش من تصادفاً با این یه دانشگاهی از طرف یکی از حالا نمیدونم اساتید بود کارکنان دانشگاه که اصطلاح سمینار همین ربات رسا که ربات آموزش دهنده زبان اشاره هست رو اون موقع هم فرم مبتدیش بود یعنی هنوز فرم تکمیل شده و مراجعه کرد و یه دانشگاه توی واشنگتن بی سی هست برای ناشنوایی ها و بالای ۱۵۰ سال قدمت داره یعنی از زمان آبراهام لینکل این دانشگاه فعالیت کرده سه هزار تا دانشجو داره از ۲۵ تا کشور دانشجو داره از جمله ایران این برای من خیلی جالب بود من رفتم رو سایت این دانشگاه تحصیل کرده بودم هیچ موقع اسم این دانشگاه به گوشم نخورده بود در کل دوران خدم

دانشگاهی برای ناشنوایان یا افراد به طور کل داشت مدارس استثنایی را شنیده بودم ولی دانشگاه رو ندیده بودم نه شنیده بودم ولی کنجکاوی و اینا سبب شد که هماهنگی کردن با یکی از سفرهای تابستونی که آمریکا بودم با خانمم رفتیم دانشگاه رو از نزدیک بچه مرسی از اشارتون بله استپ شدم حالا دو دقیقه فیلمم تمام خیلی ممنون از عزیزانی که تا

تشریف دارین امیدوارم باز استفاده بفرمایید سوالی که مبنای هر پژوهش و نوآوریه یعنی شما الان صفحم شعر نشد ببخشید دکترا بنویسید اولین چیزی که بهش فکر می‌کنید ریسرچ کوشن به چی میخوید پاسخ بدید یعنی پاسخ این پژوهش

E:\courses\LangChain Project\main root\data\SCR_Session02_transcript_part4.txt

برای اینکه پاسخ یه سوال سوالی رو بدید خب یک چیز ناشناخته‌ای رو جواب بدید خب اونجا این سوال تو ذهن من پیش اومد که خوب چون اون دانشگاه دیدم که استادایی هستند که ناشنوا هستند دارن تدریس میکنن دانشجوهایی هستند که ناشنوا هستند حالا نابینا هم داشتن یه عده‌ای و کارمندای هستند که ناشنوا هستند بالای مجلس ش ۷۰ درصد دانشجوها اساتید و کارکنانشون از همه خانواده اند سی در صد هم شنوا این سوال برای من پیش اومد که اگر تو آمریکا ناشن میتونه استاد دانشگاه بشه چرا تو ایران نتونه بشه چرا از اونجا اومدن ایران و یک پروپوزال نوشتم مثل همون کاری که زمانی که میخواستم راه بندازم دیگه شد یه مرحله جدیدی از زندگی چهار پنج صفحه گزارش از اونجا تهیه کردم که یه همچین چیزی

غفلت کردیم نه قبل از انقلاب نه بعد از انقلاب دانشگاهی ویژه افراد کم توان و ناشنوا در ایران تاسیس نشده و این پیشنهاد را دادم به وزارت علوم و حالا پروسه طولانی را طی کرد البته همه نظرها مساعد بود همه خوشحال بودن که یه همچین موضوعی داره پررنگ شده در چشم کشور و به هر حال سال ۹۵ موافقت اصولی دادن که ما شما میتونید دانشگاه را راه بندازیم دو سه سالی هست فعالیت این دانشگاه شروع شده من بخاطر اینکه وقت نگیره دیگه بیشتر تخطی نکن صحبت های که از چند رشته وارد بشیم اینجا پیام دارید بفرمایید وگرنه که خدا نگهدار منم از شما تشکر میکنم برای دانشجویان عزیز آرزوی توفیق و موفقیت دارم این رو فقط توصیه

حوزه‌های بین رشته‌ای و چند رشته‌ای وارد بشیم بایستی درجه تحمل پذیریتون رو بالا ببرید احترام به اصطلاح رشته‌ها و تخصص‌های متفاوت رو بالا ببرید باور کنید که شما همه چی رو بلد نیستید شما ممکنه در حوزه تخصصی خودتون دانشمند باشید ولی حوزه تخصصی شما به تنهایی محصول رو که به درد اجتماعی بخوره ایران نمیده برای اینکه این محصول به درد بخور بدید بیرون بایستی از تخصص های مختلف استفاده بکنید و لازمش اینه که اونها رو درک بکنید زبانشون رو یاد بگیرید فهم بکنید احترام بگذارید و اونها متقابلا همین کار میکن تا بتونید یه کار خوب و قشنگ اگر خوب خیلی ممنون از دوستان عزیز و ارجمند بابت حضور

تا این لحظه حالا ببخشید بابت این قطعی‌های مکرر یه مقدار از چیز بنده خارجه خدمتتون عارضم از دسترس بنده خارجه خیلی ممنون بودید انشالله ادامه میدیم جلسه آینده و به بزرگواری خودتون کم و کاستی‌ها رو ببخشید بالاخره

E:\courses\LangChain Project\main root\data\SCR_Session03_transcript.txt

به نام خدا دوستان عزیز و ارجمند درس رباتیک اجتماعی شناختی عرض سلام و ادب و احترام خیلی ممنون خوش آمدید به جلسه سوم درس اجازه بدید بدون فوت وقت بریم درسمونو شروع بکنیم ما امروز می‌خوایم فصل دوم شروع کنیم که در مورد طراحی و تعاملات ربات‌های اجتماعی شناختی براتون صحبت بکنیم خدمتتون عارضم که توی این فصل عمده مطالبی که میشنویم و امروز مطالبی که میشنویم به ترتیب ایناست یکی اینکه اصلا ربات ها چی هستند چه کار می‌کنند فرض ما بر اینکه شما دانش گذشته در مورد ربات ندارید و از چی تشکیل شدن کلا ربات ها و به اپروچ و دیدگاه متداول در دنیا در حوزه رباتیک اجتماعی شناختی چیه و دو تا مقوله خیلی مهم که توی عنوان فصل مون هم وجود داره یکی مقوله ظاهر فیزیکی

یکی طراحی ربات‌ها از منظر تعامل با انسانشونو با همدیگه بررسی می‌کنه و در نهایت جمع‌بندی می‌کنیم اینه که با کمک خودتون البته که ریکوایمنت‌ها و ملزومات یک ربات اجتماعی شناختی چی میتونه باشه و انشالله بتونید دید داشته باشید که چرا فصل سوم ما ورود به حوزه هوش مصنوعی خواهد بود ما قبلا دیدیم آخرین چیزی که مشاهده کردیم و در جمع بندی این بود که ربات های اجتماعی شناختی ربات های بودند که برای تعامل با انسان ها و یا همدیگه طراحی می‌شدند سعی میکردن در تعاملات انسانی تقریباً مشابه آدم ها عمل کنند هدف ما از طراحی ساخت اونا نه جایگزینی با انسان بلکه ایجاد هم افزایی توی سیستم های ترکیبی انسان ربات بود ما دوست داشتیم که این ربات ها قدرت اجتماعی شناختی ما را بالا ببرند این ربات ها در حالت رویایی خودشون دارای حافظه بود

مشاهدات تجربیاتشون و می‌تونستن با همدیگه صریحاً تعامل داشته و از همدیگه یاد بگیرند و اینا مواردی بود که خوب روش صحبت کردیم اما امروز با این عنوان شروع می‌کنیم ربات‌ها چگونه کار می‌کنند ما با در نظر گرفتن این ماجرا که ممکنه بعضی از شما هیچ بکگراندی در مورد ربات‌ها نداشته باشید مناسب دیدیم که خدمت شما عرض کنم المان های پایه ای ربات ها را از منظر نرم افزاری سخت افزاری خدمتتون یه معرفی کوتاه و اجمالی داشته باشیم و در نهایت بریم سمت تکنیک های که میتونیم روی ربات ها پیاده کنیم تا اونها برای تعامل با آدم ها آماده بشن خب آخرین تعریفی که از یک ربات ارائه دادیم اگه یادتون باشه این بود گفتیم ربات یک ان تیتی یا یک موجودی یک موجودیتی که میتونه چیکار کنه حس کنه فکر کنه و

این سبب میشه که بتونیم حدس بزنیم ربات‌ها یا کلاً تمامی سیستم‌های الکترومکانیکی به ذات از چی درست میشن ربات‌ها شامل ۳ المان اصلی هستند شامل سنسورها اند شامل کامپیوترهای مرکزی یا پروسسورها اند و همینطور شامل اکتورها هستند که قراره بین اینا یه سری اتفاقات و همبستگی های به وجود بیاد تا ربات بتونه این کارها رو که شامل حس کردن فکر کردن و عمل کردن باشه رو چیکار کنه انجام بده خب سنسورهای مختلفی در حوزه رباتیک میتونه به کار بره و طبیعتا توی رباتیک اجتماعی هم سنسورها میتونن متنوع باشند اما به ترتیب اولویت و حالا تجربه و مشاهده نمونه های بین المللی و داخلی میتونیم براتون این دسته بندی رو انجام بدیم که ربات های اجتماعی عموماً به دوربین مجهز این دوربین ها میتونه دوربین های خیلی

ساده رنگی rgb یا دوربین‌های قوی‌تر rgbd باشه که دی نماد عمق سنجیه یعنی نه تنها به شما میگن که تو تصویر حالا در واقع چه رنگ‌هایی رو دارن تو پیکسل‌های مختلف مشاهده می‌کنند بلکه هر کدوم از اون رنگ‌ها داره تو چه عمقی اتفاق میفته که نمونه خروجی‌های اونو برای سنسورهای کینکت یا ریل سنس میتونید اینجا مشاهده بفرمایید میکروفون ها جزئی از المان های سنسورهای موجود در ربات ها هستند که صداها را ضبط بکنند و در نهایت حالا برای مقاصد مختلف پردازش بکنن تک تایل سنسورها رو داریم سنسورهای حسی فشاری سنسورهای آی ام یو یا اینشیالتی که خودشون شامل شتاب سنج اند شامل خدمتتون عارضم ژروسکوپ اند که قراره شتاب های خطی در ایکس و وایz یا حالا بعضی از این جهت ها سرعت های دورانی در سرعت های زاویه در راستای ایکس و وایz یا بعضی از این

به ما بده بعضاً مگنتومیتر دارند و حتی می‌تونن به فشارسنجم مجهز باشند به جز اون سنسورهای موقعیت یاب یا سنسورهای مجاورتی که حالا یا مستقیماً توی ربات وجود دارند یا توی المان‌های ربات وجود دارند مثلا فرض کنید که شما سنسورهایی رو قرار میدید برای اینکه ربات به در و دیوار نخوره به موانع برخورد نکنه یه خط خاص رو بتونه دنبال بکنه و یا اینکه مثلاً اکتیتور موتور شما مجهز به کددر که بهتون میگه الان تو چه موقعیت زاویه قرار دارید به صورت مطلق یا نسبی نسبت به یه لحظه قبلتون و اینا همه در واقع مواردی که وجود دارند یه سری سنسورهای دیگه‌ای هستند که میتونن ربات گرون تر کنند همیشه وجود نداند اما بالاخره تو ربات های اجتماعی دیده میشن مثل سنسور لایدار که خوب برای پیدا کردن نقشه محیط میتونه خیلی خوب باشه تو خودروهای خودران به کار میرفتند حالا هر چند که خودروهای خودرو هم بیشتر دارن تلاش

مبتنی بر کمرا و دوربین بشن ولی به هر حال وجود دارند یه سری سنسوران بیان نکردیم حالا مستقیماً یا هستند یا نیستند ممکنه فراوانیشون کمتر باشه یا ممکنه نیازی به اشاره نداشته باشند مثلاً ممکنه فرض کنید موتوری که شما استفاده می‌کنید خودش مجهز به سنسور دما باشه و اگر دماش از یه عددی بالاتر رفت حالا پیغام خطا بده یا بگه من نمیتونم اون گشتاور حداکثر اعمال بکنم و الی آخر نمونه های از این سنسورهایی که عرض کردم خدمتتون فقط میتونید تصویر مشاهده بفرمایید مثلا سنسور آی آر برای اینکه یه سنسور پراکسیمیتی بدونید مثلا فرض کنید توی ربات های تخریب کننده خط آیا دارید روی یه خط راستی حرکت میکنید یا نه و الی آخر زیر پاتون سفیده روشنه یا سیاهه یا اینکه سنسورهایی که بدونید مثلا رسید لبه پرتگاه و بیشتر از اون ربات جلو نرو الی آخر این همه نمونه هایی از این جنس هستند المان بعدی مورد نیاز توی ربات

پردازنده‌ها یا کامپیوترها هستند می‌تونن واقعاً یه کامپیوتر باشن یا مینی کامپیوتر باشه بسته به سایز رباتتون بسته به هزینه‌ای که شامل برای ربات دارید می‌کنید مثلاً فرض کنید ربات آرش دو یه کامپیوتر کرای سون با همین ابعاد توی بدنش قرار داده شده اما پردازنده‌های معروف دیگه‌ای مثل بردهای آردوینو حالا آردو اونو نانو مگا خدمت شما عرض کنم که رزبری پایه ها یا بردهای جتسون نانو اینا همه از پردازنده های خیلی معروف اند که توی یک ربات یک یا چند تا از اینا به کار گرفته میشه شما میتونید برای بخش های مختلف برای خوندن داده از یه سری سنسورها از آرد استفاده کنید از رزبری پای استفاده کنید از مینی کامپیوترها استفاده کنید و الی آخر و این هم چیزهایی که موجود هستند و گام سوم عملگران دیگه ربات ها قراره که بعد از اینکه خب بالاخره حس کردن و فکر کردن و تصمیم گرفتن عمل کنند یه کاری باید رو محیط انجام بدن این کارو توسط عملگ

انجام میدن که اکتیویتورا دیگه معروف‌ترین دورانی‌اند که من به صورت نمونه داینامیکسل ام ایکس ۶۴ که یکی از موتورهای قدرتمند البته خب به پول ما یه موتور گرون قرار دادم مثلاً توی شونه‌های ربات‌های آرش و رسا که قدی بالای یه متر دارند ما عمدتاً از این ربات از این موتورها استفاده کردیم ولی خب گونه‌های ساده‌ترشون هم هستند مثل آی ایکس ۱۲ که خوب اونا دیگه ارزون ترین ش اگرچه الان هم ارزون ترین ها به واسطه قیمت ارز همچین ارزون در نمیاد اسپیکرها هستند که ربات های اجتماعی عمدتا میتونن داشته باشند خودتون الان میتونید بگید چرا برای پخش کردن صداست اگر صدایی از طرف صدای ضبط شده از قدیم از یه آدم یا وقتی که یه صدا رو خودش تولید میکنه یا یه آهنگ بخواد برای مخاطبش پخش بکنه طبیعتا میتونه از این کانال با کاربر در ارتباط باشه ال ای دی ها میتونن باشند که توی

مختلف بدن نصب شده باشند و بتونن رنگ‌های مختلفی رو به خودشون بگیرند برای نشون دادن حالت‌های چهره برای نشون دادن وضعیت ربات برای ارتباط احساسی برقرار کردن با کاربر و الی آخر و همینطور برای زیبایی و عملگرهای دیگه‌ای هم می‌تونن باشن دیگه فرض کنید که استپر موتورها موتورهای دی سی اکتیویترهای نیوماتیکی هیدرولیکی بسته به اینکه رباتتون چه قیافه‌ای داره چقدر قدرتمنده چقدر زور میخواد چقدر صنعتی و الی آخر همهان های اند که توی ربات ها به کار گرفته میشن اما وقتی که ما تو حوزه رباتیک اجتماعی کار میکنیم من خدمت شما عرض کنم که چند تا نوشته رو اینجا میارم و با یه سوالی که حالا به شکل زرد اینجا بیان شده سعی میکنم خدمتتون در واقع یه طرح مسئله کنم با همدیگه چند دقیقه هم فکری داشته باشیم نوشته که اگر شما بخواهید یه ربات اجتماعی بسازید که کما اینکه

بعضیاتون واقعاً ممکنه بخواید بسازید یا اینکه حداقل بعد از گذروندن این درس به این فکر بیفتید که راحت میتونید چه برای کسب درآمد چه برای در واقع تمرین چه برای ثابت کردن توانمندی‌های خودتون به خودتون یا دیگران به این فکر بیفتید که یه ربات اجتماعی بسازید یا از یه منظر دیگه نگاه کنید فرض کنید که شما قراره یه ربات اجتماعی باشید شما یه ربات باشید فکر میکنید باید چه چیزهایی در نظر بگیرید اگر طراحید یا چه دوست دارید چه مهارت های داشته باشید اگر یه ربات باشید ها اول اینکه شکل و شمایلتون چیه آیا چرخ دارید آیا مجهز به بازوهای در واقع رباتیک هستید اگر تخت داشته باشید به شما میگن ربات های سیار اگر بازو داشته باشید خوب یک گونه ای از عملکردها رو میتونید داشته باشید میتونید شتر گاو پلنگ باشید و مجهز به همه اینها باشید و چند تا از این چیزها را به شکل تلفیقی داشته باشید چه میتونید موقعیت خودتون رو تو فضا پیدا بکنید ها

آدم‌ها وقتی که یه محیط‌هایی شناخته شده تقریبا رهاشون می‌کنید بالاخره با یه سری لندمارک‌ها با یه سری نشونه‌ها پیدا می‌کنند دیگه که کجا هستند مثلاً میدون آزادی رو می‌بینه می‌دونه تو چه محدوده‌ای قرار داره یا اینکه تو کدوم اتاق کدوم ساختمون هستش و یه سری المان‌ها می‌تونه به شما کمک کنه اما تو ربات‌ها چه جوری میتونه این اتفاق بیفته یا یه ربات چه‌جوری می‌تونه موقعیت خودشو کنترل کنه اینکه چه موقعیت کلی چه موقعیت اعضای بدنشو میگه پای خودش دست خودش چرخ های خودش توی موقعیت خاصی قرار بده با یه سرعت خاصی به حرکت در بیاره این مسیر خاصی رو بده ها تازه این که گفتیم خیلی داره کلی گویی میشه و لزوما هم بعد سوشال نداره حتی شما میتونید هی برید جلوتر و ابعاد سوشال بیشتری بهش بدید خب اگر شما یه ربات باشید احتمالا کاربرتون دوست نداره یا خودتون دوست ندارید به یه مانع برخورد کنید اما چه میتونه این اتفاق

چه جوری می‌تونیم موانع رو شناسایی کنه چه جوری میتونه محیط اطرافشو درک کنه به همه این اهداف برسه و حتی ابعاد اجتماعیش آیا اطرافش آدم وجود داره اگر بله چند نفرن کجان کی هستند اگر صداشون زد من باید به کی نگاه کنم چه جوری ربات میتونه بفهمه یاد بگیره ادامه بده به دانشش و آیا کسی داره بهش نگاه می‌کنه و خدمت شما عرض کنم سوالات از این دست خب با یک گذاره ادامه دادم نوشتم چند سال پیش خبری روی خبرگزاری ها پدیدار شد مبنی بر اینکه ژاپنی ها ادعا کردن یک ربات ساختند که میخوان در مهد کودک ثبت نامش کنند به نظر شما یک ربات اجتماعی باید چه ویژگی هایی داشته باشه اجازه بدید چند دقیقه با هم همفکری داشته باشیم و اگر یک ربات اجتماعی شناختی تمام عیار بخواهید داشته باشید دوست دارید که چه چیزهایی داشته

من دوست دارم دو سه نفر از بچه‌ها مشارکت کنند دست بالا بگیرن میکروفون‌ها رو روشن کنن چند دقیقه‌ای حرف بزنن اینکه دوست دارن یه ربات اجتماعی شناختی با اون تعاریفی که اسلاید اول ارائه دادم و بعدش با این انتظاراتی که الان بیان کردیم دوست دارید چی باشه از کجا شروع کنه چند خطی برای ما صحبت بکنید و بعدشم بریم جمع بندی کنیم ببینیم کدوم از اینا حالا چجوری قابل حلن و ما به کدماش میپردازیم اگر کسی علاقه داره و ایده ای داره میتونه درگیر باشه احسان جان سلام وقت شما بخیر استاد سلام خوبی آقا متشکر زنده باشید من در خدمتم فکر میکنم که یه ربات اجتماعی تمام عیار چه ویژگی های باید داشته باشد سوال بفرمایید که اگر است سنسور حرف میزدیم بله اینطوری که داریم استاد وقتی داره شتاب اندازه و سرعت زاویه رو بله

ما می‌خوایم برسیم به پوزیشن‌های خطی و زاویه مون انتگرال بگیریم دیگه طبیعتاً از اینا خب اینجا حالا من نگفتم چیکار می‌کنیم ولی به ذات اینه انواع فیلترهای کال من میتونن استفاده کنند از ادومتری استفاده کنند از داده‌های خود چرخ‌ها استفاده کنند و انکودر خب ولی فرض کن یه جوری تونستن برسوننت یا خطایی که چون اینا رو من دیدم معمولا روی مسائلی که توی هوا دارن کار میکنن جی پی اس دارند و هر از چند گاهی میان خودشون به اون چک میکن که زیاد نشه بله ولی اگه ما بریم زیر آب کار بکنیم حالا حوزه رباتیک اگر داشته باشیم که زیر آب کار بکنه که دیگه جی پی اس خوب نمیتونیم استفاده کنیم خطای انتگرال گیری بعد از یه زمانی خوب خیلی زیاد میشه خیلی زیاد میشه بله دقیقا و ما میخویم از شتاب خط مون انتگرال بگیریم دیگه نمیتونیم به

راهکاری دارند یا نه درسته آقای دکتر سالاری نجات و دکتر صیادی به صورت خاص تو این حوزه‌ها کار می‌کنند احتمالاً دقیق‌تر پاسخ سوالتون رو میدن خب ولی اولین چیزی که بهت بگم حتی اونایی که شما فرمودید جی پی اس خب ربات های پرنده اونا هم تا حدودی دارن تلاش میکن اگه بتونن سمت ویژن برن خب بنا به دلایل مختلف یکی اینکه ویژ ابزار ارزونیه یعنی دوربین های ۴۰ ۵۰ دلاری عموما کار در میارن خب و الگوریتم ها خیلی خوب دارن توسعه پیدا میکن ولی آخر طبیعتاً وجود لندمارک های مختلف تو محیط یکی از راه هاست خوب یعنی اینکه یه سری نشونه شما داشته باشین اینور اونور که من اگر اینا رو دیدم یعنی فلان جا قرار دارم خب و

لند مارک‌ها رو یا آگاهانه خودت برای خودت کاشتی یا با دانش خوبی که از اون محیط و اینوایرومنت داری داری این کارو می‌کنی خب درش میاریم تکنیک‌هایی وجود داره به نام اسلم که حالا امروز معرفیش می‌کنیم فقط در حد کلام به نام سایمون تنیس لوکالیزیشن مپینگ که معنیش نقشه برداری و مکان یابی همزمان از محیطه یعنی وقتی که شما تو یک محیط ناشناخته ولت می‌کنن به عنوان یه آدم چشمتو ببندن بعد ببرن توی مثلاً پاساژ طبقه چهارم چشم باز کنم خب شما به عنوان یه آدم چجوری در میاری یعنی اینکه چند قدم برمی‌داری چپ و راست و هی تلاش می‌کنی که هم یاد بگیری اون کجاست در کجان راهرو کجاست و همه که دفعه دیگه اگه برگشتم از اون محیط بدونم این نقطه نقطه بوده که قبلا توش بودم خب اینا همه براش چیز وجود داره خدمت شما عرض کنم که داره کار میشه روش خب یعنی می‌خوام بگم که احتمالاً نبود جی پی اس یک

بهره‌گیری از تکنیک‌های فیلترینگی مثل فیلتر کالمن و کالبنای توسعه یافته و الی آخر که خودتون اشاره کردید و همینطور احتمالاً استفاده از دوربین و ویژن می‌تونه کارو در بیاره هیچ خطری نداره در ضمن زورتو زیاد می‌کنه عرض کردم حتی با دانش محدودی که دارم تو ربات‌های پرنده هم دارن تلاش می‌کنند تا جایی که ممکنه حتی از ویژن از جی پی اس چیز ش کمتر وابستگی و کمتر کنند برن سمت ویژ مثلا در رابطه با سوالی که شما مطرح کردین من خودم خیلی این یعنی کلا ترجیحم اینه که ربات چرخ نداشته باشه و پا داشته باشه دیگه مثل این که ربات های انسان نه ما دو پا

ربات بسازی دوست داری یه ربات دو پا بسازی احتمالاً درسته بله حتی میتونیم به این فکر کنی ربات چهارپا باشه شبیه مثلا در واقع حالا مثل حیوان الی آخر مثل گربه سگ الاغ گاو و الی آخر توی مهد کودک باشه به نظرم یه خورده نامناس حالا باز دوباره اینم باز یه ماجرا داره تو همین جا دور نشدیم خدمتت بگم وجود ربات دو پا دینامیک به شدت غیر خطی به شدت سخت ولی شاید از منظر مهندسی به شدت جذاب میکنه خب شنیدم که کنترل تعادل ش خیلی پیچیده میشه خیلی پیچیده است ماجراش زیاده یعنی شما هنوز

که هنوزه مثلاً دویدن ربات‌ها حداقل توی ایران اگه بخواد انجام بشه تو عمل به نظرم یه پروژه دکترا حداقل یه دونه پروژه دکتراست خب یعنی می‌خوام بگم خیلی مسائل هست تو این حوزه‌ها که هنوز حل نشده و حالا حالاها جا کار داره و البته تو فرهنگ‌های غربی با توجه به اینکه تو خونه‌هاشون اینا گربه و سگ عموماً دارن اتفاقاً استفاده از ربات‌هایی با این شکل خیلی هم نامناسب نیست و خیلی میتونه مناسب باشه توانمندی خوبه احسان خوب شروع خوبی بود با ظاهر شروع کردی خوب از منظر توانمندی دوست داری ربات چه توانمندی های داشته باشه درسته در رابطه با همون اینکه چه شکلی باشه ظاهرش چجوری باشه بله ربات های هستند که حالت حرکت هاشون حالت پیوسته داره یعنی خود پوست بدن است که حالت بله بله بله بله بله بله بله به کمک یعنی چند تا موتور خدمت عارضم که از المان های پیوسته استفاده

انعطاف‌پذیر کلاً یا پوست‌های سیلیکونی و الی آخر اینا همه جورین که همه جاشون اکتیتور ندارند خب با چند تا اکتور محدود اما توانمندی پیوسته خودشون بهشون کمک می‌کنه که بتونن حالت‌های خوبی رو بگیرن مثلاً ربات آلیس که ما داریم از شرکت روبوک هانسور خریداری کردیم ۸ تا موتور تو صورتش بیشتر نداره اما حالا تو فیلما خواهید دید که مجموعه قابلیت قابل قبول و خوبی و از خودش بروز میده به واسطه داشتن پوست های ارتجاعی و سیلیکونیست درسته بعد اینکه حالا خوب شاید خیلی غیر واقعی باشه ولی خب من اتفا غیر واقعی تر صحبت کنید آره که بتونه از تجربیاتی که مثلا داره جمع میکنه و اینکه مثلا با یه دوستی پیدا میکنه تو اون مهد کودکی که هست بدون مثلا درباره چه چیزی حرف زدن بک گراند طرف چیه مثلا به چی بیشتر علاقه داره که بتونه با اون مثلا بیشتر

مرتضی و خانم احمدی من به ترتیب میکروفون میدم حالا دو سه دقیقه هر کدوم رویاتونو بگید و بعدش بریم سر کار سلام استاد وقتتون بخیر تو حوزه توانمندی‌هایی که داشته باشه یه ربات بخصوص اگه بخواد بره تو مهد کودک هم قرار بگیره من خودم دوست دارم که وقتی صحبت میکنه خیلی قابل یعنی اگر ندونیم ربات رو خیلی قابل تشخیص نباشه که این واقعا ربات که داره صحبت درسته ربات های انسان نمایی که اصلا حالا همونیک که فیلمش خیلی هم پخش شد موقع حرف زدن کاملا واضحه که داره با استفاده از یه سیلابس خاصی یه سری لغت رو میچینه کنار هم و جمله میسازه در صورتی که ما وقتی تو محاوره حرف میزنیم تو بزرگسالان شاید کمتر ولی تو بچه ها

از قاعده خاصی پیروی نمی‌کنند موقع حرف زدن ولی همه حرف‌های همدیگه رو خیلی خوب می‌فهمند بسیار عالی آره سیستم‌های بانکی که نفر بعد شماره ۷۲۰ فلان ۸۰ درجه برعکس اونا باشه و اینکه قدرت شناختی بالایی داشته باشه یعنی بتونه بدون قانون یه چیزی رو یاد بگیره صرفاً بر اساس تجربه حالا یه مقدار احسان هم اشاره کرد آخرین صحبت من دقت کردم بچه ها وقتی بازی میکنن یه بازی الان دیگه همشون موبایل دیگه یه بازی تو گوشی وقتی نصب میکنن طبیعتاً انتظار میره که نتونن اینستراکشنش بخونن و یاد بگیرن بازی رو خطا ولی خیلی حرفه ای بلدن بازی بکنن بسیار عالی خیلی ممنونم ازت مرتضی جان سلامت باشید خانم احمدی شما را بشنویم بعدش بریم سر ادامه کار

سلام استاد صدای من خوبه بله وقت شما بخیر بفرمایید در مورد شکل ظاهری حرکت و ایناش چطور باشه من رابطه چرخدار رو ترجیح میدم چون که به نظرم خیلی نرمتر و روان تر میشه حرکتشون یعنی حالا چیزی که حداقل حس میشه اینه که راحت‌تر داره حرکت میکنه حالا سوای اینکه چقدر کار شده تا بتونه این حرکت انجام بده و اینها و اینکه کلا یه فاکتور مهمش به نظرم اینه که سبک باشه یعنی حالا حمل و نقلش راحت باشه چه اینکه ما بخواهیم جابجا کنیم چه اینکه خودش بخواد حالا توی محیطی حرکت بکنه به یه باتری ثابت عمر بیشتری داشته باشه درسته آره کلا راحت تر باشه دیگه یعنی مث یه ربات خیلی سنگین بخواد حرکت کنه خب موتورهای قوی تری میخویم همون حالا عمر باتری مطرح

بعد از لحاظ کارکردهایی که داره حالا نظر خود من اینه که اگه یه جوری باشه که انگار یه شخصیت مستقل داشته باشه ربات یعنی من خیلی حالا موافق این نیستم که مثلاً ربات‌ها رو ما بیایم شبیه انسان‌ها کنیم خب انسان‌ها وجود دارن دیگه چه دلیلی داره یعنی انگار که کلاً مسئله ربات یه دسته دیگه انسان ها با هم در ارتباطن حالا مثلا یه انسان میتونه حیوان خانگی داشته باشه با حیوانات در ارتباط اینم یه دسته جدا بشه که دسته ربات ها که لازم نیست الزاما خودشون شبیه انسان کنند یا خودشان شبیه حیوونا کنن آها بسیار یا هر چیز دیگه یعنی یه حالت مستقیم داشته باشه با ویژگی های خاص خودش که لازم نیست حتما شبیه انسان باشه خیلی ازتون ممنونم خب بچه‌ها من واقعا تشکر میکنم از همراهی دوستان میدونم افراد

ممکنه علاقه داشته باشند که باز صحبت داشته باشند اما اولین اتفاق جالبی که افتاد چند تا چیز برای خودم حتی عجیب بود ولی قابل حدسم بود تا حدودی اینه که تقریباً این روند عادی و این رویکردی که ما قبلاً بهتون معرفی کرده بودیم اولاً یک بار شروع شد و تکرار شد یعنی تو صحبت های احسان با خود طراحی ظاهرش شروع شد خانم احمدی به ظاهر ربات اهمیت دادن یعنی نشون میده که اولین فاکتوری که میاد پیش روتون که ما امروز میخویم اولین فاکتوری باشه که در موردش صحبت میکنیم در مورد ظاهر ربات های اجتماعی باشه و دو مجموعه مهارت های که در نظر گرفتید و این مهارت ها بعضی هاشون در واقع خیلی خیلی سطح بالا بود یعنی اینکه شما یه حداقل های خیلی خوب و قابل توجهی رو برای ربات فرض کرده بودید و در واقع تلاشتون بر این بود که اون بره ادامه بده و اینا نشون میده که خب این حوزه

نداره و رویا پردازی توش می‌تونه خیلی شیرین باشه بچه‌ها همه اینایی که گفتید جا کار داره بعضیاشون دارن کار میکنن برای بعضیاشون الگوریتم‌های ریاضی وجود داره مثلاً اینکه ربات یاد بگیره به تجربه هم میشه از آر ال و رینفرسمنت لرنینگ و دیپارل استفاده کرد که ما خیلی تو این درس در موردش صحبت نمی‌کنیم اما یه شاخه‌هایش مثلاً مثل لرنینگ دیمانستریشن یا یادگیری از طریق مشاهده ما براتون یه مقدار صحبت خواهیم کرد اینه که وقتی مثلا یکی صداش میزنه بهش نگاه کنه بتونه آنالیز بکنه صحبت‌ها رو صحبت و باز تولید بکنه که اینا خب به شبکه های جنریتیو برمیگرده و فلان اینا همه در واقع داره نشون میده که ما باید یه سری ابزارهایی رو یاد بگیریم که ما رو به این مسیر نزدیک بکنه ما قبلاً یه اسلاید رو بهتون نشون داده بودیم گفته بودیم اپروچ دنیا و همینطور آزمایشگاه رباتیک اجتماعی شناختی دانشگاه شریف اینه که اول بعد از اینکه یک یک نیاز را شناسایی کرد در جامعه یا فهمید به چه

پرسش پژوهشی می‌خواد پاسخ بده میره تصمیم می‌گیره که یا بخره یا بسازه یه سری سامانه رباتیک اجتماعی شناختی و بعد از اینکه اونو ساخت تلاش کنه با الگوریتم‌های کنترلی یا هوش مصنوعی یا تلفیقی از اونا اونو توانمند کنه و در نهایت بره برای جامعه هدفش بررسی بکنه پس با این حساب اجازه بدید امروز بحثمون در مورد یک ظاهر فیزیکی ربات‌ها و دو طراحی تعامل ربات انسان باشه و در این مورد صحبت بکنیم طبیعتاً اولین چیزی که یک انسان در حین مواجه با ربات به خصوص یک کودک برخوره ظاهر رباته اگر فیلم های ربات های رو که جلسه گذشته براتون از ورژن بین المللی یا رو های خودمون در آزمایشگاه رباتیک اجتماعی شناختی رو براتون پخش کردم یه مرور ضمنی بفرمایید متوجه میشید که هیچ توافق بین ظاهر ربات‌ها وجود نداره و ظاهر ربات ها میتونه بسیار متنوع باشه ربات های

انسان نما ربات‌های حیوان گونه ربات‌هایی که به شکل شخصیت‌های کارتونی‌اند و هر کدوم یه سطح مهارت دارند حتی ربات‌های اجتماعی داریم که شکل توپن و حالا با یه سری ال ای دیا یا یه سری در واقع علائمی که روی پوسته و ظاهرشون نشون میدن حالت احساسی و چهره از خودشون نشون میدن یا با کاربرشون حرف میزنند تعامل می‌کنند و به این خاطر توی دسته ربات‌های اجتماعی و یا ربات‌های اجتماعی دستیار قرار می‌گیرند و خدمت شما عارضم که میتونه ظاهراشون خیلی واقعی باشه میتونه پیچیده باشه میتونه کارتونی باشه و هر کدوم هم یه کاری رو انجام بدن و در ضمن این ربات ها درجات آزادی متنوعی هم دارند درجات آزادی منظورم همون درجه آزادی که توی دینامیک کلاسیک ما میخونیم منظورم تعداد موتورها و حرکت های مستقلی که میتونه انجام بده و خب خدمت شما عارضم که شاید بد نباشه در این راستا مراحل طراحی ربات

یکو با همدیگه یه دور مرور بکنیم من روش صحبت می‌کنم ربات آرش ۱ رباتی بود که برای تعامل با بچه‌های مبتلا به سرطان خون تو بیمارستانهای مرتبط کودکان ساخته و طراحی شد اول یه سری طرح زده شد از خود بچه‌های مبتلا به سرطان خون ایده گرفته شد سوال پرسیدیم که اگر می‌خواید یک قهرمان برای شما بسازیم دوست دارید چی ساخته بشه و یکی از این طرح‌ها انتخاب شد و بچه ها در قالب پروژه های کارشناسی ارشد پژوهش و دکترا دست به دست هم دادن و هر کسی بخش های از این ربات طراحی کرد نقش های انفجاری اونو توی ابعاد مختلف مثل سر پایین تنه میتونید اینجا مشاهده بکنید و مراحلی از روندی هم که طی شد تا این ربات ساخته بشه طراحی بشه و بعدش مونتاژ بشه اسنبل بشن اینجا میتونیم در قالب تایم لپس مشاهده

ربات آرش ۱ در اواخر اسفند ۱۳۹۵ در چنین روزهایی

متولد شد در حضور آقای دکتر سعید سهرابپور رئیس گذشته دانشگاه صنعتی شریف و آقای دکتر مقدادی رئیس وقت آزمایشگاه رباتیک اجتماعی شناختی رونمایی شد رباتی با قد ۱.۲۰ سانت یک متر و ۲۰ سانت با ۱۴ درجه آزادی مجهز به یه سری سنسورها که میتونه مجموعه‌ای از فعالیت‌های اجتماعی رو برای ما انجام بده خدمتتون عارضم که تو این اسلاید جزئیاتی از ربات رسایی رو میبینید رباتی که قابلیت بروز علائم زبان اشاره ایرانی را داشت و همینطور ربات مایا که ربات فیلی شکلی بود که جلسه گذشته فیلم های از اونها برای شما پخش شد ما شاید یک کار غیر حرفه ای میکنیم اما خب این کار را میکنیم دیگه توی مقالاتمون و توی کارهامون که منتشر می‌کنیم نقشه انفجاری ربات رو هم ارائه میدیم در حالی که شرکت های که تو این حوزه دارند درآمد کسب می‌کنند لزوماً این اطلاعات رو بیرون نمیدن و ما این را در طبقه اخلاص میزاریم

بیرون میدیم و خب مشکلی هم البته تا الان با این داستان‌ها نداشتیم اینکه چه جوری ۹ تا موتور به صورت هنرمندانه در سایت‌های ربات رسا جا شدند و با مکانیزم کابل انتقال قدرت انجام شد از طریق موتورها به انگشتان که انگشتان حرکت طبیعی شبه انسانی داشته باشند و یا اینکه ربات مایا از ابتدای طراحی تا در نهایت انتها و لباس پوشی چه مراحلی را طی کرد و الی آخر ما این را معمولا ارائه میدیم یه کار جالبی کردیم حالا به پیشنهاد خود بنده اتفاق افتاد چند سال قبل شاید براتون جالب باشه ما اومدیم یه بررسی روی ظاهر ربات ها از منظر تعداد درجات آزادی تو دنیا انجام دادیم اومدیم ۴۰ تا ربات گرفتیم ۴۰ تا ربات اجتماعی گرفتیم که تو سال‌های مختلفی تولید شده بودند اومدیم نگاه کردیم که چند درجه آزادی کلاً دارند و در هر بخشی از بدنشون چند درجه آزادی دارند به

اتفاقات جالبی رسیدیم مثلاً ربات لئوناردو ربات آسیمو ربات‌های آیکاپ اینا ربات‌هایی بودن که بیش از ۵۰ درجه آزادی بعضاً براشون شناسایی شد و بعضاً اتفاقات خیلی زیادی هم توی مثلاً صورتشون می‌افتاد اما این درجات به شدت یه دفعه کاهش پیدا می‌کنند و ما تعداد قابل توجه ربات اجتماعی اون زمان بررسی کردیم تو سه چهار سال گذشته که تعداد درجات آزادی ش زیر ۱۰ تا بود یعنی آدم ها با دو تا سه تا چهار تا پنج تا مثلاً با جیب مثلا میتونید کیپان رو ببینید اون ربات جوجه یک که مثلا با چهار درجه آزادی کل کار در میاره و خیلی جالب بود برامون که حتی بعضا با تعداد درجات آزادی خیلی خیلی کم هم ربات های اجتماعی ساخته میشن اما حالا سوال بعدی این بود که این درجات آزادی کجای این ربات‌ها جا داده میشه یعنی شما بخواید یه ربات بسازید مینیمال باشه با حداقل های ممکن باشه سعی می‌کنید چند درجه داشته باشه و کجاش جا بشه مثلاً کسپر زمانی که

مقاله‌اش منتشر شده بود ادعا کرده بود من یه رباتیم که با حداقل درجات آزادی ممکن می‌تونم حداکثر کارایی رو داشته باشم و البته اینا ادعا بود که توسط خود نویسندگانش انجام شده بود اما بالاخره ربات‌ها قابل احترام بودن و نکته بعدی هم که وجود داشت اینه که چون ربات‌های تجاری اون زمان انقدی زیاد نبودن این دیگه نهایتاً ربات نائو میلو الی آخر فقط وجود داشت خیلی از گروه‌های تحقیقاتی اول ربات‌هاشونو خودشون می‌ساختن ربات های که دیگران به اون دسترسی نداشتند و فقط خودشون میتونستن کاراشونو انجام بدن و خب جالب بود تو همین ۴۰ تایی که بررسی کردیم متوجه شدیم آدم ها ترند چیز زیادی دارند علاقه زیادی دارند عموما بیش از نصف ربات های که ساخته شده هیومن یا انسان نما بوده بیست و خورده درصدشون شکل حیوان داشته که عرض کردم تو فرهنگ های غربی بیشتر جا افتاده است و یه عده ش هم شخصیت کارتونی یا شخصیت های که نه به حالا انسان و حیوان شبیه بودن داشته و اینکه چند تاشون حرکت می‌کردن مثلاً اینجا خیلی

۵۰ درصد ربات‌های اجتماعی که اینجا ما بررسیشون کردیم اصلاً حرکت نمی‌کردن رو میز ثابت بودن نمونه‌هاشم الان ما داریم ربات مایا ربات تابان ربات عرض به حضور شما آپو از این جنس ربات‌هایی هستند که قراره یه جا بشینن و کارشونو انجام بدن ۳۵ درصد ربات های چرخدار بودند و اتفاقاً برخلاف اون ذائقه احسان شاید ۱۵ درصد ربات‌ها بودن که پا داشتند و یا از پاشون برای حرکت کردن استفاده میکردند چون کنترلشون خیلی کار سختیه داستان های جدیدی به وجود میاره و خانم احمدی مثلا گفتم ترجیح میدم ربات چرخدار داشته باشم که احتمالا فلان کار هم انجام بشه حالا حاضر مهم نیست برام که برم توی مثلاً محیط های خیلی سنگلاخی مثلاً بخوام راه برم ولی عمده جاها مثل چه میدونم خیابون ها که صافن یا سالن ها چه میدونم راهروها و الی آخر که چیز دارند سنگفرش خوبی دارند خوب من از این قابلیت استفاده میکنم نیازی به پیچیدگی های

حرکتی آنچنانی برای خودم به وجود نمیاره ما یه کار دیگه‌ای که کردیم اومدیم بررسی کردیم خب ربات اجتماعی ربات با آدما تعامل کنند چیزی که واضحه تو تعامل کردن باید بالاخره یه سر کله‌ای وجود داشته باشه دو تا چشمی باشه دهنی باشه احتمالاً که آدما رو ببینه با آدما حرف بزنه یه جوری پیامشو منتقل کنه نگاه کردیم ببینیم ربات‌های اجتماعی چه شکل و شمایل دارن از منظر سرد دیدیم تو پنج تا دسته میشه جاشون داد یکی ش این که سرشون اجزای مکانیکی خیلی زیادی داشته باشه به این سرها بعضاً توی ادبیات موضوعی سرهای مکاترونیکی هم میگن خیلی از ربات ها میان از صفحه نمایش های تخت برای سرهاشون استفاده میکن ما اسم اینا رو سرهای تبلتی میزاریم ربات های آرش رسای خیلی از ربات های که ما داریم توی آزمایشگاهمون مثل ربات آپو اینا از این جنس یه سر تبلتی دارند که چشم چشم دو ابرو رو اون تبلت تخت پخش میشه ربات های وجود داشتن که

پوست صورت با قابلیت ارتجاعی توشون وجود داره خب اینا لازمشون در واقع دسترسی به تکنولوژی موادیه که حالا عمدتاً بر پایه سیلیکون هستند و توی ربات‌هایی مثل ربات آلیس ربات‌های مثلاً مدرنتری مثل ربات سوفیا رباتی که دکتر ایشیگورو در دانشگاه ژاپن ساخت و الی آخر دیده میشن و این ربات‌ها توی ادبیات موضوعی با نام ربات‌های اندروید شناخته می‌شن بچه‌ها این اشتباه در واقع لفظی نکنید ربات های تبلت و با اندروید اشتباه نگیرید بعضی ها از شبیه سازی های ظاهری خیلی ساده تو چهره شان استفاده میکن مثل ربات نا حالا بهتون نشون میدم و بعضی ها هم هستند که از پروژکتور جهت متحرک سازی و نمایش حالت های چهره استفاده میکن یه پروژکتور تو سر وجود داره روی سطح شفاف که به شکل هندسه حالا صورت یک انسان یا حیوان ساخته شده یه فیلمو پخش میکنه و شما فکر میکنید که ربات داره براتون تعامل میکنه توی اومدیم بیش از

رباتو بررسی کردیم توی ربات‌هایی که چهره‌های مکانیکی داشتن مثلاً ربات کریسمس مثلاً فرض کنید یه چشم چشم داره دهن داره اینا به صورت مکانیکی باز و بسته میشن هایکت و الی آخر ۲۶ ربات بررسی شد تعداد درجات آزادی تو سر و گردن و الی آخر محاسبه شد که مثلاً ربات های پیچیده مثل کریسمت بالای ۲۰ درجه آزادی در سر داشتند ولی از اون و مثلاً ربات های هم بودند که نهایتاً با حالا سه چهار درجه آزادی تو سرشون راه می‌افتاد توی حالت دوم که صفحه های تخت بودن خوب ربات آرش ربات رسا اینا تو این کتگوری میشستن ربات تجاری بادی ربات کسپر ربات بکستر این همه نمونه های از این ربات ها بودن باز این را بررسی کردیم و تعداد درجات آزادیشون رو توی سر گردنشون محاسبه کردیم اینا دیگه میبینید یه اوردر متیود در واقع تعداد درجات آزادی ش کمتر از بقیه است چرا چون صفحه ش تخت نهایتاً درجات آزادی هم که میبینید برای عمدتا حرکت گردنشونه که به چپ و راست یا بالا و پایین دیده شده

ربات‌هایی که چهره‌های شبیه آدم دارند اینجا میتونید ربات‌های مختلفی رو ببینید سر انیشتین که رو ربات آسیمو یه مدت گذاشته شد خدمتتون عارضم ربات‌های سوفیا ربات آقای ایشیگورو ربات آلیس شرکت روبا کانت هانسون و الی آخر نمونه‌هایی از این ربات کسپر در دانشگاه هارد انگلستان توسعه پیدا کرده این همه ربات های بودند که تو این زمینه قرار میگیند باز نزدیک سی و خورده مورد از اینا بررسی شد و تعداد درجات آزادیشون البته با تا جایی که اطلاعات در مقاله ها یا وبسایت هاشون وجود داشت ما تونستیم برای خودمون ثبت بکنیم که میبینید با یه تعداد درجات حالا نمیگم لزوما معقول اما بعضاً معقول مثلاً ربات کفر با هشت درجه آزادی ادعا می‌کرد که من خیلی از حالت های چهره رو میتونم بروز بدم و کلی برای تعامل با بچه ها به خصوص بچه ها طیف اوتیسم مناسب باشه اونایی که المان های ساده تو سرشون داشتن خیلی پیچیدگی نداشتند مثلا فرض کنید که

ربات نائو که ما تو آزمایشگاه سه نسخه ازشو داریم مثلاً اون جایی که الان دهن براش تعبیه شده یه دوربین پشتش گذاشتن که جلو پاشو ببینه مثلاً یا چشمش توش ال ای دیه که شما بتونید حالت چهره رو بهش نشون بدید ربات پپر که باز بعد از ناو اومد و الان بسیار فراگیر متداول توسط شرکت روک هاسون بشود شرکتباران رباتیکس توی فرانسه توسعه پیدا کرده و فروخته میشه خب از این نمونه ها و در نهایت هم ربات های که از پروژه استفاده میکن مثل ربات فرت ورژن تجاری ربات تابان خود ما هم نسخه یک هم نسخه دوش و حالا ربات های دیگه مثل مثلاً ماسک رایان در دانشگاه دور این همه نمونه هایی هستند که ما اومدیم استعلام ازشون گرفتیم حتی این تحلیل شخصی هم داشتیم لزوما این علیه السلام نیست این تحلیل که وجود المان های مکانیکی یعنی توی سر یا نمایشگر تختی و اندروید یا اجزای ساده یا پروژکتور در حوزه هزینه های راه اندازی نگهداری

و و چقدر تاثیرگذارند مثلاً ربات‌های مکانیکی از این راه‌اندازیشون خیلی زیاده چون تعداد موتورهای زیادی می‌خوان باید شما برای همه چی حرکت چشم به چپ و راست چه مکانیز بزنید بعضاً چرخ دنده کار بزارید و و غیره هزینه نگهداری زیاده ولی محدودیت نور محیط نداره وزنشون نسبتاً زیاده سر صدا به علت وجود المان‌های مکانیکی زیاد میشن ولی مثلاً اگه برید از مثلاً ربات های پروژکتوری استفاده کنید خب هزینه راه اندازیتون به نسبت مکانی که خیلی ارزونتره مقاومتش زیاده انعطاف پذیرتون خوبه ولی مثلا محدودیت نور محیطتون هم زیاده یعنی اگه یه جایی باشه که نور محیط زیاد باشه شما با چالش مواجه میشید مثلا مراجعه کردید به منابع دیدیم که حتی برای طراحی ظاهر پیشنهاداتی وجود داره اینکه فاصله بین دو چشم تا دماغ و الی آخر چه ابعادی در نظر بگیرم گفته بود اگر طول کل ساعت ۱۰ اینچ باشه ما پیشنهادمون اینه که قطر چشم نمیدونم فاصله مردمک تا مردمک و الی آخر چند گرفته بشه که اینا ربات های

مقاله دیگه‌ای بررسی کرده بود که وجود کدام از این المان‌ها تو ربات‌های اجتماعی ضروریه مثلاً همونطور که حدس زده میشه احتمالاً از شما می‌پرسیدم چشم بسته همینو میگفتید من چشمم خیلی ضروری می‌بینم چون رباتی که بخواد با آدما تعامل کنه اول باید دو تا چشم داشته باشه شبیه ظاهر حالا هر انسان یا حیوانی و شاید هم تک چشم و بالاخره چیز بکنه یعنی از این کانال ارتباط برقرار کنه ۸۱ درصد وجود چشم رو گفته بودن بعد ۶۲ درصد به دهن اشاره کردن و بعدش حالا المان های دیگه که مثلا مثل ابرو و فلان و اینا آیا وجود داشته باشد یا نداشته باشد یه ماجرایی که توی در واقع طراحی ربات های اجتماعی باید در نظر بگیریم یه پدیده عجیبی به نام آنکن ولی یا دره وهمی شاید تو ذهنتون این باشه که هر هرچی ربات ها رو بیایم به شکل آدم نزدیک و نزدیک و نزدیکتر کنیم مقبولیتش ویژه آدم ها میره بالاتر اما اتفاق جالبی که و عجیبی که افتاد اینه که وقتی

کردن اینه که وقتی از عروسک‌های خیلی خیلی ساده شروع می‌کنند و میان جلوتر و بعدش برسن به اشکال شبیه انسان یه دفعه یه جایی مقبولیت این ربات‌ها به شدت کاهش پیدا می‌کنه و اون جاییه که شما تقریبا شکل رباتتون به یه جسد شبیه شده و میگن میزان شباهتش به یک انسان اگه روی حد خاصی قرار بگیره شما نباید خیلی منتظر باشید که رباتتون مقبولیت بالایی داشته باشه یا باید به شدت از اون نقطه فاصله بگیرید و هی رباتتون رو طبیعی و طبیعی تر بکنید تا به یه انسان نزدیک بشید یا اینکه از اون نقطه از این و فاصله بگیرید تا همچنان یه مقدار خدمتتون عارضم که چیز باقی بمونید مصنوعی باقی بمونید اما جذاب یا مورد پسند آدما باقی بمونید و اینجا خب حالا کارهای در واقع مقالات مختلف کارهای مختلفی ارائه داده بودند مثلاً تا سال فکر می‌کنم ۱۲ بود یا ۱۶ بود یادم نیست این یه همچین مثلثی رسم شده بود که خب

ربات‌ها اگر بخوام از منظر حالا آیکونیک بودن ریالستیک بودن یا ابسترک بودن دسته بندیش کنم و یه محور براش در نظر بگیرم ربات‌های اجتماعی ساخته شده کجای این مثلث قرار می‌گیرند و روی این زمینه بحث‌های زیادی انجام شده بود و این ماجرایی که هست یه ماجرای دیگه‌ای که اولش فکر می‌کردم چه جوری بازش کنم به چه بهانه بازش کنم بیشتر بهانم اینه اگه بچه‌ها دوست داشتید برید مقاله رو ببینید به خصوص فیلم بازهای عزیز ما یه کاری کردیم اومدیم ربات های اجتماعی واقعی رو با ربات های اجتماعی فشنال یاد در واقع تخیلی مقایسه کردیم و اومدیم ۱۸ تا فیلمو بررسی کردیم در واقع نویسندگان اول مقاله خو فیلم و بسیار بسیار به فیلم های مختلف و رنگ هاشون تو ام دی بی تسلط دارند تمام ربات ها رو دسته بندی کردیم از مناظر مختلف اگه دوست داشتید برید ببینید چند درصدشون حالا انسان گونه نیستند تو چه نقش های ظاهر میشن کیا سربازن کیا کاوشگر فضایی اند چند درصد اینجوری اند اونایی که اینا رو دارن چه توانمندی

اتفاق جالبی هم توش مشاهده کردیم همین قدر خلاصه بهتون بگم که ما مشاهده کردیم که به اصطلاح خود رباتیک کارها از نویسنده‌های داستان‌های تخیلی ایده می‌گیرند و این یه چرخه عجیب غریبی که ادامه داره یعنی اینکه در واقع نویسندگان تخیلی می‌نویسند از همون آیزاک بگیرید که ۷۰ ۸۰ سال قبل یه چیزایی نوشت یه عده ربات میسازند مهندسین رباتیک اینا رو می‌بینن باهاشون کار می‌کنن خروجی های اینا دوباره توی حلقه میفته و ادامه پیدا میکنه نمونه در واقع عملیاتیش هم در مورد ربات فیلم بیکیرو سیکس که اگه دوست داشتید میتونید حالا برید تاریخچه اش مشاهده بفرمایید که چجوری به چه پشتوانه نمونه واقعیش ساخته شد و تو دانشگاه کارنگی ملون چه اتفاقاتی افتاد این نقل قول کردم اگه دوست داشتید بعدا بررسی بفرمایید این بهانه شد که عرض کردم این مقاله رو خدمتتون معرفی بکنم اما اگر بخواهیم از ظاهر

ربات‌ها بیایم بیرون دیگه خب اوکی حالا ظاهر رباتو ساختیم به شکل‌های مختلف که بعضیاشون تا الان نشونتون دادیم تو جلسات گذشته از ربات خودمون بعضیاشم امروز بهتون نشون خواهیم داد مسئله بعدی است که آقا این رباتی که ساخته شد یک عروسک بیجانه یعنی فقط ظاهرش شبیه یک حالا موجود شاید جذاب باشه ولی چه توانمندی باید داشته باشه و اینجا بحث بی‌حیویر رفتارش میتونه خیلی موثر باشه و مواردی که برای تعامل با انسان ها طراحی میشه اینه که ربات چه رفتارهایی از خودش بروز میده چه نقش های رو حین تعاملش با انسان داره و از منظر مختلف این قابلیت بررسی یک دیدگاه اینه که ببینیم رفتارهای هدف برای این ربات ها چیه نقش ربات در اون کلاس یا اون جامعه چیه و میزان خودکار بودن ربات باید چقدر باشه مثلاً فرض کنید رباتی که قراره با کودکان در ارتباط باشه خوب میتونه در نقش معلمشون باشه یعنی یه چیزی رو بهشون یاد بده یا میتونه نقش همدم و هم رده رو بازی کنه

خودش فرزند اون اطلاعاتو نداره و اون دانش رو به دست بیاره مثل همون رباتی که تو مهد کودک قرار باشه و یا این رباتی باشه که سطح توانمندیش از بچه‌ها هم حتی پایین‌تر باشه و بچه به اون اجازه یاد دهی داشته باشه و اینجوری در واقع ما بتونیم بسنجیم میزان توانمندی بچه تو ارتباط برقرار کردن با ایجتا المان های اطرافش که حالا انشالله تصری میده تعمیم میده به جامعه اطرافش چقدره و چقدر میتونه یک حرف خوب منتقل کنه یه داستان و البته از قبلش یه سری اتفاقات عجیب غریبی میفته مثلا در مورد اینکه موارد اخلاقی در ربات ها بالاخره چه خواهند بود نمیدونم این مثال قبلا براتون زدم یا نه من یه بازدید از دانشگاه پرسنال ربات دانشگاه ماتی داشتم زمانی که فرصت مطالعاتی خارج کشور بودم خدمت شما عارضم که یکی از با یه در واقع دانشجویی به نام جکلین کاری صحبت میکردم یکی از مقالاتشون این بود که اینا دو تا ربات شکل چیز داشتن اژدها داشتند حالا دراگ

خدمتتون عارضم که میگفت که اینجوری بود که این ربات‌ها مثلاً میومدن برای بچه‌ها داستان می‌گفتن بعد اون میگفت رباته به بچه میگفت حالا تو بگو دیشب کجا بودی مثلاً دیروز کجا بودی یه قصه‌ای برام تعریف کن و فلان بعد می‌گفت خب این بچه باور کرده بود که این رباته می‌شنوه و واکنشش از خودشه در حالی که واکنش توسط یک کسی دیگه داشته کنترل میشده و بعد می‌گفت که خب برو چیز کن بعد از اینکه داستانشو گفت گفت ما تو یکی از مطالعاتمون اومدیم گفتیم که بچه بیا کنار آقا من در واقع جز تعهدات اخلاقی این پژوهشه که بهت بگم این ربات این چیزایی که تو میگی و در واقع خودش گوش نمیده و ماییم که به عنوان انسان داریم میشنویم و داریم رفتنی واکنش های مناسب براش ارسال میکنیم و واقعیت ما داریم میشنویم اون چیزی از خودش نداره بعد میگفت برگشته بود بچه پیش رباته میگفت ببین این برگشته به من میگه تو نمیفهمی بهش بگو که تو میفهمی و فلان حالا داستان شده بود خودش می‌خوام بگم که

ابعاد مختلف میشه به داستان نگاه کرد ولی ما به عنوان مهندس شاید اولویتمون رفتن سمت این باشه که اتفاقاً ربات و خودکار و خودکارتر بکنیم و توی محیط‌های هی ناشناخته و ناشناخته تر این قابلیت بدیم که ربات باشه مقاوم باشه یاد بگیره و هی سبب بشه که کارهای مختلف خودش انجام بده که حالا به این بهانه است که ما انشالله می‌خوایم از جلسه آینده وارد فصل سوم بشیم که در حوزه هوش مصنوعی خواهد بود و به نظرم همون فصل اول دوم در این حد نگهش داریم کافیه اما اگر بخوام مصداقی صحبت بکنم اینهایی که اینجا براتون نوشتم بچه ها عناوین تحقیقاتی در حوزه رباتیک اجتماعی شناختیه خب که حالا حالاها هم جا کار داره یعنی هر کدوم از این عناوین میتونه چندین تز ارشد دکترا باشه به خصوص برای بچه هایی که دارن دنبال موضوع می‌گردن ربات ها باید بتونن تعاملات غیر کلامی و کلامی داشته باشن چون مسئله مهمی بود به فارسی اینجا بازش کردم براتون نوشتم نشانه های غیر کلامی سیگنال های هستند که برای

رسوندن پیغام‌های معنادار به کار میرن و جالبه بدونید حدود دو سوم تعاملات انسانی هم به خودشون اختصاص میدن حالا این در واقع سیگنال‌های غیر کلامی شامل چین حالت‌های چهره اشاره‌های بدن و دست موقعیت سر حتی جهت نگاه برای جلب توجه بیان احساس انتقال پیام و اینا مواردیه که شما یه عروسک که ساختید به عنوان یه ربات اجتماعی و نیومده بالا کدوم از این قابلیت‌ها قابلیت‌ها رو می‌خواید براش به وجود بیارید ها از طرفی خب نشانه های کلامی یا وبال کیوهای یایکیشن ها شامل آواها لحن و صحبت میشن مواردی که حالا مرتضی اشاره کرد جالبه من حدس میزدم که این موارد توسط شما مطرح خواهد شد و اومدم آگاهانه باهاش بازی کردم و اینا رو جا دادم اما یه پله خوف و خفن تر اگه بشیم نگاهمون یه نگاه اجتماعی بذاریم و از ربات های عادی یه مقدار قید های بیشتری برای خودمون بذاریم می‌بینیم که خب رباتی که بخواد با آدم ها تعامل کنه شاید نیازمند اینکه بخواد

دخالت چهره از خوش بروز بده خوشحال بشه خوشحالی و تو صورتش نشون بده یا خوشحالی و ناراحتی دیگران روش تاثیر بذاره پس لازمش اینه که شما چیکار کنید خوشحالی یا ناراحتی یا حالت چهره دیگرانو هم درک کنید تا بتونید واکنش مناسب بدید داشته باشه یا حفظ فاصله مناسب داشته باشه همین چیزایی که الان بهش میگن فاصله اجتماعی برای حریم آدما مثلاً ربات تشخیص بده که از بغل یک سری آدم‌ها رد نشه تو دست و پاشون نره آدم‌ها احساس ترس نکنن امنیتشون پایین تر نیاد اگر توی گروه دارن با همدیگه راه میرن مثلا بتونه رعایت کنه یه رفتار مناسب داشته باشه وقتی که دو نفر دارن با هم صحبت میکن حتی اگر جایی که میخواد بره مستقیم از وسط اینا میگذره مسیر کوتاه تری از اونجا عبور نکنه و علاوه بر در واقع مسائل مسیریابی که در حالت عادی و نویگیشن و الی آخر که توی ربات ها در عمومی وجود داره حالا این دفعه باید بتونه توی توابع بهینه سازش یه کاست یا در واقع مقداری

یه مقدار هزینه ناشی از سوشال کاست بزار یا هزینه اجتماعی که این اجازه بهش نده که از وسط این آدما رد شه و ربات یاد بگیره که وقتی دو تا آدم یا چند تا چند تا گروه دارن با هم صحبت میکنن اولا شناساییشون کنه و تشخیص بده اینا دارن با هم صحبت می‌کنند و اگه می‌خواد رد بشه از طرفین اینا رد بشه خدمتتون عارضم که وقتی توی میدان دیدش بیش از یک آدم قرار می‌گیرند بالاخره به چی نگاه کنه آیا زل بزنه به کسی یا نه آیا تو رفتارهای اجتماعی پسندیده است چه رفتار های نوبتی با آدم ها داشته باشه یعنی اینکه مثلاً یه بچه توپ برای بچه بندازه بعد بگه حالا نوبت تو برای من بنداز باید وایسه تا اون بچه واکنش بده بعد وقتی نوبت خودش شد بدون این کار انجام بده اگه لازمه توی کاری از انسان ها تقلید بکنه من اینجا همیشه این مثال رو تو ذهنم میارم شاید برای شما بعضا زده باشم میگم فرض کنید که شما جلوی ربات سه بار نیمرو درست کنید چیکار باید کرد که بار چهارم ربات خودش بتونه انجام بده تازه فرض کنید که شما وسط بار دوم یه جا کلتون هم

ربات باید چه اتفاقی بیفته که این کله خاروندن رو یاد نگیره یعنی یه سلسله مراتبی وقتی مثلاً در واقع والد شما جلوی شما این کار را انجام بده دوبار یا سه بار یا پنج بار یه وسیله یه آشپزی رو انجام بده احتمالاً شما می‌تونید الگو بگیرید و عمده کارا رو انجام بدید چه فرایند داره اتفاق میفته و اینا بسیار جذابه بررسیشون که عرض کردم سبب میشه حالا ما انشالله فصل سوم وارد بحث هوش مصنوعی بشیم که بتونیم این حوزه‌ها رو زخمی بکنیم و شروع بکنیم و بعدش هر کسی بسته به علاقشو میزان تمایلش یا تخصصی که داره بعضی از اینا رو ادامه بده و بحث سوشیالی نویگیشن همین که عرض کردم توی مسیریابیش مسائل اجتماعی را هم لحاظ بکنه توی یک موزه اگر یه نفر داره به یه تصویر نگاه میکنه شما نرید وسطش وایستید ماسک کش کنید چون خیلی بی ادبیه خدمت شما عارضم که بحث اسلام رو داریم سایم لوکالیزیشن مپینگ که ربات توی محیط کاملا ناشناخته رها بکنید مثل راهرو دانشکده مکانیک چه بره

و در ضمن به مرور زمان بگه که کجای اون نقشه قرار داره که خودش درآورده بحث اکشن ریکاگنیشن داشته باشه اینکه حرکت‌های آدما رو شناسایی بکنه یا پوز استیمیشن داشته باشه از وضعیت بدن آدم‌ها می‌خواد طرف بشینه بیفته نشسته داره راه میره میخواد بلند شه و اینا همه کاملاً اثربخش توی واکنشی که ربات میخواد بده بچه اسپشن داشته باشه که وقتی گفتاری بغلش مطرح شد اگه صداش زدن بهش نگاه کنه منبع صوتی رو شناسایی کنه اگه بشه ربطی نداره طبیتا واکنش نداره محتوای صحبت در بیاره و بتونه واکنش مناسبی داشته باشه و بالاخره یه روزی آیا ما به این نقطه میرسیم که یه ربات بیاد یک فوتبال گزارش کنه و بگه یک سانت بی هدف و توی دروازه یا نه خدمت شما عارضم که اینا همه مواردیه که حالا حالاها جای کار داره و این سبب شده که بحث هیومن ربات اینتراکشن و ماهیت سوش کانتی رباتیکس در حال حاضر جز ده تا

بخش ایمرجین تکنولوژی باشند تو دنیا تکنولوژی‌های بسیار در حال رشد و سردمدار که خوب تو این حوزه کارهای زیادی هم قراره انجام بشه خدمت شما عارضم که دسته بندی سیستماتیک داشتم از نوشته‌های آقای دیوید برنون که تو حوزه کاگنیتیو رباتیکس کار میکرد میگه ملزومات یک ربات اجتماعی شناختی که حالا برای پیاده سازیش باید از تلفیقی از الگوریتم های ماشین لرنینگ تئوری های کنترل و همینطور تئوری های کاندیشن و شناخت استفاده کرد این که بایدبل باشند بایدشن مثلا چیز را داشته باش خدمت شما عارضم که دستورالعمل را در سطوح بالا بتونن پردازش کنند یعنی از داده های لولی که از محیط میگیند شامل داده های انکر و نمیدونم داده های ویژ و الی آخر بتونن به چیزهای اساسی و اساسی تر برسند خدمت شما عرضم که بحث های دانش داشته باشند قابلیت تعمیم دهی داشته باشند یکی از موارد

جذاب این شماره‌های چهار و پنجشه یکی ادپتیو پلنینگ داشته باشند یکی پرسونالایز اینتراکشن داشته باشد ما اینا رو اینجوری ترجمه می‌کنیم برای خودمون که باید بتونن به صورت تطبیقی خودشون رو به شرایط وفق بدن و در ضمن اگه لازم باشه تعامل شخصی سازی کنند برای یه آدم خاص یعنی اگر مثلاً قراره به یه نفر ریاضی درس بدم کاملا مهمه یه معلم خصوصی علی و محمد براش مهمه که چه لولی هستند و متناسب با هر کدومشون انجام میدن و لازمش اینه که صرفاً اسمنت بکنن خودشون بدونن خودشون تو چه وضعیتی اند و از خودشون شناخت مناسب داشته باشند از مشاهدات یاد بگیرند و و و مواردی از این دست بتونن دانششون رو انتقال بدن و با آدم ها کلبریت بکنند این ظرفیت داشته باشند که ما حالا در مورد یکی دو تا از این آیتم ها در آینده براتون تو بخش های هوش مصنوعی صحبت خواهیم کرد خدمتتون عارضم که بریم سر نمونه از کارهایی که ما خودمون انجام دادیم یه ربات

اجتماعی به نام ربات آلیس داشتیم از شرکت روبوکان تامسون امریکا خریداری شده بود ما نام ایرانی مینا رو براش گذاشتیم با استفاده از الگوریتم‌های هوش مصنوعی توانمندش کردیم که وقتی کاربر جلوی سنسور کینکت قرار میگیره حالت چهره شناسایی بشه توسط ربات و واکنش بده مثلاً اگر کاربر لبخند بزنه ربات می‌خنده اگر اخم کنه می‌ترسه اگر لبخندش بالای ۱۰ ثانیه طول بکشه چشمک میزنه البته شماره تلفن نمیده خدمت شما عرضم که یا یه کاری رو براش به وجود آوردیم که بتونه تو فعالیت های تقلیدی به صورت اتوماتیک نمره دهی بکنه به فعالیت آدما این نمره رو با نمره آدما مقایسه کردیم و خوب خدمت شما عارضم که این مستطیل های نارنجی رنگ نمره که انسان داده بود و دایره های آبی رنگ نمره هایی که ربات به اون فعالیت داده بود و خب این سبب شد که کلیشن خیلی بالا و جذابی وجود داشته باشه بینشون و حس کنیم که تحلیل استاتیکی حالت های چهره رو ما به خوبی میتونیم با الگوریتم های مثلاً هوش مصنوعی

این آزمون حالا فاز سیمین پیاده سازی بکن یا یکی از کارهایی که اخیراً انجام دادیم بهره‌گیری از ربات‌ها توی فرایند همزمان اسلم و همینطور مسیریابی و عدم برخوردش به آدما بوده با در نظر گرفتن یه سری شاخص‌ها هست شبکه‌های بسیار بسیار مدرن در واقع عصبی پیچیده استفاده شده ربات آرش رو می‌بینید تو راهرو دانشکده جدید مکانیک که چند تا آدم دارن راه میرن نباید به هیچ کدومشون بخوره در ضمن باید به این نقطه هدفش هم که اینجا بود می‌رسید و خب از دیپل استفاده شده و یکی از در واقع چیز از یک کانتستی لرنینگ و کانتست یکی از روش های مدرن یادگیری ماشین باشه استفاده شده که خوب حالا نمیدونم فرصت کنیم تو این درس در موردش صحبت بکنیم یا نه یکی دیگه از کارهایی که دیگران انجام دادند استفاده از آر ال توی یاد دهی فرایند صحبت کردن

شبه انسان برای رباتیک من وقتی که تعداد دفعات کمی ربات ترین کردم ربات رفتارش اینجوریه وقتی صحبت می‌کنه فقط می‌بینی نهایتاً داره دستشو بالا پایین می‌کنه حتی احتمالاً به صورت رندم و حرکت‌های درشتی هم داره اما هرچی این تعداد بالاتر میره اتفاقات دیگه‌ای میفته و دقت میره بالاتر حالا به محض که تعداد به ۱۰۰ میرسه رفتار رفتار جذاب‌تری می‌شه و شما این ربات رو احتمالاً بیشتر می‌پسندید برای تعامل با آدم ها اینه یه صحبت سخنرانی یا تعریف کردن یک داستان و حالا میتونید ببینید که بعد از اینکه ۲۰۰۰ تا رفت جلو چقدر مثلاً می‌تونه قویتر عمل کنه

تنوع حرکات استفاده مناسب‌تر از حرکات در زمان مناسب اینا همه شاخص‌هایی که فرض کنید یک ربات یا یک عروسک حالا اینجا ربات پپر باشه عادی نداره و شمایید که باید براش به وجود بیاید پس کاربردهای دیگش به کارگیری ربات‌ها تو تمام بخشی و آموزش بچه‌هاست این جزئی از تز دکترای خود بنده است استفاده از ربات‌ها در آموزش اینو ببینید یه تسک تقلیدی میده و این کودک طیف اوتیس نمیتونه به خوبی اجراش کنه موسیقیایی بوده و جمله خوانی های موسیقیایی تامین دهی به سازهای بنز مجازی مبتنی بر کینکت و الی آخر و در حضور مادر حالا مجموعه

مرور بکنه اینکه کودکی که هیچی از ادبیات در واقع موسیقایی نمی‌دونسته خب وقتی که میره بتونه یه سری جملات موسیقیایی رو بزنه و نت‌ها رو نامشو بگه و الی آخر اینا مواردی بود که جز حالا اهداف ما بود برای یاد دهی به بچه‌ها خدمت شما عارضم که اینجا ربات اجتماعی رسا رو می‌بینین که سال ۲۰۱۸ در مسابقات کنفرانس رباتیک اجتماعی کسب کرد میبینید سازنده ربات رسایی یک و مجموعه از توانمندی هاشو در قالب علائم بروز علائم زبان اشاره خدمتتون

کامیونیکیشن با حمایت وزارت ارتباطات نسخه دومش ساخته سیستم حرکت هاشو با همدیگه ببینیم زبان اشاره فارسی

فایل فیس تو میک خدمت شما عارضم که

بعدی که کردیم طراحی و ساخت رباتی بود به نام ربات مانکن یا ربات منیکن اسمشو روما گذاشتیم معتقد بودیم دلیل نداره مانکن‌ها بخوان ثابت باشند پشت ویترین‌های مغازه و می‌تونن یه ربات باشند که هم بتونن تو پوزه‌های مختلف لباس رو به مخاطبین نشون بدن همم اگه لازمه مشتریا رو صدا کنن بهشون ارتباط بگیرن باهاشون بگن که بیا نزدیکتر و جلب توجه بکنن و علاقه ایجاد بکنند برای اینکه مشتری تمایل داشته باشه از اون مغازه خرید بکنه و خوب حالا از این کارا تعداد انتشاراتی داشتیم به صورت آزمایشی هم به مدت دو ماه تو یکی از مغازه های حالا خیابان جمهوری استفاده شد که تاثیر مثلا حضور مشتریان و در حضور این ربات بررسی کردیم و قبل و بعدش و توی مقاله‌ای که منتشر کردیم گذاشت

خدمت شما عارضم که در نهایت بعد از اینکه همه این کارا رو کردیم شاید من این دوتا فیلم گذاشتم آخر خدمتتون نشون بدم یکی طراحی ساخت ربات تابان ۲ و ربات آپا و دوتا از ربات‌هایی که جدیداً به جمع ما اضافه شدن تو آزمایشگاه رباتیک اجتماعی شناختی و همه این داستان‌ها رو دارن یعنی هم بحث طراحی ظاهریشونه هم بحث تعاملشونه و حتی سوال اولیه از اینکه آدم‌هایی که باهاشون تعامل می‌کنند چه واکنش‌هایی دارند و میتونیم ببینیم که مجتبی دکترای ما مسئول اصلی این طرح رو دارند و دوستان دیگه تو این مسیر بهشون کمک کردن که در الان هم در جمع حاضر هستند اسکچ های مختلفی که برای ربات زده شد نمونه نهاییش نمونه گلی ساخته شدش طراحی کدش

پرینت سه بعدیش که حالا قرار شده فیلم آموزش نحوه کار با پرینتر سه بعدی رو خدمتتون کارگزاری می‌کنیم چگونه می‌شه از یه نقشه سالید شما به یک جسم واقعی برسید مونتاژ شدنش و تعبیه شدن سرهای مختلف و همینطور پروژکتور در سر و همینطور ماسک‌های مختلفی که بتونه شخصیت‌های متفاوتی رو ربات برای خودش بگیره این ربات هدف از ساختش کمک به آموزش مبتلا به نارسا خوانی است که یکی از اختلالات یادگیری حساب میشه و مهمترین اختلا زیادی توی دنیا وجود داره بچه‌هایی که بهش مبتلا هستند خیلی نمیتونن درست بخونن چپه میبینند بعضی از کلمات مجموعه سنسور های که توی ربات به کار رفته ماسک اول پاندای کنفوکار که در نقش معلم داره

ظاهر می‌شه در یه زمان خیلی خیلی اندکی میشه ماسک ربات تعویض کرد که خلاقیت و ربات شخصیت جدید به خودش بگیره شخصیت مینیون‌ها که در نقش دوست بچه ها ظاهر میشه و هم سوادشونه

شخصیت‌های دیگه‌ای که در نقش یک نوع آموز باشه و کودک وقت داره بهش یاد بده برای ویروس و خب ما در کنار ربات واقعیش توی در واقع هدست واقعیت مجازی نسخه ویچال این طراحی کردیم و بچه‌ها بازی رو اونجا ساختن که کاربر میتونه بر سر گذاشتن

مجازی با نسخه مجازی این ربات کار کنه و تکالیفی که در حوزه نارسان خوانی برای بچه‌ها طراحی شده رو اونجا انجام داد ما یه بحث دیگه‌ای داریم که خب حالا کیفیت تعامل چه خواهد بود ما اینو انشالله به شکل جت توی فصل آخرمون بررسی می‌کنیم وقتی که با بچه ها مقابله میکنه بلاخره باید چه چیزی سنجید که مشخصه که واقعا تاثیرگذار بوده یا نه باید همراه باشید الان زوده یه مقدار در مورد اینکه اثرخشی ها چقدره و اینا ما انشالله در آینده بحث خواهیم کرد چگونه میشه آنالیز کرد داده هایی که تو طول جلسات به دست میاد ربات بعدی ما ربات آپو به نام خدا معرفی ربات آپ یک ربات رومیزی است که در ابعادی نسبتا کوچک طراحی و ساخته شد این ربات دارای ابعاد ۲۳ در ۲

در ۳۱ سانتی متر و وزن ۲/۶ کیلوگرم هست و دو درجه آزادی دارد ربات آپو با شخصیتی منحصر به فرد و با هدف آموزش الگوی مصرف آب و انرژی به کودکان ساخته شده به همین منظور مجهز به ابزارهای تعاملی دوربین نمایشگر میکروفون و بلندگو شده و همچنین از پردازنده رزبری پای به عنوان پردازشگر در آن استفاده شد علاوه بر این ربات آپو به یک رابط کاربری گرافیکی در بستر صفحه وب مجهز شده که امکان کنترل کامل ربات رو از راه دور فراهم می‌کنه امکان افزوده شدن قابلیت‌های نرم‌افزاری بیشتر نظیر هوشمندی در تعاملات نیز در پروژه‌های آتی فراهم است خب دیدید دیگه ربات فقط دو درجه آزادی داره و حالا هدف اصلی و اولیش آموزش مصرف آب و انرژی به کودکان بوده اما برای مصارف دیگه هم داره استفاده میشه به عنوان همدم و دوست و داستان

میتونه در زندگی بچه‌ها ورود بکنه خدمت شما عارضم که بحث دیگه‌ای که عرض کردم فتح باب می‌کنیم الان اما می‌ذاریم انشالله در آینده جدی بررسیش کنیم اینه که خب اثربخشی تعاملات چه جوریه حالا بالاخره ربات با یه مجموعه بازی یا یه قابلیت‌هایی طراحی شد وارد زندگی آدما شد از کجا بدونیم اثربخش هستند یا نه چگونه میشه یه کار ساختاری انجام داد و چگونه میشه مقاله داد این مواردی که اجازه بدید بعدا بررسی میکنیم فقط جهت اطلاع این عکسی که میبینید از بازی سنگ کاغذ قیچی با ربات رسا گرفته شده که حالا با دو الگوریتم مختلف یکی رندوم یکی بهره گیری از در واقع چیز روش به کارگیری روش مارکوف در تخمین حرکت های بعدی کاربر بوده که به شکل معناداری تو این روش دوم ربات قوی تر بازی میکرد و بیشتر آدم ها رو میبرد و این برای خود ما هم عجیب و جالب بود که خب اینو

کنفرانس رباتیک اجتماعی منتشرش کن این مواردی بود که امروز باید خدمتتون بیان می‌کردیم با این حساب به نظرم شما مطالب لازم و تعاریف اولیه رو بلدید در همین حد نگه داریم هر کسی که نیاز داره میتونه مراجعه کنه به همون کتابی که در اختیارتون قرار دادیم توی ۲۶۰ صفحه تمام مطالبی که ما گفتیم و بعضاً حالا اومده با شاخ و برگ های مختلف بعضاً با سطح چیز مختلف تمرکز مختلف بیان کرده ما بالاخره با سطح ذائقه خودمون و توانمندی خودمون همینطور نیاز خودمون رو خدمتتون مطرح کردیم به نظرم الان تو نقطه قرار دادیم که تعاریف خوب میدونیم میدونیم ربات های اجتماعی شناختی چی هستند خیلی بین ربات اجتماعی شناختی نیازی نیست تفاوت قائل بشید مرزهای مشترک زیادی دارند کلا رویای ما از داشته داشتن یک رباتیک ربات اجتماعی شناختی چی میتونه باشه و اینکه خب حالا برای این مواردی که عرض کردیم خدمتتون چگونه میشه

راه حل‌های عملی و عملیاتی پیدا کرد بالاخره ادعاش ساده است اما واقعا ربات چگونه می‌تونه تو میدان دید خودش با استفاده از دوربینش مثلاً حالت چهره آدما رو شناسایی بکنه این مواردی که انشالله بمونه کم کم شروع می‌کنیم بحث می‌کنیم ابزارهایی رو خدمتتون معرفی می‌کنیم از جلسه آینده که حالا یا مستقیماً به اون در واقع اپلیکیشن‌هاش رجوع می‌کنیم یا اینکه نه به خودتون واگذار می‌کنیم که برید ادامه بدید پس با این حساب به نظرم اینجا درس داریم انشالله تا جلسه آینده در مورد شبکه های عصبی مصنوعی و ورود به دنیای پرسپترون و mp خیلی ممنون بابت همراهیتون انشالله که خوش و خرم باشید براتون آرزوی سلامتی و موفقیت می‌کنم تا هفته آینده خدا یار و نگهدارتون

E:\courses\LangChain Project\main root\data\SCR_Session04_transcript_part1.txt

به نام خدا دوستان عزیز و ارجمند درس رباتیک اجتماعی شناختی عرض سلام و ادب و احترام در خدمتتون هستیم با جلسه چهارم درسمون شروع فصل سوممون و ورود به حوزه یادگیری ماشین و در نهایت رفتن به سمت یادگیری عمیق با این نگاه که انشالله مواردی که لازمه رو یاد بگیریم و چیزهای جدیدی که به هر حال توی دنیا به روزه خیلی خیلی داره استفاده میشه این روزها و خیلی هم البته یادگیریش چیز عجیب غریب و پیچیده نیست و در حد توان با همدیگه ببریم جلو و امیدوارم انشالله در آینده به خوبی به کارتون بیاد خب اجازه بدید من صفحه نمایش باهاتون به اشتراک بذارم و بریم سر کارمون و در خدمتتون باشیم خب عنوان فصل سوم گذاشتیم یادگیری ماشین پیش به سمت یادگیری عمیق و

زیر بخش اولش آشنایی با شبکه‌های عصبی مصنوعی و همینطور ام ال پی هستش که سعی می‌کنیم انشالله حداکثر در طول سه جلسه هم تئوریاشو بگیم و هم به صورت عملی پیاده سازی شد توی پایتون خدمتتون بگیم تا بتونیم انشالله حالا راند اول یا سری اول تمریناتمون هم داشته باشیم و خودتون هم بتونید تمرینات مختلفی بکنید با این ابزارهایی که وجود دارند خب اجازه بدید ما بریم سر کار توی فصل سوم ما آیتم های اصلی که بررسی میکنیم یادگیری ماشین و شبکه های عصبی رو معرفی میکنیم شبکه های یک لایه و چند لایه رو میگیم و در نهایت توی جلسه آینده و جلسه بعدیش در مورد ترین کردن و آموزش شبکه های عصبی چند لایه از روش بک پراپشن صحبت خواهیم کرد و این میشه در واقع

اهم مطالبی که توی زیر بخش اول فصل سوممون قراره براتون صحبت بکنیم پیش فرض من بچه‌ها بر اینه که شما هیچ اطلاعی از یادگیری ماشین ندارید به خاطر همین اگر کسی دانشی داره تو این زمینه من پیشاپیش معذرت خواهی می‌کنم تلاش می‌کنم هر چیزی رو لازم باشه از صفر صفر بگم و در ضمن یه حقه میزنم تا جایی که ممکنه وارد پیچیدگی های ریاضی نمیشم و تلاش می‌کنم با بیان های عامیانه سعی کنم موارد رو برای شما جا بندازم تا انشالله اگر موردی هست خب راحت تر بتونید همراهی کنید و سریع برسیم به کارهای اصلیمون توی حوزه حالا به کارگیری شبکه های عصبی هم کم عمق و هم عمیق انشالله در آینده و به خاطر همین من نیاز دارم که یه سری مفاهیم تعریف کنم من تشکر ویژه کنم از افرادی که اینجا اسمماشونو آوردم که توی دانش

تو این زمینه به دست آوردم و یا اسلاید سازی‌هام از داکیومنت‌های این افراد استفاده کردم خدمتتون عارضم که ما توی جلسه گذشته با انتظاراتمون از ربات‌های اجتماعی شناختی آشنا شدیم و مواردی دیدیم که متوجه شدیم پیاده سازی اونها نیازمند دانش یادگیری ماشین و یادگیری عمیق هستش و خاطر همین بهانه خوبیه که ما ورود بکنیم خب ما یادگیری ماشین را قبلا هم توی جلسه اول یه روش اومدیم از اسلاید های الکساندر امینی از ام ای تی استفاده کردیم گفتیم که هوش مصنوعی رو میتونیم تعریف کنیم تمامی تکنیک های که به کامپیوترها کمک می‌کنند تا رفتارهای انسان گونه داشته باشند زیر شاخه از اون اسمشو می‌ذاریم یادگیری ماشین و میتونه این تعریف براش باشه که

قابلیت دادن ماشین برای یادگیری ولی بدون اینکه بخواد به صورت صریح و اکسپلیسیت هی بخواد پروگرام بشه یه بیان دیگش اینه که از داده های موجود و داده های در واقع مشاهده شده استفاده بکنه ماشین تا بتونه تصمیمات بهتری بگیره تا بتونه یاد بگیره و بتونه جنرالایز کنه تعم بده و بعدا روی داده هایی که ندیده بتونه تصمیمات خوب بگیره و البته زیر شاخه از اون هم همچنان وجود داره به نام دیپ لرنینگ که حالا انشالله بهش خواهیم رسید خدمت شما عارضم که توی ماشین لرنینگ شاید این مفهوم به بیان عامیانه وجود داشته باشه یه قانونی وجود دارد ولی ما مستقیماً ریاضی اونو نمیدونیم ولی جاش به اندازه کافی داده داریم و میخویم با در واقع این داده ها تلاش بکنیم اون

استخراج بکنیم یا حداقل خودمونو نزدیک بکنیم و یه سری توابع تخمین بزنیم که اون رابطه‌های ورودی و خروجی رو برای ما تا حد امکان به دست بیارن خدمت شما عرض کنم که مفاهیم اساسی عرض کردیم توی ماشین لرنینگ استفاده از مجموعه‌ای از مشاهدات برای کشف یا شناسایی یک فراینده ولی یادمون باشه مثل معلمای ابتدایی ما دوست داریم سیستممون ماشینمون رباتمون یا یاد بگیره و حفظ نکنه خوب نمیخواهیم داده ها را فقط به خاطر بسپاریم ما میخویم دوست داریم که بتونیم یه الگوی مناسبی دربیاره و بعداً بتونه رو داده هایی که ندیده تصمیمات مناسب و درستی بگیره توی ماشین لرنینگ یا یادگیری ماشین پارادایم های مختلفی وجود داره ولی اجازه بدید ما با معروف‌ترینش شروع بکنیم به نام سوپروایز لرنینگ یا یادگیری با نظارت یا بخونیم یادگیری با معلم اتفاقی که توش میفته

اینه که شما یه مجموعه‌ای از داده‌هایی رو به ماشین میدید و در ضمن بهش می‌گید که اون چیه یعنی جوابشم بهش میگید ولی بعداً یه سری داده بهش میدید میگید حالا با توجه به اون قبلیایی که دیدی به من بگو این چیه حالا اینایی که گفتم مثلاً تو چه کتگوریی‌هایی می‌شینه فرض کنید که هزار تا عکس گربه بهش می‌دید و جلوش می‌نویسید اینا همه گربه اند یعنی به ماشین می‌گید که ببین این هزار تا رو خوراک خودت گذاشتم ببین اینا همه گربه اند هزار تا عکس دیگه هم بهش میدید که گربه نیست حالا میگید که اینم بدون که اینا گربه نیستن حالا ۲۰۰ و یکمین عکسی که من بهت دادم تو بگو گربه هست یا نیست ها پس چی تو ۲۰۰۰ تای قبلی یه مجموعه داده‌ای بهش داده شده بود که چی که جوابم جلوش وجود داشت ها و ما به اون داده ها میگیم

ست یا داده‌های آموزشی که قراره ماشین یا ربات از روی اونا یاد بگیره و بعداً بتونه رو داده‌هایی که ندیده تصمیم بگیره داده‌ها برچسب دارند یا لیبلند یعنی چی یعنی برای هر داده برای هر ورودی یه خروجی هم وجود دارد ما معمولا اجازه بدید این توافق با همدیگه بکنیم اولاً ورودی ها را با بردار ایکس نشون بدیم مثل کتاب های درسی من اینو ایکس در واقع بولد نوشتم نمادی از بردار بودنش داره بالا نویس یک یا حتی میتونست بالا نویس پرانتز باز بستگی یک نمادی از شماره مشاهده باشه یعنی ایکس بالا نویس پرانتز باز یک یا ایکس عادی یک نه لزوما به معنای توان یک که مشاهده اولم مشاهده دوم عکس اولم صوت اولم

ما داده اولم و الی آخر و وای چیه خروجی اونه جوابشه مثلاً اگر ایکس قیمت خونه یعنی چیز باشه بردارهایی باشه که حالا مشخصات خونه چند متره نمی‌دونم کدوم منطقه واقع فلان فلان وای قیمت خونه باشه نمی‌دونم ایکس اگر داده های پیکسل‌های یک عکس باشه وای اینه که اون عکسه چیه بالاخره خانم یا آقاست نمیدونم جاندار یا غیر جانداره گربه است یا سگه و الی آخر ها پس اینو با این مجموعه نشون میدم در واقع زوج مرتب های ایکس یک وای یک تا xn و طبیعتاً مشاهده با ایکس نشون میده هدف ما اینه که از فضای ایکس که خودش یک بردار با دی تا کامپنت و یا توی توی در واقع فضای دی بعدی قرار داره یه تابعی پیدا بکنم که به وای برسم حالا وای خودش میتونه یه دونه عدد

یا می‌تونه مثل توابع دیگه چند ورودی چند خروجی باشه میتونه اینم بردار باشه برای خودش ولی الان در ساده‌ترین شکلش وای یک عدد فرض کردیم حالا براتون مثال می‌زنیم و حتی خودتون هم کمک میگیریم تا به ما بگید که چه چیزهایی میتونه اینجا وجود داشته باشه برای اینکه به این کار برسیم ما به بهینه سازی یک تابع هدف نیاز داریم و این چیزیه که ما انشالله جلسه آینده روش بحث خواهیم کرد و یه جورایی دیگه این تیکش لزوماً اسمش ماشین لرنینگ نیست یعنی جز از کاره بهینه سازی حالا هر کسی بین‌سازی و هر جوری بلده یا از جایی بلده خدمت شما عرض کنم میتونه ربطش بده که اون که این تیکش دیگه اصلا یادگیری ماشین نیست آره نیست یعنی شما به یه مسئله‌ای می‌رسید که قراره بهینش کنید و یه مجموعه پارامترهای بهینه پیدا بکنید که حالا بتونه اهداف ما رو چیکار کنه برآورده بکنه خواهیم دید که اون مسئله بهینه سازی که میبینیم میتونه بسیار بسیار پیچیده باشه و در ضمن در اکثر مواقع حل تحلیلی نداره و باید از

عددی استفاده بکنیم داده‌ها توی یادگیری سوپروایز یا یادگیری با نظارت چه جوری است معمولا اینجوری اند داده‌های ورودی رو توی بردارهایی با ابعاد دی جا میدیم حالا این بردارها می‌تونن سطری یا ستونی باشن من شخصاً علاقه دارم بردارهای ورودیمو توی بردار داده‌های ورودی تو بردارهای ستونی بذارم ولی مثلاً اینجا تو این عکس براتون تو سطر گذاشته شده تا چی تا بتونید به شکل کامپتی اینا رو نشون بدیم سمپل یک یا مشاهده اول یه مشتی در واقع چیز داره دی بعد ورودی داره و یک وای خروجی داره حالا این دی بعد مثال میزنیم خواهید دید که چی هستند یادگیری های سوپروایز و چند تا مثال خودم میزنم چند تاشو از خودتون کمک می‌گیرم خب مثلاً فرض کنید که میخویم قیمت یک خونه رو پیدا بکنیم بچه‌ها قیمت یک خونه به نظرتون به چه پارامترهایی ربط داره برامون بنویسید هر چیزی به ذهنتون میخوره

به چه چیزهایی میتونه ربط داشته باشه به عمر خونی به منطقه به متراژ دیگه چی اینا همه درسته اینا همه درسته بچه‌ها وقتی که می‌خواید قیمت یه خونه رو تخمین بزنید ها حالا امکانات محل امکانات خود خونه و الی آخر اینا همه مهمه ولی ممکنه کافی نباشه و باز هم ادامه داشته باشه این پارامترهایی که روی قیمت خونه که وای باشه تاثیر داره به اینها میگن ویژگی یا فیچر خب و اینها درایه‌های بردار ورودی یا ایکسمو تشکیل میدن مثلاً فرض کنید که من میگم یه خونه داریم تو منطقه هشت با متراژ ۱۰۰ متر نمیدونم فلان دارد آسانسور دارد پارکینگ دارد فلان اصلا دو میلیارد نمیدونم اینو داریم فلان فلان سه میلیارد اینو داریم و و و و مثلاً می‌بینید ۱۰۰۰ تا ۱۰۰۰۰ تا ۱۰۰ هزار تا خونه رو شما

جمع آوری می‌کنید به کل این ردیفه با همدیگه و این بردارهای ایکس میگن سمپل ما خب یا داده یا نمونه‌مون که توی این جدول توی سطر قرار داده شده به هر کدوم از درایه‌های اون ورودی میگیم فیچر یا ویژگی فیچر یا ویژگی مولفه‌هایی هستند که روی جوابتون دارن تاثیر می‌ذارن مثل همین چیزایی که بیان کردید درسته و خدمت شما عرض کنم که به ستون آخر هم میگیم ستون خروجی تارگت برچسب اینا چیزهای واجبیه که شما باید بدونید پس من هر وقت از ویژگی یا فیچر اسم بردم یعنی دارم از چیزی تو ورودی صحبت می‌کنم که تو خروجی من تاثیر میذاره به بردار این ویژگی ها کنار هم همشون در کنار هم میگم یک داده یا نمونه یا سمپل و توی بردار ایکس نشونش میدم و چی و جواب اونو به اسم خروجی یا برچسب اسمشو نام گذاری میکنم

توی سوپروایز لرنینگ ما دو مفهوم مهم و کلی داریم مسائلمون یا رگریشن یا کلسیفیکیشن رگریشن یا همون رگرسیون خودمونه بخواید توی یک مسئله‌تون یک وریبل کانتینیوس یا پیوسته رو تخمین بزنید نمونه اش همون قیمت خونه است قیمت خونه میتونه از ان تومن باشه تا دو ان تومن یا ان ان تومن ها یعنی اینکه هر عددی میتونه به خودش بگیره از یه مجانی باشه تا اینکه چه میدونم چند صد میلیارد تومن و تابع شما قراره مثلاً قیمت خونه رو تو تهران یا توی منطقه هست تهران تخمین بزنه خب چه مسیری طی میشه شما اولش باید به اندازه کافی بهش داده بدید یعنی باید قیمت۰ تا ۱۰ هزار تا ۱۰۰ هزار تا خونه رو تو اون شهر تو مناطق مختلفش با مشخصات و ویژگی‌هایی که میتونه رو قیمتش تاثیر بذاره براش وارد کنیم مثلاً بگید خونه ۱۰۰ متری واقع در فلان دو نبش این

اینه اینه و در کل چیکار کن شما برای من تخمین بزن قیمت چنده دیگه چی مثلاً فرض کنید که درصدهای کنکور مثلاً کارشناسی دروس چه میدونم ادبیات معارف عربی فلان فلان بدید به سیستم ازش بخوایم که ترازتونو یا رتبتونو تخمین بزنه ها حتی ممکنه شما ندونید که سازمان سنجش داره از چه فرمولی استفاده میکنه ولی کافیه مثلاً پرسش چیز در واقع دفترچه یا پاسخ برگ مثلا نتیجه ده هزار نفر صد هزار نفر آدم رو پیدا کنید ممکنه به خوبی بتونید شما هم این کارو بکنید پس خروجی که به ما میده وای که به ما می‌ده می‌تونه کانتینیوس باشه نه این بازه میتونه از بازه صفر تا یک میتونه منفی یه عددی تا مثبت یه عددی و الی آخر اتفاق بیفته میتونه کل بازه آ رو بپوشونه یا میتونه فقط اعداد مثلاً صحیح یا طبیعی باشه خب و در کل هدف اینه که چی یه عدد ریل یا حقیقی

پردیکت کنیم تولید کنیم اما یه سری مسائلی که خیلی خیلی می‌تونه مهم‌تر باشه و توی مسائل رباتیک ما الان بیشتر هم حتی با این سروکار داریم و مثالامونم تو شروع حول این میچرخه مسائل طبقه بندی یا کلاسیفیکیشن مسائل طبقه بندی فقط میخواد برای شما طبقه بندی کنه بگه این عکسی که دیدم جاندار بود یا غیر جاندار آدم بود یا غیر آدم خندان بود یا ناراحت بود یا عصبانی بود می‌خوام بدونم که این عکس که دیدم خانم یا آقاست این صدایی که شنیدم صدای خانمه یا آقاست این صدایی که شنیدم صدای ممد علی یا سایرینه ها یه همچین چیزی خروجی های ما اینجا دیسکریپت یا گسسته میشن که میتونن خودش حالت‌های مختلفی رو به خودش بگیره دو گروه معروفش اینه طبقه بندی یا کلسیفیکیشن دو کلاسه طبقه بندی یا

اپلیکیشن بیش از دو کلاسه یا چند کلاسه خب یه ماجرا وجود داره که حالا چند اسلاید جلوتر بهتون میگم ماجرا اینه که شبکه عصبی یا کلاً الگوریتم‌های یادگیری ماشین قراره یه تابع ریاضی رو برای شما تخمین بزنند پس با عدد سر و کار دارند اونا نمی‌فهمن گربه و سگ چیه اونا نمی‌فهمن خانم و آقا چیه باید شما چیکار کنید به اونا یک عدد نسبت بدید و از ماشین بخواید اون عدد به شما خروجی بده بعداً شما تفسیرش کنید توی طبقه بندی های دو کلاس بسیار متداوله که از عدد صفر یا یک یا منفی یک و یک به عنوان گروه استفاده میکن عموما یکم میگیرن گروه مورد نظر صفر رو میگیرن گروه دیگه مثلاً می‌خواید ببینید که این عکسی که دارن بهتون میدن عکس اعضای خانواده شما هست یا نیست یکشو می‌گیریم هست صفر می‌گیریم نیست یا

می‌گیریم هست منفی یکو می‌گیریم نیست خب پس ما میایم مشابه این براش یه عدد نسبت میدیم اگر طبقه بندی چند کلاسه باشه طبیعتاً چیکار می‌کنیم به جای سگ و گربه و فلان و فلان و فلان وقتی یه عکس جلوش گذاشتیم مثلاً حیوونای مختلف باشن مرغ و خروس و الی آخر می‌تونیم شماره کلاس‌های ۱ ۲ ۳ تا نهایتاً سی و نسبت بدیم به چی برای کارهای طبقه بندی خدمتتون عارضم که توی الگوریتم های یادگیری ماشین مثل شبکه های عصبی که میخویم بحث کنیم چه بخواهیم چه نخوایم باید این حداقل کارا رو بتونید انجام بدید یک باید ورودی هاتونو به بردارهای عددی تبدیل کنید ها خروجی هایی هم که به صورت عدد بهتون میده برای خودتون چیکار کنید تفسیر بکنید این الگوریتم ها گارج این گج اوتن عدد آشغال میدید آشغال تحویل می‌گیرید

حالا روش صحبت خواهیم کرد که یعنی چی مثلا الگوریتمی میزنید که وای رو میده یک بعد شما برای خودتون رو کاغذ نوشتید اگه داد یک یعنی گربه بوده اگه داد دو یعنی فلان بوده ما چه نوع متغیرهایی داریم اطرافمون که حالا میخوایم از خودتونم کمک بگیریم مثال بزنیم متغیرها رو میتونیم به دو دسته کتگوریکال یا نوریکال بشکونیم کتگوری کالا به صورت کیفی هستند به صورت چی عددی اند خود کتگوری کالا میتونن دو گونه باشند یا در واقع ارتباط خاصی با همدیگه ندارند مثلا فرض کنید که با انواع بانکها بانک ملی پاسارگاد رفاه فلان فلان میخوید خروجی شبکه تون این باشه ها و یا اینکه میتونن چی باشن تو خودشون یه حالت در واقع طبقه بندی یا تو خودشون یه حالت چیزی داشته باشند خدمت شما عرض کنم اردردر

پشت سرهمی وجود داشته باشه مثلاً اینکه مدرک‌ها دیپلم کارشناسی ارشد دکتراست یا این مثلاً در واقع دانشجو خوبه متوسط یا بده یا حالا یه پله قبلش عالیه و اینا دسته دارند یعنی ما همیشه می‌دونیم متوسط یه پله از بعد بهتره خوب یه پله از متوسط بهتره ولی تو این بانک‌ها اصلاً هیچ ربطی نداره بانک ملی به پاسارگاد به رفاه هیچ ربطی نداره اینا گونه های کتگوریکالن که ما میتونیم باهاشون سروکار داشته باشیمیک هم که مشخصه دیگه شما فرض کنید تعداد دانشجویان یک دوره یه عدد طبیعیه یکی دو تا سه تایی کلاس ما ۲۰ تا ۲۵ تا الی آخر ولی ۲۲ تا و نیم نداریم خب و یا می‌تونه اصلاً یه عدد کاملاً ریل باشه و هر مقداری رو با هر در واقع رزلوشن به خودش اختصاص بده مثلاً مثل مقدار دمای اتاق فاصله بین دو تا شعبه بانک بر حسب متر و الی آخر حالا سوال توی مسائل کلاسیفیکیشن بیش از یک دسته خب شما

پیشنهاد می‌کنید ما خروجی‌ها را به چه صورت بگیریم یعنی اگر سگ و گربه و فلان و مثلاً خروس و اینا داشته باشیم خب یه ایده این بود که بگیریم ۱ ۲ ۳ الی آخر خروجی یک ایده بهش میگن وان هات ریپریزنتیشن یا نمایش وانهات به جای اینکه وای و یه تک عدد گزارش بکنید بیاید به تعداد المان‌هایی که تو دستتونن که از قبلم برای شما مشخصاً یه بردار در نظر بگیرید تمام درایه‌هاشو صفر بزارید به جز اونی که برای شما قراره اون گروه باشه مثلاً اولیه گربه باشه و شما توی گروهتون فرض کنید فقط می‌خواید چه میدونم گربه و سگ و خروس رو سایر حیوانات رو بررسی کنید اون یکه رو اولیه رو یک می‌ذارید بقیه رو استفاده من با توجه به چیز ایرانیو سبک و سیاق به کارگیری کلمات و اینا با اجازتون کلمه گاو و

در واقع چه می‌دونم گوسفند و سایه رو انتخاب کردم ولی خب اگر شما توی فرهنگ غربی باشید بالاخره به علت اینکه اونا زیاد سگ و گربه و اینا دارن عموما کلمه اول و اینا رو تو حیوانات سگ و گربه انتخاب می‌کنن و سایه خدمت شما عارضم که این وان هات ریپرزنتیشن اینجوریه که به جای اینکه شما وای رو یه عدد بگیرید یه بردار می‌گیرید که همه چیو صفر میذاید به جز اونی که شما می‌خوایدو یک می‌ذارید و اون چندمین بودن معیار دیگه اولی نماد گربه است دومی مثلا نماد سگه و و و الی آخر چهارمی هم نماد سایر خب یا مثلاً فرض کنید تو یه نوع غذا مثلاً گفته اگر اسم مثلاً غذای اپل چیک یا مثلاً بروکلی باشه من به صورت کتگوریکال میتونم اسمشو یک دو سه بزارم تو شبکه هام یعنی من بخوام یا نخوام باید با عدد کار کنم ها بعدا برای خودم میگم اوکی اگه یک تا دو داد یا سه داد چیه مثلاً میدونم که این اینقدر

دارم هر کدوم نمایش وان هاتشون اینه که چی اپلو بگیرم یک صفر صفر و این اتفاق بیفته از یه نفر کمک می‌خوام بچه‌ها این مگه چشه سگ و گربه یک و دو و سه بزاریم به نظرتون چه بدی داره که ما میایم سمت وان هات ایده کسی داره می‌تونید برام بنویسید این غلط نیستا ولی یه سری چالش و مشکلات داره که این یکی کار بهتر در میاره کسی ایده ای داره نوشتن محاسبات برداری آیا سریعترن خروجی نرمال برای ما بهتره میخوید از تابع های حالا پله یا علامت استفاده بکنید آرمین نوشته که وقتی تعداد بیشتر از ۱۰ بشه سخت میشه

آره حالا علی داره یکم بهتر عمل می‌کنه بچه‌ها نمی‌گم اونایی که گفتید غلطه خب خدمتتون عارضم که باز خانم گودرزی خوبه دارید کارهای خوب میکنید و سوم مرتضی عالیه خدمت شما عرض کنم که این سه تای آخر همون چیزایی بود که من تو ذهنم بود بچه‌ها اون بالاییه ۱ ۲ ۳ بذارید غلط نیست ولی شما آگاهانه یا ناآگاهانه مثلاً برای حیوون‌هایی مثل سگ و گربه نمیدونم گاو خر و الی آخر یکیو یک دو سه چهار می‌ذارید چون دارید با یه سری تابع کار می‌کنید که داره به شما عدد میده مثلا عدد سه و عدد دو نزدیکتره تا یک این یعنی شما آگاهانه یا ناآگاهانه اومدید تصمیم گرفتید برای سیستمتون که مثلاً گاو به خر نزدیکتر باشه تا به گربه و الی آخر ها اگر از نمایش و

استفاده بکنید این خوبی وجود داره که بین دو به دو اینا فاصله‌ها کاملاً برابره و این در واقع نمایش یکی از نمایش‌های کلیدی حوزه nlp یا حالا نچرال لنگویج پراسسینگ که اگه کسانی دوست دارن تو این حوزه کار بکنن با اینا شروع میکنن با امبدینگ‌ها آشنا میشن و الی آخر بستگی داره ما هم چقدر وقت داشته باشیم ممکنه بشه به اینا رسید پس بعداً غافلگیر نشید اگر توی نمایش های طبقه بندی های چند کلاسه من از فرمت وان هات بخوام استفاده بکنم و البته اون چیزایی که خانم گودرزی و آقای قدمی این هم اشاره کردن هم باز میتونه موارد مهمی باشه که حالا انشالله بهش خواهیم رسید مسئله بعدی که ویژگی یا فیچر رو بفهمیم چیه اولین مثال کتاب پتریک آگنیشن دودا یه مثال در مورد طبقه بندی ماهی هاست میگه فرض کنید شما می‌خواید برای یه شرکت کار بکنید و اون شرکت دو نوع ماهی رو داره میگیره از دریا و

روی نوار نقالش می‌ذاره و شما باید به صورت هوشمند این دو تا ماهی رو براش دسته بندی کنید که بعداً بتونه جدا جدا بره بفروشه خب شما قبلش طبیعتاً یه سیستمی احتیاج دارید که یه سری کارا برای شما انجام بده مثلاً یه دوربین نوار نقاله نصب کنید که بتونه از ماهیا عکس بگیره بتونه بفهمه که کجا ماهی کجا نیست دورش کادر بیاره و فقط ماهی رو جدا بکنه و در ضمن اگه لازم شد بتونه اندازه رنگ تعداد بال شکل سر و دو الی آخر رو دربیاره و یه پله حتی بالاتری به عدد تبدیل بکنه و چی در نهایت بیاد چیکار کنه دسته بندی رو براشون انجام بده خب فرایند اینه دریافت داده بعد پیش پردازش همین که گفتم عکس ها رو جدا بکن فرض کنید اینا رو کسی هست برامون انجام بده یا خودمون بلدیم و گام بعدی این استخراج ویژگیه چه چیزهایی مهم میشه که یک ماهی از یک ماهی دیگه سوا بشه بچه‌ها به نظرتون چه چیزهایی مهمه یه چیزی بگید که بتونیم عددیش کنیم

نظر شما دوتا عکس از یه ماهی من بهتون بدم خب یا به یه ماشین بخواید بدید چی مثلاً می‌تونه براش معیار باشه که این دوتا رو از همدیگه جدا کنیم اندازه باریکلا رنگش باریکلا طرح پوستش وزنش و و باریکلا این‌ها می‌شن فیچر یا ویژگی و کسانی که این کارو دارن دستی انجام میدن ها دارن افراد خبره ای هستند که دارن استخراج ویژگی یا فیچر اکسترکشن میکن تو حوزه ماشین لرنینگ برای ما و بعدش که این کارو کردن حالا تلاش میکنیم دسته بندیمونو انجام بدیم اما فرض کنید که من دو نوع ماهی دارم ماهیی‌های قزل آلا و ماهی خاردار و می‌خوام اینا رو از هم جدا کنم رفتم چند تا نمونه صید کردم برای خودم لیبل زدم ها رفتم طولاشونو حساب کردم و فقط معیار

پول گرفتم برای خودم و گفتم چی می‌خوام فقط با دونستن طول اینا رو از همدیگه جدا کنم روی محور برای خودم پلاتش کردم این کاملا نمادینه‌ها بچه‌ها این شاید باز نمودار هیستوگرام دقیق‌تری باشه مثلاً فرض کنید که هفت تا از ماهی داشتم که طولش مثلاً چه می‌دونم ۲ سانتی‌متر بوده ۳ سانتی‌متر بوده بعد ۱۶ ۱۷ تا از فلان داشتم و و این همه قزلن سیاها و قرمز مایع خاردارن خب حالا من می‌خوام تصمیم‌گیری کنم به ماشین باید یه عدد بگم یه چیزی بگم بگم آقا از کجا به بعد از کجا به بعد این ماهیه قزله یا خارداره میگه ببین بد نیست بگم اونایی که زیر ۱۵ سانتن قزل آلان اونایی که بالای ۱۵ سانتن ماهی خاردارن و با یه فیچر دارم تصمیممو می‌گیرم اگر چه میدونم این فیچر همچین هم علیه السلام نیست یعنی اینکه غلط هم توش وجود خواهد داشت این که چی همیشه یه تعداد ماهی که البته تعدادشون هم زیاد نیست از قزولات اونور میفتن

آیا باید بپذیرم یا یکی دستی جداشون کنه بعداً و یا همینطور ماهی خاردارها اتفاق میفته که براشون باشه ولی بالاخره یه ویژگی یه فیچره داره تاثیرشو میذاره ها ممکنه یکی دیگه به ذهنش بخوره بگه من وزنو بیام معیار قرار بدم ها و روی محور وزن‌ها حالا این دفعه ممکنه اوضاع بهتر باشه مثلاً قبلیه سیاه و قرمز شاید بیشتر تو هم شما بالاخره یه خط باید بکشید یه نقطه بذارید بگید از این و به قبل قزل از اونور به قبل قزل نیست ها کجا میذارید احتمالا اینجا میزارید و میگید از این و به قبل می‌پذیرم قزل از اینور به بعد نیست اگرچه می‌پذیرید که تو جفتش خطا وجود داره خب یا میتونید بگید که چی این وزن ماهی مهمه و این دفعه ممکنه که خب اگه نگاه کنید به این شکله بگید اوکی این نقطه رو من میزارم و به نظر میاد وزنه فیچر بهتری در اومده کمتر خطا توشه ها مثلاً تو همون تعداد برابر این دفعه یه دونه سیاه اشتباه تخمین زده میشه دو تا هم قرمز اشتباه

زده میشه ولی بقیه سیاه بقیه قرمز که حالا مایه قزل و خاردار باشن درستن ولی چی ولی همچنان توش غلط هست به اینهایی که تاثیر دارند میگن ویژگی اما یه اتفاق فوق جذاب اینه همزمان به کار بردن وزن و طول یه دفعه ممکنه دنیا رو برای شما گلستان کنه و تو دو بعد که اینا رو پلات کنید یعنی ماهی‌های قزلی که داریدو توی دو بعد بیاید طول و خدمتتون عارضم که وزنشو بگیرید و یه نقطه مشکی بزارید برای قزل یه نقطه قرمز برای خاردارها حالا می‌بین که اوضاع چقدر بهتر شد و من راحت‌تر می‌تونم اینا رو تفکیک کنم یعنی به کارگیری همزمان بیش از یک فیچر که اینجا دو بعدی باشه و ورودی های من ایکس دو تا ورودی ایکس یک و ایکس دو دارن که ایکس یک و ایکس دو یکیش طول و یکیش وزن باشه همزمان برای من کار تفکیک و ساده تر میکنه فرض کنید نمودار کشیدید شما می‌خواید تصمیم بگیرید که

E:\courses\LangChain Project\main root\data\SCR_Session04_transcript_part2.txt

تقسیم بندی کنید خب یکی از راه‌هاش طبیعتاً ساده یه خط بکشید ها یه خط بکشید و اینا رو از همدیگه جدا بکنید و خدمتتون عارضم که چی بگید که هرکی اینور خط است ما یه قزل هرکی خار داره هنوزم توش غلط وجود دارد اما درصد غلط‌هاش بسیار بسیار کمتر از وقتیه که من فقط میخواستم از طول یا وزن استفاده کنم حالا سوال پیش میاد من چند تا از این ویژگی ها دارم ها چند تاشو استفاده بکنم آیا میشه دو تاشو تلفیق کرد به جای اینکه مثلاً چه می‌دونم طول باله رو و همینطور جنس پوستم بخوام لحاظ بکنم یه ضریبی از این به علاوه یه ضریبی از اونو بگیرم و کارم راه بیفته بچه ها اینا مسائلیه که توی ماشین لرنینگ بسیار بسیار بهش پرداخته میشه و میشده به خصوص تو ماشین لرنینگ کلاسیک این فیچرها رو باید افراد خبره در میوردن و به این فیچرها میگن هند کرفتد با دست در اومده

آدم‌ها سعی و خطا کردن فکر کردن فسفر سوزوندن تا بهش رسیدن چه اتفاق بدی به نظرتون میفته اگر من بیام همزمان هفت هشت ده تا فیچر دیگه هم اضافه کنم حالا حتی اگرم تاثیر نداشته باشه یعنی حدس می‌زنم شاید داشته باشه شاید نداشته باشه مثلاً بگم آقا طول باله نمیدونم رنگ پوستش نمیدونم نام پدرش این تاریخ صیدش و الی آخر ها اگر این کارا رو بکنم و این محورمو زیاد کنم به نظرتون چه اتفاقی بدی میفته و چرا همچین چیزی همچین خیلی مناسب نیست محاسبات سنگین‌تر می‌شه کاملاً درسته امیرعلی میتونه سنگین تر شه آها فرشاد حرف خوبی زد حالا حجم داده چی میشه حالا اینجا دوباره یه سوال پیش میاد آقای به ازای هر کدوم از این فیچرهایی که میخوای اضافه کنیم بازم ماهی جدید برات اومد که داده بگیری یا میخوای با همین داده ها چیکار کنی ماهیت آنالیز کنی

حالا فرض کنید تعداد داده و ماهی‌ها تغییر نکنه ولی شما بخواید فیچرتونو زیاد کنید چه اتفاق بدی میفته تحلیلمون بسیار دقتش کم میشه باریکلا خطامون هم میتونه زیاد باشه دلیلش اینه که فضا فضای تنوکی میشه دیگه پر نیست دیگه من نمیتونم مطمئن باشم اینجاست که تجمع ماهیی‌های قزله یه تک نقطه دارم توی فضای ده بعدی که دیده نمیشه تجسم کرد از توهم گذشته و اونور هم یه تک نقطه دارن مایع خاردار حالا بینش هرگونه سطحی بکشم یا هرگونه سطح مسطح و منحنی شکلی بکشم توی داده های ترینینگ و آموزش هم کار می‌کنم اما به محض اینکه یه ماهی جدید بیاد هیچ وقت نمیتونیم قسم بخورید که آقا اون چیزی که طراحی کردید جامعیت داره یا نه و میتونه آیا اون چیزی که یاد گرفته رو ماشین تامین بده یا نه خاطر همین توی الگوریتم های کلاسیک ماشین لرنینگ یکی از ویژگی های یکی از مواردی که وجود داشت اینه که آقا چند تا فیچر رو انتخاب کرد

مرزی که می‌کشم چقدر پیچیده باشه خط باشه یا منحنی باشه و الی آخر و اینا ماجراهایی بوده که سال‌ها و سال‌ها آدما رو درگیر می‌کرده در این حد نگه داریم بعد باز برمی‌گردم توضیح میدم خب گفتیم که سوپروایز لرنینگ که ما می‌خوایم باهاش کار کنیم یا یادگیری با نظارت دو تا زیر شاخه داره یا کلسیفیکیشن داره یا خدمتتون عارضم چی داره رگریشن داره کلاسیفیکیشنش میتونه این باشه که دو دسته عکس به شما بدن اونچه که دوستاتون در مورد درس ما فکر میکن که مثلا عکس گربه بهتون بدن و عکس غیر گربه یا سگ و بهتون بگن چیکار کنید کت و داگو از همدیگه جدا کنید یا کت نان کت جدا کنید که مثلا کت یک بزارید خروجی داگ و صفر بزارید یا یک و منفی یک بزارید خدمتتون عارضم که این میتونه توی کلاس های بالاتری اتفاق بیفته یعنی کلسیفیکیشن یا طبقه بندی عکس ها باشه و شما کلسیفایر های طراحی بکنید که چی که بیش از دو کلاس داشته باش مالتی کلاس باشن

فرض کنید که دیتا ست سیفارده داریم که مثلاً چندین عکس داره و الی آخر بالاتر یا این دیتا ستی که استفاده کردم تو خودش هواپیما رو داره گربه رو داره سگ رو داره خدمتتون عارضم کشتی رو داره و الی آخر و بعد از اینکه خروجی هم می‌گیرید همونطور که دوستان اشاره کردن بعضا به شما احتمال گزارش میده میگه ببین من اینو با احتمال صد صد مطمئنم قورباغه است این یکی رو با احتمال ۸۰ درصد میگم مثلاً کامیون ولی همچنان ۲۰ درصد فکر میکنم شاید اتومبیل باشه و این احتمالات برای ما گزارش می‌کنه و الی آخر و این چیزایی که ما حالا باهاش سرو کار داریم و شما یاد خواهید گرفت دیگه کجا می‌تونن به کار برن توی در واقع ریکاگنیشن و شناسایی علائم چیز حالا شماره ها نوشته های عددی اینکه مثلاً صفر یک دو الی آخر روی متن روی عکسی نوشته شده باشه یا عکسی بگیرید شما بتونید اینو تبدیل کنید بخونید همونطور که الان دارید میبینید

اینستا اینا همه سه هستند و شما چشمتون می‌تونه و مغزتون آنالیز بکنه که اینستن ماشینم تشخیص بده که این سه عددیه و این سه رو شما گزارش بکنه که خب طبیعتاً کاربردش می‌تونه تو سیستم بازشناسی پلاک خودرو باشه یا الی آخر خب حالا اگه ما بخوایم معادلش کنیم با اون چیزایی که تا الان گفتیم اینپوت ما چی میشه میشه همون عکسه ها یک کلاسیفایر ما می‌خوایم طراحی کنیم یه مدل ریاضی ارائه بدیم که خروجی رو به ما چی بده به ما بگه صف یک دو یا نه ها که این میتونه عادی باشه یعنی واقعا صفر یک دو تا نه باشه یا میتونه وان هات کد بشه یعنی یه بردار درایه ای باشه که برای اولش یک باشه بقیش صفر برای دو برای یک درای دومش یک باشه بقیش صفر و الی آخر خدمتتون عارضم که بچه ها من گفتم که شما بخواین یا نخواین وقتی که می‌خواین کار طبقه بندی یا رگریشن یا کلا کارهای حالا ماشین لرنینگ رو انجام بدید باید ورودی عدد

خروجی‌های عددیتونم تفسیر کنید اوکی خروجی عددی من راحت تفسیر می‌کنم من اگه عکس بدم ورودی عددیش تو عکس چه معنایی داره من یه ورودی یه عکس دارم خب من چیو می‌تونم به شبکهم بدم چیو می‌تونم به الگوریتم یادگیری ماشینم بدم که این برام کار بکنه پیکسل‌ها علی دقیق‌تر بگو پیکسل‌ها چیند مقادیر پیکسل‌ها دیگه درسته بچه‌ها همونطور که علی و حالا احسان اشاره کردند خدمت خدمتتون عارضم که وقتی شما یه عکس دارید برای کامپیوتر یک ماتریس دارید من اینو بعداً بازش می‌کنم این ماتریسه مثلاً یه ماتریس ام در انه اگر عکسون سیاه و سفید باشه این فقط یه درایه داره اگه عکستون رنگی باشه سه درایه آر جیبی داره که متعلق به میزان دخالت رنگ های قرمز سبز و آبی توشه و این عددها توی حالت‌های عادیش بین صفر تا ۲۵۵ کد میشن شما میتونید تقسیم ۲۵۵ بکنید تا عددا بین صفر تا یک هم بشن اگر می‌خواید نرمالایز بکنید برای خودتون و حالا

سیاه سیاه میگیرن یکو روشن روشن بعضیا می‌تونن برعکسشم بگیرن و اینو شما می‌دید به کامپیوتر یا میدید به الگوریتمتون و در نهایت این خروجی رو تحویل می‌گیرید درسته خب فرض کنید که این عکس‌ها ۲۸ در ۲۸ باشند پیکسلاشون یعنی ۷۸۴ تا خونه داشته باشه برداری که من به عنوان بردار ایکسم میدم اگه یادتون باشه گفتم این یه برداره یعنی تعداد سطرهاش ضربدر یکه ها چه چیزی رو باید به الگوریتم ماشین لرنینگ بده برای اینکه بتونم شناسایی کنم که حالا این عکس صفره یک تا فلانه یه عکس دارم یه ماتریس دارم ام در ان ولی من گفتم ورودی بردارم چیه ورودی شبکه هام یا ورودی کلاً این کارام یه بردارن یعنی تعداد ستون یا سطر یکیشون یکه چیکار کنم

آها علیرضا اشاره کرد عکسی که گرفتید الان ۷۸۴ تا خونه داره بیاید این خونه‌هاشو زیر هم بچینید ها چیکار کنید این یه مشتی ماتریس دیگه ستون ستون اینو بکارید جدا جدا کنید زیر هم بچسبونید تا یه ستون بزرگ ۷۸۴ تایی به وجود بیاد اینو بدید به عنوان چی ورودی الگوریتم در واقع ماشین لرنینگتون و بخواید خروجی ازش بگیرید خب اینجا دیگه کمترین کارو کردیم کمترین فسوزونیم هرچی اینجا نوشته بودو دادیم به الگوریتم گفتیم خودت برو در بیار اینا صفرن اینا یکن اینا دو ها ولی مثلا تو مثل خونه همونطور که شما اشاره کردید عکس خونه رو آپلود نکردیم بعد قیمتش جلوش بذاریم بگیم آقا خودت برو در بیار نه واقعا یه سری اطلاعاتی که مهم بود و مفید بود چیکار کردیم با همدیگه فکر کردیم استخراج کردیم اینکه خونه چند متره چند تا اتاق خواب داره کدوم منطقه واقع شده کدوم

آسانسور دارد یا ندارد ولی آخر اینا رو لحاظ کردیم و در نهایت فهمیدیم که اینا همه رو قیمتشون چیکار می‌کنه اثر می‌ذاره اما اونچه که شما واقعاً انجام می‌دید بچه‌ها تو این درس و کلاً تو حوزه هوش مصنوعی و یادگیری ماشین اینیه که اینجا براتون نوشتم اگرچه خانواده‌تون حس می‌کنن ما می‌خوایم بهتون ال پی ها رو یاد بدیم نمی‌دونم دوستاتون فکر می‌کنن شما می‌خواید کلاسیفیکیشن یاد بگیرید اون چیزی که شما واقعاً کار می‌کنید اینه وقتی که یه سری دسته وجود دارند از جسم یک و دو یا اجسام یک دو و سه شما میاید تلاش می‌کنید تو فضای فیچر یه باندری یه دیسیژن باندری یا یک مرز تصمیم گیری براشون بزارید و اینا رو بگید هر کی اینور مرزه جز گروه یک حساب میشه هر کی اونور مرز جز گروه دو ها حالا این مرزها میتونن مرزهای صاف باشن مرزهایی باشن که به صورت خطی تفکیک پذیرند و یا ما تصمیم می‌گیریم خطی تفکیک

خطی نشه تفکیکشون کرد یا اگه خطی بخواهیم تفکیکشون کنیم خطاهای زیادی داشته باشیم یعنی من اینجا یه خط بکشم باید بپذیرم که یه سری از این سبزها می‌افتن سمت قرمزها و میام مرزهای منحنی شکل لحاظ می‌کنم بعضی مرزها می‌تونن خیلی منحنی باشن حتی مرزهای بسته باشن دایره‌ای شکل باشن مرزها میتونن کانکتد نباشن یعنی مثلاً فرض کنید اینجا یه مشتی دایره سبز رنگ دارید اونور هم مثلاً یه مثلث سبز رنگ هم باز داشته باشید یعنی چه تو این دایره بیفتی چه تو اون مثلث بیفتید سبزید سایر جاها قرمزید ها و هدف ما تو این درس اینه که این مرزها رو بسازیم ها این منحنی های آبی رنگ رو باید تشکیل بدیم ما و جدا کنیم سگ و گربه رو از هم خر و گاو و از هم ها نمیدونم دست چپ و راست از هم و الی آخر یه ماجرای دیگه بچه‌ها ایکس یک ایکس دو تا ایکس ان نماد فیچرها اند نماد همون چیزای اند که قرار بود رو خروجیم

بزارد خوب یه توافق بکنیم با هم چون ما بیشتر از دو یا دیگه نهایتاً سه بعدی بیشتر نمی‌تونیم ببینیم من وقتی یه مثالی میزنم فقط از دو تا فیچر استفاده می‌کنم حتی اگر تو اون مسئله بیش از دو فیچر استفاده شده باشه مثلاً تو این مسئله دست خط ۷۸۴ تا خونه عدد شما دادید یعنی ۷۸۴ تا فیچر دادید ولی من نمیتونم همزمان همه رو با هم پلات کنم نهایتاً دوتاشو با همدیگه براتون رسم می‌کنم یا نهایت نهایتش سه تاشو رسم میکنم محور سوم برای خودم کنار گذاشتم که خروجی یا وای پلات کنم ها اینا تازه ایکس درسته حالا اینجا نیازی نبود خروجی یا وای و پلات کنم چرا اومدم چیکار کردم با رنگ سبز و یا ضربدر و دایره مشخص کردم این همون نماد چیزه دیگه خروجیه دیگه مثلاً ما گفته بودیم آقا وای اگر یک باشد سبز بشه منفی یک باشد یا صفر باشد قرمزش کن ها میتونه مثلاً تو بیشتر باشه مثلاً فرض کنید که پنج تا شش تا کلاس اتفاق بیفته داشته باشید و مثلاً میخوید

قطار از ماشین از حیوان جدا کنید و یه مرزهای عجیب غریب‌تر حالا چه خطی چه غیر خطی بکشید و الی آخر و این کاری که باید تو این درس ما انجام بدیم مثال از رگریشن من اینو میگم بعدش از خودتون مثال می‌زنیم همون قیمت خونه رو مثال بزنیم سایز سن خونه منطقه و الی آخر همه میتونه رو قیمت تاثیر بذاره اینا همه میرن به عنوان فیچر میرن تو اون بردار ایکس ورودی میشینن یه مدل ما باید سعی کنیم در بیاریم که بتونه چی اون خروجی رو بده اولش رو چی میدیم اول یه سری داده داریم میایم با اون داده هایی که داریم و این ورودی ها یه مدل استخراج می‌کنیم بعداً رو داده هایی که برامون جدید میاد و ما ندیدیم تو مدلمون تست می‌کنیم ببینیم که چقدر اینا خوب عمل میکن مثلاً فرض کنید اگر رفته باشید فقط یه خونه رو قیمتشو بر حسب سایزش همین فقط متراژش چقدره پلات کنید اصلا منطقه و اینا برامون مهم نباشه و چه می‌دونم ۳ ۶ ۸ تا داده داشته باشم من میتونم چیکار کنم میتونم یه مدل

فرض کنم که یه خط رسم بکنم و حالا چه اینترپولیت کنم اگه بینابینش کسی بهم گفت خونم اگه انقدر فوت بخوام باشه انقدر فوت مربع چقدر مثلاً دلار خواهد بود یا اکستراپلیت بکنم حالا اینکه چقدر خوب در بیاد یا نیاد ماجرای بعدی اینکه مثلاً یه داده گرفتید از یه سنسوری از یه وسیله ای یه همچین منحنی های به شما داده و فقط هم فرض کنید یه دونه فیچر مهم داشته مثلاً فاصله فرض کنید یه سنسور فاصله سنج داشتید ولی سنسور خطی عمل نمی‌کرد و شما هر چی دورتر میشدید یا نزدیکتر میشدید یه همچین رفتاری داشت و شما میرید بهترین در واقع رگرسیون که میتونید ازش رد می‌کنید یا نمونش نمونه خطیه اگه دو نقطه داشتید دقیقاً یه خط ازش میگذشت ولی اگه بیش از دو نقطه داشته باشید همونطور که توی دروس مختلففتون من جمله بچه‌های خودمون تو این گروه هستند درس اندازه‌گیری مثلاً یاد بگیرن خدمت شما دیدن این که میان بهترین خط عبوری و رسم می‌کنن درسته و اینا مسائل

وسایل بهینه سازی به ماشین لرنینگ نداره و فقط شما می‌خواید یه بهینه‌سازی حل بکنید احسان جان ارادت دارم انشالله که بد و بیراه تیکه ننداخته باشی به اون راستی یادم بندازم جواب سوالتم راستی بدم زیردریایی که پرسید رفتم یه سری داده جدید گرفتم حالا بهت میگن خب خدمت شما عرض کنم که پس در مجموع در مجموع اگر کامپنت های سوپروایز لرنینگ رو بخوایم مدل کنیم بیان کنیم ما این مسیر رو داریم یک یه مجموعه داده‌ای باید از ورودی بهمون بدن هر چی بیشتر بهتر بچه‌ها شبکه‌های عصبی مدل های یادگیری ماشین به خصوص شبکه‌های عصبی عمیق اشتهاشون بی‌نهایته شبکه‌ها عصبی همینقدر هرچی داده بدید می‌گیرن ازتون ها و نه نمیگن و می‌تونن هی مدلشون رو بهتر و بهتر بکنن ما برچسب هم میزنیم میدونیم که برچسب زدن هزینه داره برای ما یا باید پول بدیم انجام بدن خب مثلاً فرض کنید تو گوگل اگه می‌خواستن این کارو بکنن خاطر اینکه نیروی انسانی تو آمریکا گرون بود بعضا اینا رو

افرادی تو هند می‌دادن چرا مثلاً چون تو اونجا به افراد ساعت ۱ دلار میدادن مثلا عکس سگ و گربه و فلان و فلان بهشون می‌دادن می‌گفتن آقا لیبل بزن بگو سگه گربه است یا نیست یا فلان فلان و بعضی وقتا نمیدونم دیدید یا نه بعضی از سایت‌ها مثل فیسبوک و اینا مثلاً می‌رید واردش میشید حالا پسورد اشتباه بزنید یا نه شما رو به کار می‌گیره مثلاً عکس چراغ راهنما می‌ذاره براتون میگه بگو کجاش چراغ راهنما هست یا نه و شما ناآگاهانه یا آگاهانه دارید براش کمکش می‌کنید لیبل میزنید براش چون اگر میخواد خود خودش انجام بده باید پول بده خب و حالا این پارادایم های دیگه اینجا به وجود میاد به نام آن سوپروایز لرن سوپروایز لرنینگ و ریفرسمنت لرنینگ اینا که ما فعلا کاریش نداریم حالا اگر لازم شد سوسکی و هر کدومشون یه مراجعاتی خواهیم داشت می‌گیم ولی فعلا بیان سوپروایز لرنینگ یعنی ما ورودی ها رو که میدیم خروجیش هم داریم اوکی هدف بعدی ما اینه که یه تابع پیدا کنیم که فضای ورودیون رو به خروجی بفرستد کل هدف ما اینه یه تابع عددی پیدا بکنیم که ایکس رو بهش میدیم آیا بهمون بده بعد ما تفسیرش کنیم

خدمت شما عارضم که تو این راه ما کاندیداهای مختلفی داریم فرمول‌های مختلفی می‌تونیم به کار بگیریم می‌تونیم از توابع خطی یا توابع غیر خطی به خصوص توابع غیر خطی خاصی استفاده کنیم که جلسه آینده معرفی میشن امروز هم یه اشاره‌ای بهشون خواهیم داشت و خدمتتون عارضم که ما باید الگوریتم های مختلفی رو به کار بگیریم که خوب این کار را انجام بدیم بیشتر تمرکزمون اصلا الگوریتم های کلاسیک ماشین لرنینگ نیستند مثل sp ام مثل رگریشن و الی آخر نیستند ما میریم الگوریتم های مدرن تر یه دفعه میپریم وسط چهار متری و از نیورال نتورک ها شروع میکنیم و بعدش وارد دیپ لرنینگ میشیم و پامون رو رو پا میندازیم و وایمیستیم که اون برای ما تصمیم بگیره حالا بهتون میگم کجا چه فرقی میکنه و در نهایت همه این کارا رو که کردیم باید ببینیم مدلون چقدر خوب کار کرد ها وشن داشته باشیم و اینکه به خصوص مدل وقتی خوب کار میکنه که بتونه روی مثال های که ندیده خوب عمل کنه اگه مثال های که دیده رو بگه که فقط میتونه حفظ

جدید بهش میدی اگه تونست بگه این هنر کرده اصلاً هنر شما به اینه به خاطر همین بعضی وقتا این کارو ما می‌کنیم اگر مثلاً هزار تا داده داشته باشیم ۸۰۰ تاشو برمی‌داریم مدل می‌سازیم خودمون ۲۰۰ تاشو خرج نمی‌کنیم می‌ذاریم مدلو باهاش ارزیابی می‌کنیم ها و یا یه کارای دیگه‌ای می‌کنیم که به موقعش خدمتتون میگم ولی بعضی وقتا مسابقه شرکت می‌کنیم مثلاً یه مشتی داده به ما میدن میگن همه برای خودت یه هزار تا اون یارو پیش خودش نگه داشته به نمیده میگه مدلتو بفرست من بهت میگم مدللت رو اون هزار تایی که من بهت ندادم خوب کار کردی یا نه اگه خوب کار کرد حالا برنده میشی جایزه میگیری مقاله چاپ میشه و الی آخر اوکیه و پس ما حواسمون باشه این ترینینگ ست بعضا ممکنه مجبور باشیم پس انداز هم بکنیم و به یکی یا دو دسته دیگه بشکونیم به نام ولیدیشن ست و همینطور تست ست که اینا رو نگه دارید و انشالله به موقعش براتون می‌گیم بخوام جمع بندی کنم

حساب الگوریتم یا الگوریتم‌های سنتی ماشین لرنینگ این بوده که برن یک تابع یا یک مپینگ یک نگاشتی از فضای ورودی یا فضای ویژگی‌ها به خروجی ها پیدا بکنند ولی لازمش این بوده که بیان به شکل خیلی دقیقی چیکار کنند هند دیزاین فیچرها یا فیچرهای دست ساز رو قبلش استخراج بکنن مثل همون کاری که شما برای خونه کردید خوب ولی ما استان فارسی‌ها همیشه دوست داریم که راه‌های ساده‌تر رو انتخاب بکنیم نیورال نتورک ها یا بعد از اون شبکه های عمیق خودشون اصلاً یاد می‌گیرن فیچر اکسترکت بکنن ها ویژگی در بیارن یعنی خودش بره در بیاره که چه چیزهایی مهمه مثلاً این عکسو بهش بدی اینکه چه بره دربیاره توش گردالی وجود داره خط راست اینجا منحنی اینو واگذار

به خودش ها شما اگه می‌خواستید دستی این کارو بکنید باید اینا رو لحاظ می‌کردید دیگه یعنی یکی ازتون می‌پرسید آقا فرق ۲ و ۴ برای تو چیه غیر این ورداره یه جایی اینجا افقی میشه چاره یه جور دیگه است و فلان و الی آخر و اجزای تشکیل دهنده‌اش متفاوت یا مثلاً ۸ چی دو تا گردالی به هم چسبیده است ها قدیم آدم‌ها باید می‌نشستن فیچر استخراج می‌کردن تو جدول‌ها راه می‌دادن بعدش می‌رفتن الگوریتم های سنتی ماشین لرنینگ رو میزدن چی حالا کلاس انجام بدن ولی الان چیکار میکنن الان سر و ته داستانو فقط شما بتونی ورودی هاتو عددی بکنی بدی به یه سیستمی که خیلی هم نمیدونی توش چه اتفاقی میفته ما اسمشو شبکه عصبی می‌ذاریم یه پله بالاتر اسمش شبکه عصبی عمیق میزاریم اون به شما همین خروجی ها را میده مثلا از این بالاییه مثال بزنم اگه میخوید یک و پنج از همدیگه شناسایی کنید یکی از راه های که به ذهن می‌خورده این بوده گفته آقا یک متقارن نسبت به خط افق من یه معیار

عددی معرفی می‌کنم که هرچی خدمتتون عارضم در واقع نصفه بالاش نسبت به پایینش متقارن باشه اون فیچره بره بالاتر و اون فیچره رو اسمشو ایکس دو میزاره و میگه اینتنسیتی شدت رنگ‌هایی که دارم میبینم یعنی میزان سیاهی رنگ‌هایی که تو این عکس های با طول های برابر وجود داره برای پنج بیشتر از یکه اینم می‌ذارم یه معیار پس ایکس یک رو اسمشو می‌ذارم شدت رنگ ها ایکس دو رو می‌ذارم تقارن میام برای کل یک و پنج اینا رو رسم میکنم اتفاق جالبی میفته به خوبی این دو تا احتمالاً می‌تونن تفکیک کنن مثلاً می‌بینید این آبی ها که یک باشن بالا جمع میشن قرمز ها پایین جمع میشن و احتمالاً شما یه مرزی بکشید حالا یه مرز خطیه یه مرز منحنی بتونید بکشید یک و پنج رو چیکار می‌کنید شناسایی می‌کنید ها ولی بازم با این وجود خطاهایی دارید چرا مثلاً فرض کنید یکی پنجشو اینجوری می‌نویسه اینقدر فشرده نوشته یه چی شده یک کلفت شده ها یا مثلاً این یکشو خیلی کلفت می‌نویسه

از اینور مثلاً خیلی ضخیم می‌نویسه و مثل ۵ تعداد خونه‌هایی که سیاه میشن زیاد میشن اشتباهی فکر می‌کنه پنجه و این سبب میشه که توی یه جای دیگه قرار بگیره و خب این شانس های خطاب بهتون میده ولی ممکنه شما یه میزانی از خطا رو بپذیرید به خصوص وقتایی که با جون آدم سرو کار نداره خب یه سری جاها خطرناکه مثلاً شما نمی‌تونید وقتی که دارید ارزیابی می‌کنید یه مشتی داده از آدما می‌گیرید بعد بهشون بگید سرطان دارید یا ندارید اشتباه بهشون بگید به خصوص به آدمی که سرطان نداره بگید سرطان دارید می‌کشید طرفو خب و حق ندارید یه سری خطاتون از یه میزان بالاتر بره و این کار میکنیم خدمت شما عرضم که وقتی دو تا کلاس داشته باشیم خدمت شما عارضم که فرض کنید من یک کلاسیفایری طراحی کردم مثلاً من این سگ و گربه خب که میتونه ۴۳ درصد به من درست بگه بچه‌ها به نظرتون من چقدر موفق بودم حس و حالتونو بگید من یه کلاسیفایر طراحی کردم که سگ و گربه رو دارم شناسایی می‌کنم ۴۳

۴۳ درصد از عکس‌هایی که من میدم به اون الگوریتم این درست تشخیص میده که سگه سگ سگ اگه سگ بدم سگ بگه اگه گربه بدم گربه بده ولی گربه بدم سگ بگه یا سگ بدم گربه بده اشتباه گفته فکر می‌کنی چقدر خوبه ۴۰ درصد چقدر خوبه هیچی امیرحسین چرا خوب نیست آفرین این میگن در واقع شانس احتمال ۵۰% بوده خب یعنی شما سکه مینداختید می‌گفتید که این عکس سگه یا گربه است پنج درصد دقت داشتی خب خیلی خوشحال نباشید توی مسئله دو کلاسه مثلاً احتمال شانس هم نتونید برسید و شما باید به عددهای خیلی بالاتری برسید و شاید تو الگوریتم های کلاسیک مثلاً ۷۰ ۸۰ درصد هم می‌رسیدن راضی بودن ولی مثلاً دیپ لرنینگ ها که داده های خیلی خیلی زیادی میدن اصلا به زیر ۹۰ و خورده‌ای واقعاً بعضا راضی نمیشن و دیگه اینقدر خرج کردن که باید بتونن نونشو بخورن اینا تمام مسائلی بود که در مورد ماشین لرنینگ بچه‌ها

خدمتتون بگم به نظرم همین قدر کافیه اینا جزئیات خیلی زیادی داره خب و اینا رو تو درس‌های مختلفی درس میدن به خصوص اینکه تمام این چیزایی که گفتم ریاضی داره ولی این جمله رو میگم یه تنفس چند دقیقه‌ای می‌کنیم و بعدش ادامه میدیم و نمیدونم انشالله که از ما خورده نگیرید تا حد امکان بمونید من تو ذهنم بود چهار و ربع تعطیل کنم ولی اگه بتونیم بیشتر بمونیم حالا به چهار و نیم نزدیکتر بشیم برای من بهتر خواهد بود به خاطر اون تعطیلی که داشتیم خب من یه چیز میکشم یه لحظه تختمو میارم بالا اولین بار میخوام از اینم استفاده کنم امیدوارم موفقیت آمیز بتونم عمل بکنم خدمت شما عارضم که تونستم خب بچه‌ها من اینو می‌کشم یه مشتی داده دارم خب و دو تا فیچر مهم هم دارم و یه

داده اینجا دارم اینا رو با گردالی نشون میدم حالا این گردالی و ضربدر نمادی از دو تا گروه مختلف مثلاً من فرض کنید که می‌خوام خانم و آقا را از هم شناسایی کنم عکس بدم به ورودی بگم که خانم یا آقاست دو تا فیچر معیار قرار میدم مثلاً چه میدونم فرض کنید مثلا ریش داشتن و مثلاً نداشتن یا یه چیزی که بشه عددیش کرد و یا اینکه حتی به صورت گسترده مثلاً طول مو مثلا فرض کنید یه همچین چیزایی و اینا رو رصد بکنم بچه یکی یکی ازتون می‌خوام دست بالا بگیرید من بهتون دسترسی قلم می‌دم خب و شما با ماستون یه مرز برای من بکشید اینا رو از همدیگه جدا کنید این گروه ضربدر رو از گروه دایره جدا کنید بچه‌ها کی دست بالا می‌کنه با موسون قلم نوری هم نداشته

خانم گودرزی ببین من دسترسی بهتون بدم به نظرتون میشه الان می‌تونید بکشید یه مرز برام بکشید که چیزو از این دایره‌ها رو از ضربدرها جدا کن خیلی ممنون عالی خب دیگه کی یکی دیگه فرشاد خیلی ممنونم خانم گودرزی عرض خیلی خفنی کشیدید من این البته مرز خوبی نبود چون الان قرمز دایره ها و چیزها از هم جدا نشدن ضربدر یعنی موس اینجوری شد یه مرزی برام بکش که اینا رو از همدیگه جدا بکنیم دستت بالاست ببخشید من به دسترسی بدم بفرمایید فرشاد خودت می‌تونی قلمتو فعال کنی حالا میتونیم آها مثلاً اومدی تکمیل کرد آها فکر کردم

موستون شاید ایراد داره ایرادی نداره رامتین کمکم کنه تا حالا تا فرشاد میاد رامتین خب اوکی من تقریبا به چیزام رسیدم آقای محمد بیگی هم برام بکشید بعدش دیگه چیز کنیم آها شما الان چیزی که داریم می‌بینیم دیگه الان ایکس دو خب باریکلا خیلی ممنون همه چیزایی که خواستم پوشش داد خیلی ممنونم ازتون بچه‌ها مرزی که خانم گودرزی کشید یه مرز خطی بود و یه اتفاق جالب افتاد نمی‌دونم خودتون حواستون بود یا نه خانم گودرزی من این اطلاع ندارم شما با ماشین لرنینگ از گذشته آشنا هستید یا نیستید آیا چیزی به عنوان اس میشناسید خیر sbm یکی از الگوریتم‌های تردیشن

سنتی بسیار بسیار معروف ماشین لرنینگ بچه‌ها وقتی دو گروه بهش می‌دید که می‌تونه خط بکشه اون میره خطو بین این دو تا می‌کشه یعنی مثلاً خطشو نرفت به دایره یا ضربدران نزدیکتر بکشیم ساده‌ترین بیانی که می‌گفتم ایشون اینو رعایت کردن حالا جالبه آدم‌ها اینو خیلی راحت می‌بینن به راحتی هرچه تمامترم اینو می‌کشن ولی شما برای کامپیوتر بخواید اینو بگید پوستتون کندست یعنی انواع بهینه سازی ها انواع تو سر خودتون زدن‌ها رو دارید تا کامپیوتر براتون خط بکشه ولی بعدش که یاد گرفتی دیگه خب اوکی یاد گرفته دیگه میگه هرکی بالاترشه دایره است هر کی اینورترشه فلان اون چیزی که چیز کشید رامت کشید یه مرز منحنیه سوال هم همین بود آقا برای چی خط صاف بکشیم من ممکنه دلم بخواد منحنی بکشم و حدس بزنم که این اتفاق میفته شما هنوز یه سری داده ندیدم یعنی ممکنه عکس یه سری خانم و آقای دیگه بیاد که این فضا رو بخواد پرتر کنه و من نمیدونم کار خانم بالاخره گودرزی و رامتین چه

چیزی که الان در موردش می‌تونم بگم اینه که چی اینکه جفتشون ترینینگ پرفورمنسشون صد درصده خب یعنی اینکه هیچ خطایی ندارن دیگه هیچ کدوم از گروه‌های اینور تو اون ور نیفتاده بودن و اون چیزی که آقای محمد بیگی کشید یه فضای بسته بود اینم خیلی چیز جالبیه و این انتظار جذابیه که الان بچه‌ها ما دنبال روش‌هایی هستیم که به ما هر سه توانمندی که الان کشیدید رو بده هم خط راست بهمون بده بکشیم هم اجازه بده منحنی بکشیم و اجازه بده چی اجازه بده منحنی های بسته بکشیم من اون چیزی که وجود داره خیلی ازتون ممنونم و کاملا به هدفم رسیدم برگردیم سر کار اما می‌خوایم بریم سر درسمون تازه اینم باز درس مون نیست یعنی باز هم خدمتتون عارضم که مقدمه بر دیپ لرنینگمونه ولی دیگه چاره ای نداریم بگیم ما می‌خوایم بچه‌ها با شبکه عصبی آشنا بشیم شبکه عصبی یکی از زیر مجموعه های یادگیری ماشین یا ماشین لرنینگه یکی از روش‌هاشه ولی یک روش بسیار قدرتمند بسیار پرطرفدار و ما دیگه به روش‌های دیگه الان کاری نداریم اوکی

خدمتتون عارضم که شبکه‌ها از یه سری واحدهای ساده یا بیسیکی به نام نرون یا پرسپترون تشکیل شدند که قراره برای ما کارهای عجیب غریب بکنه خب هدفشم مثل الگوریتم‌های یادگیری ماشین اینه که یه تابع یاد بگیره از فضای ویژگی به فضای چی برچسبمون باز مثل قبلاً اینجاش فرقی نداره یعنی شما یه سری ویژگی بهش میدید یه برچسب بهش میدید و اون باید یاد بگیره برای ما یه تابع f فوق فوق پیچیده برای ما بعضاً تخمین بزنه یعنی به ما بگه که این صفره یا یک یا دوئه اون دست نوشته یا بگه این سگه یا گربه است واقعا چیز آسونی نیستن یعنی به ماشین شما نمی‌تونید بگید برو نمی‌دونم اینجا یه منحنی گردلی بهش فیت کن اگر شعاعش این بود مثلاً این کله یک گربه است اگر بیضی بود فلانه واقعا چیز آسونی نیست یعنی فیچر درآوردنش خیلی کار وحشتناک سختیه خب و ما اینجا پا رو پا میندازیم در حالی که کاپوچونومونو داریم میل میکنیم

E:\courses\LangChain Project\main root\data\SCR_Session04_transcript_part3.txt

ایکس همونطور که گفتیم اینپوت یا فیچر اسپیس یک وکتوره یک برداره میتونه کانتینیوس یا پیوسته باشه میتونه دیسکریپت باشه میتونه صفر و یک باشه بله خیر باشه مثلا اینکه این خونه آسانسور دارد یا ندارد یک صفر همین یه همچین چیزی می‌تونیدم قد و قواره آدم باشه عدد بدید و وای هم میتونه چی باشه یک دونه عدد یا چند تا باشه خودش میتونه دیسکریپت یا چی باشه کانتینیوس باشه گفتیم اگر دیسکریپت باشه اسمشو میذاشتیم عموما رگریشن عموما کلسیفیکیشن یعنی میگفتیم که اوکی این سگه گربه است فلانه گروه یک یا دو یا سه هست یا اگه کانتینیوس باشه مسائل رگریشن مثل قیمت خونه قیمت ماشین قیمت تخمین طلا در روز آینده و قیمت ارز الی آخر اینا در آینده این همه که توابع پیوسته هستند چی اند از مسائل رگریشن حساب میشن توجه تابعی که گفتیم میتونه چند وجی خروجی باشد و در ضمن یه

جذابی که چرا ما رو دور هم آورده و شبکه عصبی برای ما مهندس مکانیک می‌تونه جذاب بکنه اینه که این شبکه‌ها می‌تونن از توابع خیلی خیلی ساده بعضاً خطی براتون تقریب بزنن و خودشونو به توابع غیر خطی فوق پیچیده و حتی حاصل معادلات دیفرانسیل اودی یا pdf یا دستگاه معادلات دیفرانسیل برسونه و این چیزیه که یه دفعه جذاب میشه شما نگاه که می‌کنید می‌بینید ما تو کل کتاب های درسی کتاب خوندیم با تابع سروکار داشتیم و حالا می‌تونیم ببینیم که تقریباً تمام بخش‌های مختلفشو می‌تونستیم اگه دلمون بخواد با شبکه‌های عصبی جایگزین بکنیم مدل‌هایی بذاریم که چی اونم برای ما این کارو بکنه البته چالش داره ولی چی ولی خدمتتون عارضم که شدنیه و در ضمن هرگز توابع غیر خطی رو دست کم نگیرید من بیام یه سوال فکر می‌کنم وجود داره بشنوم و بعدش در خدمتتون باشم احسان جان سلام وقت شما بخیر در خدمتتون هستم

چند ورودی و چند بله یعنی اینکه هرو میتونه چند تا خروجی داشته باشه الان که نرسیدی من اسلاید بعدی من نرون خودش یک خروجی داره یک خروجی داره ولی من میتونم تو لایه آخرم بیش از یک پرسپترون بزارم یا میتونم کلا تابع چند شاخه کنم حالا شبکه عصبی چند شاخه کنم آره حله بریم خدمت شما دوستان گرامی عارضم که طبیعتا کلمه شبکه عصبی در درجه اول شما را باید یاد مغز آدم یاد آدم بندازه خب اگه بخوایم یه مقایسه اجمالی داشته باشیم کاری که همه کتاب ها و همه کسانی که یک بار پی رو درس میدن همین شبکه های عصبی درس میدن میگن این که یک بار مغز با شبکه های عصبی مصنوعی مقایسه میکن اما من واقعا میخوام از دیدگاه دیگه بهش نگاه کنم بچه‌ها مغز جهت اطلاعتون جهت اطلاع اون همونطور که می‌دونیم شبکه بسیار بسیار بزرگ از سلول های عصبی

نرون‌هاست منابع می‌نویسند حداقل دارای ۱۰۰ میلیارد نرونه که اجزای تشکیل دهنده‌اش باشند و هر نیرون می‌تونه در حدود ۱۰ هزار اتصال به نیرون‌های دیگه داشته باشه بسیار پدیده بسیار چیز پیچیده‌ایه بچه‌ها دهه‌ای که توش بهش میگن دهه مغز و قراره واکاوی کنند شناسایی کنند هر چیزی که در مورد علوم شناختی مغز و واسطه‌های مغز رایانه است تو ایمرجینگ تکنولوژی قرار گرفته و تخمینشون اینه که تا ۲۰۲۹ خیلی خیلی اطلاعات فوق خفنی از مغز داشته باشن و حالا اگه ذره بین بندازیم ما به سلول های میرسیم که بهشون میگن نیرون یا سلول های عصبی بسیار چیز پیچیده‌ای اند انواع جزئیات دارند ولی اگه بخوایم به بیان ساده بهشون نگاه کنیم سه جزء اصلی دارن که همیشه هستند و اون سه جز چیه یکی بهشون میگن دندریت ها که ورودی های در واقع سلولن و به سلول های خروجی های سلول های دیگه وصل میشن یه بدنه سلول دارند که انواع

پردازشی انجام میده بالاخره خبر میده یعنی اینه که تصمیم می‌گیره بالاخره این سلول فعال باشه یا غیر فعال باشه به سلول بعدی خبر بده که من فعالم یا نیستم ها فعالیت‌های عصبی مغز مختلفی که انجام میدید قشرهای مختلف مغز رو درگیر میکنه حالا مرتضی معماری اینجا هست مثلاً فرض کنید که وقتی دست چپ و راست رو بالا می‌برید یه قشر از مغز ممکنه فعال بشه یه بخش های از مغز فعال بشن اگر تجسم بکنید به اینکه دست چپ یا راست و بالا می‌برید یه جور دیگه است اگر یه کار دیگه بکنید باز یه جور دیگه خواهد بود و الی آخر توی خواب ممکنه یه بخش دیگه باشه و خدمتتون عارضم که نیرون ها میتونن فعال یا غیر فعال باش یا حالا به مرور این کار بکنند و نمیدونم در مورد اسپایک شنیدید یا نه اینکه وقتی فعال میشن اسپایک میکن قطارهای اسپایکی به وجود میان و الی آخر و اون پدیده های پیچیده که علاقمند باشید میتونید پیگیری بفرمایید تو دروس مربوطه یا به صورت در واقع کنجکاوانه سرچ بزنید و پیگیری کنید و یه چیز دیگه دارم به نام آکسون که این شاخه است حالا نمیدونم این چرا نمیره پایین رفت خدمتتون عارضم که اینم خروجی

اتفاقاتی که افتاده رو به بیرون خبر میده و وصل میشه حالا با یه فرایندهای پیچیده در واقع بیوزیستی زیستی در واقع وصل میشه به سلول‌های دیگه و حالا اونا هم که تصمیماشونو می‌گیرن این شبکه عصبی مصنوعی خالق خدای یکتا خدمتتون عارضم ان سال قبل ولی در مقابلش ما چی داریم یه مشت گردالی داریم یه مشت خط به هم وصلن یعنی نهایت فلش خب ملت اسمشو گذاشتن شبکه عصبی مصنوعی مثلا الگوبرداری کردن از شبکه عصبی طبیعی ولی واقعا این الگو برداری بچه ها فقط ظاهری یا طاهری نقطه داره خب و واقعاً بیشتر از این نیست یعنی شبکه های عصبی مصنوعی خیلی شجاعت میخواد که بگید از دارن شبکه های عصبی طبیعی پیروی میکن اصلا من همچین شجاعتی ندارم به نظرم شما هم این کار نکنید نگید بع بهتون میخندن خدمتتون عارضم که همونطور که اون برادر قبلیمون یه چیزی به نام نرون داشت که خیلی

مربع میشه ناراحت نشید این گردالی هم برای ما بچه‌ها سه کار می‌کنه بیشترم شبیه سازی کردیم الگوبرداری کردیم اینه که یه چند تا ورودی میتونه داشته باشه خدمت عارضم که اونجا انواع اتفاقات می‌افتاد سلول تصمیم گرفت فعال سازی داریم خروجی داریم پس گردالی ما واحد سازنده ماست اونم چیزه خدمت شما عرض کنم نرون طبیعی بود این یکی ساخت بشر دو پا از تاریخ تاریخ ۱۹۴۰ تقریبا شروع شده حالا اومده جلوتر و تاریخچه داشته که من آگاهانه و عامدانه به خاطر کمبود وقتمون دیگه بهش نپرداختم بچه‌ها ما چند تا جمله فارسی می‌گیم ولی هنوز درس رو ندادیم و نگران نباشید یکی یکی بهش وارد میشیم هیچ نگران نباشید و با جزئیات بررسیش می‌کنیم فرضیات پایه شبکه‌های عصبی مصنوعی از این به بعد بچه‌ها ما آرتیفیشال نورال نتورک شبکه های عصبی مصنوعی داریم که ممکنه من کلمه آرتیفیشالش ننویسم یعنی از الان به بعد نورال

نماد شبکه‌های عصبی مصنوعیت خب به قرینه دیگه حذف شده ۱ پردازش اطلاعات در اجزای ساده‌ای با تعداد زیاد به نام نرون‌ها یا پرسپترون‌ها اتفاق می‌افته نرون‌ها اجزای ساده یا گردالی‌ها اجزای ساده‌این ساده‌ترین اجزای مان که ما می‌خوایم بررسیشون کنیم اصلاً چی‌اند چیکار می‌کنن برای ما ولی یادمون باشه که یه شبکه قراره از تعداد زیادی از اینا استفاده بشه سیگنال در بین نیرون‌ها از طریق پیوندهای اتصالاتش منتقل میشه هر گردالی به یک گردالی دیگه با یه خط بچه‌ها وصله ها به اینا میگیم پیوند یا اتصالات بچه‌ها به این شکل اجازه بدید بگم وانیلی ساده یا ساده ترین شبکه عصبی که میشه داشت توش چه اتفاقی میفته هر نیرون فقط و فقط به در واقع نیرون های لایه بعد وصله ولی وصله ها یعنی هیچ نرون آبی اینجا نمی‌بینید که به نرون دو تا آبی بعدش وصل باشه

ولی هر کدوم از این گردالیا به تمام نیرون‌های بعدی وصلن و یه شبکه فیت فورواردو تشکیل دادن به این بچه‌ها میگن وانیلی ساده دیگه از این ساده‌تر نیست ولی حالا خودتون می‌تونید تخمین بزنید که آقا اوکی اگه از این آبیه به اون آبی دو تا قبلی فیت فوروارد یا فیدبکی وجود داشته باشه می‌تونه شبکه پیچیده‌تر بشه احتمالاً کارکرد بیشتری هم خواهد داشت ولی احتمالاً محاسبات بیشتری هم خواهد داشت و احتمالاً هم در واقع حوزه استفاده متفاوتی خواهد داشت که بهش میرسیم تو شبکه نگران نباشید خب ما فعلا با وانیلی ساده شروع میکنیم بعدی اینه که هر کدوم از این خطا یه وزن یا ویت بهشون نسبت داده میشه که توی شبکه‌های عصبی رایج شما بخونید بالای ۹۹ درصد مواقع قراره چیکار کنن در مقادیر قبلیشون ضرب بشن ها ولی آیا فقط ضرب میشن نه پاسخ اینجوری نیست می‌تونیم شبکه‌های دیگه‌ای هم داشته باشیم که الان فعلاً از محدوده بررسی ما خارجن ولی کاری نداره

بعداً پایه ادبیات پایه رو بدونید می‌تونید برید برای خودتون اوناارم بخونید ماجرای بعدی اینه که هر نرون یک تابع فعال سازی یا اکتیویشن فانکشن داره که بعد از اینکه ورودی‌ها اومدن توش در دبلیوها ضرب شدن و به عبارتی یک در واقع تابع وزن داری از ورودی‌ها یا ضریب وزن داری از ورودی‌ها بهش وارد شد اکتیویشن فانکشن وارد عمل میشه و به شما میگه که خروجی برای سلول خروجی تولید میکنه برای نرونتون حالا این سلول خروجی می‌تونه در شکل‌های خیلی ساده صفر و یکی باشه ها تم کلاسسیفیکیشنی میتونه باشه یا میتونه تم احتمالاتی داشته باشه یا میتونه چی قیافه رگریشن به خودش بگیره و مقادیر متفاوت و هر مقداری رو به خودش داشته باشه توابع فعال سازی یا اکتیویشن فانکشن ها به دلایلی که در آینده خواهیم گفت و خواهید دید

اکثر قریب به اتفاق غیرخطی هستند بخونید ۹۹/۹ درصد مواقع غیر خطی هستند حالا چرا بهش می‌رسیم بارها و بارها این جمله من تو جزمه نوشتم الان سه چهار بار باید امروز ببینید خب این شبکه عصبی ماما طراحیش کردیم رسالت زحمت و هدف اصلی ما چیه یافتن تمامی این وزن‌ها یعنی این wهایی که رو هر خط الان باید نوشته می‌شد و نوشته نشده یا تو کد ما باید موجود باشه کار شماست تمام زحمت اینه باید دبلیوهایی رو پیدا بکنید که وقتی یه سری ورودی بهش میدید خروجی های متناسب با اون چیزی که شما می‌خواید رو بهتون بده و کل چالش و دغدغه آدم‌ها و محققین این حوزه اینه حالا بهتون بگم انواع روش‌ها براش اومده که ما بعضاً معرفیشون می‌کنیم شاید عمق ندیم بهش وارد نشیم و به خودتون واگذار بکنیم چون فرصتش نداریم ولی بدونید که

چالش اساسی این بوده خب فعلاً اینا رو پیش من در نظر بگیرید بچه‌ها من برای ایکس‌ها و برای w هیچ مرزی قائل نیستم یعنی ایکس‌ها می‌تونن از منفی بی نهایت تا مثبت بی‌نهایت و دبلیو از منفی بی‌نهایت مثبت عدد بگیرن برای خودشون اوکی فعلاً اینو در نظر بگیرید اما یه امای جلوشه که می‌تونه حالا خرابکاری بکنه و بهتره چه کارهایی کرد که باز دوباره باید وایسید تا به شبکه‌ها برسیم تا بهش اشاره بکنیم خب بریم سر پرسپترون یا ساده ترین المان خدمتتون عارضم شبکه‌مون نحوه اتصال نیرون‌ها برامون مسئله نیست خانم احمدی فعلا فرض بر اینکه هیچ نرونی تو هیچ لایه به خودش وصل نیست هیچ نرونی به قبلی اطلاعات نمیده هر نیرون فقط از قبلی اطلاعات میگیره فعلا وانیلی ساده اینو میگه و دیگه چاره‌ای برای ما نیست اما چند تا چیزو الان بهتون نگفتیم بالاخره چند تا لایه جلوش باشه از ورودی

خروجی که زرد و نارنجی کشیده شدن تو هر لایه چند تا نرون باشه اینا چیزاییه که معلوم نیست و همه بر عهده شماست فعلاً وانیلی ساده رو معیار قرار بدیم ولی بریم جلوتر خودتون خواهید دید که نه ما با چیزای دیگه هم کار داریم که نیرون‌ها یا به خودشون یا به لایه‌های دیگه فیدبک بدن اوکی اونا چیزای پیچیده ترین الان اجازه بدید با یه چیز ساده بریم جلو بعد انشالله برمی‌گردیم حله عالی بچه‌ها گفتیم که شبکه‌های عصبی متشکل از نرونن ذره بیندازیم روی ساخت بشر ببینیم چی داره توش کلاً قراره این کارو براتون بکنه یعنی این نوشته شنیدید شبکه عصبی شبکه عصبی کلاً هر نیرون فقط این کارو میکنه یادتونه بهتون گفتم یه مشتی ورودی بهش میاد که اسمشو ایکس یک تا ایکس ان گذاشتم هر خط هم روش یه وزن یا دبلیو آی وجود داشت میگه بیا دبلیو در ایکس یک w2 رو در ایکس دو یعنی هر دبلیو در ایکس مربوط به خودش ضرب کن با همدیگه جمع بکن حالا با یه b یا یه بایسی هم جمع بکن که

میگم برای چیه خب یه عددی اینجا میشه یه تابع غیر خطی روش اعمال بکن یه عدد میشه اونو بده خروجی تمام پس کل نرون شبکه عصبی قراره این کارو بکنه ورودی بهش میدید ورودی وزن‌دار جمع میزنه ها با یه بایاسی هم جمع میزنه حالا این دلیلشو میگم برای چیه یه اف روش اعمال یه عدد میشه یه تک عدد تمام این میاد بیرون و میشه این خروجی شما ها و کلا اگه بخوام به بیان ریاضی و صادقانه باتون صحبت کنم نیرون‌ها صرفاً یک تابع همین ورودی می‌گیرن f رو روش اعمال می‌کنن خروجی تک خروجی هم بهتون میدن تمام تک خروجی یعنی یک خروجی هم میدم بیشتر هم نمیدن اوکیه و این مواردیه که روشون رعایت میشه حالا آیا این‌ها واقعاً تونستن دنیا رو تکون بدن بله چرا با همدیگه خواهیم دید قبل از اینکه برم اسلاید بعدی بچه‌ها ایرادی نداره اولاً تا ۱۲ دقیقه دیگه یعنی تا چهار و نیم بمونیم کسی مشکلی داره اگه کسی مشکلی داره بنویسه که من اینجا کلاس تعطیل کنم

مقدار کمکمون کنید همراهی کنید ممنون میشم موردی نیست انشالله که نیست خب خدمت شما عارضم که بچه‌ها ساده‌ترین تابع غیر خطی که به ذهنتون می‌خوره چیه دیگه تو کنترل غیر خطی باید الان بشه خورده باشید نمیدونم کلا یعنی دیگه ساده تر از این به نظر میاد نیست ساده ترین تابع غیر خطی که به ذهنتون می‌خوره بچه‌ها چیه برام مینویسید صدام هست اصلاً یه مشت تابع غیر خطی بنویسید تابع غیر خطی چی به ذهنتون میخوره ایکس دو تابع غیر خطیه بله نمایی ساین باریکلا پارسا خوبه ساین ساین تابع ساده‌ایه احسان ساین حمید نوشته ایکس سه مطابق خوبیه اینا همه غیر خطی اند قدر مطلق و و و بله ساده‌ترین تابع غیر خطی که بچه‌ها من تو ذهنم بود تابع پله است خب که بسیار بسیار

طبیعتم سازگار بوده اصلاً روز اولی هم که ساختنش همون ۱۹۴۲ سه بوده تابع باینری ترشولد بوده توسط این در واقع افراد ساخته شده کالج پیتز خدمت شما عارضم که از جمله ساده‌ترین و ابتدایی‌ترین نیرون‌های عصبی مصنوعی تاریخ بودند تابع فعالسازیشون هم پله واحد بوده حرف حسابش چیه از نیرون‌های عصبی مغز الگو گرفتن مغز چه جوریه مشتی ورودی که بهش میاد یه سری پتانسیل توش به وجود میاد و الی آخر کاری به جزئیاتش نداریم اگر پتانسیلی که داره میاد جمع شد از جاهای مختلف از یه عددی رد کرد به نام ترشولد مغز اسپایک میکنه و خبر میده که آقا من روشن شدم و البته سریع خاموش میشه و دوباره باید وایسه که ببینه اون لحظه بعدش دوباره روشنش می‌کنه یا نه و این قطار اسپایکی رخ میده همین اگر هم جمعشون نرسه به حد و مرز اسپایک اسیک رخ نمیده و این سلول

خاموشه و به بدیاش خبری نمیده اوکی به سلول‌های بعدی از همین الگو گرفتن گفتن اوکی ما ساده‌ترین سلولمونو می‌ذاریم می‌گیم آقا یه مشتی ایکس یک تا ایکس دی بیاد ورودی ها وزن های w1 تا wd دارن جمع وزن‌دار w2 ایکس دو به علاوه فلان فلان اگر از یه عددی به نام تتا بیشتر شد خروجی یک بشه اگه کمتر شد صفر بشه همین اوکی تا به پله است تابع غیر خطی خب خروجی های نیرون رو بچه ها اسم وای هت براش گذاشتم کلاً قرارداد کنیم با خودمون وای هت نماد تخمین ماست از سیستم وای نماد واقعیه یعنی خروجی واقعی وای اسمش وای حد تخمین ماست از سیستم ما دوست داریم که وای هتمون تا حد امکان به وای چی باشه نزدیک باشه درسته این از این خب yهت گفته اگر زدش که حالا حاصل جمع سیگمای ایکس آی ها باشه از تتا بیشتر شد یک از تتا

صفرو به من بده یکی گفت آقا برای چی من بیام با توابع مختلف پله کار کنم که چی که ورودی‌هاش از جاهای مختلف شروع بشه آقا بیاید دستی این تتا رم بیاریم تو ورودی خودمون همیشه تابع پله واحد بیاریم که چی از صفر شروع بشه گفتن چیکار کنیم گفتن تو ورودیش فرض کن همیشه یه در واقع یه ایکس دیگه‌ای داریم مثل ایکس صفر فرضا که همیشه مقدارش یکه ضرب در یه بی داره میشه این بی هم مقدارش منفی تتا به این بی بایاس میگن ها چه فرقی داره که چه دبلیو آی ایکس آیا سیماهاشون از تتا رد کنه ها چه دبلیو ایکس آی ها سیگماشون منهای تتا از صفر بیشتر باشه دستی گفتن آقا هر سلول برای خودش یه بایاس هم داره ها و این اتفاق رو رقم می‌زنه که آقا همیشه نخواد واقعا داده هاتون حول صفر متقارن باشه نباشه اصلاً شاید نباشه شاید بعضی داده ها منفی نداشته باشن مثلاً فرض کنید که طول ماهی ها که منفی نمیشه ها ماهی که ایمون نمیشه نون نمیشه خدمت شما عرض

چیکار میکنن یه بایاس هم براش در نظر می‌گیرند پس دستی ما خودمون اینم اضافه کردیم حالا یه سری کتاب‌ها میان این یکه رو میزارن میزنن تنگ ایکسه میگن ایکس دی به علاوه یک بعدی اولش هم یکه همیشه خب یه عده میگن نه آقا من همون ایکس خودمو دی بعدی میگیرم دستی با بی جمع میزنم هیچ فرقی نداره اوکیه خدمتتون عارضم که من به جمع وزن دار اینا و در نهایت جمعش با بی اسمش میزارم عموما زد این قرارداد کتاببا در واقع مدرنه ماشین لرنینگ این کار میکنن قدیم این کارو نمی‌کردن اسمشون لزوماً زد نمیذاشتن بچه‌ها زد یه اسکالره هاz یه اسکالر خب و تمام شد میگن زد اگر از صفر بیشتر شد یک به کمتر شد صفر بده اصطلاحا اگر از یک بیشتر شد میگن نرون فایر کرده یا روشن شده ها اگر همین در این حد فقط در این حد حالا همچین چیزی واقعاً زور داره نه واقعاً به نظرتون

کاری میتونه بکنه که حالا بیاد چند تا از اینا بزنیم تنگم بتونه برامون کاری بکنه یا نه متاسفانه شاید نرسم در مورد زورش امروز صحبت کنم اما به اندازه کافی براتون اسلاید ساختم که نگاه کنید چقدر شبکه‌های عصبی می‌تونن قدرتمند باشند و تازه من با تمام احترامی که برای تابع فعال ساز اینجا برای شما قائلم تازه می‌خوام از این تابع خداحافظی کنم یعنی من تازه از تابع پله اصلاً استفاده نخواهم کرد و من بهتون بگم از تابع پله چه زوری به شما میده که بعدش تازه بذاریمش کنار زور ما میتونه باز بیشتر و بیشتر هم بشه اوکیه ادامه بدیم تابع پله چیکار میکنه برای ما چیکار میکنه یادتونه گفتیم شما از ایکس یک تا ایکس دی ورودی دارید فیچر دارید فیچر های که رو خروجیتون تاثیر میذارن فرض کنید فقط یه نیرون دارید ها قراره چیکار کنید ورودی بدید خروجی بهتون بده مثلاً قراره چیکار کنید خدمت شما عرض کنم طول و وزن و طول باله فلان فلان ماهیو بدید اون

شما بگه ماهی قزله یا نیست شما قراره بهش متراژ خونه فلان فلان فلان بدید به عنوان قیمت خونه رو بهتون بده درجا بخواد خروجی بهتون بده ها یه نرون یعنی بسیار عجولید شما می‌خواید درجا ورودی درجا خروجی نهاییتونو بگیرید اوکیه یه نرون داره چیکار می‌کنه با این تابع فعال سازی با این باینری ترشولدر یا تابع پله داره چیکار میکنه مگه نه اینکه میاد یه زدی می‌سازه دب آی ایکس آی به علاوه بی ها این چیه این اگه تو یک بعد باشه نقطه است اگه تو دو بعد باشیم خط اگه تو سه بعد باشیم صفحه است و الی آخر ها و اینجوری ادامه میده این داره بچه‌ها این کارو میکنه داره دبلیو یک ایکس یک به علاوه دبلیو دو ایکس دو به علاوه بی رو حساب میکنه میگه هر کی از این بیشتر شد یک میشه هر کی کمتر شد صفر میشه یادتونه بهتون گفتم من نمیام بیشتر از دو فیچر استفاده کنم دیگه فرض کنید بچه‌ها ویچر سوم تا دی نیست یا اگه هست ما نمی‌تونیم ببینیمش اوکیه فقط برای مسئله‌ای که دو فیچ

حرف حسابش اینه میگه آقا هرکی w۱ x1+ wwx2 یا زدش بیشتر از صفر شد بهش بگو تو دسته یک قرار می‌گیره تو کلاسیفیکیشن ۱ قرار می‌گیره و اگه صفر شد چی تو دسته دو قرار می‌گیره مثلاً ماهی قزل هست یا نیست خانم هست یا نیست ها به این وام بدیم یا ندیم بچه‌ها برام بنویسید اگه بخوایم به یکی وام بدن یا ندن بانک چه فیچرهایی لحاظ می‌کنه چه چیزایی رو در نظر میگیره برام بنویسید مثلاً می‌خوام به یکی وام بدن یا ندن چی معیار قرار میدن قبلش کیا رو می‌پرسن ازتون ضامن داره یا نه باریکلا گردش حساب چقدره دیگه چی بدهی داری یا نداری و و و ها میخواد بانک ببینه به شما وام بده یا نده می‌خواد بده به خودکار یه ماشین بده و شما اطلاعاتتونو تو سایت وارد کنید اون به شما بگه آقا وام به شما تعلق می‌گیرد یا نمی‌گیرد از بالا بچه‌ها برین نگاه کنیم چی میبینید شما از بالا که نگاه کنیم می‌بینیم یه خط چین میبینیم یا یه خط می‌بینیم که هر کی این وشه یکی اونورش صفره بچه‌ها این همون ها تاپ

پس چیکار کرد پس یه نرون کلاً برای شما داره چیکار میکنه یه نرون با دو تا ویژگی قراره خط بکشه هرکی اینور خط بود جز دسته حیدری هرکی اینور بود نعمتی ها یه همچین داستانی حالا محمد نعمتی هم فکر کنم تو کلاسمون هست خدمت شما عرضم که نتیجه اخلاقی رو براتون نوشتم یه تک نرون قادره چیکار کنه یک ابر صفحه مسطح نه منحنی با ابعاد دی منهای یک بعدی توی فضای ویژگی دی بعدی بکشه حالا اگه نمی‌تونید معنی اینو بفهمید اگه توی یک بعد بودیم نقطه براتون می‌ذاره مثل اون کاری که تو ماهی ها کردیم گفتیم طولش از این بیشتر از این کمتر اگر توی خدمت شما عرض کنم دو بعد بودیم مثل اینجا برامون خط می‌کشه اگه تو سه بعد بودیم سه تا داشتیم یه صفحه مسطح میکشه و الی آخر یا ابر صف های مسطح و چی و کلاً فضا رو به دو بخش برای من تبدیل میکنه پس کل زور یه نرون با تابع باینریترشل شد چی شد این طبیعتاً کجا کاربرد داره

قابلیت به کارگیری توی مسائل طبقه‌بندی دو کلاسه رو داره تک نرون خب که در ضمن اون دو کلاس از همدیگه قابلیت جدایی پذیر خطی داشته باشند ما جایی داشتیم قابلیت پذیر خطی نبود بله یادتونه این مثالی که دورش دایره اومد این اصلاً نمی‌تونست آبی و قرمزها از همدیگه با خط جدا بشن پس تک نرون برای این مسئله کار نمیکنه اما تو این مسئله کاملاً کار می‌کنه تو این مسئله سمت چپی کاملاً تکرون کافیه اصلاً دیگه نیازی نیست بخواید شبکه عصبی بسازید ها خدمتتون عارضم که مثلاً با این مثال آوردم و این مثال با خودتون واگذار می‌کنم الان سوال میپرسم ازتون و خداحافظی می‌کنیم الان آیا اپراتورهای اند یا o رو بچه‌ها می‌تونیم ما با یک پرسپپترون تکی بسازیم یا نه اند چی ورودی میگیره دو تا ورودی صفر یا یک میگیره و به شما صفر یا یک میده کی صفر میده کی یک میده

اگر هر دو یک بود یک میده در غیر این صورت صفر میده قبوله چه دوتا صفر برعکس اونه اور میگه که یعنی نه که برعکس اونه منظورم اینه که تو سه حالت به شما یک میده اگر شما یک یک صفر یا صفر یک باشید یک بهتون میده ولی صفر و صفر باشید بهتون صفر میده با این اوصاف بچه ها به نظرتون یعنی دو دستش کنید خروجی هایی که اند دات یا جداگانه به نظرتون میشه با تک پرسپپترون اند یا اور رو شبیه سازی کرد یا نه بنویسید برام نوشتن بله برای اور بله کلا نوشتن بله بچه‌ها پاسخ بله است اما برای ایکس اور چی و اینجا دیگه درس رو نگه می‌داریم انشالله تا جلسه بعد ایکس اور یه لاجیک دیگه‌ایه حرفش اینه میگه اگه دو تا صفر بود یا دو تا یک بود صفر بده ولی یکیشون یک

پاسختون احتمالاً پاسخ خیره خب بریم ببینیم اند و او رو ببینیم و دیگه خدانگهدار بچه‌ها این یه پرسپترون با باینری ترشولد اکتیویشنی که برای شما او رو میده این یه تک اند میده چرا میتونه بده شما سه تا دایره از جنس آبی دارید یا فعال دارید یه دایره از جنس یه مربع از جنس سبز دارید و اینا خطی جدایی پذیرن یعنی دسته آبی و سبز خطی جدایی پذیره پس این پرسپپترون میتونه براتون کار در بیاره خب این و چی اندام باید چی سبز و آبی ها باز خطی جدایی پذیرن میتونه در بره حالا داستان اینه که شما باید ضریب ها رو تعیین کنید الان دو تا یک یه منفی نیم اینجا نوشته یعنی ضریب های دبلیو اینجا تعیین کرده براتون برای اند هم رفته ضریب های دبلیو تعیین گفته اگه ضریب ایکس یک یک ضریب ایکس دو یک و در واقع

منفی نیم باشد میگه میتونید شما او رو بسازید یعنی خط نارنجیه رو بهتون میده که هرکی این بره میگه بله هر کی این میگه خیر و اگر چی دادید دو تا یکی منفی یک و نیم دادید اینو براتون می‌سازه که چی هرکی بالاشه میگه بله هرکی پایینشه میگه خیر پس تا اینجا تونستیم اند و او رو با همدیگه بسازیم ولی xo رو نمیشه ساخت تا اینجا نگهش داریم انشالله تا جلسه آینده خیلی ممنون بچه‌ها که حاضر بودید امیدوارم که سوال خوبی داشته باشید مجبور شدم خیلی به زبان ساده بگم و تلاش کردم که در واقع تمام اون مواردی که لازمه رو خدمتتون بگم من ویدیو رو متوقف می‌کنم ازتون خداحافظی می‌کنم ولی چیز خدمتتون میخواد ویدیو هم متوقف نکنم شما میتونید تشریف ببرید چیز احسان تشریف داری آقای کاظمی من یه مورد بگم خدمتت اگر احسان تشریف دارید در مورد اون موضوعی که پرسیدی

در مورد اون زیردریایی و اینا آره در مورد زیردریایی که پرسیدی ببین من هم پرسیدم هم جستجو کردم چون من یه سوال ازتون دارم یکی دو نفر با اون کار دارن مشکلی نداری صبر کنی که نه آره خدمتت عارضم من در مورد این فقط توضیح میدم و دیگه خداحافظی می‌کنم ازت اینه که ببین من یه مقدار فکر می‌کنم اشتباهم گفتم این عمده رفتم پرسیدم در مورد زیردریایی ها بیشترین در واقع کار روی شتاب شتاب سنج ها و دی بی ها رخ میده که عموما چشم های التراسونیک چیز اند در واقع زیردریایی هستند و زیر آب بالاخره امواج الراست کار میکنه دیگه خب پرسیدم خیلی ویژ کار نمیکنه رو کاغذ میتونه ها یعنی اگر یه جوری بتونه مث برای خودش ته دریا رو ببینه ته دریاچه رو ببینه ولی آخر میتونه استفاده بکنه و

خب طبیعتاً امواج الکترومغناطیسم که نیستند دیگه سعی می‌کنند با کیفیت بالا ولی ماجرا اینه که سنسورهای که استفاده می‌کنند خیلی گرون و دقیقه خب یعنی دیگه اون مسائل دریفت و اینایی که گفتی توشون خیلی کمتر رویت میشه مثلاً فرض کن شما یه imd ساده با دو دلار میتونی بخری خب اون چیزایی که تو درس اندازه گیری بهتون معرفی کردیم خب درسته ولی مثلا چیز که من دارم الان در موردش صحبت میکنم حداقل از سه ۴۰۰۰ دلار شروع میشن خب چون بعضا اپلیکیشن های نظامی پیدا می‌کنن می‌ره بالا و بالاتر دیگه خب و این عرض کردم خدمت گفتم اشتباه نگفته باشم یه جدولی هم آماده کردم یه ایمیل بهم بزنی بعداً برات میفرستم که مثلاً در مورد سنسورهای آی ام یو که حالا با چه قیمتی حالا با چه کیفیتی تقریبا چقدر میتونه دریفت داشته باشه و خطا بهتون بده خب بعضی از اینا هست تو بازار چیز خود که

خیلی متفاوت باشه و خب گفتم دیگه حالا یه جوکی دارم همیشه میگم اینجا بزار دوباره بگم شایدم قبلا برات شنیده باشی اون مثال اولتراسونی قبلا زدم میگه طرف میره سمعک بخره میگه آقا سمعک چنده میگه ببین از هزار تومن داریم تا ۱۰ میلیون تومن خب این میگه ببین ۱۰ میلیون تومان میکسنس میکنه ولی هزار تومنه چیه میگه این فقط شکل سمکه هر کی میبینتت بلندتر صحبت میکنه خب حالا ماجرا اینه که چیزه یعنی بعضی از این سنسورها بعضی هاشون واقعا همین که میگی مثلاً یه دلار دو دلارن فقط ظاهرسازی می‌کنن یعنی اصلاً قابلیت به کارگیری برای یک کار درست درمان و مثلاً مسیریابی و اینا رو خیلی ندا خب و آره مجموعه اون اتفاقاتی که گفتی که حالا سنسور فیوز میکنن فیوژن میکن و اینا وجود

E:\courses\LangChain Project\main root\data\SCR_Session04_transcript_part4.txt

E:\courses\LangChain Project\main root\data\SCR_Session05_transcript.txt

به نام خدا دوستان عزیز و ارجمند درس رباتیک اجتماعی شناختی عرض سلام و ادب و احترام به جلسه پنجم درسمون خوش آمدید اجازه بدید که صفحه نمایش به اشتراک بزاریم و بریم سر کارمون با ادامه مطالبمون در زمینه هوش مصنوعی پیش به سوی یادگیری عمیق با زیر فصل آشنایی با شبکه‌های عصبی مصنوعی خب ما جلسه گذشته یه مرور کوتاهی بر یادگیری ماشین داشتیم پارادایم سوپروایز لرنینگ و باز کردیم و گفتیم که ما با مسائلی فعلاً قراره سرو کار داشته باشیم که یه سری ورودی بهمون میدن و در ضمن یکی زحمت کشیده حالا یا ما پول خرج کردیم یا از یک کسی که قبلاً این کارو کرده استفاده می‌کنیم و برای داده هامون برچسب وجود دارد این که

زحمت کشیده این کارو کرده برامون یعنی داده‌هایی که در اختیارمون قرار میده بمونم میگه که متعلق به چه کلاسیه یا مقدارش چنده مقدار برای وقت‌هایی که شما یه متغیر پیوسته رو می‌خواستید تخمین بزنید مثل اینکه قیمت یه خونه ولی آخر و کلاس‌هام زمانی بود که قرار بود چند تا چیزو از همدیگه جدا کنید مثلاً اینکه این جانداره یا بی جان خانم یا آقاست نمیدونم خوبه بده یا متوسطه و الی آخر و خب اینا براشون برچسب وجود دارد با مفهوم فیچر آشنا شدیم یا ویژگی گفتیم تمام چیزهایی که توی ورودی قرار داشته باشند وتوانند بر خروجی ما تاثیر بذاره رو نشون میدیم فیچر طبیعتاً میتونید حدس بزنید یه سری فیچرها میتونن خیلی مهم باشند تاثیرشون غیر قابل چشم پوشیه اما یه سری فیچرها میتونن در واقع تاثیرهای کمتری داشته باشند خدمت شما عارضم که با انواع وریبل ها متغیرها آشنا شدید نمایش وان هات دیدیم مثال

صید ماهی قزل آلا و خاردار رو دیدیم و تاثیر حضور ویژگی‌های مختلف به صورت جداگانه یا در کنار هم و خب اینا همه مواردی بود که توی ادبیات یادگیری ماشین بررسیشون کردیم و بعدشم مثال زدیم براتون که ما با چه نوع مسائلی عموماً سر و کار داریم مثلاً مثل مسائل طبقه بندی و همینطور مسائل رگریشن طبقه بندی های دو کلاسه یا چند کلاسه طبقه بندی های مثلاً تبدیل عکس به نوشتار و الی آخر و اینا چیزهایی بود که بررسی کردیم و گفتیم صادقانه اون کاری که ما داریم می‌کنیم اینه که توی فضای ویژگی ها ما قراره با یک خط یک صفحه یک ابر صفحه مسطح یا غیر مسطح چیکار کنیم اون گروه ها را از همدیگه جدا کنیم تا حد امکان اینوریا به اونوریا کاری نداشته باشند و چه میدونم قرمز و سبز یه و بیفتن ولی بعضی وقت ها چاره ای نیست با یه

خطا می‌پذیریم که حالا عیب نداره بذاریم چند تا قرمز تو سبز یا چند تا سبز قرمز بیفته مثل این شکلی که اینجا می‌بینید و خواهیم دید حالا اگرم بخوایم واقعاً اصرار داشته باشیم که تمام سبزها بیفتن یه ور و تمام قرمزا یه ور سوال اینه که آیا این شدنیه پاسخش اینه که بله شدنیه اما سوال دوم که آیا این همیشه به درد میخوره پاسخ قطعا خیر خب که حالا بهش میرسیم با مفهوم اور فیتینگ آشنا خواهیم شد و اینا چیزهایی بود که مرورش کردیم خدمت خدمتتون عارضم که گفتیم که توی روش های سنتی ماشین لرنینگ خوب همیشه یه سری آدم ها بودن که فسفر میسوزوندن و وقت میذاشتن آزمایش میکن اگر میخوید ببینید که قبل از اینکه دیپ لرنینگ رشد بکنه همینطور کلا حوزه های مثلا به کارگیری شبکه های عصبی بخوان اینقدر رشد بکنند چه میدونم مهندسان کامپیوتر یا افراد زیر شاخه هوش مصنوعی داشتن چیکار میکردن داشتن یکی از حوزه ها این بوده که واقعا داشتن فکر می‌کردن که چجوری میتونن وقتی

عکس خام بهشون میدید همون تحلیل‌هایی رو ارائه بدن که یه آدم به راحتی و با دیدنش در کسری از ثانیه انجام میده یا اینکه وقتی یه چیزیو می‌شنون چه جوری می‌تونن اونو بفهمن چی گفت درکش کنن و انواع در واقع زیر شاخه‌های مختلفش و خوب محصولاتی هم توسعه پیدا کرده مثلاً نمی‌دونم چقدر با الکسا آشنا هستید فرض کنید تو خونتون نشستید میگید الکسا مثلاً ترن آن کیچ لایت مثلا یه همچین چیزی چراغ های آشپزخانه رو روشن کن خاموش کن تمپرچ رو دمای خونه رو روی این عدد تنظیم کن فقط رو صندلی تو نشستید اینو به جمله میگید اون درکش میکنه و اون کار براتون انجام میده توی خانه های هوشمند و خب اینا همه تبعات این ماجراهاست بچه‌ها قبل از اینکه ادامه بدیم دوست دارم یه نفر اینجا به نمایندگی اگه ایده ای داره تو این زمینه که عرض میکنم خدمتتون بهمون بگه اگر کسی اطراف شغل های تخصصی وجود داره توی

خانواده‌شون پدر مادر خواهر برادری که یه جزئیات داره و اون جزئیاتشو آدمای عادی لزوماً نمی‌دونن دست بکنه بالا و برامون بگه مثلاً یه بار مثال زدم خدمتتون فرض کنید که شما تا زمانی که مبل نخریدید نمی‌دونید وقتی که می‌خواید برید بخرید چه پارامترهایی براتون مهمه و بعضاً از خود فروشنده‌ها استعلام می‌گیرید کمک فکری می‌گیرید حالا اینکه چقدر اونا با صداقت براتون گزارش می‌کنن یا اینکه چقدر جو میدن اینا رو کاری نداریم ولی یه سری کلماتی میاد وسط که یه دفعه میبینی کاملا تاثیر داره رو قیمت ها الی آخر دوست دارم اگه کسی توی زمینه خاصی اطرافیش اطرافیانش کار میکن دست بگیره بالا و برامون توضیح بده میخوام با فیچرها بیشتر آشنا بشیم توی مسائل حالا یا کلاسیفیکیشن یا رگریشن کسی ایده ای داره بالاخره توی تولیدی توی چیزی اطرافیانش هستند نیستند جزئیاتی مهم باشه که روی کیفیت محصول رو قیمت محصول تاثیری بذاره و

بخواد برامون بیانش کنه حالا نمی‌دونم دوستان کسی دست و بالا نگرفت مثلاً کسی فرزند فروشنده لوازم مثلاً خیاطی نیست فروشنده لوازم چینی نیست نمیدونم کسی کشاورز نبوده اطرافیانش و ایده داشته باشه دید داشته باشه البته چیز حالا همچین پر اهمیتی نیست یعنی اگر الان کسی داوطلب نداشته باشیم مثلا مهم نیست اما دوست داشتم که یه دور مثلا فیچرها رو برای خودمون مرور کنیم تا بیشتر و بیشتر برامون جا بیفته خب بریم مثل که متقاضی نداریم عرض به خدمت شما مبحث بعدی که ورود کردیم و امروز میخویم به صورت جدی ادامه بدیم و جز جدی از درسمونه بحث شبکه های عصبی مصنوعیه گفتیم که حرف حسابشون اینه که می‌خوان از فضای ورودی یا ویژگی ها به خروجی های ما یه تابع به وجود بیارن تابع میتونه

خیلی خیلی خیلی پیچیده باشه میتونه تابع چند ورودی چند خروجی باشه و حتی میتونه در واقع حاصل معادله دیفرانسیل باشه همین قدر برای شما کافیه که شما بدونید تمام سیستم‌های دینامیکی و کنترلیتون رو حتی میتونید با چی با شبکه‌های عصبی تقریب بزنید و خب حالا اینکه چقدر کارا باشن و اینا مسائل بعدیه و چقدر شما از پسش به خوبی برمیاید و همینطور یه سری مسائل عادی دیگه مثل شناسایی عکس و الی آخر یا تحلیل فیلم ها اکشن و اینکه بدونید وقتی یه فیلمی داره پخش میشه اون شخصی که تو اون فیلم داره چیکار میکنه و یا پایان نامه های بعضی هاتون که در جریان هستم مثلاً تو آنالیزهای حرکتی وجود داره ولی آخر که همه میتونن از این راه به دست بیان خب ما تعاریفی داشتیم از شبکه های عصبی واقعی و مصنوعی اما شبکه های عصبی مصنوعی اینجوری تعریف کردیم که یه مجموعه میتونه قابل توجهی از المان های گردلی شکلی به نام نرون باشه که اینا بهذات یه تابع هستند ورودی های مختلفی دارند هر

در یه وزن ضرب میشه و با همدیگه جمع میشن در ضمن با یه بایاس هم جمع میشه که در واقع شبیه سازی بکنه نیرون‌های مغز آدمو که اگر در واقع جمع وزن دار ورودی‌ها از این عدد بیشتر شد حالا یا کمتر شد یه کاری برای ما انجام بشه و خب اونجا یه تابع اف اعمال میشه این تابع تو ۹۹.۹ درصد مواقع غیر خطیه و در نهایت یک خروجی تولید میکنه خروجی میره به سمت نرون یا نیرون های بعدی که قراره این کارا رو برای ما انجام بده خب ما گفتیم که تک نرون اولین بار ساده ترین مدلی که براش ارائه شد تابع پله بود تابع پله‌ای که البته میتونست از یه نقطه غیر صفر شروع بشه گفتیم که برای اینکه اینم بتونیم درستش بکنیم و یه جورایی استانداردش بکنیم یه پارامتری به نام بایاس در نظر میگیریم با ضریب وزنی یک مثل یه ورودی یک همواره میدیم به نرون و میگیم حالا به جای اینکه بگیم

سیکمای wixia از یک مقدار تتای بیشتر یا کمتر باشه میگیم سیگما wx آی های به علاوه بی حالا اگه از یه مقداری بیشتر از صفر بیشتر یا کمتر بود نرون برای ما این کارو انجام بده اگر بیشتر از صفر بود فایر کنه روشن بشه و خبر بده که روشن شده و به دیگران اطلاع بده اما فعلا خودمون رو در واقع یه توضیح بدم که اصلا به هیچ عنوان قرار نیست این تابع f فقط تابع پله باشه ما فقط با تابع پله شروع کردیم و قدرت شبکه های عصبی رو خدمتتون بگیم بعد بریم امروز به شبکه های دیگه بپردازیم گفتیم یه تک نیرون چیکار میکنه کار مهمی که داره تک نیرون میکنه اینه که فضای بی بعدی شما را به دو بخش تبدیل میکنه با چی با یک ابر صفحه مسطح دی منهای یک بعدی ها یعنی اینکه اگر شما مثلاً توی فضای دو بعدی ایکس وای هستید یه خط براتون میکشه میگه این وش گروه آ هستند این وش گروه بی هستند اگر توی فضا هستید یه صفحه مسطح میکشه و الی آخر

من این کارو برای شما انجام میده این زور تک نرون با چی با تابع فعال سازی باینری ترشولد یا تابع در واقع پله که این چیز سختی هم نیست برای اینکه این کارو بکنه اینه که خب اول دبلیو آی ایکس آی ها رو با همدیگه جمع میزنه با بایاس جمع میزنه ما عموماً جمع وزن دار در واقع ورودی‌ها به علاوه بایاس رو اسمشو اسکالر زد میزاریم برای هر نرون و بعد از اینکه تابع فعال سازی اف روش انجام شد خرو اسمشو ای میزاریم حالا تو خروجی لایه آخر اسمشو وای هت میگذاریم که تخمین ما از وای و عرضم کردم خدمتتون ما تو فضای فیچرمون بیشتر از دوتا رو دیگه سعی میکنیم برای نمایش انتخاب نکنیم چون جاشو نداریم دیگه محور سوم یا برای خروجی من لازمش دارم یا میخوام تو صفحه نشونتون بدم و دیگه نهایتا میتونم دو تا ایکس داشته باشم ولی شما میتونید حدس بزنید که توی فضاهای بالاتر بعدی هم این داستان وجود داره و الی آخر و خب چیزی که نتیجه اخلاقی که تو

بگیریم اینه که هر نرون تک نرون می‌تونه چیکار کنه حداقل با این تابع فعال سازی فقط میتونه یک طبقه‌بندی دو کلاس اونم با قابلیت جدایی پذیر خطی برای ما انجام بده یعنی اگر داده‌هاتون جوری پخش شدن تو فضا که میشه با یه خط یا یه صفحه جداشون کرد یا ابر صفحه این کارو میتونه تک نیرون تنها براتون انجام بده وگرنه نمیتونه و باید چیکار کنید جاش یه فکر اساسی بکنید گفتیم آیا می‌تونیم اپراتورهای اند او رو فقط با یک پرسپتروم بسازیم پاسخخش بله بود و اینجا دیگه درس تمام شد و گفتیم که بله دلیلش اینه که مثلاً فرض کنید اور اینجوریه که اگر دو تا یک باشند ایکس دو یک بهتون میده اگر بین ایکس و یکیشون هم یک باشند باز یکی بهتون میده این همه تو یه دسته اند ولی اگه دوتاش صفر باشن بهتون یه دسته دیگه صفر رو میده و این این دسته ها تو فضای دو بعدی همونطور که میبینید چی با یه خط قابل جداسازی همین اتفاق برای اند حالا پیشنهادی که شده اینه که ضریب ایکس یک و ایکس دو رو یک بدیم ضریب بایاس

منفی نیم بزاریم طبیعتاً می‌تونید حدس بزنید که این منفی نیمه یکتا نیست دیگه این خط نارنجیه یه مقدار بالاتر پایینترم بره مادام اینکه این سه تا آبیا بیفتن یه ورش و سبزه بیفته یه ورش همچنان کار می‌کنه اما این حالت استانداردی که حالا برای دوگانه وجود داره یا برای اند این اتفاق افتاده ها یه سوال بپرسم اینجا نوشتم اگر تعداد ورودی هاتون بیشتر از دو تا شد مثلاً برای اند برای من مثال بزنید یعنی سه تا من ورودی یا چهار تا ورودی داشتم به نظرتون با یه دونه نیرون باز میتونستم اند بسازم یا نه اگه آره کلا چه تغییری باید تو این ساختارم به وجود میاد یعنی علاوه بر ایکس دو تصور کنید که ایکس ایکس چهار تا الی آخر هم دارم و اونجا چه پیشنهادی دارید یعنی می‌خوام چهار تاشو با هم اند کنم هر چهار تا با هم اگر یک باشند یک بهم بده در غیر این صورت به صفر بده پیشنهادتون چیه باریکلا آرمین با عوض کردن بایاس میشه این کارو کرد و بایاس رو فقط

عوضش کنید تنظیمش بکنید همه این اتفاقا میتونه رقم بخوره همینطور برای اور پس نگران این نباشید که توی فضاهای بیشتر از دو بعدی هم نتونید اندوئو رو بسازید و کاملاً این اتفاق شدنی و دوبله خب گفتیم در مورد ایکس اور چه نظری دارید لاجیک xor اینجوریه که اگر دوتاش صفر یا دوتاش یک باشند صفر میده در غیر این صورت یک میده خدمتتون عارضم که پاسخخش خیره که حالا توی صفحه های بعدی میبینیم باید یه راه چاره ای براش پیدا کنیم اما این راه چارش من سعی کردم اینجا براتون بنویسم بچه‌ها تشخیص سیستم های با قابلیت جدایی پذیر خطی تمام قدرت شبکه های عصبی نیست و اتفاقاً زور شبکه های عصبی به یافتن در واقع منحنی های فوق العاده غیر خطیه خب منحنی های که میتونن کانکتد باشند کانکتد نباشند بسته و باز باشند و ما باید از تمام ظرفیتمون استفاده بکنیم پس تک نیرون

اصلی ما نیست در ضمن استفاده از تک نرون برای وقت‌هایی که شما توی گرفتن خروجی یا خیلی عجولید یا سیستمتون خیلی ساده است ورودی رو بهتون دادن انقدر از خودتون مطمئنید که این فیچرها دیگه بی حرف و حدیث درجا می‌تونه شما رو به خروجی برسونه با یه تک نیرون یا نهایتاً یه لایه نرون چیکار می‌کنید اینو به دست میارید که الان نمونه‌هاشو بهتون میگم کجا استفاده شده و حتی با همدیگه هم می‌بینیم به صورت فیزیکال و عملی خب اما راهکاری که وجود داره اینه که از لایه ها لایه یا لایه های مخفی میانی استفاده استفاده کنیم تو شبکه های عصبی مشابه اون شکل های که دیدید و نیرون ها تو لایه های مختلف قرار بگیرند و هی نیرون های لایه قبل به بعدی وصل بشن و ما بتونیم استخراج ویژگی های سطح بالاتری داشته باشیم ها شما بچه های خروجی هر کدوم از این نیرون ها خودش یه ویژگی طوره ها وقتی شما این نیرون رو با این ضرایب می‌سازید این

برای شما چیکار کنه اور بسازه ها یعنی چی یعنی شما دو سه تا داده خشک عادی بهش دادید این تونسته یه چیز معنادار براتون بسازه ازش اور بکشه بیرون ازش اند بکشه بیرون یا ازش کارای دیگه بکنه ها پس داره برای شما ویژگی استخراج میکنه ولی ویژگیتون درسته که از همین یک و یک یا از ایکس یک و ایکس دو با این ضرابی یک و یک و این نیم منفی نیمه ساخته شد ولی انصافاً ویژگی سطح بالاتری از اینه از این ایکس یعنی همین که شما فقط یه ایکس دو زوج مرتب چهار تا جلوتون بندازن به خصوص رسمش نکنن به این راحتی نمیتونید منطق توشو پیدا کنید اما این خروجی این نرون سبب شده یک مفهوم در بیاد یک مفهومی که کاملاً روی کارهای بعدی ما میتونه تو لایه‌های بعدیون اثر بذاره و به اینا ما میگیم ویژگی های سطح بالاتر یه مثال ساده تو عکس ها بچه ها از ویژگی های سطح پایین و سطح بالا میتونید برام بنویسید تو شناسایی عکس مثلاً فرض کنید که من می‌خوام عکس آدمو

من تو ویژگی‌های سطح پایین چیو دارم ویژگی‌های سطح بالا چیو دارم برام تایپ کنید فرض کنید ما یه عکس که به کامپیوتر می‌دادیم مشت پیکسل بود با یه مشت عدد یه ماتریس ام در انی بود بالا ام در ان تا عدد یا اگه رنگی بود بالا ام در ان در سه تا عدد ویژگی‌های سطح پایین اینجا چین ویژگی‌های سطح بالا چی می‌تونن باشن آرمین نوشته گردی صورت و گوش میشن سطح پایین حتی از این ساده تر هم با سطح پایین‌تره ولی آرمین درسته حالا سطح بالا چی میشن برام بنویسید بچه‌ها هستید نمیدونم فقط یه نفر مشارکت داره چشم و دهن و الی آخر و هی پله و پله بالاتر میشن چی سطح های متوسط و بالا و بالاتر یعنی اینکه دو تا چشم یه دماغ حالا با این آرایش

کنار هم باشند تا اون شکل شکل یک آدم باشه خب اینا همه مسائل مهمی‌ان و اینا میشن ویژگی‌های سطح بالاتر به نظر میاد به نظر میاد با شبکه‌های عصبی می‌تونیم ما از ویژگی‌های سطح پایین استخراج ویژگی‌های سطح پایین شروع کنیم و به ویژگی‌های سطح بالا برسیم چرا این اتفاق می‌افته یه بار بذارید به بیان ساده ببینیم شما تو شبکه‌های عصبی یه ایکس بهتون میدن یه اف روش اعمال می‌کنید اف ایکس رو می‌سازید بعدش که برید توی لایه بالاتر رو اون اف ایکس ضریب وزن داره میسازید و به صورت زنجیره این کار ممکنه چندین بار انجام بدید به خصوص اینکه fتون خودش تابع غیر خطیه بچه ها احتمالا یادتون میاد توی ریاضی دبیرستان هم پیدا کردن تابع ffx برای شما همچین کارسونی نبود ها یعنی که مثلا من بهتون بگم اگه کسینوس ایکس یه تابع غیر خطی باید کسینوس کسینوس ایکس چی میشه شما به راحتی نمیتونستید رسمش کنید خب و همین قدر بدونید که این

در واقع توابع زنجیره‌ای به شدت می‌تونن قدرتمند بشن و اشکال عجیب غریبی رو براتون به وجود بیارن در موردش صحبت کنیم پس به کارگیری شبکه عصبی یک لایه قدرت خیلی محدودی رو به ما میده و ما مجبوریم برای ساخت توابع فوق پیچیده چیکار کنیم از تعداد بیش از یک لایه استفاده کنیم لایه‌هایی که بتونن تطبیق پذیر باشند و شامل یونیت های مخفی غیر خطی باشند ما به این شبکه ها میگیم مالتی لایر پلیر پرسپترون یا ام ال پی پس ام ال پی از الان نمادی از شبکه های حداقل با یک لایه مخفی برای ماست بچه‌ها تو شبکه های عصبی اینپوت ها رو زیر هم قطار میکن اگه یادتون باشه من گفتم کلا علاقه دارم بردارهای ورودی رو به شکل بردارهای ستونی بنویسم ایکس یک ایکس دو تا ایکس ام اینا میشن بردار ورودی اگر بلافاصله بعدش خب

یک یا چند نرون خروجی گذاشتید شما هیچ لایه مخفی ندارید ولی عرض کردم خدمتتون خیلی زورتون کم میشه به محضی که شما یک لایه پنهان حداقل اضافه کنید دیگه شما با یه ام ال پی مواجهید و تو شبکه‌های عصبی لایه اول و آدم حساب نمی‌کنن از شماره گذاریشون از لایه بعدی یعنی از اولین هیدن بهش میگن لایه شماره یک لایه شماره دو و الی آخر تا لایه شماره ال بزرگ این عموماً کتابای این حوزه اینجوری می‌نویسن و حالا همونطور که میریم جلوتر خواهید دید اینه که ما ممکن بود که در واقع داده شماره یکم مون رو اگه یادتون باشه نوشتیم بردار ایکس بالاش نوشتیم پرانتز باز بسته یک پرانتز باز بسته دو یعنی نماد مشاهده اول دوم الی آخر برای اینکه لایه ها رو نشون بدن یه سری از کتاب ها از کوروش استفاده میکن البته این عکس این کار نکرده مثلاً می‌نویسه دبلیو بالا کروشه باز یک یعنی اینکه دبلیو لایه اول w لایه دوم w لایه اول یعنی چی یعنی وزن های که لایه صفرم که حالا ورودی ها باشن همون

اول وصل می‌کنه یا ww میشه لایه اول و به لایه دوم وصل میکنه و الی آخر یک شبکه میتونه بیش از دو لایه داشته باشه هیچ قیدی وجود نداره که شما چند لایه داشته باشید در ضمن تو هر لایه چند تا نرون و گردالی وجود داشته باشم هیچ قیدی وجود نداره اما خیلی فعلا خوشحال نباشید که بتونید ۵۰ ۶۰ تا لایه برای خودتون برید جلو تو هر کدوم از لایه ها بخواهید ۶۰ ۷۰ تا ۱۰۰ تا نیرون بزارید میبینید که چه چالش های داره و کجاها می‌مونید اصلا آیا سوال اینه که اینقدر واقعا لازمه برای یه سری کارا یا نه خب سوال حالا اینم به پوز دادیم شبکه های ام ال پی یا مولتی لیر پرسپترون چقدر قدرتمندن پاسخ خیلی زیاد خب فقط فکر کردم با خودم دیدم این اسلاید رو بزارم احتمالا قانع میشید با سه تا جمله کلی من ام پی ها رو برای شما توصیف میکنم ام ال پی ها میتونن هر تابع بولین و کلا تابع های منطقی

تو عالم بسازن ام ال پی ها میتونن تمامی هر کلاسی فایری رو بسازن برای شما یعنی سیستم‌هایی که بخوان چند تا جسم از همدیگه جدا بکنن و می‌تونن کلاً با هر تعدادی با هر نوع آرایشی براتون چیز کنن جدا بکنن از هم و در ضمن می‌تونن هر تابعی رو تو عالم براتون بسازن و دیگه تمام دیگه یعنی میشه قدرتش حالا چند تا نمونه میکنیم حداقل در حد ساده که بپذیرید ام ال پی ها زورشون خیلی زیاده درسته ما گفتیم اینا میتونن این کارو بکنن یه پله اضافه تر میکنم میگم ام ال پی با دو لایه هیدن خب کن اپکسیمتینگ حتی با یک لایه هیدن میتونه هر چیزی رو با هر دقتی براتون بسازه یعنی شما هر تابعی رو با یک لایه مخفی میتونید

بسازید یه لایه مخفی بعد لایه خروجیتون حالا خودش یک یا چند تا خروجی داشته باشه چه کلاسیفایریشن خب ولی ماجرا اینه که با یک لایه مخفی یا حتی دو لایه مخفی میتونه اینا تمای کلاس چیز تئوری داشته باشن فقط ثابت کنم که میشه ولی تو عمل من از اینا استفاده نکنم چرا چون اگه بخوام از یک لایه مخفی استفاده کنم ممکنه به تعداد بسیار بسیار زیادی نرون احتیاج داشته باشه داشته باشم یعنی شما تصور کنید تو همون پیدا کردن عکس آدم بخواید یه لایه مخفی داشته باشید این درجا این نیرون های که اینجا بخوان چشم و دهن و بینی و فلان و اینا رو براتون پیدا کنن بعضا میبینید که شما به تعداد بسیار بسیار زیادی نرون احتیاج دارید در حالی که اگر لایه اول مخفی چند تا نرون می‌ذاشتید لایه دوم چند تا نیرون محدوده دیگه می‌بینید که قدرتتون از اونی که توی یک لایه بخواید مثلاً دو برابر سه برابرش حتی نیرون بذارید چیه بعضاً بیشتر میشه چرا چون لایه‌های سطح بالا فیچرهای سطح بالا تولید می‌کنید

ماهیتشم از کجا میاد از همون که اف اف ایکس هستش یعنی این بار یه بار اف ایکس رو اینا اعمال شده میرن تو لایه بعدی یه اف اف ایکس اعمال میشه و می‌تونن حالا هر چیزی رو برای ما بسازند و قدرت زیاد کنه اما ادعا نکنیم دیگه بریم ببینیم برای توابع بولین من چون ما مکانیکی خیلی با تابع های بولین کاری نداریم همون برمیگردم به مثال x or خودمون x or خودمون اگه رسم کنیم بچه ها دو تا گردلی آبی داره دو تا دو تا مربع سبز رنگ میبرن این دو تا با هم یک کلاسن این دو تا یک کلاس اند چون اینا به صورت خطی از همدیگه جدا نمیشدند نمیتونستید چیکار کنید خدمتتون عارضم که با یک نیرون اینو بسازید اما با اضافه کردن یک هیدن لیر اونم فقط با دو تا نیرون اونم با توابع فعالساز پله و یه لایه خروجی چی میشه شما می‌تونید اینو کاملاً بسازید یعنی ایکس او رو بسازید این مدلی که در واقع نیرون اول ضرایب وزنیش هست یک یک منفی یک و نیم خدمت شما عرض کنم که این مثلاً چه میدونم

اند خودمونو ببخشید یک منفی یک کنیم این داره انده ایکس یک و نات ایکس دو رو بهم خروجی میده خروجیش مفهومم داره حالا لزومی نداره متاسفانه توی شبکه عصبی که خروجی نرونا لزوماً برای ما مفهوم فیزیکی داشته باشد دومی رو میزارم چند منفی ۱ مثبت ۱ برای ضریبای ایکس یک ایکس دو بایاس منفی یک کنیم اینجا اند نات ایکس یک و x دو رو بهم میده نات ایکس یک یعنی اگر صفر اگر صفره یک ها و لایه بعدی این دو تا رو با هم همدیگه با یک یک منفی نیم اور میکنه این همون اتفاقیه که چی واقعا ایکس او رو باهاش باز میکن بچه های برقی که تو مدار منطقی اینا رو رفتن جلو دیدن میدونن که هر تابع بولین رو میشه به شکل همین تم اند اورا نوشت و چون ما تونستیم الگوی اند اورا را با شبکه های عصبی بسازیم پس هر تابع بولین رو تو عالم میتونیم بسازیم پس این شد مثال های بولین ما و اینجا بهش اکتفا می‌کنیم مثال بعدی که خیلی برای ما

جذاب بارها و بارها بهش احتیاج داریم اینه فرض کنید میگن من یه مسئله کلاسیفیکیشن دارم حالا ویژگی‌هامم به اون دلایلی که خدمتتون عرض کردم فقط میکشم می‌خوام ببینم می‌دونم که اگر محدوده پنج ضلعی باشن عکسم مثلاً گربه است اگه خارج این باشن گربه نیست چه جوری میتونم با شبکه‌های عصبی کاری کنم که اگر داده های ایکس یک ایکس دو تو این منطقه زرد رنگ افتاد فایر کنه خروجی رو یک بهم بده و اگر خارج این افتاد صفر بهم بده یا مرزهای پیچیده بکشه خب این کار بچه‌ها ایده‌ای دارید براش کسی میتونه برام بنویسه شبکه عصبی به نظرتون چجوری میتونن این کارو بکنن فرض کنید که الان اجازه داریم از شبکه های عصبی بالای مخفی استفاده بکنیم دیگه درجا از ورودی نریم تو خروجی یه لحظه فکر کنید ایده‌ای دارید بگید

علی پیچیده کنیم درسته ولی می‌خوام بگم با منطق آدم با منطق آدم میتونی بگی چیکار کنیم میشه دوست دارم از این بولین‌ها استفاده کنید این چیزایی که اندوه اوری که خدمتتون گفتیم چه پیشنهادی دارید خب خودم میگم مگه نگفتیم هر پرسپترون چیکار آها باریکلا مرتضی پنج تا از هم جدا کنیم مگه نگفتیم هر پرسپترون میاد فضا رو به دو بخش تبدیل میکنه در این نعمتیش میکنه خب شما یه پرسپترون بذارید که این خط رو شناسایی کنه یه پرسپترون می‌تونیم بذاریم که اینو بزاره یه پرسپترون برای خط سوم چهارم پنجم بعد چیکار کنیم این پنج تا خط رو با همدیگه چیکار کنیم انش کنیم الان شما با دو تا ورودی یه لایه هیدن پنج نرونه و یه تک نرونی که حالا از این چهار این

گرفته با یه بایاس مناسب چیکار میکنه اند میکنه اینا رو که حالا آرمین هم اشاره کرد بایاسش تغییر بدیم چی می‌تونید شما کاری کنید که هر کسی تو این فضا قرار میگیره چی بشه در واقع حالا حتی با تابع فعال سازی باینری ترشول از این ساده تر نداریم یعنی از تابع فعال سازی پله دیگه ساده تر نداریم بتونه براتون اینو بسازه یه نکته‌ای من اینجا بچه‌ها اضافه می‌کنم این مسیری که من فقط دارم به شما نشون میدم این شدنیه اما در تایید فرمایشات علی قدمی خدمتتون عرض کنم که زمانی که شما یه شبکه تریم می‌کنید لزومی نداره اون از مسیری که شما میخواید بره ها و ممکنه شما با تعداد نیرون های بیشتری کار بکنید یا دو سه لایه بذارید و اون یه مسیر دیگه رو در پیش بگیره ولی جواب آخرش درست باشه ها خب این یه پله بود بیاید مرز رو پیچیده تر بکنیم اگه مرز دو تا مثلاً چند ضلعی باشه چه پیشنهادی دارید اینجا معلومه شما می‌تونید چند تا نیر

بگیرید برای پنج ضلعی اول اندش کنید ۵ تا ران دیگه بگیرید برای پنج ضلعی دوم این هم اند کنید تا اینو بسازه بعد این دوتا رو با همدیگه اور کنید تا چی تا خروجی شبکه‌تون این باشه که حالا این فضا رو بهتون بده مثلاً فرض کنید میدونید اگر داده‌های ایکس یک و ایکس دو شما تو این منطقه قرار بگیرن سربازی معافیت اگر نه نیستید خب یه همچین چیزی و برای اینکه این کارو بکنید شما میتونید به راحتی با دو لایه مخفی ببینید با چه زور زیادی میرسید سوال آیا میشه همچین چیزی با تک لایه مخفی هم ساخت رو کاغذ بله ارزش داره نه لزوما منم بهش اشاره نمی‌کنم اما اگه دلتون خواست میتونید حتی اینو با تک لایه مخفی ولی با تعداد نیرون های بسیار بسیار زیاد خب بسازید ولی خب میگم ارزش نداره در ضمن اینجا میبینید که بعضاً مخفی بودن خانم احمدی که شما هدفتون اینه که خروجی بگیرید خب از ایکس به وای خروجی برسید ولی تو راهش قبل از اینکه وای حساب کنید یه سری

چیزهای دیگه حساب می‌کنید مثلاً یه زد یکی حساب می‌کنید از رو زد یک زد ۲ حساب به این لایه‌ها می‌گیم مخفی چرا ما در واقع تو شبکه‌های عصبی ورودی میدیم خروجی میگیریم معمولا هم نمیبینیم وسط مساها عموماً آدما نمی‌بینن چه اتفاقی میفته نمیدونم تونستم پاسختونو بدم بسیار عالی خب خدمت شما عارضم که یه شکل پیچیده تر غیر کانکتد ها اینو چیکارش میکنید این شکل آبیه رو چیکارش میکنید اوکی یکی از اینه که به یه سری مثلث بشکنید یا یه سری چند ضلعی چند ضلعی عموماً محدب یا کانوکس و خدمت شما عرض کنم که بیاید برای هر کدوم از این چند ضلعی ها با اند یه دونه بسازید و ته تهش این تمام این چند ضلعی پیچیده ها رو با همدیگه اور بکنید و بازم با دو لایه خدمتتون عارضم هیدن بتونید یه شکل های عجیب غریب و پیچیده‌ای رو چیکار کنید بسازید ها و طبیعتاً میشه حالا هر کاری کرد بچه ها میبینید از این گردلی به این گردلی ها بعضا

نیست خب ما گفته بودیم قبلا ادعا کرده بودیم از تمام لایه ال منهای یکم به علم یا از ال ام به علاوه یکم حتما خط وصله اینایی که نکشیدم نمادی از صفرن خب ولی باز تاکید می‌کنم این مسیریه که من طراحی کردم فقط بهتون نشون بدم میشه ولی که شما برید یه شبکه ترین کنید اون لزوما این کارو نمیکنه ممکنه دلش نخواد اینو صفر بذاره یا یاد نگیره ولی یه کار دیگه یاد میگیره تهش به همون جواب شما میرسه خب خب تا اینجا ما گفتیم که اوکی کلاسیفیکیشن ها رو بستیم که خیلی برای ما مهمه یعنی هر کلاس بندی چند کلاسه هم بهمون بدن و فلان و اینا ما میتونیم در بیاریم ارزهای عجیب غریب و پیچیده رو کاغذ حداقل نشون دادیم که شبکه‌های عصبی با دو لایه مخفی حالا نگفتیم با چند تا نیرون ولی از پسش برمی یه پله سوم من ادعا کردم که توابع در واقع چیز شبکه ها عصبی می‌تونن هر تابع پیوسته رو بسازن اینا تو مسائل رگریشن مهم میشه قیمت خونه قیمت ارز دمای فردا رو میخوید تخمین بزنید و الی آخر

و اینا چیزهایی که دیگه کلاس بندی نیست باز شبکه‌های عصبی از پسش برمیان همین قدر بدونید که یه شبکه عصبی در واقع سه تایی با دو لایه یعنی یه لایه مخفی یه لایه نهایی خب می‌تونه با این ویژگی که خدمتتون گفتم چیکار کنه یه تابع در واقع پالس رو برای شما بسازه پالس مربعی طور ها بین تی یک تا تی دو یک بده هر جایی قبل تی یک هر جا بعد تی دو چی بده صفر بده بهتون چجوری میگه ورودی ضربدر یک کنید ضربدر یک کنید یه بار بدید به نرون بالا یه بار بدید به پایین اینجا براتون نوشتم بعضی از منابع بایاس نیرون هاشون رو چی می‌نویسن تو خودش مینویسن یعنی الان منفی تی یکی که تو گردالیش نوشته نمادی از بایاس نرونشه و تابع فعال سازیش هم تابع پله بوده و اینو اگه خروجی بگیرید خدمتتون عارضم که یه پله میشه که به اندازه طی یک تا شیفت شده اینو اگه خروجی بگیرید یه پله میشه به اندازه تی دو تا شیفت شده این ضریب یک این ضریب منفی یک یعنی از همدیگه کمشون کنید چی میشه

میشه پله واحد درس ۱ و پله واحد در تیر ۲ از همدیگه کم بشن و همون چیزهایی میده که حالا توی معادلات دیفرانسیل یا درس ارتعاشات و اینا اولین بار بچه‌های مکانیکی باهاش آشنا شدن حالا این به چه دردمون میخوره مجموعه در واقع تعداد بسیار زیادی از اینا رو اگه بذاریم کنار هم شما میتونید هر تابع پیوسته‌ای رو با هر دقتی دلتون میخواد تخمین بزنید فقط یه ماجرا وجود داره ممکنه تعداد نروناتون خیلی خیلی با این الگو که گفتم زیاد بشه ولی همه میپذیریم که می‌تونن پسش بربیاد اینجاست که ما سه تا در واقع حوزه قدرت شبکه‌های عصبی رو چیکار کردیم بررسی کردیم پس تا الان دیدیم شبکه های عصبی میتونن خیلی قدرتمند باشن تازه یادمون باشه من مثال های قبلی رو فقط با تابع پله بردم جلو اگه یه تابع های دیگه بیارم میبینید زورش از اینی که هستم حتی میتونه بیشتر باشه دقت کنید من هیچ ادعایی نکردم توی اسلایدهای قبلی که اون تعداد نیرون ها و لایه هایی که کشیدم بهینه ترین

حالت من فقط ادعا کردم که با این نرون‌ها و این تعداد لایه می‌تونم به این جواب برسم یادمون باشه اضافه کردن لایه‌های مخفی دوم و سوم عموماً ویژگی‌های غیر خطی و قدرتمندتر بیشتری در اختیار من قرار میده تا اینکه بخوام با یه لایه مخفی تعداد نیرونو اضافه کنم بهتون گفتم اگر بخواید این کارو بکنید شما معمولاً اکسپوننشیالی باید بیشتر از لایه دوم و سوم نرون اضافه کنید تا قدرتتون با یه شبکه مخفی چی باشه برابری بکنه ولی اگر دقت کنید اینجا چیزیه که الان نمیخوام بهش اشاره کنم اما چرا نوشتم لایه مخفی دوم و سوم ننوشتم لایه مخفی انوم ۵۰ تا ۶۰ تا لایه مخفی بذارم همچین راحت نیست که لایه های مخفی ببرید جلو خیلی تکنیک لازم داره انواع مسائل پیش میاد و این سبب شده بود که در واقع از داغی شبکه عصبی توی برهه کلاً کاسته بشه تو حد فاصله چه می‌دونم ۲۰۰۰ تا ۲۰۰۶ و ۲۰۰۶ تا ۲۰۱۲ رویه‌های

۲۰۱۲ به بعد به واسطه تکنیک‌هایی که پیدا شد یکیشو حالا خدمتتون فقط معرفی اجمالی داریم اینه که یه دفعه شبکه عصبی اومد رو بورس و حالا تونستن شبکه‌های وحشتناک تعداد لایه بالا مثلاً ۱۵۰ لایه فرض کنید ترند کنند و به خروجی‌های عجیب غریبی برسن و چه مواردی پیش رومونه حالا انشالله میشه اونور سالو خدمتتون خواهیم گفت خب ما نوشتیم که با یک لایه مخفی شما ممکنه مجبور باشید به شکل نمایش تعداد ببرید بالا اما به این جمله برگردیم نوشتیم که هر چی لایه ها بره بالا ویژگی های غیر خطی و قدرتمندتر بیشتری تولید میشه چه مثال های از ویژگی های سطح پایین و بالا به ذهنتون می‌خوره توی حوزه چیز شناسایی سر و صورت گفتید دیگه مثلاً خط‌ها نمی‌دونم منحنی های روی صورت اینا ویژگی های سطح پایینن سطح بالا مثلاً میشه لب دهن سطح بالاتر میشه چشم و لب و دهن با همدیگه و الی آخر و حتی پیدا کردن ریش سبیل و و و

اینا همه میشن چی ویژگی‌های هی سطح بالا و بالاتر اینا تو چیزای دیگه هم میشه گفت مثلاً فرض کنید که شما فرض کنید می‌خواید بچه‌تون یا عرض به حضور شما یکی از فامیل‌های نزدیکتون روی مدرسه ثبت نام کنید خب برای ثبت نام تو اون مدرسه بچه‌ها چه ویژگی هایی به ذهنتون میخوره ها چه پارامترهایی رو لحاظ می‌کنید که اون بچتونو تو اون مدرسه ثبت نام کنید اینو برام بنویسید زمانی که شما رو می‌خواستن مدرسه ثبت نام کنن چه فاکتورهایی در نظر می‌گرفتن محله مدرسه که حالا کجا هستش تو چه منطقه واقع بله اندازش سطح آموزشی بله نمره ها کیفیت تدریس و و باریکلا بچه‌ها بچه‌ها بعضی از اینا بعضی از این فیچرهایی که شما نوشتید که البته کاملاً هم مهمه فیچرهاش سطح بالان خب که از فیچرهای سطح پایین‌تر به دست میان

اندازه مدرسه چقدره و تو منطقه‌ایه که فرهنگش پالابیا پایینه و تعداد دانش آموزاش چقدره یا چند تا ورودی مثلاً دانشگاه شریف داشته اینا همه با هم خودشون ویژگی‌اند می‌تونن منجر به یک ویژگی سطح بالاتر بشن که شما بگید کیفیت تدریس تو اون بالاتره ها و الی آخر و اینا چیزاییه که شما با اضافه کردن لایه تو شبکه‌های عصبی راحت‌تر بهش می‌رسید تا اینکه بخواید تو یه لایه هی نرون اضافه کنید اما سوال بعدی آیا بهره‌گیری از تابع پله بهترین راه برای ماست پاسخ قطعا خیرره چه تا بهایی توی نیرون ها به عنوان تابع فعال‌سازی استفاده میشن ساده ترین تابعی که میشه استفاده بشه تابع آیدنتیتی یا کلاً هرگونه تابع خطیه ها هر چیزی میاد خودشو بده بیرون درسته البته این تابع استفاده زیادی نداره ولی هر از گاهی استفاده میشه درسته من خاطر همین آوردمش تو لیست تابع بعدی تابع پرسپ

کتاب پله واحده که تا الان کل زورمونو گذاشته بودیم تازه با همین داشتیم بررسی می‌کردیم اما این تابع اصلا تابع جذابی برای کارهای ما نیست یه اسلاید جلوتر خدمتتون میگم توابع بعدی دیگه‌ای که خیلی مهمن و تا سال‌ها و سال‌ها داشت ازشون استفاده میشد هنوز که هنوزه انگار ناف مثلاً این بند ناف اینو با این بریدن شبکه‌های عصبی تابع سیگمویده یه تابع اس شکل خب که فرمولش هست یک تقسیم بر یک+ علاوه e به توان منهای زد اگر محور افق زد باشه محور قائم حاصل این باشه که اسمشو سیگما یا سیگما میزارن خب و این تابع تابعیه که بانده دام اش بین منفی بی نهایت تا بی نهایت از صفر کمتر به شما عدد نمیده از یک بیشتر هم به شما نمیده و این شما رو یاد چی میندازه خانم گودرزی جلسه قبلی گفتن اینو این تابع خروجیی‌های این تابع که پیوسته است بین صفر تا یک بله ما را کاملا یاد احتمال میندازه و به جای

این تابع بی‌ادب یه صفر و یک که خیلی غیر جنتلمنی عمل می‌کنه و هارش برخورد می‌کنه سنگین برخورد می‌کنه با کسانی که اطراف صفرن یه کوچولو اینورتر باشی بهت میگه ۰۱ یه کوچولو اونورتر باشی بهت میگه یکی این یه مقدار معتدل تر عمل میکنه مودب تر عمل میکنه رفتارهای بهتری داره و حالا میگیم خدمتتون مشتق پذیره برخلاف اینکه این همه جا مشتقش صفره تازه تو صفر هم تعریف نشده و اینکه چرا حالا مشتق مهمه در آینده باهاش کار خواهیم داشت این فوق معروف ترین تابع که کتاب قدیمیه چیز را ببینید همه اصلا چشم بسته از این استفاده می‌کردن خب تابع سیک موی تابع بود که بین صفر تا یک خروجی میداد داشتن از مغز الگو می‌گرفتن گفتن باشه آقا مغز یا صفر بود بعد یا فایر میکرد اسیک میکرد و الی آخر خدمتتون عارضم که چرا ما قراره واقعا از مغز الگو بگیریم ما که داده‌هامون می‌تونن مثبت منفی باشن ما فقط داریم ادای شبکه‌های عصبی واقعی رو در میوردیم رفتن یه تابع دیگه روش کار

به نام تنش یا تانژانت هیپر بولیک که حالا یه جورایی نمادی از اینکه سیگموئید و منهای نیم بکنید ضربدر دو بکنید اینام از همون جنسا خواهند بود ای به توان ایکس منهای ای به توان زد منهای به توان منفی زد تقسیم به توان منفی زد این دفعه خروجیش بین منفی ۱ تا ۱ میتونه بده که توی باینری کلاسیفیکیشن کاملاً مهمه توی لایه‌های مخفی هم کاملا میتونه مهم باشه چون برای ما میتونه بگه که صفر یه جایی اون وسط مسا باشه این از اون بیشتره یا کمتره حالا خواهیم دید چقدر میتونه به کارمون بیاد و تنه هم خیلی کار میکرد ولی تا سالهای سال با سیگموید و تنش رفتن و عصارشو کشیدن شیرشو کشیدن ولی دیدن از یه جایی به بعد زورشون بیشتر نیست تا اینکه تابعی به نام رلو یا رکتیو رکتیف یونیت که الان ترجمه میشه واحد خطی سا یکسو کننده به وجود اومد و توسعه پیدا کرد از ۲۰۱۲ به این و یک دفعه یک

عجیب غریب به وجود آورد تو ۱۰ سال اخیر شبکه‌های عصبی عمیق رشد کردند و با همین تابع رله تونستن کار بکنن تابع لو حرفش چیه میگه توی بخش‌های منفی هر جا زد منفی خروجی صفر بهم بده هرجا زد مثبته خودشو بهم بده ها حالا نماد اختصاریش مکس صفر و زد تابع خطی خودمون است وای مساوی با زد ها گفته هرجا منفی صفر هرجا مثبت خودشو بهم بده همین تابع یه دفعه تحول‌آفرینی کرد و ترکوند و الی آخر حالا یه عده بعدا چیزای دیگه هم از روش زدن ولی واقعیت اینه که همین خیلی کار راه میندازه و شاید خیلی احتیاج نباشه به اینا مراجعه کنید یکی بود یکی گفت آقا برای چی اینجا صفر بده بیایم بدیم یک دهم زد یه عددی بدیم ولی صفر نباشه که مشتقش صفر نباشه چون بعدا به کارمون میاد حالا بهتون میگم مشتق جلسه آینده میگم کجا به کارمون میاد توی ترینینگ این شبکه ها و گفت اینو بگیم بعد یکی دیگه گفت خب نه این درسته که یواش یواش داره میره ولی به هر حال از منفی تو منفی بی نهایت میره به منفی بی نهایت

اجازه بدید این بخش منفیشو به جاش ای به توان زد منهای یک بزاریم که تو منفی بی نهایت رو منفی یک ثابت بمونه ها اینو گذاشتن اسمشو ایلو گذاشتن یکی دیگه گفت ماکس اوتو چیز کنیم دو تا خط رو بگیر اصلا لزومی نداره واقعا شیب یکیش اینور یک باشه شیب یکیش یک دهم باشه دو تا خط رو بگیره صفحه رو یکی از اینا بگیر یه و صفحه یه خط دیگه سافت مکس ارائه شد که خدمتتون میگم کجاست و سافت پلاس که مثل ریلو قیافش ولی همونطور که پرسپترون و سیم داره پرسپترون و چیز میکنه بست رو از لحاظ شکلی پیوسته و بهتر میکنه مشتق پذیرتر میکنه ولی آخر یا تنش مثلا شما یاد چی میندازه بچه ها یاد کدوم تابع گسسته غیر خطی میندازه برام بنویسید بین منفی یک تا یک باشه اگر سیگموید و معادل تابع پله بگیرم تنه

معادل چی میگیرم تابع علامت تابع علامت میندازه فقط اینکه اونجام هاش برخورد میکنه تو صفر یه دفعه می‌پره بالا این میگه نه یواش یواش برو بالا فرض کنید که مثلاً می‌خواید در مورد یه نفر قضاوت کنید نمی‌دونم احتمالاً با تست های ام بی تی آی شخصیت شناسی آشنا هستید فرض کنید که به شما میگه که شما درون گرایی یا برونگرا ولی میدونید که این عدد واقعا چیزه یعنی یک طیف و نمیتونه شما را دقیقا تو این دو تا دسته دقیقا جا بده چون یه عده می‌تونن مثلاً ۴۵ درصد در اونگرا باشن یه عده میتونن یک درصد درونگرا باشن و کاملاً اینا فرق میکنه خدمتتون عارضم که سافت پلاس تابعی بود که پیوسته بود شبیه ریلو عمل میکنه و ولی پیوسته است دیگه لوگ یک+ علاوه e به توان زد البته لوگ بچه ها همون الn خودمونه ها بچه های کامپیوتری کلا تو کتاباشون استفاده می‌کنن منظورشون لوگ در پایه دو بیشتر خب و این موارد

توی اکتیویشن فانکشنا می‌تونست به کار بیاد فوق فوق معروف‌تریناشون که توی اسلایدهای الکساندر امینی هم هستش سیگموید تنش و ریلو هستش و اصلا شما ممکنه به جز این سه تا و البته تابع همانی به هیچ چیز دیگه‌ای فکر نکنید و در ضمن کارتون راه بیفته همینقدر بچه‌ها یه اشاره کوتاهی می‌کنم بعداً جلسه آینده باهاش کار داریم ما توابع اس شکل زیادی داریم که از صفر تا یک برن یا از منفی یک تا یک برن مثل تنش اما این دو تا خوبی های خودشون رو دارند خدمتتون عارضم که مشتقشون که ما باهاشون سر و کار داریم تابعی از خودشونه یعنی شما همون جایی که لازم دارید مقدار سیگما یا حساب بکنید میبینید که یه دفعه مشتقش تاب از خودش میشه اگه خودش حساب کرده باشید به راحتی هرچه تمامتر با یه جمع و تفریق و ضرب مشتقش پیدا میشه تو اون نقطه همینطور برای تنه چنین اتفاقی میفته و تابع های دیگه هم هستند اگه دلتون خواست برید نگاه بکنید شکل همین قیفه ها رو دارند اما کمتر استفاده میشن ولی اینم معنیش این نیست که استفاده نشن بچه ها این

تی اف نماد تنسرفلو و یکی از در واقع ابزارهایی که ما می‌تونیم تو پایتون صداش بزنیم لایبراریشو صدا بزنیم و بتونیم باهاش کار کنیم و اینجا بیان شده که چه جوری شما بتونید توابع سیگما رو تو تنسرفلو صدا بزنید اگرچه ما یه پله ساده تر با کراس بهتون یاد میدیم دلتون خواست میتونید خودتون تنسرفلوش هم یاد بگیرید خیلی کار عجیب غریب و پیچیده ای نیست با این اوصاف اجازه بدید از های با تابع پله خداحافظی کنیم دلیلشون اینه که خیلی بی ادب برخوردهای بسیار سختگیرانه دارند با داده های حول صفر و یه پله اینورتر مثلاً یه کوچولو از صفر بیا اینورتر میگه صفر یه کوچولو برید اونورتر میگه یکی و در ضمن مشتقشون هم که همه جا صفره تازه تو صفر هم که مشتق ندارند کلا تابع خوبی نیستند برای کارهای ما تو حوزه ماشین لرنینگ و ما باهاش خداحافظی میکنیم و جاش یه سری چیزهای دیگه معرفی یعنی که معرفی کردیم و پیشنهاد میدیم

در آینده نزدیک خدمتتون خواهیم گفت جلسه آینده که چرا علاوه بر خود تابع مشتقشم توی فرایند یادگیری شبکه بسیار بسیار نرم بسیار حتی بسیار بسیار اهمیت داره پیشنهاداتی که ما براتون داریم اینه تابع همانی کجا استفاده بشه علاوه بر تابع لایه ورودی در واقع که آدم حسابش نمی‌کردن مثل دروازه بانا تو سیستم های فوتبال مثلا میگن ۴۳۳ بازی میکنیم بدبخت و آدم حساب نمی‌کنن لایه ورودی خب طبیعتاً ما هیچ کاریش نداشتیم یعنی همون چیزی که میومد و میدادیم تو w ضرب میکردیم به گونه ای اگر میخواست گردالی به عنوان فرض کنید که تابع فعال سازیش تابع همانیه و در ضمن توی مسائل رگرسیون طول لایه آخر میتونه برای ما مهم باشه مثلا قیمت خونه رو بخواید تخمین بزنید خب شما اگه سیگ بزنید آخرش قیمت خونه رو شما بین صفر تا یک میشکونه حالا صفر تا یک رو بخواید به چی معنی کنید ها باید اجازه بدید خود تابع بیاد بیرون عدد میلیون میلیون دلار میلیون تومن میلیارد تومن ولی آخر خروجی بده پس کلا تو مسائل رگریشن تابع هم

تو لایه آخر می‌تونه کار بکنه تا به سیگموید یا سیگما یا همون یک تقسیم ۱ به توان منهای ایکس البته یه پله دیگه اضافه بکنم یک تقسیم بر یک به توان ای به توان منهای هر عدد مثبتی در ایکس هم باز بهش میگن تابع ولی ما فعلا با ضریب یک کار میکنیم توش فوق معروف ترین متداول ترین تابع فعال سازی تو یه سری از این ماژول های که قراره ازش استفاده کنید بای دیفالت میرن اصلا از اون استفاده میکن یعنی اگر ازتون نپرسید احتمال ۹۰ درصد رفته سیگ گذاشته براتون اصلا کلا کتاب قدیمی بر این اساس خیلی تابع دوست داشتنی بوده براشون و خیلی هم عرق دارن بهش ولی مشکلات خودش رو هم داره که حالا به موقعش در موردش صحبت خواهیم کرد خروجیش بین صفر تا یکه داره نیرون آدم و نیرون های مغز آدم رو شبیه سازی میکنه نسخه مودبانه تر جنتلمن تر و مشتق پذیر تابع پله واحد مشتقش بسیار را دست همانطور که نشون دادیم همونطور که خودتون هم اشاره کردید نمازی نمادی از احتمال رخداد یک پدیده یا فعال شدن نرونه و این خبر

اینکه نزدیک به یک بشه یعنی اینکه احتمال اون اتفاق خیلی زیاده و اگه نزدیک صفر بشه این کمه در ضمن بچه‌ها نگاه کنید تابع‌های هم تنش و هم سیگمو خیلی سریع میرن به اشباعشون می‌رسن و اینجوری نیست یواش یواش سلانه سلانه برن ها این فقط یه مقدار صفر اوضاع رو برای شما بهتر می‌کنن اما به محض که از صفر دور بشید خیلی هم نمیخواد دور بشید ۱۰ تا از هر دو طرف برید اونورتر مطلقا نمیخواد اصلا شما حساب بکنید یعنی یکی بهتون گفته ۱۱ چنده نمیخواد حساب بکنید بگید یک سیگمای منفی ۱۱ رو بگید صفر خب نمیخواد اصلا حسابش کنید برید اون فرموله رو بذارید یک تقسیم به توان منهای فلان و این کارو بکنید خدمتتون عارضم اگرچه به صورت سنتی میتونن تو تمام نیرون های شبکه به کار گرفته بشن یعنی شما هر شبکه عصبی می‌سازید میدونید کلا همه رو سیگموید بزارید خب ولی الانا امروزه بیشتر توی لایه آخر شبکه های عصبی تو مسائل طبقه بندی و همینطور

جاهایی توی ماژول‌ها و در واقع باکس‌های ال‌سی‌ام استفاده میشه ازش که حالا خدمتتون معرفی خواهیم کرد در آینده تابع تانژانتی پربولیک یا تانژانت عضو لبی یا تنش تقریبا دوستان از سیگمنت بهتر عمل میکنه یعنی اگه در واقع شک دارید بین این دو تا یا ابزاری که دارید فقط اجازه این دو تا رو استفاده کنید من پیشنهادم اینه که تن استفاده کنید حالا چرا بهتر عمل می‌کنه احتمالاً یکی از دلایلش اینه که بین منفی یک تا یک به جای که بین صفر تا یک باشه و در ضمن تو مشتقش هم یه سری ویژگی های خوبی وجود داره که حالا خدمتتون میگم مثلا مشتقش تو نقطه صفر برید برای خودتون بررسی کنید ببینید مشتق تنه چنده مشتق سیگما چنده و چه میتونه این کمکمون کنه و توی ال اس تی ام هم بع خواهیم دید که بسیار بسیار میتونه پرکاربرد باشه اما واحد ریلو همون تابع ثابت که این و منفی یا صفر بعدش تابع وای مساوی با ایکس میشه یکی از عوامل اصلی وقوع تحول تو حوزه یادگیری عمیق بوده و به کارگیری شبکه های عصبی برخلاف سیگما

تنش توابعی که مرز داشتند و به عبارتی ورودی‌هایی که بهشون می‌دید و چیکار می‌کنند اسکواش می‌کنند لهش می‌کنند بین منفی یک تا یک یا بین صفر تا یک این هیچ از یه سمتش مرز نداره یعنی میتونه هر چقدر میخواد مثبت و مثبت تر باشه ولی عوضش اینه که مشتقش یه عدد خیلی هم ساده است هم خوبه یعنی برخلاف اونا که خیلی سریع مجتباشون به صفر میل میکنه تو بوم این اتفاق براش نمیفته تو مثبت همیشه مشتق یک میمونه سردستی بچه‌ها هرجا ایده‌ای نداشتید از استفاده کنید علی طاهری میگه استفاده کنید یعنی هر جا هیچ اصلا واقعا ایده ندارید چیکار کنید رلو بزارید احتمالا ضرر نمیک خب و همینقدر بدونید که این به کار گرفتن این تابع میتونه کلی کار شما رو راه بندازه همچنان البته لایه آخر پیشنهاد میکنیم از سیگموید یا سافت مکس استفاده کنیم که حالا بهتون اشاره می‌کنم سافت مکس چیه و ولی یادمون باشه ریلو یک نقطه ضعف داره تو

بازگشتی یا آرنا که همون ال اس دی ما جزئی از اون باشند زیاد کاربرد نداره ایجاد خطر می‌کنه می‌تونه غیر پایدار کنه در واقع خروجی‌های شبکه‌تون واگرا بشن و اینا اونجا تنش خیلی خوب میشه و اینجا دیگه بالاخره بین رله و تنش حالا خودتون خواهید دید بیشتر تنه چیه یه سری جاها هم سیگما استفاده میشه و این چیزایی که وجود دارد خب بریم سر ریاضی ماجرا ما اولین شبکه‌هایی که می‌خوایم ریاضیشون رو بررسی بکنیم بچه‌ها شبکه‌هایی هستن که هیچ لایه پنهانی ندارن یعنی این ورودی هاتونه در جا خروجی فقط خروجی می‌تونه بیشتر از یک باشه کی بیشتر از یک بود تعدادش تو مسائلی کلاسیفیکیشن وقتی که مثلاً می‌خواستید سگ گربه الاغ و و و الی آخر رو می‌خواستید از همدیگه چیکار کنید تفکیک کنید یادتونه بهتون گفتم یه حالت اینه که یه نیرون بذارید بگید اگه صفر داد الاغه اگه یک داد گربه است اگه دو داد سگ ولی اگه یادتون باشه گفتیم این نمایش نمایش خیلی درخشانی نیست و من ترجیح میدم از فرم های با آنها تست استفاده کنم برای هر کدوم یه نرون در نظر می‌گیرم یا مثلاً تو خودروهای خودران

عابر دیدید نشانه مثلاً تابلو دیدید نمی‌دونم چراغ راهنمایی دیدید یا یا ها چند تا مورد مشخصی برای خودتون تعیین می‌کنید و می‌رید نگاه می‌کنید که خروجی این نرونا چند میشن و تصمیم می‌گیرید مثلاً یکی از راه‌هاش اینه که رو تمام اینا سیگما بزارید بعد نگاه کنید که کدومش به یک نزدیکتره اونو انتخاب بکنید مثلاً این چهار تا دارید اولی سگ دومی گربه است سومی خروس چهارمی سایر نگاه کنید وقتی که اینا رو ورودی بهش میدید چیکار می‌کنید ولی یادمون باشه این شبکه ها گفتیم اونقری زورشون زیاد نیست ولی جهت اطلاع بخوایم اینو بنویسیم اینجا نوشته حالا یه جای دیگه هم من براتون نوشتم هر کدوم از این زد آیی‌ها یعنیz دو الی آخر چجوری پیدا میشن یه بایاسیه که این اسمشو گذاشته w صفر به علاوه چی ایکس یک ضرب در در واقع دبلیو یک یک ایکس دو ضرب در دبلیو دو یک ایکس سه ضرب در دبلیو سه یک ها بچه ها این دبلیو آر اجازه بدید با یه ماتریس حالا ام در n مشخص کنیم این

از اولی به اولی وصل شده بهش میگیم w11 اینی که از اولی به دومی وصل شده بهش میگیم w12 اونی که از دومی به اولی وصل شده و الی آخر اوکیه همین جا بچه‌ها بهم بگید این تعداد فلش‌های آبی اگر من ورودیم سه تا باشه و خروجیم دو تا باشه چند تا دبلیو خواهم داشت برای شش تا خواهم داشت دیگه علی نوشتی برای دو کلاسه فرقی داره دو رو بذاریم یا یه دونه هر دوتاش شدنیه ولی برای دو کلاسه هم کافیه دیگه نیازی به دو کلاس نیست مگر اینکه این کلاس نباشه این خروجی ها چیزای دیگه‌ای باشن یعنی دو تا خروجی کاملاً بی‌ربط می‌خواید بگیرید مثلاً می‌خواید ببینید که آیا آدمی در تصویر هست یا نه مثلاً اگه هست کجا هست خب یه همچین چیزایی و که دو تا چیز بی ربط باشه ولی همونطور که احسان گفت شش تا شما خواهید داشت و یه ماتریس سه در دو از دبلیوها میتونیم بسازیم درسته خب ولی یادمون باشه بچه‌ها وقتی خواستید z1 رو حساب کنید

۱۱۱ در ایکس یک به علاوه چی در ایکس دو ضرب میشه برام بنویسید به علاوه فلان در ایکس ۳ ضریب ایکس دو چیه توی محاسبه زد یک گفتم w۱۱ در ایکس یک بعلاوه چی دبلیو دو یک در ایکس دو و نه دبلیو یک دو یادمون باشه پس بخاطر همین ما اگه بخوایم از فرم‌های ماتریسی استفاده کنیم که اتفاق میخوایم این کار بکنیم باید چیکار کنیم باید ترانهاده بگیریم از دبلیو تا این اتفاق بیفته ولی بچه ها این فرم ماتریسیش اینه میشه w ترنسپوز در ایکس به علاوه بی هم یه بردار بایاس مثلا اگه اینجا دو تا خروجی دارم بی دو تا خروجی دو تا چیز داره یه بردار در واقع دو مقدار است با یک ستون اولیش برای زد یک دومیش برای زد ۲ این فرم برداریه بچه‌ها رقابتی که چیزهای مختلف دارند به اصطلاح پلتفرم های مختلف و لایبری های مختلف دارند برای اینکه شما برای

از اون استفاده بکنید عمدتاً بر محاسبات ماتریسی مبتنی یعنی هرکی بتونه قویتر محاسبات ماتریسی رو انجام بده پرطرفدارتر میشه این چیزایی که پشتشه و بعضاً شما متوجهش نمیشین یعنی شما برای یکی دو لایه خودتون دستی با این کدا رو می‌زنید من الان بهتون نشون خواهم داد ولی می‌بینید که چیزه می‌بینید که به محضی که تعداد لایه‌هاتون زیاد میشه یه دفعه کامپیوترتون کم میارن ولی آخر و شما با مطلب و با فور و ایف و وایل کار خوب در نمیارید اونقدر ورید از ماژول های آماده استفاده می‌کنید خب بچه‌ها دستور معادل اینکه شما تو تنسرفلو بخواید یه همچین شبکه‌ای رو بسازید اینه شما اول ایمپورت میکنید تنسرفلو از تی اف بعد مینویسید لیر مساوی با تیf.ls فلان بچه ها به این شبکه هایی که از هر کدوم از قبلیا به تمام بعدی ها وصله بهش میگن شبکه های دنس خب خب شبکه‌های چگال اینه که از ما بعداً تو سی ان ان ها خواهیم دید که همچین اتفاقی نمی‌افته ما آگاهانه کلی این فلش آبی ها رو کم

خوب الان سه تا اینجا دوتا داشتید شد سه دوتا ۶ تا کافی بود مثل عکسی که اون روز بهتون نشون دادم ۷۸۴ تا اینجا باشه ۱۶ تا بعدی چند تا میشه میشه ۷۸۴ ضربدر ۱۶ تا پارامتر شما دارید آگاهانه به سیستمتون تزریق میکنید که میخوید تازه اونا رو محاسبه هم بکنید خب و واقعاً چیز وحشتناکیه و بخاطر همین میبینید که نیازی نیست با شبکه‌های ملپی همه کار بخوایم بکنیم ولی کلا هیچ لایه ها رو بهشون میگن لایه‌های دس یه سوال بچه‌ها اینجا که x‌ها داشتن در یه wلیو های ضرب میشدند ما داشتیم یه جورایی بین دو تا بردار هم طول که حالا یکیش اسم ورودی نرون باشه و یکی وزن ها باشه داشتیم چیکار میکردیم ضرب داخلی انجام میدادیم یعنی ایکس یک ایکس دو ایکس w11 اوکی با یه بایسی هم جمع بچه‌ها به نظرتون تفسیر شهودی ضرب داخلی چیه ما که دوست داریم حالا پشت این اتفاقا که خیلی قوی هم هست بعضاً نمی‌فهمیم چه اتفاقی میفته حداقل خودمونو قانع کنیم داره چه اتفاقی میفته فکر می‌کنید

شهودی این ضربه داخلی چیه این زد یکه زیاد و کم شدنش چه معنایی داره ها مثلا یادتون باشه ما تابع پله که می‌زدیم می‌گفتیم اگه از صفر بیشتر شد فلان یک بشه اگه از صفر کمتر شد فلانه جز گروه فلانه اینکه کم و بیشتر بشه یعنی چی داره چه اتفاقی میفته پیشنهادتون چیه ایده دارین نگاش میشه روی یک محور علیرضا داری چی میگی یه چیزایی میخوای بگی نگاش میشه روی محور آره ضرب داخلی حاصلش یه عدده یه اسکالره خب نزدیک شدن به یک کلاس خاص خب باریکلا خانم گودرزی اولین چیزی که تو ذهنم بودید اولین تاثیری که داره اینه که این ایکس ها بچه ها لزوماً هم لول نیستن

ممکنه یکیشون فرض کنید تعداد اتاقای یک خونه باشه یکیشون نمی‌دونم تعداد آجراش باشه بعد این دو سه مثلاً این مثلاً ۱۰۰۰ و ۲۰۰۰ و فلانه اولین کاری که دبلیو داره می‌کنه داره تعدیل و تنظیم میکنه میزان تاثیر ایکس آی ها را تو زد ها یعنی نگاه میکنه کیو باید تقویت کنم کیو باید کمرنگش کنم خب این عالی دیگه چی مسئله دوم فوق جذاب که به ذهن می‌خوره و آگاهانه اینو آوردم مسئله اینه که دبلیو دات بشه در ایکس عددش بیشتر بشه یعنی اون دو تا بردار شباهت بیشتری دارند یعنی شما یه شابلون انداختید روی ایکس که اسمش دبلیو باشه هرچی بیشتر به هم نزدیکتر باشن عموماً میگم این عدد خروجیش بیشتر میشه کی این حرفی که زدم دقیق درسته اگر دبلیو ایکس بردارهایی باشند که میانگینشون صفر باشه و اندازه هاشون هم یکسان

ضرب داخلی دو بردار خودمون کی اندازش ماکسیموم می‌شد وقتی که دقیقا رو هم می‌افتادن درسته و این اتفاق جالبیه خب کل در واقع ماجرایی که بشه تفسیر کرد که چرا ما ممکن از شبکه‌های عصبی بدون لایه‌های پنهان استفاده کنیم شکلیه که اینجا وجود داره یه بنده خدایی اومده بوده قبلاً عکس می‌داده بهش یه شبکه خب بدون هیچ لایه خروجی پنهان داشته باشه میگفت بگو این صفر یک دو تا نه کدومه بالاخره ها حالا عکسی که می‌داده فرض کنید چی بوده ۲۴ در ۲۴ بوده یعنی چی ۲۸ در ۲۸ بوده یعنی ۷۸۴ تا درایه داشته یعنی چی یعنی ۷۸۴ تا از این المان ها داشتیم چند تا خروجی بچه‌ها داریم بدون هیچ لایه مخفی چند تا خروجی داریم میخواد عددا رو برای ما شناسایی کنه از صفر تا نه یعنی چی ۱۰ تا خروجی داریم باریکلا یعنی چی یعنی ۷۸۴ ضرب در ۱۰ تا

فلش‌ها وجود داره ها حالا اگه شما بیاید w11 رو با هم نگاه کنید چند تا میشه تا wd1 چند تا می‌شه چند تا عدد داریم همون ۷۸۴ تاست اینو بیاید فرم همون عکس بچینید یعنی اگر عکس اینجوری بوده ستون اولش یک تا در واقع ۲۸ بوده بعدی ۲۹ تا حالا دو برابر ۲۸ و الی آخر تا ۷۸۴ بیاد این کارو بکنید یکی رفته شبکه عصبی کرده که تا حدودی کارشو راه بندازه اتفاق جالبی که افتاده نگاه کنید دبلیو بچه ها به چه شکلی در اومدن دبلیو رو پلات کرده هر چی به یک نزدیکتر فرض کنید روشن هر چی به صفر نزدیکتر تاریک یا بالعکس چه اتفاقی افتاده به دبلیو نگاه کنید w کلاس یک چه شکلی شده چه شکلی شده بچه‌ها می‌بینید می‌خوام ببینم تو این سایز میبینید یا نه شبیه همون عدده

شابلون شده آقا میگه عددی که بهم میدی این شابلونه رو من میندازم روش ببینم به کدوم بیشتر شبیهه درسته هر کدوم بیشتر شبیه بود میگم اونه ها و اتفاق جالبی که افتاده اینه که ترند شده یک اینجوری شده ۲ ۳ ۴ تا صفر این اتفاق افتاده اما به این اتفاق بچه‌ها میگن تمپلیت مچینگ همون چیزی که عرض کردم خدمتتون ولی خب واقعیت اینه که نوشتن یک دو و الی آخر بسیار بسیار می‌تونه حالت‌های پیچیده و متفاوتی داشته باشه یکی یکی اینوری بنویسه حالا شانس بیاره مثلا نمیدونم باتش با اونا بیشتر نشه و الی آخر و طبیعتاً مثلاً یکی میتونه صفرشو خیلی گردلی شد چیز بکنه سوراخش کوچیک بگیره به یک نزدیکتر باشه تا قیافش تا صفر و میبینید داتش با اون بیشتر میشه و این خطا رو به وجود میاره ولی در هر حال تا حدودی داره کار راه میندازه و این فلسفه وجود شبکه های عصبی بدون لایه مخفی یعنی شما عجولید در جا میخوید از ورودی به خروجی برسید خب

من اینم میگم بعدش میریم یه کمی فضا رو شادترش می‌کنیم و یه سری نمونه‌های عملی ازش می‌بینیم اینم لطفاً به خاطر بسپارید یادتونه گفتم توی حالا پیرو سوال آقای قدمی هم هست دیگه توی مسائل چند کلاسه مثلاً بیش از دو کلاس بیشتر منظورمه خب مثلاً می‌خواید ببینید که چیزایی که اینجا هست تو خروجی چی بوده سیب بوده نمی‌دونم خرس بوده شکلات بوده سگ بوده و تخم مرغ بوده الی آخر ها چیکار میشه کرد درسته ما چند لایه داریم بچه‌ها پیشنهادتون اینه که در حالت عادی با دانشی که از قبل داشتید رو لایه آخر چه تابع فعال سازی میزدید یعنی هر کدوم از این گردالیا چه افی داشتند از نظر شما اگه به شما بود تو صحبتامم گفتم علی گفت سیگموید خانم گودرزی سیگ بله همون صحبت های که من گفتم سیگ درسته سیگموگ میتونست خیلی کار راه انداز باشه و نگاه می‌کنید ببینید بین این بین اینایی که دارید سیگموید میگیرید کدوم عدد بیشتری شده اونو انتخاب کنید به عنوان معیار درسته

ولی یه چیز دیگه‌ای اومد که الان از سیگمای توی مسائل کلاسیفیکیشن چند کلاسه می‌تونه جذاب‌تر و جالب‌تر باشه تابع یا لایه سافت مکس چه جوری میگه وقتی که ان تا خروجی می‌گیرید قبل از اینکه تابع فعال سازی رو اعمال کنید زد یک زد دو تا زد انتون رو حساب میکنید میگه بیاید اینو روش اعمال کنید میگه بیاید از هر کدوم از درایه‌ها اکسپوننشیال بگیرید از کل درایه‌ها اکسپوننشیال بگیرید تو مخرج با همدیگه جمع کنید صورت مخرج تقسیم کنید به یه عدد میرسید شاید الان حسی نداشته باشید اما خدمتتون میگم اولاً زدایی که بچه ها بهش میرسید در حالت عادی میتونه از منفی بی نهایت باشه تا مثبت بی نهایت حالا نه خود منفی بی نهایت مثلا منفی ۱۰۰ بشه بشه مثبت ۱۰۰۰ الی آخر درسته هر کدوم از این اتفاقا میتونه بیفته خوبی اکسپ گرفتن اینه که چیکار میکنه اینو توی بازه در واقع مثبتی میاره حالا صفر تا یه عددی تقسیم بر سیگمای x به همشون رو بکنید چی میشه

اینجوری میشه که اینا نرمال میشن یعنی جمع تمام خروجیهای این عددهایی که اینجا نوشتم باید چند بشه بچه‌ها جمع باید جمعشون دقیقاً بشه یک دقیقاً هم بشه خب و اینجا اینجوری میشه مثلاً اولی میشه ۷۴ صدم بعدی می‌شه مثلاً ۱۲ صدم بعدی میشه دو صدم بعد میشه دو صدم بعدی هم میشه فلان حالا یک منهای اینایی که گفتم اینو توجیه می‌کنن با اینکه آقا این ۷۴ درصد این عکسی که بهم نشون دادی احتمالا اپل بوده حالا ۱۲ درصد احتمالاً خرس بوده نمیدونم فلان بوده و الی آخر ها و این خیلی جالبه اینی که جمعش یک میشه و شما می‌تونید نه تنها بیشترین رو انتخاب کنید بلکه چند تای بالایی رو مانیتور کنید مثلاً فرض کنید یه مجموعه ۱۰۰۰ کلاسه دارید یه عکس بهش میدید این میگه ببین به احتمال مثلاً ۳۳ درصد من حس می‌کنم خب کامیون ولی به احتمال ۳۰ درصد حس میکنم ماشینه خب یعنی ممکن هم ماشین باشه ولی هنوز داره خوب بهتون گزارش

و سافت مکس چیزیه که خیلی کار شما را راه میندازه توی لایه آخر مسائل چند کلاسه میتونه به کارتون بیاد محاسبه‌اش خیلی ساده است ها اکسپوننشیال بگیرید از این عددا تقسیم بر جمع تمام اکسپوننشیال بکنید که یه عدد بین صفر تا یک بهتون بده جمع یک بشه و هرکی بیشتر بود نماد کلاس برنده است و اون چیه و اون نماد اینه حالا اگه سیگموید میزدید یه فرقی که با این داشت و یه بدی که با این داشت این بود که سیگموید نسبت به این اف جمعش یک نمیشد مثلا ممکنه بود اول دهم بعدی بشه هشت دهم خب حالا دیگه دید نداشتید که خب بالاخره این شبکه داره میگه ۹۰ درصد سگ ۸۰ درصد گربه است ها ولی این یکی این اتفاق براش نمی‌افته و معمولاً اختلاف های فاحشت‌تری میفته و خب شما راحت تر میتونید با دید بهتری این کارو بکنید اگرچه به ذات فرقی ندارن چون چی همه این توابعی که ما عموما خدمتتون معرفی کردیم صعودی اکیدن و تو هر کدوم اولی از دومی بیشتر بشه تو اون یکی دیگه هم اولی از دومی بیشتر میشه اما چقدر بیشتر

حالا میتونه متفاوت باشه اینو به خاطر پس بسپارید برای لایه آخر شبکه‌های چند کلاسه تو کلاسیفیکیشن ما از سافت مکس استفاده می‌کنیم که این پرکاربردتر از سیگما ایده و یه جورایی بیان تعمیم یافته سیگموید توی بیش از دو کلاسه که حالا بهتون میگم چه جوری بچه‌ها اینجا جای جذاب ماجراست خب این همه حرف زدیم حرف زدیم حرف زدیم این شبکه‌ها چه جوری ترین میشن انشالله جلسه آینده اما این شبکه‌ها چه خروجی های دارن آیا واقعاً زور دارن یا نه اجازه بدید با هم ببینیم یه سایت فوق جذاب براتون گذاشتم برید حتماً نگاه بندازید سایت یه ادعای جالبی کرده نوشته آقا نترسید شما نمی‌تونید سایت منو خراب کنید خب نوشته هر کاری می‌خواید بکنید بکنید اینجا انتخاب بکنید می‌خواید کلسیفیکیشن داشته باشید یا رگریشن اجازه بدید ما امروز بحثمون رو کلاسیفیکیشن بیشتر گفته از چه اکتیویشن فانککشنی میخوید استفاده کنید دقت کنید همون چهار تا معروف های ما رو گذاشته خطی سیگمای تنش ریلو بقیش هم نذاشته شما تنش فعلا انتخاب بکنید خدمتتون عارضم رگولار

الان کاریش نداریم الی آخر اینجا ۴ تا مثال برای شما گذاشته که شما برای شما بیاید چیکار کنید بیاید در واقع با شبکه عصبی تلاش کنید که جداشون کنید از هم من اول کلاس اول یعنی نمونه اول نمونه اول این بوده گفته آقا من یه آزمایشی کردم دیدم که ایکس یک و ایکس دو دوتا فیچر مهم منه دو تا جسم دارم آبی و نارنجی حالا مثلا میتونه هندونه و خربزه باشه میتونه سگ و گاو باشه و و و گفته که رفتم نمونه گرفتم ۱۰۰ تا نمونه از آبی ها گرفتم ایکسشون تو این منطقه افتاده ۱۰۰ تا نمونه از نارنجی گرفتم اینجوری افتاده گفته آقا برو یه شبکه عصبی برای من در واقع ترین بکن برام بکش که چی که بتونه آبی ها رو از نارنجیی‌ها جدا کنه فرض کنید که شما صفر هیدن لیر دارید هیچ هیدن لیری ندارید یعنی ایکس یک و ایکس دو ورودیتونن می‌خواد به شما خروجی بده خب اوکی بچه ها و و فرض کنید هم تابع اکتیویشن تنه چه تنه حالا تو ذهنتون همون چیز خودمون بگیرید

پله واحد خودمون فعلاً بگیرید خب بچه‌ها شبکه‌ای که در واقع دوتا ورودی داره و یه خروجی در جا یعنی بدون هیچ هیدن لیری چی میتونه برای شما بکشه برام بنویسید ته زورش چی بود تو دو بعد ته زورش یه خطه باریکلا ترین کنم ترین میکنم ترین میکنم میره جلو وای وایمیستمش الان ۳۰۰ تا ایپاک رفته بهتون میگیم ای پاک چیه و این کاری که کرده چیه هیچی فقط تونسته یه خط بکشه خدمتتون عارضم که یه آبی ببینید یه نقطه های آبی و نارنجی میبینید یه منطقه رنگی آبی و نارنجی میبینید این قرار بوده آبیار از نارنجی ها جدا کنه منطقه آبی و منطقه نارنجی با یه خطی اینجا پیش هم جدا شدن خب و حالا اینکه گرادیان داره از آبی به سمت سفید میره بعد سفید میره به سمت نارنجی به خاطر تنشی که مؤدب تر از چیز عمل میکنه تابع پله عمل

درجا هارش نمیگه این از این پله اپسیلون سانتی متر اینورتر فلان اپسیلون سانتی متر اونورتر ولی کلاً یه خط برای خودتون تو ذهنتون بکشید یه خط کشیده گفته آقا هرکی اینوره آبی هر کی اونور نارنجیه درست گفته یا نه آره آبی‌های زیادی رو درست گفته ولی مشتی از آبی‌ها افتادن تو نارنجی ها و کلی نارنجی افتاده تو آبی که اینا رو چی حساب کرده آبی حساب کرده پس این زور زیادی نداره من اینو اگه مثبت رو بزنم یه هیدن لیر اضافه میکنم خب یه هیدن لیر اضافه میکنم خودشم دو تا نیرون داره میتونید تعدادش با این به علاوه کم و زیاد بکنید خب یه بار دیگه من میزنم ترین بشه یه هیدن لیر با سه لایه بچه ها چیکار کرد یه هیدن لیر با سه لایه تونست دیگه یه لایه مخفی یه هیدن لیر با سه نرون و یه لایه خروجی با یک دونه خروجی خب تونست که مرز عجیب غریب آبی نارنجی برای شما بکشه که واقعا خوب کشیده انصافاً غلط نداره دیگه نه این تمام نارنجی ها دایره نارنجی ها تو نارنجی تمام این افتادن تو اما

چیکار کرد نرون اول چی به من داد یه خط به من داد ببینید بچه‌ها من با موسم دیگه نمیتونم برم روش یه خط بهم داده درسته نرون دوم یه خط دیگه بهم داده ها که اصلا این خطام لزوماً آبی و نارنجی و از هم تفکیک نمی‌کنند نرون سوم یه خط سوم بهم داده انتظارم همین بود نیرون های لایه اول واقعاً نباید بیشتر از خط میتونستن به من بدن ولی چون تابع تنت غیر خطیه یه غیر خطی گری هم اینجا روش اتفاق افتاده حالا چی حالا این مجموعه غیر خطی گری این خط ها با هم که روابط مویسیم میتونن این مرز عجیب غریب پیچیده رو توی خروجی لایه بعدی به شما بدن و یه حالت چه می‌دونم مثلث حالا با در واقع گوشه های هلالی برای شما به وجود بیارن ها خب اگر تعداد لایه ها رو بیشتر بکنم تعداد چیزا رو بهش نیرون ها رو بیشتر بکنم و بعدش دوباره پلی بزنم یه بار دیگه ترین بکنم و یه وقتی وایسون هم آیا منحنیم بهتر میشه ممکنه بشه ممکنه نشه

به نظر میاد الان به جای اینکه مثلث بکشه داره یه پنج ضلعی برام می‌کشه شاید دقیقا داره شبیه اون انده یا اوره عمل می‌کنه که ما گفتیم در ضمن رو هر خطی که بایستی دبلیو شو به شما میده مثلاً روی خطه که اولی رو به اولی وصل کرده باشه اولی رو به دومی وصل کرده باشه الی آخر بچه‌ها آبی نماد مثبت‌ها نارنجی نماد منفیست آبی خیلی کلفت و پررنگ نماد عدد بالاتر و نارنجی پر رنگ نماد منفی تره خب مثلاً این عدد الان تقریبا صفر شده گفته آقا از این به این دبلیوم صفر در میاد ۶۵ هزار ولی دو به یک بچه‌ها چی در اومده مثلاً ۸۷ در اومده جز بالاهاشه اینجا چی در اومده یک و هفت در اومده ها دبلیو ایکس یادتون باشه گفتیم قرار نیست بین صفر تا یک باشن یا بین منفی یک تا یک باشن می‌تونن هر عددی بین منفی بی نهایت تا بی نهایت رو بگیرن خب و این کارو بکنیم این تو این امکانش نذاشته

شما میتونی استفاده بکنی توی لایبراری‌هایی که ما بهتون معرفی می‌کنیم شما تک تک نیرون‌هاتو می‌تونی تعیین کنی که چه اکتیویشن فانککشنی داشته باشد ولی این یعنی الان تمامشون تن چند یعنی هم تمام این شش هفت تایی که اینجاست و همون آخری تنهچه خب و این داره استفاده می‌کنه خب اوکی حالا این داره چیکار میکنه این اینو شناسایی کرده بچه‌ها این خط پایینیه رو شناسایی کرده با ضریب مثبت گذاشته یعنی بالاهاشو بگیر پاییناشو بده خب این یکی چی این یکی اینجوری گرفته ضریبش مثبت شده ولی این یکی مثلاً ضریبش منفی شده خب این یکی ضریبش منفی شده بچه‌ها نگاه کنید خودش واقعا همچین اتفاقی براش افتاده حالا خیلی هم نمیشه البته حرف زد ولی کلی از آبی ها تو نارنجی افتادن کلی از نارنجی ها تو آبی این میگه نه آخرش باید یه دلیل منفی ضرب کنم تا بعدش که حالا میدم آخر درسته در بیاد خب حالا من بچه‌ها تعداد لایه‌ها رو زیاد کردم مسئله‌ای نبود که با بیش از یه لایه زیاد نیاز باشه ولی می‌تونم یه تعداد یه لایه دوم هیدن هم اضافه کنم باز یه بار دیگه

کنم و بگم برو ترین شو و حالا برام شکل بکش و خب می‌بینید خیلی شکلی شکلش فرقی نداره اجازه بدید که من چند تا از اینا رو باز اضافه بکنم و حالا بزنم و این دفعه بچه‌ها می‌بینید که این دفعه به جای چند ضلعی تونست تقریباً یه دایره برام بکشه ها و این خیلی جذابه خب و من اینو وایش وایمیستمش دیگه بیشتر از این نمی‌تونه بهتر شه حالا چه اتفاقای جالبی میفته بچه‌ها مثلاً فرض کنید این نیرون های لایه اول که فقط خط میکشن که اصلاً زورشون بیشتر از خط نیست اگر بیشتر از خط کشیدن دارن بهتون دروغ میگن اما لایه دوم به بعد میتونه منحنی بده نرون اول لایه هیدن دوم تونسته یه مرز اینجوری بهتون بده آبی ها رو شناسایی کرده ولی مشتی نارنجی ها هم رفتن توش نرون بعدی همون چیزی که ما می‌خوایم رو کشیده دایره داخلی و اونورش بیرونش یه چیز دیگه کشیده ولی چی ولی برعکس شناسایی کرده نارنجی و مثلاً داده به داخل مثلاً فرض کنید منفی کار داده به داخل آبی ها رو داده به بیرون نتیجه‌ش بچه‌ها

چی شده بلکه اینو درستش کنه چیکارش کرده بعدش تو ترینینگش بلکه بره به لایه آخر وزنشو ضربدر یه عدد منفی کرده باریکلا خب این لایه اینه این لایه اینه بعد می‌بینید بچه‌ها بعضی وقتا می‌بینید شما چیز می‌کنید یعنی ریداندنسی دارید و زیادی دارید نرون می‌ذارید مثلاً لایه فرض کنید دوم و چهارم تقریبا خروجی هاشون یکسانه و خیلی فرق خاصی با همدیگه ندارن این لایه اینجوریه و در نهایت تونسته در کل اینو براتون بسازه خب بریم سر مثال بعدی مثال بعدی خوب مثال داده هاش سخت تری هستند دو تا نارنجی اینور داره دو تا آبی اینور داره به هیچ عنوان شما با خط نمیتونید جداش بکنید اگر یه لایه مخفی بذارید خب اوضاع حالا یکم بهتر میشه ولی مثلاً فرض کنید با دو تا با دو تا نیرون و بعدش یه نرون شبیه اون چیزی که تو ایکس دیدید براتون جدا می‌کنه ولی این آبی ها رو داره غلط میگه یه مشتی نارنجی ها افتادن اونور اما به محض اینکه تعداد این مثلاً لایه هاشو

دوتا بکنید تعداد نیرون‌های هر لایه رو مثلاً به همون چهار پنج تا برسونید و فلان و ترینش کنید یه دفعه می‌بینید که به شکل بسیار قدرتمندی میاد مناطق چی از هم گسسته از هم جدا براتون جذابه ها یعنی رفته گفته آقا اینجا باشی آبی هستی اینجا باشی آبی هستی به جز اون نارنجی هستی و تقریباً ۱۰۰ الان دقت چیز دارید ترینینگ دارید یعنی شما هیچ وقت نمیبینید هیچ تو آبی و آبی ها تو نارنجی ها افتاده باشه و حالا اگه دلتون خواست باز برید ببینید این الان یه خط گوشه افتاده این خط تقریباً همون چیزه وای مساوی صفر خودمونه این ایکس مساوی حالا صفر نه ولی یک شیب داره اینم همین بعد لایه بعدی مثلاً رفته اینو شناسایی کرده اینو شناسایی کرده و و و و بعدش در نهایت با یه سری ضرایب مثبت و منفی به همدیگه ربطشون داده و از تنش عبورشون داده و در نهایت چی شده رسیده به اینکه شما بتونید شبکه عصبیتون خروجیش پیدا کنید

نگم ولی متاسفانه دارم میبینم وقتم داره کم میاد تو هر لایه آها احسان الان بحث بهینه سازی اصلا مطرح نیست خب من باید بهش برسم تا بگم فعلاً بحث بهینه سازی نداریم و فعلاً هدفمون اینه که کارو انجام بدیم برای بهینه‌سازی یکی از راه‌هاش اینه که شما هی تعداد لایه‌ها رو عوض بکنید و چی و برید تست بگیرید تو اینجور وقتا یه سری از داده های ترینتون رو میندازید کنار نمی‌ذارید شبکه ببینه میگید آقا اینا پلمپ پلمپ من نمیذارم ببینن میرم مدل های مختلفو می‌سازم و رو اون داده ها امتحانش می‌کنم ببینم کدومش بهتر در میاد حالا یا یکیشو برمی‌دارم یا آنسام میزنم یعنی اینکه میگم آقا همیشه تو هم لایه مدل اولمون پیاده کن هم مدل دوم پیاده کن مثلاً میانگین بگیر از خروجی هاش و اینا همه چیزن پیدا میشن ولی این مسئله جدیه که به این راحتی هم نمیتونی به ایناشو پیدا کنی چون می می‌بینیم که چقدر پیچیدن ماجرای بعدی اینه که خدمتتون

حالا انشالله تا چهار و نیم با من همراه باشید زحمت می‌کشید ببخشید من باید برسونمش هنوز خیلی عقبم یه ده تا اسلاید دیگه موندم گفتیم که یه شبکه چیز دو لایه با یک لایه هیدن و یک خروجی نرون تکی با دو تا فیچر ورودی چون می‌خوام رسمش کنم چه جوری عمل میکنه ها خب روابطشو بنویسم من باید یکی یکی زد یک‌ها رو اول پیدا کنم بعد نوشتم زد یک کروشه بازیه یعنی چی یعنی نرون اول لایه اول زد دو کروشه بازی یعنی نرون دوم لایه اول ها لایه اول همون لایه مخفی بود بعدی میشه زد یک کروشه باز دو لایه نرون اول لایه دوم اوکیه این نیرون های که توش یک نوشتن معادل بایاس اند ها بعضیا اینو براش w صفر جی در نظر می‌گیرن بعضی ها بی جی فلان در نظر می‌گیرن من اینجا الان مثلاً نوشتم بی یک اندیس یک بی دو اندیس یک خب که اینا معادل فلش آبی فلش قرمزه الی آخر زداشون با ضرب چی پیدا می‌کنید wلیو یک یک ایکس یک

فلش آبی‌ها رو در ایکس‌ها ضرب می‌کنید w با بی جمع میکنید زد یک پیدا میشه نرون اکتیویشن فانکشن داره باید یه چیزی روش اعمال شه من اسمشو اف گذاشتم خب اف زد یک یک یا اف زد دو یک اگه مثلاً فرض کنید تابع چیز باشه استپ فانکشن باشه یا صفره یا یک اگه تنش باشه بین منفی یک تا یک چه می‌دونم و الی آخر باشه صفر یا مثبته و این آیه رو دارم باید دوباره اینجا یه دبلیو جدیدی دارم اسم این هست دبلیو یک یک لایه دوم حالا خب دبلیو دو یک لایه دوم و باز دوباره این یه بایاس داره بعد این دفعه به جای اینکه در ایکس ضرب بشن در آ یک ها که خروجی باشن ضرب میشن اف روشون اعمال میشه و اسمش میشه همون وای هت تخمین منه خب بچه‌ها اینو بازش کنم این اف زد یک دو به جای زد یک دو اگه اینو جایگذاری بکنم میشه اف فلان آ یک به علاوه فلان آ2+

بعد اگه آ یکو بازش کنم و آ۲ رو میشه اف دبلیو فلان در اف فلان به علاوه دبلیو فلان در اف فلان و این اف های تو در تواند که به شما قدرت میدن بتونید اون شبکه‌های عجیب و مرزهای عجیب غریب چیکار کنید تولید بکنید ها و این چیزایی که وجود داره و حالا ما جلسه بعدی می‌خوایم روی این حرف بزنیم خب چه جوری دبلیو تنظیم میشن ها چجوری میشه اینا رو تنظیم کرد مثلاً به چیز نگاه بکنید به در واقع ساختار یک لایه هیدن که توش مخفی و یک نرون در واقع لایه آخرم داشته باشه یا لایه دوم اینو برای ما استان فارس شبکه عمیق حساب میشه یعنی سه تا نرون با یه دونه لایه مخفی دوتایی یه دونه یکی این دیگه برای ما عمیقه ولی خب برای شما طبیعتاً نباید باشه باید برای شما سه لایه هیدن به بالا رو اسمشو عمیق بگیرید برای ما استثنا قائل شدن خدمت شما عارضم دیدیم که وایهتش بر حسب ایکس یک و ایکس دو و

لایه دوم در فلان به علاوه w2 در اف فلان به علاوه فلان فرض کنید که استپ فانکشن داریم یعنی همون تابع پله داریم این به ذات چیکار میکنه لایه اول که آ یک و a۲ باشه اگه یادتون باشه گفتیم چی یه خط میکشه نرون براتون میگه یه ورش یکی یه ورش صفر حالا میتونه هر دو حالتش باشه بسته به اینکه علامت دبلیوها و بایاس‌ها چی باشن میتونه اینورش صفر یا بالعکس باشه خب اما لایه اول دوم دو تا خط کشید چی میشه که لایه بعدیش میتونه خط نباشه و منحنی بشه چیزهای عجیب غریب بشه حالا دیدیم نمونشو اما واقعا به نظرتون به اون انداختن یا نه اگه خودمون هم بنویسیم همونو بهش میرسیم پاسخ میدیم بهش میرسیم فرض کنید من گفتم دبلیویی در واقع یکی یک لایه دو دو باشه w دو یکش منفی دو باشه یعنی این دو این منفی دو بایسش هم مثبت نیم باشه خب این چیکار میکنه بچه ها اگر به این چیز کاری نداشته باشم ایکس یک ایکس دو آ یک

دارم ازش بخوام یه آسه‌ای بگیرم این چی بهم میده بچه‌ها تو صفحه a۱ a۲ چی برام میکشه ورودی a۱ ورودی a۲ میدم خروجی a۳ می‌خوام بگیرم توی صفحه a۱ a۲ چه مرزی برام میکشه همین تابش استفانکشن آها همون خطو میکشه بین آی و خط میکشه ها خط میکشه ولی ماجرا اینه که من بین نمیخوام ببینم چی می‌شه مثلاً این مسئله خیلی ساده است ولی بازم شما رو ممکنه بپیچونه میگه خب اوکی آ یک بالاها یک بود پایینا صفر a۲ اینورا یک بود فلان صفر خب اوکی این دو تا خط طلاقی بدید فرض کنید استپ فانکشن ما خیلی چیز ساده‌ای هستی خدمتتون عارضم که اینجا دوتاشون یکن اینجا این صفره اون یکه اینجا دو تا صفر اینجا فلانن با این دبلیو های که دادم برید حساب بکنید به

حالا مرزتون چی تغییر میکنه اگر شما استپ فانکشن بزنید یعنی تابع بی تربیت چیزو بزنید پله رو بزنید مرزتون از خط راست به دو تا نیم خط می‌شکنه ها حسابش کنید اینکه تازه هیچی نداشت تونست این کارو براتون بکنه دیگه چه برسه برید اینجا به جای افتون شما تنش بزنید بعد این عبارت باید مساوی صفر قرار بدید ببینید کجاها صفر میشه کجا نمیشه بعد مرزهای عجیب غریب به دست میاد و الی آخر و حالا دیگه می‌تونید باور کنید که آها واقعاً با یه لایه مخفی شده ها من میتونم چیکار کنم به چیزهای عجیب غریبی برسم خدمتتون عارضم که من یه کد مطلب زدم اجازه بدید بهتون نشون بدم از تمام وقتم می‌خوام استفاده بکنم خب کد اولی که زدم اینه که همین مسئله است یعنی اینکه خیلی ساده کلا فیت فورواردش زدم گفتم آقا دو تا یعنی ورودییم دو تا فیچر داره دو تا نیرون تو لایه اول دارم یه دونه هم تو لایه آخر ببینم چه قابلیت های داره اومدم چند تا تابع مختلف اکتیویشن رو زدم تابع پله تابع

ساینتاب تنش تابع ریلو و الی آخر چند تا تابع رو زدم فکر کنم زدم و گفتم که اینا رو یا برام خروجی رو بکشم کاملا رندوم دادم یه عدد بین منفی ۱ تا ۱ و گفتم برو برام وای هتو حساب کن چند میشه وای هتش بچه ها چون چیز زدم خدمتتون عارضم که فقط لایه آخرشو چی زدم لایه آخرشو اینجاهاشو فعلاً یه بار بیارم شکلشو از رو بگم براتون من اینجاهاشو بچه‌ها این روی لایه اول تنه چون نمیدونم فلان و اینا زدم ولی لایه آخر استپ فشن زدم میخواستم فقط خروجی یا صفر بده یا یک بده خب اینجا این حتما استفاده فانکشن ولی چیزه یا یادم نیست یا سیگمایده فکر کنم سیگمایز زدم بچه‌ها آخرش گفتم اگه بالای نیم بود به جز کلاس اول اگه بالا پایین نیم بود بگو جز کلاس بدم ولی اینجا رو تغییر دادم خب حالا همونطور که احسان گفت و میشد تازه من کل لایه رو با هم یکی گرفتم میشد تک نرون اصلاً عوض کرد تلنت گرفت سیگما گرفت ولی آخر حالا میریم همینجوری ببینیم چی بهمون داد میگه بچه‌ها

توی حالت‌های مختلف خدمت شما عارضم که بر حسب ایکس یک و ایکس دو چند میشه خب که میتونید ببینید مقدارش دو حالته یا چیز داده خدمتتون عارضم که من فقط ببینم فکر کنم زدم آخر این کدوم پلتفیگر یکه قبل از اینکه تابع چیز روش اعمال بشه اینجا دیگه این چیز رو زدم به اصطلاح تابع پله رو زدم گفته اگر ایکس دو از بالا نگاه کنید خب تو این محدوده نشست شما جز کلاس اولید تو این محدوده نشسته جز کلاس دوم ها وای هت هم پس رو محور سوم نشون دادم الی آخر حالا دنس شما دارید سیاه میبینید بعد اگر چیز بزنم چی میشه ریلو بزنم اگر نمیدونم سیگ بزنم و اینا اینو اومدم چیزش براتون کشیدم پلاتشو کشیدم باز این سیگشه قبل از اینکه چیز کنم شما

مقدارش میتونه از صفر تا یک تغییر بکنه کنارش وجود داره و اینورم اومدم تو آخری اومدم نه هاش برخورد کردم و فقط گفتم هرکی بالای نیم بود برو بشه جز کلاس یک هر چی زیر نیم بود بشه یک مثلاً می‌بینید که چیز چه جوری رفتار می‌کنه تابع استپ چه جوری رفتار میکنه تابع سیگمو چجوری رفتار میکنه ساین و و حالا تازه اینا یه wلی بود که تقریباً شبیه هم خطی هم در اومدن چند بار ران بگیرید خب بالاخره مرزهای خیلی متفاوت بهتون میده حالا کافیه فقط چندین بار ران گرفته بشه که من اینا اینجا الان ببینید کاملاً متفاوت شدن رفتار مثلاً چیز دو تا پاره خطه این بچه‌ها این کج بودنش خاطر رزولوشن من اگر کوچکتر بدم بازشو واقعا خط صاف میشه این الان تابع استپ زدم بعد نمیدونم رفتم یکیشو سیگ زدم و و و ریل زدم ولی آخر و میبینید که چقدر میتونه رفتارهای متفاوت مرزهای عجیب غریب بسازه با چند تا نیرون با سه تا نیرون بچه ها

محاسباتی نداره با دست میشه نوشت و شما حالا حسابش کنید چه جوری مثلاً ۷ ۸ لایه دوم بذارید چقدر میتونه زورتون زیاد بشه خب و اینا قبل از اینکه چیز بشن اصطلاح به صفر تا یک شکونده بشن فقط ببینید که نقاط هم مقدار چه منحنی‌های عجیب غریبی دارند ها خدمتتون عارضم این مواردی که هستش و فیگر فقط ببینم که چی زده بودم تو ام ال پی یک مطمئن شم ببینم که سافت مکس زده بودم یا نه چون جز نشانه‌هایی از سافت مکس توش بود نه فقط خود وای پلا کردم هیچی خب این از اونایی شده بود که دو تا خطشو تلاقی داده بود اینجوری شده بود دیگه مقادیرش و قبل از اینکه هاش برخورد کنم صفر و یکش کنم و خب بعدش که صفر و یکش کنید حالا میتونه به اون مرز بشکنه که شما در نهایت دیدید خب

و نمی‌دونم بستمش یا نه حالا اینجا احتمالاً هستش از بالا نگاش کنیم دیگه اینجوری دیده میشه اینم می‌تونید ببینید یا نه منطقه زرد و حالا غیر زرد در هر حال اینا مواردی که وجود داشت یه چیز دیگه هم خدمتتون بگم و دیگه امروز خداحافظی بکنیم من یه باز یه کد عادی دیگه زدم که شما یک میتونید فورواردیشن عادی همین مسیر عادی هموارمونو برین جلو تعیین میکنید که شبکه تو چند لایه باشه و تو لایه آخرش چند تا خروجی باشه مثلاً من گفتم الان یک لایه یعنی اصلا بدون لایه مخفی و چی و چهار تا نیرون تو خروجیش داشته باشه بعد ورودی ها ایکس یک و ایکس دو بین منفی پنج تا پنج اند توابع فعال سازی هم چیز بوده خب خدا رو شکر که اتفاق خوب افتاد همون که من میخواستم افتاد توابع فعال سازی هم باید نگاه کنم که چی گذاشتم کیو رو تعیین

کجا تعیین کردم کیو رو گفتم دو دو سیگما همه تابع‌ها رو سیگمیت گذاشتم حالا خدمت شما عارضم که خروجی ۴ تا نرون و این داده خب بعد گفتم سافت مکس هم بزن روش سافت مکس کاری که میکنه اینه که گفته کلاس آبی ۲ سبز ۳ زردم ۴ با این دبلیو هم که دادیم هیچ یکی پیدا نکرد خب بچه‌ها سافت مکس همونطور که گفتم تک نرون تو سیم دو کلاس یا تابع پله دو کلاسه خط میکشه بین دو کلاس سافت مکس توی شبکه های بدون لایه مخفی چیکار میکنه خط با خط گروه ها را از هم جدا میکنه منحنی نمی‌ذاره پس چی شد سافت مکس توی شبکه های عصبی که هیچ لایه مخفی ندارید یعنی در جا از ورودی میرید به خروجی کلاس هاتون رو با خط از همدیگه جدا میکنه اینکه چراش با شما خب خیلی آسونه ها خیلی سخت نیست با خط از هم جدا میکنه ولی به محضی که بیاید یه لایه مخفی اضافه کنید مثلاً

یه لایه مخفی دارم یه چیز تعداد مثلاً بذارم چیز پنج تا تو لایه مخفی دارم سه تا تو لایه خروجی اینو بزنم حالا دیگه سافت مکس هم دیگه لزوماً خطی عمل نمیکنه و میتونه منحنی بهم بده که داد خب یعنی کلاس ۱ ۲ ۳ ولی آخر رو یه جور دیگه جدا کرد بچه‌ها تو این مسئله میبینید من کلاس چهار حالا ندارم کلاس یکم آبیه دوم سبزه سیم زرده اینا چون دلیلش اینه که دبلی رندوم دادم اگه دب رو ثابت بدم چی میشه این اتفاقات نمی‌افته خب بچه‌ها خیلی ممنون همراه بودید متاسفانه یه جایش باقی موند من براتون پی رایت میکنم بارگذاری می‌کنم ببینید بخش نوشتن معادلات چه خیلی کار سختی نیست و بعد از اون انشالله میریم جلسه آینده من بلافاصله این موارد باقی مونده رو تمام می‌کنم مرور رو کمتر میکنم و میریم سر ادامش که ترینینگ شبکه‌ها رو ببینیم برنامه اینور سالمون هم دوستان اینه که انشالله تا

سه‌شنبه آینده که کلاس‌ها ادامه داره من فقط ام ال پی رو ببندم دیگه نمی‌خوام سی‌ان رو شروع کنم که در واقع ابتر بمونه این برای سال کلاً می‌بریمش اونور سال شبکه‌های کانولوشن و انشالله از این در واقع بعد از گفتن ام ال پی انشالله یه تمرین هم خدمتتون بارگذاری میشه حالا وقت بهتون میدیم تا بعد عید تحویل بدید خوش و خرم باشید اگه سوالی هست در خدمتتون هستم وگرنه خدا یار و نگهدارتون خیلی ممنون از حضور و تشریف فرمای ما ساعت ۴: نیم بچه‌ها اینجا کلاس جلسه چیز هم داریم قطب رباتیک اگر علاقمند بودید میتونید تشریف داشته باشید

E:\courses\LangChain Project\main root\data\SCR_Session06_transcript.txt

خب به نام خدا دوستان عزیز و ارجمند درس رباتیک اجتماعی شناختی عرض سلام و ادب و احترام خیلی ممنون بابت حضور تشریف فرماییتون پیشاپیش سال نو مبارک بریم دو جلسه آخر درسمونم انشالله اینور سال داشته باشیم و مفهوم و درباره مبحث شبکه‌های عصبی عادی ام ال پی و انشالله جمع بندی کنیم و جمع و جورش کنیم که دیگه اون برای سال بتونیم وارد شبکه‌های عمیق کامل نتورک و همینطور شبکه صدا هست یه لحظه بوق زد الان بله خب بسیار عالی خب خدمت شما عارضم بدون فوت وقت بریم سر کارمون و اگه موردی بود سوالی بود من میام هر از گاهی چکش میکنم حالا اگه بتونم تو این فاصله عرض به حضورتون با

گوشیمم وارد بشم که اگه سوالی هست ببینم بد نیست اجازه بفرمایید من این کارو بکنم بریم سر کار خدمتتون عارضم که ما از دو جلسه قبل مفهوم ام ال پی رو شروع کردیم با تعریف ماشین لرنینگ رفتیم جلو و اینکه گفتیم توی شبکه های عصبی دنبال چی هستیم چه تعریفی دارند با چه الگویی ساخته شدن و چقدر توانمندی دارند و ته حرفمون این بود که زورشون خیلی زیاده میتونن کارهای زیادی برای ما انجام بدن می‌تونن تقریباً هرگونه تابع بولین هرگونه تابع طبقه بندی و هرگونه تابع پیوسته با هر دقتی برای ما بسازند حتی با یک لایه نیرون مخفی

خب این چیز عجیب غریب و جذابی بود اگرچه ما قرار نیست از یک نرون فقط از یک لایه استفاده بکنیم در مورد توابع فعال سازی صحبت کردیم بچه‌ها نمی‌دونم من سورس اینترنتمو می‌خواید عوض بکنم ببینم ببینم اوضاع بهتر میشه یا نه خب بچه‌ها الان صدا چطوره من اصلا کلا اینترنت عوض کردم سورسشو الان خوبه انشالله که مشکلی نباشه ببینم چی میشه انشالله که مشکلی نباشه خب عرض

فعال سازی صحبت کردیم گفتیم که حالا خیلی خیلی محدود از توابع خطی استفاده میشه در غیر صورت تواب غیر خطی سوپر معروف‌تریناش سیگموئید و تنش ولو بودند و البته سری تفاوت ولی همین قدر اینا برای ما کار راه مینداختن و خیلی خیلی مناسب احوالن و خیلی از شبکه‌ها کلاً با همین سه چهار تا فانککشنی که بهتون گفتم کار میبره جلو در مورد شبکه‌هایی که بدون لایه مخفی باشن صحبت کردیم در مورد ساخت مکس صحبت کردیم که اگر تو مسائل طبقه بندی باشیم ولی بیش از دو کلاس داشته باشیم پیشنهادتون چیه میشد از این رابطه استفاده کرد به جای اینکه بخواهیم از همشون سیگ بگیریم یه داستان جالب تری که توش وجود داشت این بود که خروجی های این جمع ش یک میشد و در ضمن هر مقداری هم بین صفر تا یک بود که نمادی از احتمال بود و یه جورایی هر کی که هر نرونی که بیشتر میشد عددش میتونستیم نماد این در نظر بگیریم که اون نرون برنده است حالا باید نگاه میکردیم که نرون دوم چقدر

فرق می‌کنه و می‌تونستیم این شکم داشته باشیم شاید اون نرون مثلاً دومی هم باشه وگرنه اگه بخوایم گریدی و هریسانه به داستان نگاه کنیم خب ما اون بالاترینشو برمی‌داشتیم و یه سری توضیحات اضافه‌ای هم براتون اضافه کردم که خب فرق سافت مکس با سیگموید عادی چیه وقتی یه نرون تو لایه خروجی یا چند نرون داشتیم کاری که دارن میکنن چیه یه جورایی این تعمیم یافته اونو مواردی بود که توضیح دادیم و بعدشم با همدیگه یه شبکه رو به صورت در واقع واقعی نگاه کردیم توی وبستی که خوب سوال خیلی خوبی داشت در مورد زور شبکه ها برای ساختن باندری های غیر خطی هم صحبت کردیم اما بریم سر درسمون امروز میخویم یه مقدار اول با محاسبه شروع بکنیم اینکه شبکه های حالا ابتدا فقط با یه لایه مخفی و بعدش با بیش از یک لایه مخفی چگونه توشون حساب کتاب انجام میشه و فرم های حالا اسکالر و برداریشون چهه و بعدش

وارد مفهوم تنظیم کردن وزن‌ها و الگوریتم‌های پروپریشن باشیم خب شبکه‌هایی که فقط یک لایه مخفی دارند خب یه سری ورودی دارند یک لایه مخفی و یه لایه خروجی که خودش میتونه بیشتر از یه نرون داشته باشه برای اینکه بخواهید خروجی اینرونا رو حساب بکنید بچه ها چیزی که واضح میدونید که شما میتونید هر کدوم از این دبلیو ها رو در مقدار تولید شده از نیرون های لایه مخفی ضرب بکنید یعنی لایه مخفی بعد از اینکه اف روش اعمال شد یه خروجی داد در این w1 ضرب میشه و با همدیگه باید جمع بشن برای هر کدوم از نیرون ها در ضمن بایاس اون نیرون جمع بشه و در ضمن و در نهایت یه اف یا تابع فعال سازی روش انجام میشه تا چی خروجی اون نیرون رو ببینیم یعنی پس میشه که وای وای هت که میشه خروجی تخمین زده ما چون وای واقعی رو گذاشتیم برای برچسب داده ها وای هت اونی که ما به دستش میاریم که دوست داریم

وای خیلی نزدیک باشه اندیس کاش برای اینکه نرون چند کامل لایه آخر باشه که می‌تونه یک دو تا کا بزرگ باشه و توش تمام دبلیو جی کی های لایه دوم رو باید در زد عرض به حضور شما جی ضرب بکنم حالا البته این اسم شاید یه مقدار هم چیز باشه یه مقدار اسم حالا میتونست تغییر بکنه که یه جایی اشتباه نکن من شاید بهتر بود اینجا از زد استفاده نمیکم خروجی لایه های در واقع هیدن باشن جی اندیس جی هم شماره نرونه جی هیدن با یک بایاس برای هر کدوم از این لایه های اوت پوت جمع میشن و چی در نهایت چیکار میکن در نهایت به من بعد از اعمال اف وای خروجی رو میدن درسته حالا این چیزی که وجود داره اینه که خود خروجی

های لایه هیدن هم باز قبل از اینکه بخوان به دست بیان از چی به دست اومدن از لایه قبلیشون به دست اومدن پس یه بار دیگه میشه چی به جای این زد جی که خروجی نیرون‌های لایه جی ام باشند حالا من عرض کردم اسمشو عوض می‌کنم به خاطر اینکه من از زد یه جای دیگه استفاده می‌کنم اشتباه نکنید دبلیوهای لایه اول که آی جی باشند در ورودی‌های لایه اول که همون خود ایکس آی ها باشند باید ضرب بشن با بایاس هر کدوم از اینا جمع بشن حالا بسته به اینکه وای چندم دارید حساب میکنید و در نهایت تو این فرمول قرار بگیرند میشه اف یه چیزی ضرب در یعنی سیگمای که یه سری دبلیو در اف یه سری باز دوباره سیگما و چیزهای دیگه ضرب میشن و در نهایت به من چند تا خروجی میدن و میبینید که چقدر این تابع ها میتونن غیر خطی و پیچیده باشن حالا برای چیزشو بگم مالتی لیرش بگم یه فرم کامپکت تر داره راحت تر متوجه میشید فقط همینجوری نوشتمش و خب این سود و کدی هم که اینجا قرار داده شده

برای وقتی که شما بخواید توی تنسور فلو از چیز استفاده کنید از به اصطلاح شبکه‌های عصبی رو بخواید مثلاً یک لایه مخفی و یک خروجی حالا با یک سری تعداد مشخص تعریف کنید کدی که اونجا موجوده اگه شبکه‌های عصبی کلی رو بخوایم در حالت عادی با بیش از یک لایه مخفی بررسی کنیم و البته اگه یادتون باشه اسمشو گذاشتیم نسخه وانیلی ساده و گفتیم که توش اینجوریه که ما یه سری نیرون تو لایه صفرم ورودی داریم تو لایه اول دوم تا لایه الم ال بزرگ به اسم معادل لایه آخر گذاشتیم و میدونیم که هر نیرون تو لایه های یک به تمام نیرون های لایه ال وصله ولی هر نیرون تو لایه مثلاً حالا الم منهای یک یا iیم به خودش وصل نیست به نیرون های دو تا جلوتر مستقیم وصل نیست نیرون های جلویی و عقبی ها مثلاً فیدبک خاصی ندارن و خاطر همین ما تو ساده ترین نسخه های نسخه شبکه های عصبی هستیم که حالا بریم جلوتر انشالله

پیشرفته‌ترشم می‌کنیم خب برای اینکه بخواهیم محاسبات اینا رو انجام بدیم حالا چه دستی چه در قالب کد شما میتونید از این کارها استفاده بکنید من اجازه بدید این قرارداد رو با همدیگه داشته باشیم اجازه بدید قبل از اینکه توی یک نرون بخواد تابع فعال سازی اعمال شه ورودی هاشو بهش که جمع وزن داره حالا لایه خروجی های لایه قبل ضرب در دبلیو ها بودن و اسمشو زد زد اندیس آی حالا چیز بالا نویس ال بزارم توشه بالا نویس ال نماد توان نیست نماد لایه زد اندیس آی هم یعنی لایه ال کوچیک آی رو بگیرم خروجی نرون این ورودی نرون بود این خروجی نرون یعنی بعد از اینکه اکتیویشن فانکشن یا اف روی زد آی اعمال میشه آی بدست بیاد پس چی شد پس آی میشه اف زد آی همین خب مثلاً سیگما تنه چی یا هر چیزی اعمال میشه لایه ورودی و اسمشو لایه صفرم میزارم توی زبان های برنامه نویسی

پایتون و سی و فلان و اینا کارتون راه میفته چون اجازه وارد کردن صفر هم به عنوان اندیس بهتون میده ولی تو مطلب یه مقدار اذیت میشید چون نمیزاره فلان و اینا رو وارد کنید اگه خواستید تو مطلب کد بزنید شاید مجبور شید همه رو یه دونه شیفت بدید به جلو ورودی و لایه یک بگیرید و الی آخر طبیعتاً اگه من لایه صفر ورودی بگیرم اجازه بدید تعریف بکنم a صفر باشه همون ورودی که از ایکس یک تا ایکس دی بود پس اگه دیدید جای آی صفر استفاده کردم نماد لایه ورودیه و یا مثل اینکه ورودی های که تابع همانی روشون اعمال شده و خروجیش اون شده که من اسمشو آصف گذاشتم ال بزرگ تعداد لایه های شبکه خواهد بود ان در واقع ال کوچک هم نماد تعداد نیرون های لایه مثلا اینکه لایه اول چند تا نیرون داره پنج تا بعدی چهار تا سه تا فلان فلان دو تا الی آخر رو کاغذ و تئوری شما اجازه دارید نیرون های لایه

نسبت به قبلیتون تعداد نیرون‌هاش بیشتر کمتر یا مساویش باشه و هیچ مورد خاصی از این بابت وجود نداره خدمتتون عارضم که وزن لایه اسمشو می‌ذارم دبلیو ولی w ماتریسه تعداد ابعادشم در واقع سایزشم اینجوریه که مثلاً دبلیو لایه یکم تمام ورودی ها رو میخواد به تمام نیرون‌های لایه یکم وصل کنه پس میشه تمام این سایز ورودی ها در تمام سایز تعداد نیرون های لایه اول میشه پس ان یه لایه قبل تر در ان اون لایه مد نظر شما ها و به تعداد نیرون های هر لایه من چی دارم بایاس دارم که خب اینا تنظیم میکنه که اون نیرون کی فعال شه حالا یعنی که جمع وزنش از چه عددی بیشتر شه فعال شه از یه عدد مثبت یا منفی یا حتی صفر میتونه در بیاد ولی این اجازه رو میدیم که نیرون های مختلف مختلف رفتار کنند بعضی ها هم اگه یادتون باشه خدمتتون گفتم میان این بی رو جزئی از دبلیو میزاررن یعنی یه w صفر هم اضافه

و کلا این بیه میره جز دبلیو میشه و اونجوری کارو پیش می‌برن اگر بخواید اسکالر اینو مدل بکنید شما برای در واقع بخش فوروارد پروپاگریشنتون یا انتشار به جلوتون تو نسخه اسکالر اینجوری میگید به ازای تمام لایه‌ها چیکار کن برو از لایه اول شروع بکن اول زد آی هر نیرون رو پیدا بکن و اون هستش در واقع جمع وزن دار دبلیو ها در آی نرون های لایه قبلی که من گفتم اگه ال یک باشه صفر نماد ورودیه به علاوه بایاس هر نیرون و بعدش بیاد تابع فعال سازی روش اعمال کن بعد دوباره آی رو بیشترش کن برو دوش کن برو از لایه حالا تو دوم یعنی از نیرون های لایه هیدن اول به هیدن دوم برو هی زد ها و آی هاشون رو حساب بکن زداشون میشه جمع وزن داره خروجی قبلی در دبلیوها بعدش اکتیویشن که روشون اعمال میشه میشه خروجیش و اینو تا چی تا لایه الم ببر جلو این میشه فرم اسکالر تقریباً قابل فهم و این

اگر شما بخواید کد بنویسید یه دستی بخواید حساب کتابی انجام بدید می‌تونید با این برید جلو اما همونطور که جلسه قبل خدمتتون گفتیم هنر به اتفاقاً بهره‌گیری از اسکالر نیست هنر لایبراری‌های مختلف اینه که شما به شما این اجازه رو میدن از فرم‌های برداری خیلی سریع استفاده کنید تو این فاصله بچه‌ها در ضمن خدمتتون بگم دبلیو ال هر لایه ما همونجوری که واقعا میبینیم صحبت میکنیم یعنی اولین این قراره مثلاً اینجا اگه سه تا باشه اینجا چهار تا باید چند تا باید سه چهار تا ۱۲ تا درایه دبلیو یک هم داشته باشه که w11 w12 و الی آخر w11 نماد اینکه اولی و اولی وصله دبلی یک دو نماد اینکه اولی به دومی وصله بعضی از کتاب ها و منابع به دلیلی که اینجا نخوان ترانسپوز کنن ممکنه ترنسپوز اینو دبلیو بگیرن یعنی یک گیج میشید ولی مثلا فرض کنید دبلیو این که دومین نرون لایه قبلی به اولیه بعدی وصله رو بعضا w1 دو میگیرن خب ولی ما

ترانسپوز ممکنه استفاده کنیم به خاطر همین شما تو لایه ال ام در واقع این چیزی که تو این سیکما دارید ستونه حالا ستون‌های مختلف دبلیو برداشتید و دارید روش با جی شمارنده می‌ذارید و الی آخر و میرید جلو اما فرم‌های برداری فرم های شکیل تری هستند اجازه بدید تعریف بکنم زد یک لایه با زد بزرگ قبل نمایش ورودی های نیرون ها به صورت برداری قبل از اعمال اکتیویشن که خودش نماد از زد یکه لایه دو لایه تا زد ان ال لایه باشه با همچین فرمی نشون بدم و اکتیویشن اعمال کردن رو تک تک اینا رو اگه توی بردار بچینم نمادی از چی بشن بردار آ بزرگ باشن یا بعد از فعال سازیشون باش مثل مطلب هست مثلاً تابع سینوس رو روی بردار اعمال میکنید میره رو تک تک هاش سینوس میگیره و فلان اینجا ما همچین کاری کردیم حالا اگه این کار بکنید میبینید که فرم نگارشتون خیلی شکیل تر و خلاصه تر میشه و

شما می‌تونید ضد هر لایه رو سریع درجا کل بردار حساب بکنید با wl ترانسپورت ضربدر il منهای یک به علاوه بی ال که حالا این الهام بایاس هر کدوم از نیرون‌ها اند مثلا بی یک بی دو تا فلان داریم بی nl داریم و بعضیام عرض کردم اینو میان اضافه می‌کنن به دبلیو اصلا دیگه اینم شما نمیبینید کلا میبینید نوشته دبلیو در آ و اینو اضافه کرده در قالب حالا سطر ستون مناسب و بعدش هم f رو روش اعمال بکنید به a می‌رسیم حالا اف ما اینجا این فرض رو در واقع کردیم کل لایه یه تابع فعال سازی دارند که این هم چیز خیلی عجیب غریبی نیست ما عرض کردیم خیلی وقتا به جز حالا لایه اول و آخر که داستان خودشون دارن بقیه لایه ها را ممکنه کلا تنه کلا ریلو یا کلا سیم بزاریم کار ببریم جلو که اینم چیز عجیب غریبی نیست و اینم توی فرم برداری wb هم براتون تعریف شدن که میشه گفت باز دوباره سود و کد این برای اینکه از تو تنسور فلو بخواید استفاده بکنید و یه شبکه ام ال پی طراحی بکنید این ما انشالله

مستقیم به صورت مستقیم تو کراس کار خواهیم کرد و خواهید دید اینم جهت اطلاع باشه پیشتون که بتونید ان لایه پشت سر هم هی سیکوئنشال تعریف بکنید و هی مرحله به مرحله برید جلو باز اینجا هم همینو نوشته مثلاً توی نگارش الکساندر امینی که من این اسلایدو ازشون برداشتم به جای بایاس از دبلیو صفر و آی استفاده کرده تو لایه کیوم که خب اینم چیزایی که وجود داره اما سؤال می‌خوایم اولین مثال خودمونو حل بکنیم سوال اینه آیا من درس ربات اجتماعی شناختی پاس میشم یا نه فرض کنید که ما فکر کردیم فسفر سوزوندیم به نظرمون میاد دو تا فیچر هستند که تاثیر میزاررن تو اینکه این درس توسط دانشجو پاس بشه یا نشه این که چند جلسه شرکت کرده و اینکه چند ساعت رو پروژه اش وقت گذاشته نمادی از این باشه که پاس میشه یا نمیشه رفتیم داده گرفتیم گفتیم که خب اوکی طبق تجربه مون تو درس های حالا مشابه قبل بچه‌هایی که اینقدر ساعت وقت گذاشتن و این قدم جلسه

حاضر بودن پاس شدن رنگشون سبز شده یه عده‌ای هم بودن که چی رنگشون قرمز شده حالا می‌خوایم ببینیم کسی که ۴ ساعت ۴ جلسه شرکت بکنه و ۵ ساعت رو پروژه‌اش وقت بذاره با این حساب پاس میشه یا نمیشه مرتضی معماری بگو بله آقا فرض کن تو اینی خب می‌خوایم ببینیم پاس میشه یا نمیشه خدمتت عارضم که یه شبکه برات طراحی می‌کنیم برای کارمون خب این شبکه هم از جنس کلاسیکشن فقط میخواد بگه پاس میشه یا نمیشه یه لایه مخفی داره سه تا نیرون توش گذاشتم یه لایه خروجی هم داره و یه سری وزن هم اینجا براتون قرار دادم w یکی یک دو این ۳۱ صدم هست w دو یک این ۲۰ صدم از فلان بایاس هر نرون رو گذاشتم دوباره دبلیو لایه دوم گذاشتم بایسش گذاشتم فلان خب من اگه بخوام اینو حساب بکنم نمرتو و ببینم که پاس میشه یا نمیشی باید چیکار کنم یه توضیح بده برام مثلاً زد یکشو الان باید چجوری حساب بکنم و بعدش

ببینم حالا البته باید فکر کنم بیام به دسترسی بدم دیگه خب اجازه بده خب مرتضی جان سلام وقتتون بخیر پیدا کنی چیکار می‌کنی آها عددی بگم آره نه بگو یعنی کدوم عدد در کدام عدد ضرب کنم ۶۹ در چهار ضرب حالا جمع ش میکنم جمعشن همین کار انجام میدم خروجی اینا رو حالا در ۸۳ صدم فلان فلان حالا اگر

گذاشتم اگه بالای نیم شد شما پاس میشی اگه زیر نیم شد فیل میشی درسته حالا سوال اینه که چرا این اتفاق افتاد در حالی که به نظر میومد رو شکل که افتاده وسط سبزها خب و باید پاس میشدی چرا نشدی به نظر استاد ممکنه یا اینکه خوبی نبوده باشه یا اینکه تعداد داده ترین خوب نبوده باشه آره اولین چیزی که میخواستم بیان کنی نخواهیم چیز پیچیده صحبت کنیم بچه ها چیه کنیم اون وزن اصلا ممکنه درست نباشه الان آماده نباشن درسته و کاملا تصادفی بوده باشند برمیگرده به همون تعداد آره دیگه باریکلا حالا داستان اینه پس اولین سوالی که اینجا مطرح میشه اینه که خب من یه سری

رندوم گذاشتم دوست داشتم که تو پاس بشی منطقم می‌گفت باید بشی ولی نشدی خب و حالا باید این وزنا تغییر بکنه پس چالش ما این میشه که اوکی توی سری شبکه عصبی من وقتی که یه وزنای رندوم دارم چه جوری باید بیام کاری کنم که اینا آموزش ببینن و به روز بشن این میشه کل چالش من تو شبکه عصبی در ضمن یه شبکه خیلی ساده است به ظاهر مرتضی چند تا این شبکه متغیر و پارامتر داره که من باید تنظیم کنم استاد الان اینجا دو تا دو سه تا شش و سه نه تا وزن داره که میتونیم تنظیم کنم چهار تا هم بایاس ۱۳ تا پارامتر داره که من تازه برای همین کلاسیفیکیشن فقط همین داده های سبز و قرمز باید چیکار کنم زحمت بکشم و تنظیمش کنم و خب اینا حالا چالش ایجاد میکنه یعنی با یک مسئله عجیب غریب مواجهم که بهینه سازی باید توی فضای بزرگی انجام بدم و خیلی ممنونم ازت این مواردی که بود

حالا سوال های جدی میشه که چه جوری میشه اجست کرد چه جوری میشه این وزنا رو ترین کرد بچه‌ها یه سایتی وجود داره به نام آموزش‌ها کلاً تو سایت تری بلو وان.com خیلی چیزای جذابی‌ان فوق‌العاده وحشتناک جذابن و یکی از مدرن‌ترین روش‌های آموزش در پیش می‌گیرن من این سایت رو باز میکنم ویدیوهایی داره تو حوزه شبکه های عصبی خدمتتون عارضم که حالا البته اگر همراهی بکنه یه چیز خاصی میخوام خدمتتون نشون بدم بعدش بریم درسمون باهاش ادامه بدیم حالا هم ویدیوهاش ببینیم فقط نمید داره دور خودش میچرخه و تا کی صبر کنم همراهی میکنه خب آوردش اینجا خدمتتون عارضم که بچه‌ها این هم آموزش داره هم ویدیو داره یه بخش جالبی داره اینجا میگه که شما یه حرفو

عدد رو برای من بنویس به من بگو که این عدد چنده خب مثلاً فرض کنید من اینو می‌نویسم با ماست و چک دیجیتو میزنم پراسس می‌کنه شبکه‌های عصبیشو ران میکنه و بهم میگه چاره و خیلی اتفاق جذابی افتاد به صورت گرافیکی دیدم می‌خوام ببینم برای شبکه چیکار کرده ما قبلاً براتون گفتیم این اول ورودی رو در قالب یه سری عکسه ۲۸ در ۲۸ میگیره بعد میاد چیکارش میکنه این ۲۸ در ۲۸ پیکسل رو که ۷۸۴ تا عدد باشه رو زیر هم می‌نویسه توی بردار ۷۸۴ تایی خونه‌هاشم متغیرهاش بین صفر تا یک می‌تونن تغییر کنن مثلاً فرض کنید رنگ های سفید نماد یک اند و سیاه ها نماد صفرن و هر چیز بینابینشون خاکستری ها نماد یه عددی بین صفر تا یک خب اینا رو اومده داده لایه دومش ۱۶ تا نیرون گرفته یه سری دبلیو خوب اینجا داشته ۷۸۴ ضرب در ۱۶ تا

۱۶ تا آمبایس لایه پنهان دومشو ۱۶ تایی گرفته ۱۶ در ۱۶ تا هم لایه اینجا گرفته و بعدشم لایه نهایی نهاییش هم چی ده تا نرون گرفته که اینا نمادی از صفر یک تا ۹ هستند ببینیم شما کدوم عدد رو نوشتید رنگ نرون‌ها هم نماد اینه که خروجیشون چقدر به یک نزدیکه و چقدر فعال و روشن شدن تمام توابعش هم سیگموید گذاشته خب حتی تو لایه آخر سافت مکس استفاده نکرده و الان می‌بینید که من بعد از اینکه اینو نوشتم فعال کردم این سه تا تقریبا خاموش اما اتفاقی که برای مرتضی افتادتش خاموش بود تقریبا یه دهم شد خروجیش سه دهم شد و بله اینا بالای نیم شدن حتی نورشون هم زیاده شاید نزدیک های یک در اومدن این خاموشه و الی آخر دوباره توی نیرون های بعدی اینا روشن شدن و در نهایت چی اومده چهار رو روشن کرده و بقیه هم در ضمن خاموش و به من حدس زده که چهار رو نوشته که اتفاق جذاب اینه که واقعا هم همین اتفاق افتاده این ویدیو رو با همدیگه ببینیم

اولش میگه که مغز آدما به راحتی تشخیص بدید که این سه هستش در حالی که کامپیوتر چه جوری میتونه این کارو بکنه خب اولین چیزی که به ذهن میخوره اینه که شابلون بندازیم و مثل همون شبکه‌های بدون لایه مخفی بود که خب با توجه به اینکه انواع مغزتون به راحتی تشخیص میده خوب داستان اینه که شاید روش روش خیلی خوب و جذابی نباشه و باید چیکار کرد خوب میگه من اومدم یه شبکه عصبی براش ترین کردم برای اینکه شبکه عصبی و آموزش بدم ابتدا میام در واقع تمامی عکسمو به یک بردار ۷۸۴ تایی میشکونم و این ۷۸۴ تا رو به عنوان ورودی میدم به این یه سری وزن دارم که حالا

چه جوری تنظیم شدن میرن خروجیهای لایه اول خروجیهای لایه دوم و در نهایت خروجی لایه نهایی رو حساب می‌کنن و به من میگه چی به من میگه اینرون آخریه فعال شد مثلاً نزدیکای یک شده بقیه نزدیکای صفرن و تشخیص میدم که این ۹ بوده و خب درست هم بوده و این مسیری که وجود داره توصیه می‌کنم اینو ببینید به صورت گرافیکی بهتون نشون میده خیلی چیز جذابیه و در نهایت به شما خروجی شبکه رو براتون مدل میکنه اگر که اینجا مثلاً دو رو گفت ولی خیلی هم اطمینان بالا نگفت رنگش خاکستری نوشته بود و الی آخر اما سوال بعدی که مطرح میشه دوست دارم مطرحش بکنم اینجا اینه که آیا آیا اضافه کردن لایه‌های میانی به نظرتون داره این کارو می‌کنه که مثلاً نه نمادی از این داره میشه که بشکنه به نمی‌دونم یه گردالی و یه خط و مثلاً لایه آخر یه نرون مسئول این باشه که اگه گردالی روشن باشه و یه نوع هم مسئول این باشه اگه خط

علائم گنده دیدی روشن بشو یا ۸ مثلاً یه گردالی بالا یه گردالی پایین یا ۴ یه خط بزرگ یه خط کوچیک یه خط افقی اینور و آیا آیا سوال اینه که این نرون‌ها قراره که اینجوری باشند که اگر مثلاً تو شکلی این گردالی رو دیدن این فعال باشه بعد آخرش مثلاً نگاه کنید یه جورایی جمع بکنه بگه خب اگه چیزی بود که این گردالی بالا رو داشت این خط رو هم داشت پس من بگم نه یا برای هشت یا برای چهار یا برای شش و و و هر نیرون مسئول یک کاری باشه شاید رویای ما این باشه که این باشه خب ولی واقعیت اینه که شبکه های ام الپی لزوماً این اتفاق براشون رقم نمیخوره حالا امروز رسیدیم بهتون میگم مثلاً تو همین ام نیست و همون چیزی که اینجا به ما نشون داده چی میشه در ضمن خب خود گردلی چیز پیچیده تری میگه خب گردالی خودش میتونه به چند تا تیکه خط بهش بشکنه که ترجیح بدن یعنی با همدیگه در کنار هم دایره رو تشکیل بدن پس شاید اینم لایه قبلیشه که مثلاً لایه قبلیش مسئولیت اینو داره که اگر تو اشکال

دید روشن بشه و بعد ببینه اگه مثلاً کسی کل اینو با هم داره همه اونای بعدی مثلاً شماره یک لایه دومش روشن بشه و الی آخر و اینا مواردی که هست و این اینو به عنوان یه رویا نگه داریم پیش خودمون آیا میشه ما دوست داریم بشه ولی پاسخ واقعیتی که بله نیست و تو شبکه های ملی لزوماً این اتفاق نمیفته و لازمش اینه که حالا این ابتدای راهه و ما در نهایت باید بریم جلوتر انشالله توی شبکه‌های سی ان ان و ال اس تی ام و اینا ببینیم مسیری که ما تو ذهنمونه دوست داریم اتفاق بیفته و خب بریم حالا ادامه بدیم مورد بعدی که وجود داره در واقع توانایی ربات آپ در نوشتن تشخیص ارقام ببینید فیلم با هم ببینیم سلام در خدمت هستیم سلام میدونی چنده

متاسفانه نتونست و سوال اینه که ما چه جوری می‌تونیم با آپو کمک کنیم که این ارقامو تشخیص بده طبیعتاً ما الان به نقطه‌ای رسیدیم که بلدیم شبکه‌های عصبی و فیت فورواردشو حساب بکنیم اما وقتی که وزن ها را داشته باشیم سوال اینه که وزننا چجوری میتونن تنظیم بشن چه جوری مرتضی نباید می‌افتاد و اینا مسائل جدی که وجود دارند ما باید به دنبال راه های که بتونیم تمامی وزن ها رو ادپته کنیم و به روز کنیم و در ضمن فقط این وزن وزن های لایه آخر نیستند و کل کلش حتی لایه های ابتدایی ما باید بتونیم انجامش بدیم تمامی بایاس ها را باید بتونیم به روز بکنیم خدمت شما عارضم که تغییر کردن وزن ها به روز شدنشون بچه ها معادل یادگیری فیچر و ویژگیه ها اینکه یه وزن تغییر میکنه حالا بعداً ضرب

یه سری ورودی میشه بعد اکتیویشن فانکشن روش اعمال میشه یعنی اینکه این داره یاد میگیره ویژگی‌های جدیدی تو عکس یا تو ورودی ها پیدا بکنه که این معادل یادگیری نهاییش بشه مثلاً همون رویا رو نگه دارید تو ذهنتون که شاید شبکه داره به سمتی میره که اگه گردالی تشخیص بده مثلا نرون اول لایه سوم فعال بشه و خب این نشون میده که داره یه سری فیچر یاد میگیره و به نظر میاد باید کار کار سختی باشه دلیلش اینه که ما متاسفانه فقط خروجی نهایی رو داریم یعنی ما فقط میدونیم این عکس باید نه باشه ولی این همه نیرون بینابین در نظر گرفتیم اصلا نمیدونیم خروجی اینا باید چند باشند که شبکه ما درست کار کنه و این کار خیلی سخت و پیچیده میکنه یعنی اگر شما قبلاً هم بهینه سازی بلد بودید اگر با روش های کلاسیک ماشین لرنینگ آشنایی که درجا شما را از ورودی به خروجی می‌رسونه خب شما میدونید میخوید کاری کنید که مثلا خروجیتون این باشه و بینابینش چیز خاصی وجود

نداره اما الان اتفاق عجیبی که میفته اینه که نرون لایه اول که تازه خروجی میده خودش با یه سری نرون لایه بعدی ضرب میشن و میرن لایه دوم بعد اون زرد میشه تازه میرسن به نرون لایه که اون خروجی ماست خروجی اینا باید چند باشند چه جوری باید تنظیم بشن به نظر میاد کار کار آسونی نیست اون چیزی که ما قراره یاد بگیریم که تمامی وزن ها و بایاس ها رو که اسمشو می‌ذاریم پارامترهای شبکه رو قراره تنظیم بکنیم و تو این فرایند باید چیکار کنیم باید از یه سری الگوریتم استفاده کنیم الگوریتم های بهینه سازی تابع چیز داشته باشیم دیزایر داشته باشیم و مطلوب و تلاش بکنیم که تنظیم بکنیم دبلیو ها و بایاس ها را جوری که اون شبکه درست عمل بکنه و تابع کاسشن ما خوب کار بکنه خب تو اینجا مجبوریم یه سری مفاهیم بچه ها تعریف بکنیم اجازه بدید اسمشو بذاریم پیش به سوی تنظیم وزن ها آشنایی با عملکرد تابع هزینه من یک مفهومی رو معرفی می‌کنم به نام لاس لاست تو فرهنگ لغت به معنای

جسارت ضرر و زیان ولی تو کار ما بیانگر تفاوت میزان تخمین شبکه من و مقدار واقعیشه تو یه دونه مشاهده چی شد لاس تفاوت وای پریدکتد و y actual فقط تو یک مشاهده هستش بعضیا بهش میگن کاس فانکشن یا تابع هزینه یه دونه مثال آموزش ها خود لابتی از وای هت داره و وای برچسب‌های واقعی‌مونن وای حد خروجی شبکه است وای حتی از چی داره دبلیو یا پارامترها حالا بایاس های شبکه و همینطور چی ایکس های ورودی پس به عبارتی لاست تابعیتی از ورودی مشاهده iیم خروجی مشاهده آیا اون و دبلیو ها داره که من با فرض اینکه اون دو تا ثابتن می‌خوام کاری کنم که دبلی

یه چیز دیگه‌ای دارم به نام کاسپانکشن یا تابع هزینه و اسمشو میزارم جمع لاس روی تمامی داده ها حالا یه تقسیم بر ان هم ممکنه بکنم عددش الکی دیگه زیاد نشه ها یه تقسیم بکنم نذارم تغییری توی ماجرا ایجاد نمیکنه و جمع لاس روی تمام داده ها رو من اسمشو می‌ذارم کاس فانکشن یعنی چی یعنی داده اول بهش میدم مثلا قرار بوده سه باشه خب این عکس رو بهش میدم ۷۸۴ تا نیرون داره قرار بوده به من سه بده یعنی چی یعنی اینا همه صفر بشن حالا یا نزدیک صفر بشن این یک بشه بقیه هم همه صفر بشن این وای برچسب بشه که به صورت وان هات کد شده ولی خروجی که واقعا میگیرم با این w اولی اینجوریه که سه تای اولی خاموشه چهارمی روشنه اما پنجمی روشنه ششمی یه دفعه که معادل ۹۵ باشه هم روشن میشه بعد هفتمی روشن میشه هشت و نه اینا روشن میشه و اینا خوب نیستن و من باید تلاش بکنم با تعریف لاس و بعدش کاست فانکشن کاری کنم

دبلیوهایی که دارند منجر به این میشن یه جوری تغییر بکنه در نهایت خروجی من یا این بشه واقعاً یا حداقل به این نزدیک باشد خب کاس فانکشن داره رو کل دیتا ست ورودی ما توتال لاس رو حساب می‌کنه ممکنه تو کتاب‌های مختلف تو منابع مختلف با نام آبجکتیو فانکشن یا امپریکال ریسک های تجربی و الی آخر هم معرفی بشن و هدف ما اینه که دبلیو ها رو جوری تنظیم بکنیم که کاست فانکشنمون مینیمم باشه ها یکی از کارهایی که میتونیم بکنیم اینه که خب اوکی بیایم خروجی تمام این نیرون ها رو حساب بکنیم فرض کن که از سیگموید حاصل شده خروجی ایده آل هم داریم مثلا این خروجی ایده آلش صفر صفر یک صفر و و و و اینا رو از همدیگه کم کنیم جمع توان دوشون رو حساب بکنیم با همدیگه جمع بزنیم این تازه باشه لاس این عکسه ها و همینطور برای عکس های دیگه حساب کنیم طبیعتاً اگر پردیکتد ما با اکچوال ما یکی بود لاست دقیقا چند میشد بچه ها برام بنویسید

و این نشون میده که هرچی لاس بیشتر باشه و بعدش سبب میشه کاسمانشن بیشتر بشه یا تابع هزینه بیشتر بشه من جای خوبی قرار ندارم و هدف گذاری من اینه که چیکار کنم کاست فانکشنو مینیمم مینیمم کنم تا جایی که می‌تونم بچه‌ها مقدار لاس یک مقدار اسکالره و مقدار تابع هزینه یا کاست فکشن هم یک مقدار اسکالر من اینا رو دارم عمدا تاکید میکنم چون حس میکنم منابعی که اینا رو نمیگن میتونن تو دل بچه ها ابهام به وجود بیارن البته تابع تابع چند ورودی خیلی حتی خیلی خیلی تعداد ورودی مثلا همون مثال ساده که با مرتضی رفتیم جلو ۱۳ تا مثلا دبلیو وجود داشت که ما باید تنظیم میکردیم و کاست فانککشنی که ما طراحی میکنیم یه اسکالر از تابعیت یا ۱۳ تا متغیر به ما میده اما کاست فانکشن های که ما میتونیم انتخاب بکنیم چیه و به صورت متداول چه اتفاقایی میفته اگه مسائلون رگریشن عموما از مست استفاده میکن همون چیزی که اینجا مشابهش هم دیدید

میان خروجی و منهای ورودی می‌کنند به توان ۲ و ایده آلشون اینه که چی این به سمت صفر یعنی نزدیک بشه و حداقل ممکن بشه که حالا معادلشو ممکنه از گذشته به خاطر داشته باشید مثلاً من ۱۰۰ تا نقطه بهتون بدم تو صفحه بر حسب ایکس و وای باید بهتون بگم بهترین خط عبوری ازش رسم کن خب اوکی میرید کاری می‌کنید که مقدار واقعی از مقدار اون جایی که شما دارید تخمین می‌زنید که اون خط رو رسم می‌کنید اختلافشون از هم توان دوشون جمعش مینیمم بشه و یه خط بهینه پیدا میشه اگه مسئ تو مسئله کلسیفیکیشن طبقه بندی از لاس های مختلف یا کاسپانکشن های مختلفی میتونید استفاده کنید پیشنهاد ما کراسپتروپی یا آنتروپی متقابله که خودش حالا به دو دسته میتونه ب بشکنه اگر دو کلاسه هستید یعنی مثلا سگ یا سگ مثلا سگ هست عکس هاتون یا سگ نیست یا اینکه سگه یا گربه است و یا اینکه نه چند کلاس است مثلاً اینکه یه خودرو خودران میخوید بسازید و میخوید ببینید اون چیزی که دیده عابر پیاده بوده علامت راهنمایی بوده نمیدونم ماشین

یا یا فلان که از کت گرگال کراس انتروپی استفاده میشه ولی معنیش این نیست که شما نمی‌تونید از کاس فانکشن‌های دیگه‌ای مثل همون ام اس ای که بالا گفتیم استفاده بکنید و اتفاقاً اینجا توی مسئله ۱۰ کلاسه همین کارو کرده یعنی اومده از لاس و کاس استفاده کرده که جمع توان دوهاشون رو میخواد چیکار کنه مینیمم بکنه خب لاس یک بار دیگه تاکید میکنم برای یک مشاهده است و کاسپکشن برای مشاهدات بیشتر روش های دیگه هم وجود داره که ما خوب خیلی بهش نمیپردازیم اجازه بدید قرارداد کنیم در درجه اول اولویت ما اینه که تو مسائل رشن از ام سی استفاده کنیم و از توی مسائل کلاسیفیکیشن از کراس انتروپی استفاده بکنیم که حالا فلسفه هایی دارند اگه برسم یه مقدار اشاره میکنم بهش خب اگه بخوام مثال بزنم فرض کنید مسئله رگریشن بود همون مسئله قبلی به جای اینکه بگیم پاس میشه یا نمیشه بخوایم تخمین بزنیم چند میشه نمرش از ۱۰۰ ها خب این شبکه از ورودی هاش میتونه حالا یا سطری یا ستونی باشه من عادت دارم ورودی ها عمدتا ستونی میزارم اینجا

نمایش یکپارچه و چیز ورودی‌ها را من ستونی میزارم اینجا سطری گذاشته مثلاً گفته اگر یکی چهار ساعت چهار تا جلسه شرکت کنه ۵ ساعت وقت بزاره نمره‌ش مثلاً باید منطقاً ۹۰ بشه خب طبق تجربه اگه دو ساعت دو جلسه شرکت کنید یه ساعت وقت بذاره باید ۲۰ بشه اینا برچسب های اند که از قدیم دارم ولی فرض کنید شبکه من اول وزنش یه جوریه که چیکار میکنه به شما میگه که مثلاً به ازای چهار و پنج شما میشی ۳۰ یا به ازای دو یک میشه ۸۰ اصلا تخمین های خوبی نیست و اینا خودشون تو لاس و کاسپانکشن نشون میدن ولی اگه ۵۸ بدین باید ۹۵ میشد اینجا ۸۵ تخمین زده اوکی بد نیست و الی آخر اینجوری باید بریم جلو و تو تمام ترین ست هامون این کارو انجام بدیم خب جی رو میتونیم همون کاسپانکشن که حالا یا با سی دبلیو جی من نشون میدم بشه یک ان ام که تعداد ترین ست هم باشه سیگما روی چی واقعی ها منهای تخمینم یا اسمشو وای هت میزارم بالا

آیا نماد مشاهده آیومه به توان دو روی تمام مشاهداتم چیکار می‌کنم جمع می‌بندم و تلاش می‌کنم که بالاخره ببینم این چنده و دبلیوها را چه جوری تغییر بدم این اوضاعش بهتر میشه اینم کدیه که شما میتونید توی تنسور فلو از این استفاده کنید اگر باینری کلسیفیکیشن داشتید فقط می‌خواستید ببینید پاس میشید یا نمیشید خروجی های واقعی چین یا یک یا صفرن یک مثلاً نماد پاس شدن صفر نشدن و خدمتتون عارضم که اینجا میتونستید از کراس انتروپی استفاده کنید البته از ام اس ای هم میتونستید استفاده کنید cراس روپی هم حرفش اینه میگه حالا من منفی وای برابر وای برابر ال ان یا لوگ پردیکتد یا وای هت به علاوه یک منهای وای آی در لوگ یک منهای پردیکتد که یه همچین چیزی داره و این لاس تک تکشه و جنبه بندی رو تمامش کاس فانکشن کلی بدست میاد بچه ها وای آی یا صفر یا یک یعنی چی یعنی یا این عبارت یا عبارت بعدی یکیشون صفر میشن چون یکیشون یک منهای وای باید ببینید برچ

چند بوده مثلاً تو این حاصل که ۴ و ۵ ورودی میدادید یک باید خروجی می‌شده یک دهم شده خب وای آی یکه اینجا یک منهای آی هم یک منهای یک صفر پس این اصلا اینترنت وجود نداره یعنی بین این دوتا یکیش هست یکیش نیست بعدی پردیکتده باید یک تا ال ان یک دهم رو حساب بکنید با علامت منفی و خب خدمتتون عارضم که هرچی شما این یک دهمتون به یک بیشتر باشه لاستون میره به صفر نزدیکتر میشه یعنی اوضاعتون خوبه ولی هر چی دور و دورتر بشید اوضاع بدتر میشه یکی از دلایلی که از این توی کراس انتروپی توی مسائل کلاسیکیشن استفاده میکن به جای ام اس ای که وقتی که خیلی ازش فاصله میگیرید لاس رو خیلی زیاد میکنه و خیلی جدید او پنالتی و سنگین میکنه یعنی شما این خروجیتون به خیلی به صفر نزدیک باشه بشه یک صدم ال انش خیلی عدد بالایی میره بشه از لحاظ عددی میگم حالا منفی مثبتش کاری نداشته باشیم در حالی که مثلاً اگر می‌خواستید چیز استفاده کنید اینو منهای این بکنید

بکنید که البته غلط هم نبود و کارو راه میندازه دیگه ته ته شما مثلاً کاسپانکشنتون یکه دیگه یعنی بدترین حالتش یک واحد خطا دارید ولی میتونه این عدد رو خیلی زیاد کنه دارم به بیان عامیانه تلاش می‌کنم بگم در ضمن خروجی این نرونا تو واقعیت خود صفر دقیقا نمیشن که بخواد الn منفی بی نهایت مثبت بی نهایت بشه و بالاخره یه عدد کوچیکی یا بزرگی دارند ولی این وای آیا دقیقا یا یک یا صفر که به این میگن حالا لاس کراس انتروپی یه پله خفن ترش اینه که اگه بیش از یک کلاس داشتیم چیکار کنیم میگه اوکی خونسردی خودتونو حفظ بکنید از این تابع استفاده کنید یه جورایی دو سیگما تو هم میشه یکیش برای لاسه آبیه لاسه سیاهه روی تک تک داده ها جمع میبنده که کاست فانکشن رو بهتون بده لاسه میگه چیکار کن میگه به ازای هر ده نگاه کن واقعا باید یک میبود تو خروجی یا صفر مثلا اینجا تو این مسئله عدد سه اینجوری که ۱۰ تا خروجی داره چهارمیش باید یک میبود بقیش باید صفر میبودند دیگه ها خب خدمتتون عارضم که

۹ تا از اینا وای کا که واقعیت باشه صفرن هیچی عرض به خدمت شما اون یکی که یکه نگاه می‌کنه که چی نگاه می‌کنه که مثلاً چقدر نسبت به واقعیش که باید خروجی شبکه ما باشه چقدر فاصله داره با همدیگه جمع میزنه و ایلاس میشه برای اولی و الی آخر میره تا آخر اینا رو جمع بندی میکنه و در نهایت کاسپانکشنتون میده اگرچه بهتون گفتم میتونیم چیکار کنیم امc هم ازش استفاده بکنیم حالا بریم جلوتر تو مسائل اینا رو بیشتر من مجبور بودم الان اینا رو بگم تا بریم بگیم چجوری میشه دبلیو ها رو بالاخره بهینه کرد اوکی فرض کنید ما یه کاس فانکشن داریمشن ما یه اسکالره البته تابعیتی هست کلی پارامتره که من اینجا اومدم همه رو توی برداری به نام w1 تا wn جا دادم مثلاً تو مسئله ما ۱۳ تا پارامتر وجود داشت که این تابعیت wو ها ورودی ها و خروجی های برچسب زده شده است که در نهایت چیکار میکنه به ما اون مقدار رو بده فرض کنیم که ورودی ها و خروجی های برچس

شده تغییر نمی‌کنند ولی wلیوها رو ما نداریم پس انتظاری که داریم اینه که این تابع یا سی یا جی تابعیتی از یه مشتی دبلیو باشه که ما می‌خوایم چیکار کنیم کمینه اینو پیدا بکنیم خب طبیعتاً همونطور که گفتیم لاس تک تک میشه اینجوری حساب کرد اگر ایکس یک و وای یک واقعی رو داشته باشیم وای یک حتی پیدا بکنیم میتونیم لاس اول تا لاس ان پیدا کنیم جمع بزنیم کاستشون بدست میاد مثلا برای ام اس ای براتون اینجا نوشتم که اینا رو به توان دو بکنیم جمع بزنیم در واقع میتونید چیکار کنید خروجی منهای اف ایکس به توان دو داشته باشید که این اف خیلی پیچیده است توی چیز دیگه توی شبکه های عصبی و خوب ولی بالاخره یه تعداد دبلیو اینجا مجهول اند w1 دو تا مثلا w سی برای مثال ما که بارها و بارها هم در ضمن تکرار میشن و جمع اینا قراره اپتیمم بشه و بهینه بشه خب سوال اینه فرض کنیم که داده های آموزش ما معلومه بدون تغییره پس کاستما دیگه فقط تابعیتی از اون دبلیو بایاس ها میشن و در

این چیزی که داریم میگیم هیچ ربطی هم به ماشین لرنینگ نداره یعنی یه مسئله عمومی بهینه سازی اگرچه ما داریم تو مسائل شبکه عصبی یا یادگیری ماشین ازش استفاده می‌کنیم خب به نظر شما این کاستو اگه بیایم بر حسب دبلیوها رسم کنیم شکلش چه جوری میشه و در ضمن ما باید دبلیوها رو جوری انتخاب بکنیم که چی این کاسته مینیموم حالت خودش بشه حتی مینیمم محلی هم نه مینیمم مطلق خودش بشه بچه‌ها فرض کنید شبکه تون فقط یه دونه دبلیو داشت ها کاسپانکشن در عادی میتونه بسیار بسیار پیچیده باشه اگه شما پیکچری که انتخاب می‌کنید یا توابع فعال سازی که انتخاب می‌کنید چیز عجیب غریب باشه مثلا فرض کنید یه تابع به توان چهار مثلا میخوید تقریب بزنید مثلا بشه دبلیو به توان چهار به علاوه سه برابر w فلان فلان یه دفعه کاسشن همچین چیزی میشه چجوری میشه اینو بهینه‌ش کرد چجوری میشه دبلیو پیدا کرد که اینو بهینه میشه تازه تو واقعیت که ما بسیار بسیار دبلیو داریم الان

پله بیایم بالاتر فرض کنید دو تا دبلیو دارید و بعد سوم هم گذاشتید کاستو می‌خواید پلات کنید حالا چیکار می‌کنیم اگر از محاسبات عددی کارشناسی به خاطر داشته باشید شما برای بهینه کردن یکی از راه هایی که میتونستید استفاده کنید بهره گیری از یک روشی بود به نام دیسنت یا گرادیان نزولی و توش این اتفاق می‌افتاد که شما میومدید یک نقطه اولیه برای دبلیتون تخمین میزدید اگه یه بعدی بودید اگه دو بعدی بودید خب حالا به ازای تک تک دبلیوهاتون تخمین میزدید میومددید مشترک اگه یک بعدی بودید مشتق کاست بر حسب اون دبلیو حساب می‌کردید اگه یادتون باشه ما گفتیم مثلا اینجا الان میتونید ببینید که فرض کنید این خطیه الان سی میشه وای منهای w در ایکس به توان دو یعنی w1 x بهوه تا فلان وای ان منهای فلان اینا رو جمع بزنید یه مشتی عدد ثابت دارن که هیچی بعد یه مشتی دبلیو یک توش میمونه که حتی توان دو ممکنه داشته باشه دبلیو دو توان دو داشته باشه w1 الی آخر بمونن و اینو اگه بخواید رسمش کنید

یک چیز وحشتناک عجیب غریبی میشه با کلی لوکال و مینیموم و الی آخر و یه مشتی نقطه زینی که می‌تونن انواع مسائل برای ما به وجود بیارن ولی اگه بخواید این کارو بکنید خب یه تخمین میزنید اول دبلیو یا دبلیو آی ها را تخمین اولیه میزنید میاید مشتق کاس فانکشن رو بر حسب تک تک دبلیو های که بر حسب دبلیو ها پیدا میکنید بر اساس تمامی دبلیوها تو اون نقطه مورد نظرتون در واقع چیز مشتق پاره رو حساب می‌کنید اگه یه دونه دبلیو داشتید خب فقط یه دونه دی سی حساب میکنید اما اگه بیشتر داشتید رند سی به رند تمامی دبلیو آی ها رو پیدا میکنید به ازای اون دبلیو که حدس زدید حالا یه شیب بهتون میده اون شیوه نمادی از اگر رو اون شیب حرکت بکنید و برید جلو یا عقب تر نمادی از بیشترین میزان رشد یا کاهش توه اگر روی تاب سی بخواید حرکت کنید و به خاطر همین ما از این مسیر استفاده میکنیم فرض کنید که شما اینجا رها شدید و میخوید برید مینیمم مطلق در واقع

یکی از مسیرهایی که میشه رفت اینه که در راستای اول برید اونجا گرادیان حساب کنید مشتق بر حسب w2 الی آخر و تو اون نقطه در راستای منفی اون خطه حرکت بکنید یه میزان تا بالاخره انقدی برید جلو چی بشه همگرا همگرا بشید خب فرض کنید که شما این کارو بکنید اینجا مشتق حساب بکنید خب اگه از اون و برید در راستای خود شیب برید شما دارید خودتون رو به ماکسیمم نزدیک می‌کنید اما اگر در خلاف جهت حرکت کنید یه کوچولو به مینیمم نزدیکتر میشید دوباره به دبلیو جدیدی میرسید دوباره تو اون دبلیو جدیده برید بردار گرادیان رو حساب بکنید دوباره در راستای مماس بر اون نقطه جدیده یه کوچولو حرکت بکنید اینقدی برید تا چی تا برسید به نقطه مینیمم حالا یه ماجرایی پیش میاد حالا اون نقطه که توش افتادید بعد از مدت ها و تشن های فراوان میرسید آیا مینیمم مطلق یا مینیمم نسبیه خب اگه معلوم بود تابع که مینیمم مطلقش کجاست که خب دیگه حرفی نبود درجا همون دب رو حدس میزدیم اینجا تمام میشد میره ولی متاسفانه

مشکلاتی وجود داره که حالا ما باید یه جوری اینو هندلش کنیم اما پروسیجری که داریم اینه ما میایم یه سری دبلیو حدس میزنیم رند سی و رند تمامی دبلیوها تمامی تمامی wلیوها رو قرار محاسبه می‌کنیم تو اون یعنی اول حساب میکنیم کلی بعد تو اون دبلیو خاص جایگزین میکنیم عددی بشه و میایم دبلیو منهایتا برابر گرادیان سی یا در جهت منفی گرادیان با یه ضریبی حرکت میکنیم تا انشالله خودمون نهایی نزدیکتر کنیم مجدد w جدیدی داریم این مسیر رو اینقدر تکرار میکنیم تا چی به یه نقطه همگرا برسیم یا خودمون حس و حال خوبی داشته باشیم این ات بچه ها بهش میگن نرخ آموزش یا لرنینگ ریت حالا کجا دیدید اینو توی شبکه های خیلی خیلی عادی میشد این اتفاقه بیفته قبلاً مثلاً تو مسائل ساده ممکن بوده به خاطر داشته باشید مثلاً فرض کنید که یه دونه دبلیو دارید یه دونه c مثلاً سوال این بوده که یه سری نقطه داشتید می‌خواستید

خط عبوری و چه می‌دونم ازش رد بکنید خب بعد بتونم گفته بودم اون خطم تازه از مبدا هم میگذره این فقط به من بگید این w باید چند باشه بهترین خطی که تخمین بزنم چند خب اوکی شما اول یه خط فرضی برای خودتون در نظر می‌گیرید مثلاً اینجا بعد میومدید چیکار میکردید در واقع کاست فانکشنتون رو تعریف کردید مثلا فرض کنید تمامی آی هایی که دارید و منهای دبلیو در ایکس آی مربوطه اش بکن به توان دو برس جمع ببند اسم اینو بزار کاس اینو باید رسم کنید خب یه همچین نمودار لیوانی طوری میشه خب و بر اساس دبلیو بعد شما باید برید به این نقطه برسید و اینو پیدا بکنید این دبلیو که من اسمشو w ستاره میزارم و دیگه به ازای این دیگه سی دیگه سی مینیمم مطلق خودش میشه و می‌خوام بگم که این معادل همون خط نارنجی است که بهترین حالت منه ولی من اول با صورتی شروع کردم خب با صورتی شروع کردم حالا البته اینجا صورتی نمادی از شیب بیشتره

مشتق نسبت به دبلیو بگیر فرض کنید چی بهش این بشه مماس بر نمودار میگه در جهت منفیش یه کوچولو حرکت کن به یه دبلیو جدید برس دوباره بیا تو این دبلیو جدیده شیب مماس بر نمودار پیدا بکن دوباره یه کوچولو حرکت کن به اندازه اتا برابر اون مشتقه در خلاف جهت مشتقشم و انقدی بیا که چیکار کنیم تا برسی به این نقطه خب حالا این انتهای میبینید خودش داستان میشه که انشالله جلسه بعد روش صحبت میکنیم شما ممکنه اتتون خیلی ریز باشه خیلی حرکت هاتون مورچه ای میشه و به نظر میاد که خب تو نمودارهای لیوانی راحت میرسید ولی ممکنه دیر برسید یا فوق العاده خستتون کنه اگه تا از یه عددی بزرگ بشه شوتتون میکنه مثلا اینور بعد مجبید دبلیو رو از این و انتخاب بکنید و w این و خب شیبش اینوری میشه و شما این و در خلاف جهتش میاد میبینید هنوز اوضاع بد نیست ولی و اگه تا از یه حدی هم زیاد بشه میرید حولش نوسان می‌کنید و خب بازم می‌رسید ولی تا از یه عددی باز بیشتر

روش متاسفانه واگرا میشه یعنی از لیوانه می‌رید پرت بشید بیرون چون تا برابر اون شما رو خیلی می‌ندازه عقب‌تر یعنی اگه قبلاً مثلاً یک واحد فرق داشتید باید دو واحد می‌ندازتتون اونورتر بعد دو واحد میرید بالا و شیبشو حساب می‌کنید بعد می‌پرید این و میشه چهار واحد می‌پرید این و و الی آخر و از اون لیوان حتی میرید که بیرون بیاید و به همگرایی نمیرسید پس این خود این داستانه ولی فعلاً کاریش نداریم فرض کنید که خوب انتخاب شده و در کل عرضم اینه که اینجوری میتونیم دبلیو رو آپدیت کنیم و در نهایت به نقطه بهینه‌مون برسیم که چی وزن های مناسبمون باشن خب بچه‌ها من انتظار دارم ازتون می‌دونم که بکشن آخر دوره هیچکی حفظ نخواهد بود خود منم ممکنه یادم بره و اگه ننویسمش ولی انتظار رو هم بین بین الله یه کادر صورتی رو حفظ کنید این دیگه واقعا کاری نداره میگه آقا دبلیو در هر لحظه میشه w لحظه قبل منهایتا برابر مشتق کاسپانکشن نسبت به دبلیو تو

نقطه مورد نظر و w۱ منهای اتا برابر رند سی به رند w1 جدید میده الی آخر تا w انتهایی اینو بچه‌ها حفظ باشید که ما دیگه مطمئن باشیم تونستیم گرادیان نزولی رو براتون جا بندازیم و خب اینجوری باید ادامه بدید که چی تا در نهایت به دبلی مناسبی برسید حالا این در واقع گرادیان کاسپانکشن بر حسب دبلیو که خودش یه بردار به اندازه دبلیو بیانگر چیه چه نگاه مفهومی چه میشه تحلیلش کرد و اینا رو چجوری میشه ارزیابی کرد دو تحلیل براش وجود داره فرض کنید که من رفتم گرادیان کاسپانکشن برای دبلیو توی لحظه خاص حساب کردم تو مسئله نیست که پخش کردیم براتون فیلمشو ۱۳۲ تا دبلیو بایاس وجود داشت یعنی همون ۷۸۴ تا و ۱۶ تا میشد ۱۶ تا و فلان فلان خب رفته حسابش کرده دیده که خب ۱۳۲ تا عدد رسیده منفی هم کرده حالا اینا یه عددهایی شدن گفته چه تحلیل

۱ ۱ بیان اینکه فرض کنید اولی شده ۳۱ صدم دومی شده سه صدم ها یعنی اولی ۱۰ برابر دومیه این یعنی اینکه یک تغییر کوچک در دبلیو صفر ۱۰ برابر اثر بیشتری نسبت به کاسپانکشن می‌ذاره نسبت به اینکه همون تغییر تو w1 رخ میداد ها پس این اولین تحلیلشه مثبت و منفی شدنش داره چی میگه این داره اینو بهت میگه که تو باید دبلیووت بره به سمت زیاد شدن یعنی الان کمه یا باید بره کم بشه چون منفی شه حالا اتهام یه عدد مثبت لرنینگ ریت اینه که مثلاً الان مثبت شده این دبلی باید بره بیشتر بشه اونی که منفی شده باید بره کمتر بشه و خب این ماجرا وجود داره و طبیعتاً پس مثبت و منفی بودن نماد بیشتر و کمتر شدن این که نسبت به حالت فعلی باید دبلیو کدوم و بره تا کاسپکشن هم اوضاع بهتری پیدا بکنه و و

چقدر باید بیشتر و کمتر بشه و اینا چیزایی که می‌شد تحلیل کرد و خب اینجوری در یه اتهام ضرب بکنید فرض کنید یک باشه میگه اوکی w بعدی باشه ۳۱ صدم ۳۱ صفر اضافه کن سه صدم به دبلیو یک ولی از ۲۵ کم کن و الی آخر و همینجا میتونید متوجه بشید که اونایی که ضرایب بیشتری دارند عدد بیشتری دارند یعنی اینکه تأثیرگذاری بیشتری رو کاس فانکشن دارن در حال حاضر و باید خیلی بیشترشون توجه بشه و حتماً تغییرشون داد خب باز دوباره به همون فیلم چیز میریم مراجعه میکنیم خدمتتون یه فیلم دومش در مورد توضیح میده که چگونه این چیزا رو فعال چیزها رو بهینه بکنید در مورد همین بهینه سازی داره صحبت میکنه میگه که همون کاری که مرتضی گفت براتون میگه میگه چجوری حساب کتاب میکنید در هر دبلی باید ورودی هاش ضرب کنید با بایسش جمع کنید روش تابع اکتیویشنش بهشون سیگ گرفته اعمال بکنید و بعدش بیاید چیکار کنید

بیاید عرض حضور شما لاسو برای تک داده حساب کنید بعد بیاید روی تمامی داده‌های ترینینگ اینو حساب بکنید با همدیگه جمع ببندید بچه‌ها اینایی که دارید می‌بینید ۱۰ تا عدد با هم جمع میشن تازه یه عدد میشن تازه لاس یه دونه داده است خب که شده سه صدم این احتمالاً نشون میده که اوکی این تقریباً شبکه داره اینو خوب تشخیص میده نگاه هم بکنیم می‌بینیم همینه درایه چهارمش ۹۷ ما ای سوپر بود یک بشه بقیش دوست داشتیم صفر بشه یکیش دو صدم سه صدم شش صدم ولی آخر میبینیم اوضاع خوبه ولی یه کوچولو میره جلوتر میبینید یه داده که نتونه خوب بزنه یه دفعه کاستش مثلاً ممکنه عدد بالایی باشه مثلا اینجا کاسپشن شده سه و۳۷ یعنی اصلاً نتونسته این سه رو خوب این لاسه رو لاسه شده سه و سی۷ اصلا خوب تشخیصش بده فرضا مثلاً اینجوری بوده که اولی باید صفر میداد ۴۳ صدم داده بعدی ۲۸ داده درسته این یکه رو ۸۸ داده بد نبوده ولی خب یه جایی هم که مثلاً نباید عدد بالایی می‌داده ۹۹ داده این الان

خوب نیست و یه دفعه لاس زیاد می‌شه طبیعتاً سبب می‌شه کاس زیاد بشه و ما باید در راستایی عمل بکنیم که این بهینه و بهینه‌تر بکنه خب در مورد این صحبت میکنه میگه فلسفه این گرید دیسنت اینه که نقطه تون هر جا بزارید مثل اینکه گرانش وجود داشته باشه سر میخورن میان پایین ولی خوب لزومی نداره شما حدس های اولیه مختلف بزنید همه به یک جا همگرا بشن ما دوست داریم به اینجا برسیم ولی ممکنه شما تو اینجاها گیر بیفتید فعلا فرض کنید نمیاد جلسه آینده میگیم راه های جایگزینش چیه جایگزین کنید در مورد این صحبت میکنه که خب چجوری کاست فانکشن رو حساب بکنید تک تک داده ها را برو تمام تمام تمامشو جمع بزن و در نهایت برو بهینش کن میگه من اگه تو اون روحیه اینجا باشم در چه جهتی باید حرکت کنم که در نهایت به مطلقش برسم ۱۳۲ تا پارامتر دارم چه میشه اینا رو لحاظ کرد و این فیلم رو حتما ببینید لینکشو براتون گذاشتم

خدمتتون عارضم که میگه من اومدم کاست لحظه اولم حساب کردم مثلاً شده ۵ بعد منفی گرادیان کاستو نسبت به همون دبلیو رنداشو حساب کردم آپدیت کردم هی دارم آپدیت می‌کنم هی هر مرحله داره هی بهتر و بهتر میشه و این کاسه میاد پایین تر و در نهایت یه جایی که دیگه حس میکنم خیلی خوب و مناسبه وایمیسته خب بعدش میگه چجوری آنالیزش بکنم میگه هی بیاد بهش ورودی بده ببینم ببخشید هی بیا بهش ورودی بده ببینم این چند بهتون میده و مثلا سی بهش بده ببینم سه میبینه یا چهار میبینه یا نه بشماره چند تا از اینا رو درست گفت خوب خدمتتون عارضم که اینجا فیلمش ببینیم چند ثانیه ضرر هر جا غلط میشه یه لحظه مکث میکنه میگه ببین مثلا تو ۵۰ تا ۶۰ تایی که دیدم ۷۰ تایی که دیدم ۶۵ تاش درست بوده یعنی ۹۶ درصد دقت دارم و خطاها رو داره شناسایی میکنه

مثلا اینجا نوشته نوشته این مثلاً از نظر این این ۴ بوده یا از نظر این صفر بوده ولی در حالی که واقعا شیش بود ولی خیلی بهش نزدیک خدمتتون عارضم که اینا مسیرایی که هست به اون سؤاله می‌خواد جواب بده آیا این شبکه آیا آیا واقعا تو لایه اول داره شابلون میندازه به نظرتون میگه من رفتم پلات کردم اگه یادتون باشه ۷۸۴ تا در واقع دبلیو دارم که به نرون اول ۷۸۴ رسم کردم پلاتش کردم میگه بچه ها در واقع دبلیو لایه اول تا لایه شزدهم واقعا یه چیزی رندوم یعنی ما نمیتونیم تشخیص بدیم تو این شبکه های ام ال پی لزوما چه معنی دارند و میبینید که اینان که دارن در عکس اولی

میشه بعد در ضمن یه سری باگ دارن این شبکه‌های nlp میگه که بعضی وقتا شما عکس رندوم نویزی بهش بدید خب اوکی ایده آل شما اینه که هیچی نده دیگه همه نرونا رو خاموش بده بگه من هیچی نیست ولی مورد داشتیم عکس نویزی بهش داده طرف مثلاً با ۹۰ و خورده درصد دقت گفته این پنجه خب و این چیزه و این چرا داری میگی ولی کاری نداره رفته یه سری حساب کتاب انجام داده شما هم یه سری داده بهش دادید خب با اون داده های کارهایی که کرده ولی چون میتونه بی نهایت مقدار از در واقع باز های مختلف بگیره خب اوکی این همه خروجی هاشون یه عدد میشه دیگه تهش اینجوری شده این ده تا عدد حساب کرده این یکی مثلا شده نود و خورده‌ای درصد بقیه نزدیک های صفر شدن میگه این پنجه ها یه باگ دیگش اینه که میگه تو بلدی مثلا یه پنج برام بنویسی به شبکه ام

داداش من آزمون چند گزینه‌ای ام من فقط بهم بگو چنده من بهت میگم نمی‌تونم ۵ برات بسازم خب در حالی که حالا در ادامه ممکنه برسیم اشاره بکنیم به شبکه‌های جنریتی وجود دارند که میتونن براتون بسازن اینا رو خب میشه خروجی هم ساخت و در نهایت حساب بکنید گرادیانش حساب بکنید چیکار کنید تا به مسیر بهتری برسید اما این یک کلی گویی بود و خیلی هم به شبکه عصبی ربط نداشت میگه خب اوکی این مسیری که برای من الان گفتی من چه میتونم رو وزن های شبکه عصبی پیاده کنم ها دلیللام چیست یکی اینکه در نظر داشته باشیم خروجی های شبکه عصبی تابع خیلی پیچیده از ورودی ها وزن ها داشتن ها به این راحتی نبود واقعا من مشت حساب بکنم چجوری میتونم کاست فانکشن رو رندش نسبت به

لایه اول بگیرم که تو راش انواع اتفاقات کرکسیف افتاده یعنی اف مثلاً w۱ ایکس یک بعد یه جای دیگه باید یه دبلیو دیگه در اف باز w همون ایکس ضرب شده و میبینید بارها و بارها از دبلیو استفاده شده بعد خودشون رفتن تو چند تا اف و چه‌جوری می‌تونم اینو حساب بکنم و می‌خوایم یه راه سیستماتیک قابل برنامه نویسی شده براتون ارائه بدیم که به این روش میگن روش انتشار به عقب یا بک پراپشن یا bp مخفف بریتیش پترولیم نیستا و بک پراپ هم میگن و این روش خیلی روش معروفیه و عمده کارهای ما توی شبکه‌های عصبی تقریباً ۱۰۰ درصدشون از این روش الگو میگیره و استفاده میکنه چه تو شبکه عصبی وانیلی ساده و چه شبکه های عصبی پیچیده تر خوب در نهایت حرف اینه که ما میخویم از روش رادیان نزولی استفاده بکنیم تا وزن ها را به روز بکنیم خدمتتون عارضم که خوبی در واقع چیز بردر گرادیان اینه که سریع ترین جه

که میتونه تو تابع یا حالا کاهش تو تابع به وجود بیاره و اون مسیر جذابی برای ما ولی اگرچه حالا عرض می‌کنم یه سری مشکلات داره همین چند تاشو اشاره کردم که انتهای مختلف قابل بررسی بود و توی این راه از تکنیک چین رول یا قاعده مشتق زنجیری استفاده می‌کنم تا این کارو بکنم آیا روش گرادیان نزولی انتخاب همیشگی و نهایی ماست پاسخ شاید بله نباشد که دلایل زیادی داره اما فعلاً اجازه بدید ما مسیرمونو با این آغاز بکنیم بریم یه جای خوبی برسیم لازم شد حالا اصلاحاتی روش انجام میدیم که جلسه آینده خدمتتون بیان می‌کنیم یه مرور خیلی اجمالی بر قانون مشتقات زنجیره‌ای داشته باشیم ما میدونیم اگه وای مساوی با fx باشه یه تغییر کوچک تو ایکس بدیم به اندازه دلتا ایکس دلتا وای که تغییر در واقع معادله وایش باشه چقدر خواهد بود یه ضریبی از اون دلتا ایکس است که با مشتق وای نسبت به ایکس نمایش داده میشه یعنی از دلتا ایکس عدد کوچیکی باشه دلتا وای تقریبا از دی وای به دی ایکس در دلتا ایکس

واضح و بدیهی از بدیهیات ریاضی چند تا ورودی ایکس ۱ تا xn داشته باشه و همه اینا به اندازه دلتا ایکس آی تغییر بکنند دلتا وای چقدر تغییر میکنه میگه خب میشه که از باز از مشتقات زنجیره‌ای و تمام چیزهایی که تو میدونید میشه دی وای به دی ایکس یک در دلتا ایکس یک به علاوه وای به دی ایکس دو در دلتا ایکس الی آخر این همون جایی که بهتون میگه یه تغییر یکسان تو دلتا ایکس یک دلتا ایکس دو کدومشون تغییر بزرگتری رو توی وای به وجود میارن که نمادی از در واقع مشتق وای نسبت به اون ایکس آی نمادی از اون میزان جهش هستش یا کاهشه که اینجا داره خودشو نشون میده و در نهایت مادامی که دلتا ایکس ها خیلی خیلی خیلی کوچیک باشن دلتایی هم میشه با این تقریب مدلش کرد اگر وایتون تابعیتی از اف تابعیتی از یه زدی داشته باشه که خود اون زد تابع ایکس بعد اف روی اون اعمال بشه حالا سوال اینه که یه تغییر کوچیک تو ایکس چه تغییری تو وای به وجود میاره که اینجا قانون

مشتق رند وای و رند ایکس رو میگیریم دی وای به دی زد در دی زد به دی ایکس یا تغییرات دلتا وای میشه در زد ایکس در دلتا ایکس که حالا میتونید اینجوری نگاه کنید که دی زد ایکس در دلتا ایکس میشه دلتا زد یعنی ایکس یه کوچولو تغییر کنه زد مقدار تغییر میکنه از اون و دی وای به دی زد در دلتا زد میشه تغییرات وای ناشی از تغییرات زد یا در کل دی وای به دی زد در دی به دلتا ایکس میشه چی تغییرات وای نسبت به تغییرات اندک ایکس این چیزهایی که ما حالا باهاش سر کار داریم اگر fمون تابع یک ایکس دو ایکس تا زد ان ایکس باشه حالا برای تغییرات کوچک ایکس چی میشه دلتا وای میشه جمع یه سری چیزها که باشند دی وای به دی یک در دی یک به دی ایکس در دلتا ایکس و الی آخر که این شما همه بهتر از من بلدید ولی اینو چی میگید یعنی این طولانی تره که ما تو شبکه های عصبی با این یا حتی پیچیده تر از این مواجهیم چی میگید یعنی f تابعz یکی باشه که خود زد یک تابع از ایکس

چیکار کنید پیدا کنید که رند وای به رند ایکس یک چنده یا دلتای وای به ازای تغییرات ریز دلتا ایکس یک دلتا ایکس دو تا دلتا ایکس ان چقدر میشه اینا مواردی که در واقع ما باهاش سروکار داریم و می‌خوایم اینو چیکار کنیم یه جوری هندلش بکنیم خب صورت مسئله پس تقریباً برای ما معلومه برای اینکه ما بک پروگریشن رو آموزش بدیم اجازه بدیم با ساده ترین شبکه که میتونیم بریم جلو استفاده بکنیم ما استان فارسی‌ها همیشه راحت ترین مسیر را انتخاب میکنیم فرض کنید یه شبکه دارید کلا فقط تو هر لایه یه نیرون داره یعنی ورودی یه دونه است یه لایه اول داره یه لایه خیلی گردلی فقط با یه خطای w12 تا wl به همدیگه چی اند وصلن فرض کنید کاست فانکشن ما هستش خروجی لایه آخر منهای وای به توان دو الاسمون اینه یا کاس فانکشنمون میشه توتال سیگمای

شما بخونید نمادی از چیه نمادی از در واقع کاست اول یا لاسه‌ها خب این کاست توتال نیست من بهتون گفتم گفتم مثلاً یه تا یه مقدار از مقدار واقعیش به توان دو اگه اسمشو لاس بزاریم میتونیم بگیم کاست یک یا مثلاً فقط کاسفانکشن روی اولی فقط این میشه که کاست نهایی میشه سیکما رو تمام ترینینگ ها اوکی این پس از الان به بعد کلمه لاس رو دیدید این من روی ترین ست روی داده ورودی دارم این چیز رابطه بین خروجی و خروجی تخمین حساب میکنم خروجی واقعی رو تخمینم ولی نوشتم کاست نمادی از این که جمع هم بستم رو تمام لاس ها حالا چون باهاش کار دارم اینو بارها و بارها تکرار می‌کنم خب اوکی بخوام اینجوری شروع بکنم میگه که شما قرار بود که کاست رو بر حسب تمامی دبلیو ها تابعش تشکیل بدید بعد چیکار کنید بعد بیاید نسبت به تمام

مشتقشو حساب کنید چون تو بخش گرادیان نزولی لازم داشتم چقدر کار چقدر سختی داره هم اینه که من گفتم ببینیم و بعدش در نهایت فرمول نهایی ما چه جوری خواهد شد گفته که یه شبکه فوق ساده فقط با یک در لایه خروجی l یک نیرون در لایه ماقبل یک در لایه قبلی و و تصور کنیم خب فرض کنید که il که خروجی لایه آخر باشه ما اسمشو همون وای هت می‌ذاریم دیگه یه دونه هم نرون دارم میخواد بهم بگه امتحان پاس میشه سیگن گذاشتم و خروجی بهم داده یه عددی شده می‌دونم واقعیت چنده تو برچسب‌ها می‌دونم من چند شدم کاست رو تعریف میکنم اینه منهای این به توان دو یا می‌تونستم کراس انتروپی تعریف بکنم بود منفی وای برابر در واقع لوگ وای هت و الی آخر اوکیه و اینجوری کاست رو برای یه دونه دادن تعریف می‌کنم می‌خوام ببینم مشتق کاست نسبت به دبلیو ال همین دبلیو در واقع بغل سریش چون خروجی این

نهایی شبکه این دبلیو خودش چقدر کار داره تازه این راحت‌ترین ها خب میگه این خیلی کاری نداره چرا میگه از مسیر گرافی بیا شاخه‌ای نگاه کن چه جوری شده میگه دبلیو لایه ال خب اومده در آ ال منهای یک ضرب شده یعنی خروجی لایه قبل باشه با یه بایاس لایه ال ام جمع شده اسمش گذاشتیم زد ال یا ورودی آخر یه اکتیویشن فکشن اف روش اعمال شده خروجی آبمون داده درسته خب که ما این با این a و y کاست رو میسازیم خب زد هستش دبلیو در منهای یک به علاوه bl اینا همه عددا همه اسکالر بعد al هم شده چی یه تابعی اکتیویشن فانککشنی روی عدد که حالا سیگما باشه تنش باشهلو باشه و الی آخر درسته و اینو گفته ببینیم خب اگه می‌خواستیم بنویسیم مشتقش چی میشه رند فقط این لاسه یا کاست فقط داده اول به رند

‏w لایه آخر چی میشه قبول دارید میشه رند سی به رند خروجی در رند خروجی به رند ورودی اون نرون آخر در رند ورودی به رند w مشتق زنجیره‌ای نوشتما یعنی اینو با این بزنید اینو با این میشه روند سی و رند w باقی میمونه حالا من اگه بودم دوست داشتم این سمت راستی رو اول چپ تر بنویسم بعد این وسط و دید این و بنویسم مفهومش هم اینه میگه آقای دبلیو یک کوچولو تغییر بکنه سی چه تغییری میکنه خب اوکی کوچولو تغییر بکنه چون در a ضرب میشه زد تغییر میکنه زد از یه کوچولو تغییر بکنه al تغییر پیدا میکنه آلت تغییر بکنه کاست تغییر میکنه خب این منطق منطقیه که این مشتق صفر نباشد خب چجوری پیداش بکنیم اینجوری اینو میتونیم بازترش کنیم رند سی به رند a بستگی به کاسشنمون چی گرفتیم اگه مثلاً فرض کنید یارو گرفته باشیم همین آی منهای وای به توان دو گرفته باشیم بچه مشتقش چی میشه رند سی صفر به رند

الان کاست صفر رو فقط می‌خوام یعنی فقط برای این داده می‌خوام ببینم این ترم سمت راستی چی میشه رند a اینا همه اسکالرن وای هم مقدار مشخص و ثابتی داشته اگه صدامو دارید برام بنویسید یکی لطفاً بنویسه صدا هست یا نیست نمی‌دونم من با موبایلم نمی‌تونم آها مهدی البته نه دو تا al دو تا چی دو تا a منهای وای دیگه مشتق بگیرید حالا این چیزتونه متغیرتونه اینم عدد ثابته این عبارت به توان دو می‌خواید ازش میشه دو تا منهای وای حالا اگه این چیز دیگه‌ای بود کاسشن من درآوردی شما بود یا هر چیزی کراتراپی بوده اینا این برای خودش یه چیزی میشه اوکی تا اینجا قبوله رند al به رند زد چی میشه مگه غیر از اینه که

درسته پس رند al به رند زد میشه اف پرایم زد رند زد به رندw بچه‌ها چی می‌شه زد هست یه چیزی دبلیو به علاوه فلان رند زد ال به رند wl چی می‌شه رنگ‌هاشم معلومه رند سبزه به رند آبیه چی میشه برام بنویسید تمام شد پس رنده کاسفانکشن به رند wl پیدا شد که خیلی به نظر سخت نبود سه تا چیز در ضرب شدن جالبه هم توش آی ال ظاهر شد هم مشتق آی ظاهر شد الان میخوام ببینید که هم خود مقدار تابع مهمه هم مشتقش مهمه خب که این نمادی از همون چیز است میزان تغییرات دبلیو که هر کدومش بره به سمت صفر برسه دبلیو دیگه تغییر نمیکنه حالا اگه کاستتون صفر باشه یا بره به سمت اون آله به سمت وای میل کنه خوبیش اینه که در واقع اینجا که داره ضرب میشه

اوضاع خوبه خب ولی اگر زیاد باشه نه این میره دبلیوتون تغییر میده میگه شما فاصله دارید از نقطه مورد نظرتون و اینجوری میشه داستانو برد جلو اما سوال بعدی اینه که این نسبت به دبلیو یه لایه عقب‌تر چه‌جوری کاستوم مشتقشو پیدا کنه یعنی همچنان خروجی شبکه هم همون وایهت اینجاست ولی من قبلاً اومدم رند c رو به رند این فلش آبیه wl اینجا حساب کردم الان میخوام دب ال بزرگ منهای یک لایه مونده به آخر حساب کنم حالا چیکار میکنم میگه ببین باید سعی کنی اصولی عمل کنی که من بتونم کد بنویسم میگه گرافیک نگاه کنیم به داستان باز دوباره اتفاق مشابهی داره میفته میگه که اول wl منهای یک قرمزه باشه در آ ال منهای دو که اینجا مثلاً ۳۲ صدم باشه ضرب شده با یه بایاس ال منهای یک این جمع شده و یه اسمشو گذاشتیم زد این زد ۴۸ صدم نیست اینz قبل از اینکه اکتیویشن فانکشن اعمال

اکتیویشن فانکشن که روش اعمال شده مثلاً فرض کنید مقدار ۴۸ صدم شده و دوباره این ۴۸ صدم حالا همونی بود که در دبلیو ضرب میشد با بایاسش جمع میشد زد میشد اف روش اعمال میشد حالا اگه بخواید رند سی رو به رند wl منهای یک پیدا کنید چیکار می‌کنیم خب اولین چیزی که وجود داره بچه ها اینه حالا من براتون چیز اضافه کردن تو در واقع ویندوز ژورنال نوشتم براتون اضافه میکنم میتونید اینجوری شروع کنید بسم الله الرحمن الرحیم رند سی او به رند دبلی یک میشه رند سی او به رند al در رند آی ال به رند زدl در رند زد ال منهای یک در رند آی رند زد ال منهای یک در یک به wl من- یک و چی اونجا میشه رند سی رو شما به رند wl من- یک مشتق زنجیره پیدا کردید اما برای اینکه بخواید کدش کنیم چون ما بعضی از اینا رو قبلا حساب کردیم میگه تلاش بکن یه مفهومی به نام رند سی به رند آی ال منهای یک رو پیدا

بعدش حالا از این بریم اونجا انگار را دسته که من حالا براتون فرمولاشو نوشتم خب پس یکی از دغدغه‌هاش این کلیپه این میشه که میگه آقا تلاش کن رندسی و رند آی منهای یک پیدا بکنی که حالا بعضی از مراجع اسم اینو دلتا می‌ذارن نمادی از چیز حساسیت کاسمانکشن به خروجی نروناست تو لایه‌های مختلف هم متفاوته تو لایه ال خیلی حس و حال داره لایه آخر آخر چون کاست دقیقا داره با خودش مقایسه میشه ولی تو لایه‌های دیگه یه تخمین یعنی حس می‌کنی که ارور اون چقدره تقریبا خب بیانی از سنسیتی حساسیت شبکه است خروجی کاسشن شبکه است به هر کدام هر چی مشتقه بالاتر باشه یعنی یه کوچولو اون تغییر بکنه کاستتون بیشتر تغییر میکنه این مفهوم مشتقه دیگه خب خدمتتون عارضم که برای اینکه این کار بکنیم خب اومده اینا رو حساب کرده گفته که عرض به حضور شما رند سی او به رند al

۱ خب عرض به حضورتون شده رند co به رند al تا اینجا فعلاً بیاید تا ته نرید خب ما تا ته میخواهیم بریم ولی فعلاً تا اینجا بیاد میشه روند c به رند زد ال در رند آی منهای یک حالا رند سی او به رند al خب مفهومیه که ما قبلا محاسبهش کردیم توی اسلاید قبلی رند سی او به رند مثلا اومدیم اینجا حسابش کردیم و شد دوتا ال منهای وای و فلان رند به رند زد خب نمادی از چیه اف پرایم همون تابع فعال سازی است رند زد به رند ال قبلیش چی میشد در اون ضریبی میشد که اینو درش ضرب میکرد درسته و اینجوری شما میتونید رند سی رو به رند هر کدوم از آ ال ها یعنی تو لایه های مختلف ال کوچک ها پیدا بکنید و بعدش از این به این رسیدن کاری نداره رند این به رند این حالا چی میشه میشه رند این به رند زد در رند زد به رند دبلیو درسته و

رند این به رند زد میشه همون اف پرایمش رند زد به رندw با توجه به این فرمول میشه حالا یه al منهای دویی و اینجوری میشه این مسیر رو ادامه داد و تمامی دبلیوهای لایه‌های قبل رو پیدا کرد خب تا اینجا به نظر میاد که مسیر داره حل میشه اگرچه طاقت فرساست نفس آدم می‌گیره بخواد بیانش بکنه یا کدش کنه اما یادمون باشه ما یه مثال زدیم گفتیم ما فقط ژنرون داشتیم ما تو لایه ها حالا اگه بیشتر از ینرون بشه آیا میزنه زیر میز و داستان متفاوت میشه پاسخ خوشبختانه خیره و میشه یک کاراییش کرد ماجرا اینه که اگرچه پیچیدگی و زیاد میکنه یعنی اگر شما تو لایه المتون که آخر باشه مثلاً دو تا نیرون داشته باشید لایه المنای یکمتون سه تا یا چهار تا نیرون داشته باشید چیزی که وجود داره رند کاس فانکشن به رند al منهای یک حالا بعدش میشد ازش رند کاسشن به رند دبلیوهای لایه

استخراج کرد از چه مسیرهایی اتفاق می‌افته میگه یک بار از این مسیره که از این ۴۰ صدمه بری تو ۸ لایه خروجی برسید خب یه بارم چیه از این دومیه پایینی است شما یعنی آله اومده به اینجا رسیده هم آ یک ال تاثیر گذاشته تو کاسپانکشن هم آ دو اله تاثیر گذاشته یادتونه تو لاسمون اگه یادتون باشه گفتیم برو تمام درایه آخر رو از مقدار واقعیش کم کن به توان دو برسون جمع ببند ها که اینا خودشون تو خودشون به صورت مستتر این آی ال در واقع المنای یک رو دبلیو قبلی رو داره بعد دوباره a2 هم w قبلی رو داره ولی چون در واقع سیستم این بخشش خطی عمل میکنه جمع یعنی مشتق رند سی به رند آ کا ال منهای یک با جمع هر کدوم از این مسیرها برابره یعنی یک بار میگه مسیر بالایی در نظر بگیر یک بار مسیر پایین و الی آخر و اینجوری نگاه کن که

این آ کا ال منهای یک به کیا وصله برو رنده در واقع اونا رو اینجوری حساب بکن با اون مسیری که رفتیم و اینجوری بک پراپ کن برگرد عقب و اونا رو آپدیت بکن که خب اینجا دیگه یه سیگما بسته میشه رو تمامی چی نرون‌های لایه الم یک خب و اینجوری میتونید شما چیکار کنید برید پیدا بکنید رند سی و رند آلا چنده و الی آخر این یک در واقع حس و حال بود چون یکی از بیخودترین یا بدق ترین در واقع چیز فور های ماشین لرنینگه تو تمام سطوح شبکه های عصبی عادی چه عمیق خیلی چیز پیچیده‌ایه شما باید یک بار با دست بنویسید رو کاغذ درش بیارید ولی من تلاش کردم که همین ورژن سادش بیارم هم ورژن کلیش بیارم یه دور خودتون تطبیق بدید اگه نوشتید و در کل باید چیکار کنید در کل باید اینا رو پیدا بکنید خب خدمتتون عارضم که در حالت عادی

اگر می‌خواستید عمومی حسابش بکنید شبکه‌هایی که ال تا لایه دارند و تو هر لایه‌شون می‌تونن دی‌ال تا نرون یا nl تا نرون داشته باشند ما هدفمون اینه که لاسو نسبت به دبلیو آی جی یه لایه پیدا کنیم ببین اگه یادتون باشه گفتم کاست فانکشن که حالا لاس یکی از ترم‌های اون بود باید نسبت به تمامی وزن‌ها تو تمامی لایه‌ها مشتقش حساب بشه خب اوکی اینو میشه همیشه نوشت رند لاس به رند آی در واقع ال تو اون لایه در رند به رند دبلیو جی خب حالا به این اندیس های آی جی هم باید یه مقدار حقیقت دقت کنید چون قاطی نکنید خب بخاطر همین قبلش اون ساده رو آوردم رند al به رند دبلیو آی جی ال خب که سبزه باشه خودش همیشه چیه همیشه اینجوریه که از w آی جی شما چجوری به i می‌رسید w در یه زد ضرب میشد به علاوه بایسی میشد بعد اکتیویشن فانکشن روش اعمال میشد پس یعنی از عقب بخواید برید میشه اول رند آ به رند زدش حساب میکنید در رند زد به رند دب آی جی حساب میکنید

رند آب رند زد میشه اف پرایم زد در لایه که حالا باید به اندیس جیش هم دقت کنید برای w ij تو لایه زدش ظاهر میشه در رند زد جی ال به رند wigl که این چی میشد هر در واقع w آی جی برای که زد ازش ساخته بشه در یه al لایق قبلی ضرب میشد و با یه بایسی جمع میشد تا اونو بسازه و اینجا مشتق منهای یک رو بهتون میده البته با اندیس آی این لایه قبل ها لایه قبلی و اینجا ولی زد لایه فعلی که توشیم خب اوکی بخش سبز رنگ خیلی سخت نبود این همون جایی بود که سه تا چیز در هم ضرب میشد دوتاش اینان در این این بخش قرمز لنگر لامصب داستانه یعنی رند لاس به رند ajl و ما اگه تلاش بکنیم بتونیم اصولی در بیاریم میتونیم از لایه آخر شروع کنیم بیایم عقب تا به لایه اول برسیم تمامی رندلاس به رند w آی جی ها رو پیدا بکنیم و بعدش رو تمام ترینینگ های جمع ببندیم کاسپانکشن

نسبت به تمام دبلیو آی جی ها حساب کردیم خب برای اینکه این کارو بکنید ما باز این رویه رو براتون نوشتیم گفتیم اول اجازه بدید من رند لاس به رند آ جی رو تو لایه ال ام اسمشو بزارم دلتای جی توی لایه ال که نمادی از سنسیتیویتی و حساسیت خروجی به در واقع خروجی نیرون های لایه به خروجی جی او میشه میتونید برداری بنویسید مثلاً اگه تو خروجیتون تو لایه المتون دوتا نیرون هست مثلاً دلتا میتونه بردار دو در یک باشه اگر قبل آخر سه تا نیرونس تو اون لایه سه تا پس هر نیرون بچه یه دلتا داره دلتای نمادی از عرض کردم میزان حساسیت تغییرات کاست یا لاس به اکتیویشن اونه خب حالا این چجوری خوب این خوبیش چیه این خوبیش اینه که میتونیم از لایه الم که لایه آخر باشه شروع کنیم خیلی ساده بود باید پله پله بیایم آخر میتونیم اینو الان بپذیریم بهش فکر کنید تا فردا جلسه آینده دلتون خواست بنویسید من اگه نیاز باشه یه مرور می‌کنم و بعدش درس رو ادامه

اینکه رند لاس به رند wj تو هر کلاً که چیز مهمی بود برامون کلاً دوست داریم به حاصل ضرب سه تا چیز بنویسیم که در واقع وسطی حالا مشتقش باشه آخریه آی لایه قبلیش باشه مشابهش کجا دیدیم توی این لایه آخر دیدیم سه تا چیز در هم ضرب شد دیگه درسته که یه مشتق کاسن نسبت به آی لایه آخر بود در یه اف پرایم در یه چی آی ال لای قبلی اینجا هم همینو داریم حالا دلتا رو برای این گذاشتیم خب و عرض به خدمت شما اینه که فقط داستانی که این دلتای باید چجوری حساب بشه دلتا همون با همون استدلالی که بهتون گفتم وقتی تعداد نیرون ها تو یک لایه بیشتر از یک میشه روی یک مسیر یعنی تو چند تا مسیر هی لاس یا اون کاسمانکشن به آی ربط داره و شما باید تک تک اون مسیرها رو حساب کنید با همدیگه جمع ببندید این فرمول باز شدشه اگه بخواید بسته شدش بنویسید میشه دلتای آی ام لایه

قبل‌تر میشه جمع تمامی دلتاهای لایه بعدی حالا ضرب در اف پرایم اون نرون ضربدر w ij که بهش نیرون بسته این سه تا رو دارم ضرب کنید دارم با هم جمع بزنید دلتای io لایه قبل رو پیدا کنید که این میتونه تو تمام لایه‌ها حساب بشه پس طبیعتاً لایه آخر که آسون بود پیدا کردم ال بزرگم شروع میکنم از ال بزرگ میام عقب ال منهای یک بزرگ l دو منهای ال بزرگ منهای دو تا برسم به چی ال مساوی صفر یعنی همون لایه اولم تمامی این رندلاس به رند دبلیو جی ها را پیدا میکنم و اینا رو توی بردار زیر هم بنویسم میشه چی میشه همون گرادیان سی که میشه در یه منفی هم ضرب کنم تا برابرش کنم با دب جمع کنم میتونم در هر مرحله چیکار کنم دبلیوهامو به روز بکنم و اصلاح بکنم بچه ها میدونم این چیز سختیه واقعیت اینه این سخت‌ترین بخشی بود که ما تو درسمون داشتیم یعنی بک پراپشن و فهمیدنش من خیلی زور زدم که بتونم به بیان ساده بگم خدمتتون و در نهایت اجازه

این فیلم رم باز چند دقیقشو با همدیگه ببینیم و ازتون خداحافظی بکنیم همون در واقع که صحبت میکنه همون مثال ساده رو میزنه که فعلا فقط یک دونه هستند تو هر لایه آپدیت بکنید خدمتتون عارضم که و این مسیر های که توضیح دادیم همون سه گانه های که در هم ضرب میشدند برای لایه آخر خیلی ساده بود و میخواد کاری بسازه و در ضمن گفته حواستون باشه که تازه یه دونه دلتا سی حساب کردید این تازه برای یه دونه ترینینگ ست تون بود ما تو حالت در واقع ایده آل حداقل رو کاغذ باید اینو بیاید و تمام ورودی ها بسازید جمع بزنید حالا این اتفاق میفته اینجا مثلاً فرض کنید که من

صفر شده یعنی خوب بوده اوضاعش ولی آخر یه جا منفی شده بعد میرم تو دوتا و سه تا و چهارمین داده که بهش میدم رند سی به رند دبلیو مثلاً منفی میشن خلاف اون اولی میشن میگه چیکار کن در نهایت میگه بیا همه اینا رو با همدیگه بردارها رو جمع بزن میانگین بگیر رو اون راستا برو جلو خب حالا ممکنه که تو گام دوم داده شماره یکتون که سه باشه هنوز سه تشخیص داده نشه ولی عیب نداره خب کلیات ماجرا که کاست فانکشن به سمت بهتری رفته یعنی تو مثلا هزار تا داده ورودی که بهش دادید مثلاً اگه اول داشت ۹۰۰ تاشو غلط میگفت حالا ممکنه که ۸۵۰ تاشو مثلاً غلط بگه ۵۰ تا به درستاش اضافه بشه بعد یه بار دیگه برو یه بار دیگه برو و در نهایت تا جایی که چی بهترین حالت ممکن برسی اینم همون شاخه ها رو داره میگه خیلی گرافیک و قشنگ مویسه بعدشم میگه میگه آقا اگر بخوای چیز بکنید

پیدا بکنید یک بار از این مسیر آبی میرید یک بار از این مسیر قرمز میرید چرا چون جفتش تو کاست اثر ورود داشته و بعدش میتونید به راحتی با همون ضربه‌های دوگانه در چیز کنید جایگزین بکنید و در نهایت محاسبه کنید به این سمت حرکت قرار بگیریم ولی هنوز ماجراها زیادن نکته های اجرایی داره توی اجرا میتونه یه سری ملاحظات بد پیش بیاد که باید رعایت بشن و در ضمن پیشنهاد میکنم اگه فرصت دارید زحمت بکشید برای خودتون بنویسید اینو حداقل برای همون یک نیرون ها تو لایه های مختلف تا انشالله فردا که رفتیم اگه کسی مشکلی داشت بپرسه ازم و

بعدشم بریم به صورت عملی پیاده کنیم چه جوری میشه توی پایتون یه شبکه عصبی رو ترین کرد و wلیوهاشو به روز کرد و ببینیم به چه دقتی می‌رسیم این تمام مواردی بود که بچه‌ها خدمتتون باید عرض می‌کردم اینم قولی که بهتون دادم گفتم بعضی از موارد بد تخمین زده میشه یعنی ترین کرده خوبم رفته جلو ولی مثلا میگم فرض کنید که اینو بهش داده این چهار شناخته ولی احتمالاً مثلاً منظورش هفت بوده تازه اگه یک نبوده باشه یا اینو بهش داده مثلا احتمالا نه بوده ولی شبکه چهار شناخته یا این شیشه رو بهش داده شبکه صفر شناخته اینا مواردی که وجود دارد آقا خوش و خرم باشید خیلی ممنون از حضور تشریف فرماییتون من مجدداً معذرت خواهی میکنم بابت عدم در واقع تشکیل کلاس تو یکشنبه بخاطر اون کار شخصی که پیش اومد برای کنفرانس ملی بازی رایانه ای و انشالله فردا ساعت سه تا چهار نیم در خدمتتون هستم با ادامه ماجرا و انشالله آشنا شدن عملی با پایتون و ترین کردن شبکه

نگهدارتون خدانگهدار

E:\courses\LangChain Project\main root\data\SCR_Session07_transcript_part1.txt

به نام خدا دوستان عزیز و ارجمند درس رباتیک اجتماعی شناختی عرض سلام و ادب و احترام خیلی ممنون خوش آمدید در خدمتتون هستم با جلسه هفتم درسمون و آخرین جلسه سال ۱۴۰۰ ما امروز انشالله مباحث ام ال پی و دیگه جمع و جور می‌کنیم و هر چقدرشو رسیدیم می‌گیم همچنان طبیعتاً مواردی باقی می‌ماند که اگر خوب کسی بخواد عمیق و بیشتر کار کنه میتونه واردش بشه اما دیگه شاید فرصت ما اجازه نمیده که جزئیات زیادی رو بیان کنیم خب خود بنده تو مطالعاتم تئوری های بیشتری رو خوندم ولی چیزی که حس میکنم لازمه برای شروع همین قدری که خدمتتون گفتیم و امروز می‌گیم به نظر میاد میتونه راهگشا باشه ولی خب نیازمند

اینه که انشالله هر کسی بیشتر و بیشتر کار کنه تا بسته به نیاز خودش موارد لازمو در بیاره فقط نمی‌دونم حالا خیلی هم حس و حال نمی‌دونم بشه گفت که آیا صدا و تصویر بنده به موقع داره میاد یا نه و آیا نیاز هست که من سورس اینترنتمو عوض بکنم یا نه حالا اینو اطلاع ندارم اگر آره فعلاً که فرشاد میگه خوبه دست شما درد نکنه فعلاً بریم جلو انشالله که مشکلی بر نخوریم حالا یه لحظه شروع میکنیم خب خدمتتون عارضم که ما جلسه گذشته مهمترین بحثی رو که مطرح کردیم و گفتیم خدمتتون حالا با هر تعبیری بشه بیانش کرد بحث آموزش شبکه های عصبی از روش بک پروپشن بود که خوب قبلش یه سری مقدمات چیدیم گفتیم که برای اینکه این اتفاق بیفته اصلا صرف نظر

شما دارید مسئله بهینه‌سازی حل می‌کنید یا شبکه عصبی یا کلاً الگوریتم‌های کلاسیک ما با یه مفهومی به نام کاست فانکشن و لاس آشنا شدیم و گفتیم که در کل هدف ما اینه که چیکار کنیم هدف ما اینه که وزن‌ها رو جوری تنظیم بکنیم تا تابع هزینه مون مینیموم‌ترین حالت ممکن بشه طبیعتاً این مینیموم‌ترینه دیگه فوق فوق ما اینه که چند باشه اگه درست حسابی تعریف کرده باشیم کاست فانکشنمونو صفر دوست داشتنی ترین و اونم معنیش اینه که شما تونسته شبکه تون تمامی داده هایی که موجوده رو به خوبی براتون چیکار کنه تخمین بزنه و برچسب های درستی ازش شناسایی بکنه ولی خب دو تا مورد وجود داره که ما تو واقعیت نمیتونیم همیشه به این دقت صد درصد برسیم یه ماجرای

جدی و حقیقی دومم اینه که ما متاسفانه نمی‌دونیم کاسماکشن مینیمومش چند میشه و رو چند وایمیسه و خب این ماجرایی که همیشه برای ما علامت سوال باقی میمونه و ما با راه‌های دیگه‌ای مجبوریم چک کنیم ببینیم آیا حالا تو موقعیت مناسبی قرار داریم یا نه خب رفتیم جلوتر کلیات رو گفتیم گفتیم که از یه روش خدمتتون عارضم کاست فانکشن های مختلفی وجود داشت تو مسائل رگرسیون خوب توان دو خطا رو جمع توان دو خطا رو معیار قرار دادیم توی مسائل کلاسیفیکیشن کتگوریکال کراس آنتراپی رو معرفی کردیم که حالا اگر بشه یه مقدار نمیدونم بشه فرصت کرد یکی دو دقیقه بیشتر در موردش صحبت بکنم حرف حساب در نهایت این شد گفتیم آقا ما اگه تمامی مجهولات که ما اسمشو اینجا دبلیو گذاشتیم توی بردار جا بدیم حرف حساب اینه که شما با گرفتن مشتق اون کاست فانکشن

یک اسکالر نسبت به تمامی درایه‌های w اینو در هر لحظه حساب بکنید به ازای دبلیوهای موجود و از این رابطه استفاده کنید یعنی هر یک از wها را منهای یه ضریب مثبت برابری در درایه متناظرش توی بردار گرادیان بزارید به یه سری بردار به یه سری دبلیو آیی‌های جدید می‌رسید اینا رو تو بردار جا بدید یه بردار دبلی جدید میشه که این بردار دبلیو جدیده انشاالله داره بهتر میکنه حالا چرا داریم میگیم انشالله چون اینجا نقش مهمی رو بازی میکنه و گرافیکی براتون مثالی زدم جلسه گذشته که اگر اتا خیلی خیلی کم باشه چهه مورچه ای شما میرید جلو اگر خیلی زیاد باشه حتی ممکنه واگرا بشید و ماجرایی که وجود داره اینه که مثل اینکه روی اتا هم باید کار کرد وقت گذاشت و راه های براش پیدا کرد که اوضاع خوب بشه اما چیزی که جلسه قبل روش صحبت کردیم گفتیم حالا از

تعبیر شاید نامناسب بیخود استفاده کردن براش ولی همچنان روی حرفم هستم بحث بکشن یا روش انتشار به عقبه که خب تو شبکه‌های عصبی حالا ما از این حرفایی که در مورد کاسپانکشن بهینه سازیش زدیم چه جوری میتونیم به صورت سیستماتیک استفاده کنیم اگر شبکه های عصبی ام ال پی وانیلی ساده چند لایه داشته باشیم چه جوری میتونیم وزن هاشو بهبود بدیم اگر یه سری از نوع اولیه داشته باشیم تا دیگه در مرتضی معماری هم جواب نشه و اون درس رو پاس بشه خب این سوال جدی بود و ما براش صحبت های که کردیم یک بار دیگه اجازه بدید با همدیگه مرور بکنیم و بعدش هم بریم ادامه درسمون که هم تکمیل مطالبمونه و هم انشالله پیاده سازی یک کد اولیه ساده ام ال پی توی کلسیفیکیشن ms دیتا ست ام نیست که در مورد

نوشتن اعداد از صفر تا نه و ۶۰ ۷۰ هزار داده وجود داره و خب تقریباً از هر داده‌ای ۷۰۰۰ تا ۰۷ هزار تا یک و فلان که ۶۰ هزار تا شد در قالب ترینینگ می‌بینند ۱۰ هزار تا تست رو می‌خوایم ببینیم که آیا ما می‌تونیم شبکه‌ای بسازیم که بتونه این ۰۰۱ تا ۹ درست تشخیص بده یا نه خب خدمتتون عارضم که ما اجازه بدید اینجا خودم براتون اینا رو بنویسم گفتیم که برای اینکه اینو شروع بکنیم اولا اومدیم از ساده ترین شبکه عصبی الا ای که میتونستیم تصورش کنیم که توی هر لایه اش فقط یک نیرون وجود داشته باشه چیکار کنیم استفاده بکنیم خب ورودی فرض کنید یه دونه است لایه صفرم یا ال کوچک مساوی با صفر ورودی و میاد جلو اولین وزن اسمش هست دبلیو یک

یه دونم بیشتر نیست بعدی دبلیو ۲ تا میره جلو و در نهایت چی دبلیو ال و خوب ال منهای یکشو بکشم چون باهاش کار دارم wl بزرگ لایه آخر برام wl منهای یک هم چیه برام یه لایه مونده به آخر که اینو نوشتم فرض کنید فقط هم در لایه خروجی دارم که به من چی میده وای حتی میده تخمینی از خروجی منه و من وای یا برچسب واقعی اونم دارم و از روی این دو تا لاس یا کاست فانکشن تعریف میکنم اگه خاطرتون باشه گفتیم لاس فقط برای یک داده هستش یک جفت داده یک جفت در واقع وای و وای هت مثلا اسمشو میذاریم این هت البته این بردارم اسم اینو میزارم وای آی و وای هت آی یعنی که بین

ترین شماره آیون و برچسب واقعیش چقدر خطا وجود داره و کاستم میگیرم جمع تمام لاس‌ها روی کل ترینینگ ستم و من میتونم از روی این دوتا اینو تشکیل بدم خب ماجرا این بود که من باید دبلیو ال منهای یک رو اگر مقدار اولشون داشته باشم می‌تونستم اینا رو آپدیت کنم و به روز رسانی کنم تا چی تا کاسته بره به سمت مینیمم شدن ماجرا همه این بود دیگه گفتیم از دبلیو ال شروع میکنیم که ساده ترین است و به یه الگوی جالب میرسیم که این الگو رو میخویم تع بدیم و لازمه یه پارامتری به نام دلتا تعریف کنیم که حالا با همدیگه همراه میشیم خب برای اینکه این کارو بکنیم خب گفتیم که باید ما بیایم رند سی رو نسبت به رند تمامی دبلیو ها در تمامی لایه ها چیکار کنیم به دستش بیاریم این چالش ماست خب حالا لایه آخر به نظر ساده ترین یعنی لایه آخر هم نتونیم پس

باید این کارو بتونیم بکنیم بعد بعدش از اون روش گریدنت دیسنت یا گرادیان نزولی بریم که w ija و اینجوری آپدیت کنیم که بگیم w ij لایه الوم میشه دبلیو آی جی لایه الوم حالت قبل منهای تا برابر چی حالا رنده کاس فانکشن به چی رند همون دبلیو آی جی الم در هر لحظه و اینجوری آپدیت کنیم تا یه جایی به یه نقطه اقناع کننده برسیم خب یادمون باشه که کاست بود سیمایی از لاس ها اوکیه من فعلا اجازه بدید رند دبلیو آی رند لاس رو به رند w آی جی بنویسم رند کاست به w آی جی میشه چی میشه سیک اون ها پس چی پس رند کاست به رند w آی جی ها در لایه ال میشه سیکمای لاس های

رندلاس‌ها به رند در واقع دبلیو آی جی ها در لایه علم حالا به ازای در واقع تمامی یه شمارنده بذارید برای تمامی چیز ترینینگ ستم و بیام تک تک نگاه بکنم که اوکی داده اولمو خوب شناخت یا نه دومی خوب شناخت یا نه و و و و و این لاساشو به دست بیارم تا در نهایت جمع بزنم مثلاً تو دیتا ست همین عدد رقم نوشته تها که ۶۰ هزار عدد وجود داره ۶۰ هزار داده ترینینگ وجود داره ۶۰ هزار تا از اینا رو با همدیگه باید جمع بزنم که خود این حالا یه مسئله است که میخویم امروز بررسی بکنیم خب پس من اجازه بدید فعلا این حساب بکنم این تیکش که دیگه سیما بگیرید رو تمام ترین سه تا برای ما واضحه که خب اوکی یکی برای ما انجام میده خب رند لاس به رند دبلیو ال تو این مسئله ما که تک نیرون داریم یعنی wلیو لایه آخر میشه چی گفتیم از رو مشت

زنجیره‌ای که اساس کار بک پروپاگریشنه و یه جورایی افشنتمه تو محاسبه به ترتیب ایناست میشه رند لاس حالا من با ال نشونش میدم این ال رو با لایه قاطی نکنیم نسبت به رند al در رند آی لایه الم به رند زد در لایه یه دونه بیشتر فعلاً نیست و رنده زد لایه ال ام به رند w لایهl در واقع داره چه اتفاقی میفته اگه بریم بالا نگاش بکنیم میبینیم که خوب اینجا داره آیl محاسبه میشه آیl از روی زدl محاسبه شده و خدمتتون عارضم که زد ال هم از دبلیو و البته حالا خواهیم دید آیl منهای یک به دست میاد درسته که آی منهای یک در w ضرب بشه زدl میشه f روش اعمال میشه آیl میشه و در نهایت همون وای هت رو

که تو لایه آخر وایهت همون عائل ولی تو لایه قبلی دیگه طبیعتاً اون خروجی نیست خب اوکی اینو می‌خوام پیدا بکنم خدمتتون عارضم که این تیکشو فعلا کاریش ندارم چون بستگی داره که لاس رو چجوری تعریف کنید ام اس ای باشه کراس آنتروپی باشه یا هر چیز دیگه یه چیزی میشه بر حسب که البته اگه آئلتونو یعنی خوب تشخیص بده یا همون وای هتتون با وای یکی باشه در واقع چیزه میتونه اوضاع خوبی داشته باشه و اینو کلا حاصل جوری باشه که این صفر بشه معمولا این صفر میشه و دیگه اونو جریمه نمیکنه میگه آقا این خودش داره درست میگه دیگه برای چی باید جریمش بکنیم این در حالت کلی میشه چی رند آب رند زد وقتی که آ باشه اف زد میشه افرایم زدl و رند زد به رند wl هم چی میشه میشه آ ال منهای یک چرا چون زد بود al منهای یک در دبلیو حالا اگه بایاس و جز این گرفتیم هیچی اگه نگرفتیم بایاس

پس سه تا چیز در همدیگه ضرب میشن اوکی رند لاس و رند al اجازه بدید من اسم رند لاس به رند al رو بزارم دلتا در در واقع چی لایه ال خب پس رند لاس به رند w در لایه آخر یه ضرب سهگانه‌ای شد که دوتاش خیلی را دسته زد در همون لایه آ در لایه قبل و چی و یه چیزی به نام دلتا خب که این دلتای بود رنده لاس به رند آی لایه آخر یا همون وای هت احسان دستش بالاست احسان سلام بفرمایید سلام استاد وقتتون بخیر زنده باشید بفرمایید ببخشید استاد من گفتید که ما کاست رو تعریف میکنیم سیگمای لاس ها بله بعد دبلیو آی جی داریم من میخواستم ببینم که این آی جی رو بعد از هر پتر یعنی

چیکار کنیم و چالش‌ها چیه بخوام درجا جوابتو بدم سوپر سوپر ایده آل ترین ما اینه که تمام لاس ها را حساب بکنیم تمام مشتقات حساب بکنیم جمع بزنیم حالا میانگینم اگه خواستی بگیر بعد از هر دور که کل داده‌ها رو یه دور جمعش زدی تازه بیا آپدیت کن خب پس همه این حالا بریم جلوتر میگم این چه حسنی داره ولی چه در واقع چالشی هم برای ما به وجود میاره پس رند لاس به رند w لایه آخر شد یه ضرب سه گانه از یه چیزی که رندلاس به رند آ بود در افرایم در آی یکی قبلی لایه قبلی خب همینجا اگر لایه آخون خب به جای یک نیرون چند تا نیرون داشت یعنی اینکه به جای یکی مثلاً دو تا داشت حالا باید بقیش همه یکی

اتفاقی که می‌افتاد این بود که این رندلاس به wl حالا یه wl لایه آخر خودش یه اندیس مثلاً آیا جی هم پیدا می‌کرد که چندمین دبلیو این اتفاق بیفته خوشبختانه چیز سختی نیست هیچ اتفاق بدی نمی‌افته اگر این بود خیلی سخت نیست خودتون میتونید بهش فکر کنید رند لاس به رند دبلیو لایه ال با اندیس جی خب اگر بیشتر از یه دونه بود این تغییرات فقط میکنه کلا روابط خودشه اینجا در واقع به جای رند لاس و رند al رند لاس به رند آی ال با همون اندیشه جی ظاهر میشد یعنی برید لاس و نسبت به فقط نرون معادلش در نظر بگیرید خدمتتون عارضم که در چی ضرب میشد در افرایم بقیش خودشه دیگه در اف پرایم

زد ال این دفعه باز با اندیس جی و در المنت‌های یک من فقط ببخشید اینجا آی جی باید می‌نوشتم برای دبلیو اینجا این اتفاق میفته خب اگر اینجا را هم حتی لایه ال منهای یکم بیشتر از یه دونه بگیرم چیزی که هست اینجا کلی دبلیو آی جی میتونه داشته باشه یعنی شماره نیرون های لایه یکی قبل آخره جی شمارنده نیرون های لایه آخره رند لاس به رند دبلیو آی جی این اتفاق میفته که براش چی میشد میشد رند لا به رند آی جی فقط حساب میکردید یعنی به مثلا فرض کنید دومی میخوید فقط رند اینو باید حساب میکردید افرایم زد l نسبت به این یعنی این تیکشو حساب می‌کردید و در آی ال منهای یک مثلا نگاه میکردید که

کدوم دارید نگاه می‌کنید مثلاً از دومین به سومی اون ها در آیومم برای چی شمارنده لایه ال منهای یکم نگاه می‌کردید پس همون ضرب سه گانه رو داره و می‌تونست به شما تک تک در واقع رند لاس به رند wija رو بده تو لایه آخر خب دلیلشم اینه که هر کدوم از این خطای لایه آخر برای اینکه به کاست برسن دیگه یک بار استفاده میشن بیشتر استفاده نمیشن بخاطر همین سیگما نمی‌بینم یک بار مثلاً من اگه بخوام به این گردالی چیز برسم جلبکی برسم از این خط یک بار استفاده میکنم اگر نمیدونم بخوام از اینو لاس این حساب بکنم و این دبلیو که مثلاً الان با سبز میخوام نشونش بدم فقط یک بار از این خط سبزه استفاده میکنم پس کلاً وقتی می‌خوام لاس رو نسبت به این دبلیو پیدا کنم فقط یکی از این ضرب های سه گانه دارم خب اجازه بدید با این تفسیر اسم اینم که رند لاس به رند آ ال در

درایه جیوم آ باشه اسمشو بذارم دلتای لایه ال اندیس جی یعنی من اومدم به ازای هر نرون یه دلتا می‌خوام استخراج کنم پس دلتام شبیه نرون‌هاست شبیه زدها میشه تو هر لایه ال تعریف میشه به ازای تک تک نیرون‌های لایه تعریف میشه و نمادی از چیه گفتیم سنسیتیویتی لاس به وزن خدمتتون عارضم حالا سنسیتیویتی لاس ببخشید به اکتیویشن اون نرون یعنی اگر این اکتیویشن یه کوچولو تغییر کنه دلتا ایکس لاست چقدر تغییر میکنه و این مثبت و منفی و صفر بودنش نمادی از اینه که هم جهت دارن بالا میرن اصلا تغییر میکنه تاثیری داره تو لاس ولی آخر که اسم اینم اینجوری میزارم خب حالا بریم لایه آخر به نظر میاد ساده بود لایه یکی قبل آخر چطوری بود لایه ای که قبل آخر و بعدش حالا کلا دیگه لایه ال کوچک من هی از روی

به صورت در واقع چیز حساب بکنم ریکرسیو و بازگشت اینو حساب بکنم اینجوریه که من تا الان این دبلیو ال رو رفتم حساب کردم که مشتق نسبت بهش چه جوریه و چه جوری آپدیتش کنم wl منهای یک چطوره خب دیدگاه‌های متفاوتی وجود داره ساده‌ترین دیدگاهی که وجود داره اینه که اول اینو بنویسیم که اوکی من رنده لاسو به رند دبلیو ال منهای یک میخوام فعلا فرض کنید یه دونه بیشتر نیست همین یه دونه یه دونه من میتونستم بنویسم رند لاس به رند آی آخری در رند آی ال به رند زد الی که از روش آ ال ساخته میشه خب اینجا زد ال اینجا حالا زدl خودش از رو چی ساخته میشه از رو آl منهای یک ساخته میشه میشه رند زدl به رند al منهای یک در رند

قائل منهای یک به رند زد ال منهای یک در رند زد ال منهای یک به رند چی wl منهای یک که می‌خوام پیداش کنم یعنی می‌خوام مشتق حساب کنم انقدر زنجیره‌ای می‌گیرم تا برسم به چی دبلیو مورد نظرم تو راهم مجبورم از آ ال رد شم از زد ال رد شم از al منهای یکم رد شم از زد l من- یک هم رد شم که طبیعتاً رند زدl منهای یک به رند دب یک میشه پله عقب ترش میشه که مشابهش بالا دیدیم خب بچه‌ها اینجا ضربش خیلی طولانی شد بعد اگه برم لایه قبلی طولانی و طولانی تر میشه اجازه بدید من تلاش بکنم اون الگو سه گانه رو برای خودم نگه دارم الگو سه گانه چی میگه میگه آخرین باشه رند زد به رند یه دبلیو تو اون لایه مورد نظرتون یکی قبل آخرتون باشه وسطی باشه رند a به رند زد تو همون لایه مد نظرتون و قبلش باشه یه چیزی کلا خب

من پس طبیعتاً می‌تونم این آخریه که همونه رند زد به رندw تو لایه مورد نظره یکی قبل آخرم رند آبه رند زد تو همون لایه مورد نظر کل اینا رو با هم اسمشو یه چیزی میزارم که بتونم این الگو رو تامین بدم بگم آقا خب از اینجا به بعد دیگه کد بزنم می‌نویسم آی از یک تا ال از یک تا ال کوچک از ال بزرگ تا یک این کار برای من بکن خب این چی میشه رند زد به رند wl منهای یک بچه ها برام بنویسید چی میشه اگر در حالت عادی من بدونم در هر لحظه هر زدی از آی قبلی در دبلیو قبلی به دست میاد در ببخشید آی قبلی در دبلیو خودش به دست میاد چی میشه اینو بهم بگید با یه دونه نیرون این الان اینجوری بوده دیگه اینجا زد ال منهای یک بوده اینجا دبلیو ال منهای یک بوده اینجا اکتیویشن الم های دو بوده طبیعتا میشه چی نه اس

دبلیو نیست آ ال منهای دو باریکلا خب پس پس این تیکش شد آ l منهای ۲ رند al منهای یک به رند زد یک چیه اینجا ali منهای یکه اینجا زد روش یه اکتیویشن اف اعمال شده رند اون چی میشه برام بنویسید اف پرایم باریکلا زد ال منهای یکه پس به نظر میاد دوتای آخر الگوش داره ثابت میمونه این این اولیه حالا به نظر پیچیده است بچه‌ها رند l به رند آی در رند زدl در رند زدl به رند a منهای یک در کل معادل چیه معادل چیه حالا نمیخوام حساب بکنید برام این سه تایی که در هم ضرب شدن داره چیو بهم می‌ده علی درست گفتی دلتا ال ولی

علی درست گفت ما اسم اینو گذاشتم دلتای ال منهای یک ولی معادل چی بود که شد دلتا ال منهای یک یعنی رند چی به رند چی بود رند لاس بود به فکر می‌کنم صدا داره با تاخیر یعنی چیز سختی نیست برام ببخشید گیر کرده ال منهای یک که من اسم اینو نمادین گذاشتم دلتای ال منهای یک و حالا حرفش اینه که نرون لایه المنای یکم تغییراتش چه تغییری تو لاس میتونه به وجود بیاره اینو میخویم حساب بکنیم اینو برای کی حساب کنیم اومدیم براتون در واقع یک الگو نوشتیم گفتیم اگه تک نرون باشه چی میشه م نوشتید رند سی به رند al در رند al به رند زدl در رند زدl به رند

منا ۱ که این رند سی به رند al خب چیزه خدمت شما عرض کنم بالا به دستش آورده بودیم تو لایه علم موجود بود رند all و رند زد ال باز دوباره میشه اف پرایم زد ال و رند زد ال به رند al منهای یک میشد w در واقع ال منهای یک و این برای یک دونه نرون کار میکنه و بعدش گفتیم اگر توی لایه المهای یکم بیش از وجود داشته باشه چی میشه این دفعه خدمتتون عارضم که ممکنه چند بار حالا از al منهای یک استفاده بشه من هدفم اینه که دلتا رو در بیارم یعنی رند سی به رند a منهای یک رو در بیارم بعد هی از ازش استفاده کنم برای رفتن به لایه قبل من از آ ال منهای یک برای اینکه برسم به آخر ممکنه بیش از یک بار استفاده کنم یه بار از مسیر بالا برم یه بار از مسیر پایین بیام و باید یه بار نسبت به مسیر بالاش این سه گانه رو حساب بکنم یه بار نسبت به مسیر پایینش و اینا رو با همدیگه همه رو جمع

اون دلتائه که میشه جمع اینا میشه روی تمام لایه یکی بعدیش وقتی می‌خواید رند مثلاً کاستو نسبت به یکی از این آکاها پیدا کنید یا آیه‌ها پیدا کنید تو لایه قبلی باید روی تمام نیرون‌های لایه بعدی بیاید این سه گانه رو حساب بکنید با همدیگه جمع ببندید و تازه می‌رسید به اینکه اوکی این اینو دارید کادر نارنجی رنگ رو دارید که باید در این دو تا هم ضربش بکنید تا چی مورد نظرتون پیدا بشه که دیگه اینا رو چیکار کردیم براتون دسته بندی کردیم و قشنگ آی جی هم نوشتیم که دیگه انتظار میره حالا بغلتون باشه شاید بار اول سختتون باشه یکی دوبار که خودتون بنویسید در میارید اینکه نسبت به لایه آخر چه آی و جیش پیدا میشه یعنی w آی جی جی کی میره آی به کی میره یعنی اینو یک بار براتون نوشتم رند لاس به رند آی جی در اف زد جی ولی در آی ال منهای یک ضرب میشه

این آیه مال لایه قبلیه ولی همون لایه ال مد نظرمونه همین کارو برای لایه‌های قبل بکنیم ما گفتیم که دوست داریم رند ال به رندw ij هر لایه مورد نظرمون به یه فرم سهگانه‌ای بنویسیم یه پرایم باشه در آی یکی قبلیش در یه دلتا که این دلتا ال حالا این دفعه از سیمای دلتای لایه بعدیش پیدا میشه خب ما لایه آخر رو پیدا کرده باشیم دلتاشو طبیعتا لایه آخر رو میتونیم پیدا کنیم دو تا قبل آخر از روی یکی قبل آخر الی آخر که این روش یه سیگما بسته میشه این دلتا رو شما تو مرحله قبل حساب کردید یه بار دیگه در اف پرایم این دفعه در دبلیو ضرب میکنیم اینجا بچه ها دوتا یه دونه اینجا دارم یه دونه هم بعدا این دلتا در اون ضرب میشه ها منظورم این دو تا یکی نیستند الان خب یه جا دبلیو میبینید کنارش ظاهر شده یه جا آهای قبلی ظاهر شده و کلی هم افرایم ظاهر میشه و خود این حالا انواع

چیکار می‌کنه براتون به وجود میاره تو ذهنتون که خب چه چالش‌هایی می‌تونه بر بخوریم و فلان و این بک پروپاگریشن بود من فکر می‌کنم بیشتر از این دیگه نیازی نیست روش بمونم و این انتظار میره که دیگه شما الان فهمیده باشین و خودتون بتونید چه به صورت اسکالر چه برداری اینا رو در بیارید فرم برداریش هم اینجا نوشتم یعنی اینکه در جا به صورت برداری دلتای کل لایه رو با هم حساب بکنید خب که ببینید تو راهش چه اتفاقایی میفته مثلا ال فرض کنید سه باشه یا پنج باشه بعد ال کوچک تون مثلا دو باشه یا سه باشه خب بعد تو راهتون چه اتفاقایی میفته دلتای ال ظاهر میشه دبلیو لایه ال ظاهر میشه اف پ در لایه ال ظاهر میشه میاد دبلیو یکی قبلی ظاهر میشه قبلی ظاهر میشه و و و و تا فلان میاد و کلی افرایم در هم ضرب میشن کلی دبلیو دارم ضرب میشن و خودش چالش به وجود میاره ولی افشنت و شما میتونید اینو اگه دلتون میخواد خودتون کد بزنید بزنید و

ولی امروز می‌خوام یه مقدار واقعی‌تر صحبت بکنیم اول چه چالش‌هایی داریم و توی مسائل واقعی چون که گفتیم همه تئوری بود کجاها اوضاع خوب پیش میره کجا اوضاع بد پیش میره من تلاش می‌کنم کلی‌گویی کنم سریع بگم ولی عوضش بریم چیکار کنیم عوضش بریم انشالله یه مثال هم حل بکنیم که دید خوبی داشته باشیم اولین اتفاقی که تو واقعیت میفته بحث اپتمیزیشنه آیا ما واقعا با این روش که بهتون گفتیم میتونیم به راحتی بریم مینیمم مطلق کاست رو پیدا کنیم این کاست برای ما درست نمی‌تونه چیزهای مختلفی باشه ولی کاست های واقعی یکی پلاتش بکنه میبینه واقعا شبیه یه در واقع کل قله و دره و یه دشت و یه در واقع منطقه عجیب غریبه و شما باید برید این مثلاً مینیمم رو پیدا بکنید این مینیمم برای اینکه پیدا بشه واقعا چالش خواهید داشت خب

لرنینگ ریتتونو کوتاه انتخاب کنید نقطه اولتونم اصلاً معلوم نیست کجاست رندمه یا رو قله این کوه وایسادید یا یه جای دیگه‌ای وایسادید یا کنار یه درختی وایستادید ولی باید بیاید اینجا جمع بشید همه خب اگر اسمال لرنینگ ریتای کوچیک بردارید به شکل مورچه‌ای می‌رید جلو در ضمن ممکنه توی مینیمم محلی بیفتید و اونجا گیر بکنید ها چون مگه اون چیکار میکنه میره گرادیان حساب میکنه تو نقطه مینیمم محلی هم مشتقات صفره برسه اونجا بشه تا برابر مشتقات دبلیو بعد تو مشتقات اونجا صفرن چی میشه آپدیت نمیشه دیگه تغییر نمیکنه شما به خیال خودتون فکر میکنید که تو مینیمم مطلق کاست نشستید در حالی که تو لوکال مینیمم گیر کردید که تو روش های کلاسیک ماشین لرنینگ میومدن تا حد امکان چیکار میکردن کاست فانکشن های کانوکس یا محدب تعریف میکردن بچه هایی که یه سری از دوستان که اندازه گیری با خود ما داشتن اینجا تشریف دارند مثلا اگه یادتون باشه ما وقتی میگیم بهترین

E:\courses\LangChain Project\main root\data\SCR_Session07_transcript_part2.txt

بهترین خط عبوری و از یه سری داده رد بکنید خب می‌خواستیم این کارو بکنیم کاس فانکشنمونو تعریف میکردیم میگفتیم خدمتتون عارضم که وای واقعی یا برچسب‌دار منهای آ ایکس به علاوه بی هدفونم این بود آ و بی رو پیدا بکنیم به توان دو سیگما رو تمام داده ها یعنی چی یعنی میگفتیم که برو پیدا بکنین نقطه سبزها به این خط نارنجی وصل بشه اسم هر کدوم باشه لاس یه سیگنال روی اینا ببندم باید این مینیمم بشه یعنی مجموع توان دو پاره خط بنفش ها طولشون باید مینیمم بشه بعد شما آ و بی باید پیدا کنید مثلا اسمش میتونستید w2 بزارید که بشه شبیه مسئله ما خب خوبی این خوبی این مسئله این بود که حتماً حتماً چیز وجود داشت براش مینیمم مطلق وجود داشت پیدا کردنش هم سخت نبود شکلش لیوانی میشد کاست بر حسب این اگه اسمش کاست باشه کاست بر حسب دبلیو دو محدب بود و یه خوبی که داشت این بود که

حتما حتما شما میتونستید با یه حدس اولیه ww با چند تا ایتریشن برسید واقعا به مینیموم برسید تو مسائل رگریشن و خدمتتون عرضم باینری کلاسیفیکیشن‌ها کتاب‌های سیگمای روش قرار می‌گرفت می‌خواستن صفر و یکو بدن استفاده از این تابع خوب کانوکس در نمیومد میتونست در واقع بر حسب یه دونه پارامتر کلی لوکال مینیما داشته باشه و ممکن بود شما را گیر بندازه اومدن تابع کراس انتروپی انتخاب کردن اصلا کاری نداریم همون منفی وای در الn حد منهای یک منهای وای در الn یک منهای وای حد و اون حالا یه اتفاق خوبی که میفته تو مسائل رگریشن دو کلاسه اون حالا تابع چیز بود کانوکس طوری بود که خدمتتون عارضم از دو بر به سمت بی نهایت میرفت و باز دوباره میشد با یه نقطه شروع حتما گارانتی باشه که بهش برسیم اما وقتی شبکه پیچیده میشه چند لایه میشه دیگه واقعا

لوکال مینیما که هیچی بدتر از اون صدل پوینت به ما میدن سدل پوینت کلی چالش دارن خود اینا در موردش میشه کلی کلی صحبت کرد بله حالا احسان در مورد اینم صحبت می‌کنیم سوال خوبیه سوال خوبیه اجازه بده صحبت می‌کنیم چیز خیلی خوبی گفتی بزار در موردش صحبت کنیم خدمت عارضم که اگر لارج لرنینگ ریت بزارید ممکنه اور شوت بکنید آن استیبل بشید دایورت کنید اصلا پرت بشید روی قله دیگه اصلا مینیمم نرسید و طبیعتاً ما یه چیزی داریم یا محدوده داریم به نام استیبل لرنینگ ریت که میتونه به صورت اسم را هموارتر کانورت کنه و در ضمن از لوکال مینیماها و صدل پوینت ها تا حد امکان اجتناب کنیم و تا حدودی مطمئن تر باشیم که به مینیمم مطلق میرسیم پس طبیعتاً نتیجه اخلاقی که میگیریم که اصلا اتا نیاز نیست توی طول فرایند آموزش ثابت بمونه و اصلا کارهایی که اخیرا دارن میکن و کلی روش کار کردن که شبکه های عصبی به

عمیق و بهبود بدن بود که رو الگوریتم‌های کار می‌کردن آقا تو طول زمان من چه جوری تغییر بدم کجا کم و زیادش کنم چرا باید ثابت باشه در ضمن یادتون باشه اصلاً کسی به شما کاری نداره چطور به نقطه مینیمم مطلق رسیدید یا بهتون الهام شده تقلب رسونده وحی شده خدمت شما عارضم که رفتید خودتون رو تیکه پاره کردید از انواع شبکه‌ها انواع اپتمیزیشن ها احسان اشاره کرد بله از ژنتیک الگوریتم میشه استفاده کرد استفاده کردید تا اون نقطه رو پیدا کردید اولین که حدس زدید اونجا بوده اگر که صادقانه بخوام بهتون بگم شبکه‌های عصبی به قدری پیچیدن که سوپر خف ترین افرادی که تو این حوزه هم دارن کار میکنن نمیتونن در نگاه اول دبلیو رو پیدا کنن گواهش اون مثاله جلسه قبمونه که برای شبکه ساده که بگه شما امتحان پاس میشید یا نمیشید ۱۳ تا پارامتر داشت برای ام نیست که اومدیم بهتون تو سایت چیز نشون دادیم همین بلو برا نشان دادیم ۱۳۲ تا پارامتر داشت کی تعیین میکنه اینا رو همون اول

مهم اینه که برسی مهم اینه که به اون نقطه برسین ولی چه جوری رسیدنش اصلا مهم نیست خب خدمت شما عرض کنم بریم نگاه واقعی‌تری داشته باشیم ما با یک مفهومی توی نورال نتورک‌ها آشناییم به نام مینی بچ ها این بچ مفهومش بروبچ نیست بچ مفهومش سایز دسته‌هاست خب و همون سوال احسان ما چند وقت یه بار باید این ویتا رو آپدیت کنیم خب داستان اینه اگر شما اومدید اول رو تمام داده های ترینینگتون مشتقات حساب کردید کاستا رو در واقع لاسا رو حساب کردید با همدیگه جمع زدید برای تمام مشت ها میانگین گرفتید و یه عدد شد حالا برای هر دبلیو و دبلیو رو با اون آپدیت کردید یک مرحله بهش میگن شما از فول بک یا از بچ گرید دیسنت استفاده کردید ممکنه کلمه فولش هم نبینید شما از تمام داده ها با هم استفاده کردید یه مرحله رفتید جلو بعد دوباره یه بار دیگه یه بار دیگه تا میرید به یه نقطه خوب برسید اتفاق جذابی که میفته و

فوق العاده است این داستان اینکه حتماً حتماً کاستتون بر حسب زمان حتماً اکیداً نزولیه یعنی هر لحظه نسبت به قبلی شما کاستتون یه کوچولو هم شده بهتر میشه و هیچ وقت بدتر نمیشه ولی این فوق ایده آله از یه طرف ما یه ماجرایی داریم اینکه بچ سایز رو یک بذاریم یا فقط دونه دونه بریم رو اولین داده لاس رو حساب بکنیم دبلیو رو همه رو آپدیت کنیم بعد بریم رو دومین داده حساب بکنیم و الی آخر چه اتفاقی میفته این روش رسماً مرخصه خب شما مسیری که میرسید بسیار نویزیه یعنی داستان که میخوید در واقع چششو چیز میگن ابروشو درست کنید چشمشو کور میکنیه میاید مثلا میگید اوکی داده اولم باید نه تشخیص می‌داده هشت تشخیص داده حالا کلی داده دیگه درستنا بعد میاید به خاطر اینکه این درست بشه w آر رو تغییر میدید فلان بعد میبینید گند میزنید تو بقیه ماجراها و این روش استوکست گریدت بچ با یک دونه در واقع داده هی بخواهید

بری جلو کار کار خیلی مزخرف و بیخودیه ما طبق اون توصیه‌های همیشگی خیرالعمور اوسطها یه راه بینابین پیدا می‌کنیم راه بینابینمون اینه که نه کل داده‌ها رو با هم بگیریم چون ممکنه توان پردازشی نداشته باشیم و نه دونه دونه بگیریم ما میایم در واقع دیتا ستمون یه تعداد داده می‌شکونیم مثلاً بسته‌های مثلاً ۱۰۰ تایی ده تایی ۲۰ تایی و به هر کدوم میگیم بچ بچ ها دسته دسته و میایم استوکست برای هر بچمون استفاده میکنیم ولی این دفعه یه اتفاق میفته خوبیش اینه که نه حجم محاسباتمون به اندازه اینکه کل داده ها رو با هم ببینیم نه به بیخودی یه دونه ای هستیم ولی دیگه کاسمانکشنمون لزوما مینیمم اکید نیست میتونه جهش بکنه چون معلوم نیست حالا اون ۱۰ تا ۲۰ تایی که با همدیگه گرفتیم و به ازاش اومدیم دبلیو رو آپدیت کردیم بالاخره چجوری بودن و فلان و این مسیر رو بریم جلو این در واقع از چیز ماشین

جزوه ماشین لرنینگ اندروید برداشته شده این عکس میگه که اگر شما از نقطه‌های مختلف بخواید به این نقطه وسط همگرا بشید اگر از فول بچ گریدینت دیسنت استفاده کنید از هر جایی شروع کنید علی‌الاصول باید بتونید برسید و یه مسیر هموار دارید ولی حجم محاسباتتون زیاده اگر از در واقع با بک سایز یک برید جلو ممکنه هیچ وقت همگرا نشید بسیار فرایندی که میرید نویزی شما دونه دونه دارید درست میکنید یعنی اولین میگید اوکی اولی فقط برو این نوع رو درست کن بعدی میگه برو اون هشت رو درست کن حالا بماند که ممکنه نوع قبلی را هم خراب بکنید خب ولی اگر از بک سایز استفاده بکنید که حالا این عددا میتونه بچه هاتون ۶۴ ۱۲۸ ۲۵۶512 یا هر عددی حتی توان دو هم نباشه البته متداول توان دو میزارن استفاده بکنید ۱۰۰ بذارید ۱۰۰ تا ۱۰۰ تا دادتون رو جدا کنید با همدیگه برید وزن ها را آپدیت کنید چه اتفاقی میفته خدمتتون عارضم که یک مسیر درست نویزی ولی بهتر از اون حالت استوکستیک

تصادفی تمام استفاده می‌کنید و اوضاع بهتره پس یکی از ماجراهای ما اینه که اگر دیتا ستمون زیاد باشه به خصوص تو دیپ لرنینگ که مثلاً زورمون نمیرسه فرض کن یک میلیون تا داده وجود داره و شما باید یک میلیون تا بیاید از این کاستا رو جمع بزنید بگیرید بعد تازه یک بار آل دبلیو رو آپدیت بکنید که ممکنه قدرت پردازشش نداشته باشید ما میایم چیکار میکنیم یه سری سایزش کنیم منابع میگن تعداد داده هاتون کم باشه مثلاً با کامپیوتر امروزی تعداد داده ها زیر ۲۰۰۰ تا باشه میگه سعی کنید از فول بک استفاده کنید ولی اگر بیشتر مث ده هزار به بالا یا ۱۰۰ هزار به بالاست بیاید بشکونیدش به بچه های صد تایی ۲۰۰ تایی ۵۰۰ تایی فلان و اینو ببرید جلو خب خدمتتون عرض کنم اولا برای اینکه این بچه ها رو به وجود بیارید همون اول در واقع مهمه و مناسبه که چیز کنید داده ها رو شافل کنید و خودتون به همدیگه بریزید یعنی نیاید عامدانه مثلا یک ها رو همه با هم بگیرید و دعا رو همه با هم بگیرید یا گربه ها را با هم سگ ها رو با هم

کلاً می‌ریزید به هم چند تا چند تا برمی‌دارید که تقریبا بسترهای نرم‌افزاری که ما داریم استفاده می‌کنیم این کارا رو خودشون میکنن خب ما بچ داریم خب یک دونه بچ هم مثلاً فرض کنید ۱۰۰ تا داده است تو هزار تا بعد ده تا بچه می‌سازم توی راند و می‌خوام برم چیکار کنم داده‌هامو w ۱۰ بار آپدیت بکنم تا شبکه من یک دور همه داده های ترینینگمو دیده باشه وقتی که شبکه یک بار کل داده‌ها رو دید بهش میگن شما یه ای پاک رفتید جلو خب یک پاک رفتید جلو و شما باز این حق دارید که ادامه بدید دوباره که رفتید یه دور داده هاتون رو دیده شبکه دبلیو بهتر شدن وزنشون آپدیت شده جیتون هم ممکنه یا کاستتون هم ممکنه یه کوچولو حالا اومده باشه پایین تر یه بار دیگه شافل میکنید یه بار دیگه دسته های جدید تشکیل میدید لزومی نداره دستگاه قبلی باشن حالا با همون سایز و با بچ سایز مشابه حالت قبلی دوباره میاید یه بار دیگه کل داده ها رو این ده تا ده تا صد تا صد تا بهش میدید

آپدیت می‌کنید و یه پاک دیگه میرید جلو و ببینید که با چند تا ایپاک بالاخره به نقطه مورد نظر می‌رسید این کلمه رو به خاطر بسپارید توی زبان‌های برنامه نویسی تو حوزه ماشین لرنینگ ما بهش کار داریم خدمتتون عارضم که این یک مثال عددی از مینی وجهاست میگه شبکه اون ۶۰ هزارتایی ام نیست رو در نظر بگیرید که اعداد صفر تا نه نوشته شده بود به جای اینکه ۶۰ هزار تاشو با هم بگیرم میام به دسته‌های مثلاً ۱۰۰ تایی ۱۰۰ تایی میشکونم و یک دور با این ۱۰۰ تا دبلیو رو آپدیت میکنم بعد با یه ۱۰۰ تای دیگه این دفعه دیگه لزوما در واقع چی راحت و را دست نمیام پایین ممکنه تو راه یه جاهایی هم اوضاع بدتر بشه جی هم خراب تر باشه ولی در کل به اون بدی در واقع با یک دونه داده بریم جلو نیست خب طبیعتاً پس نحوه کد اینجا تغییر میکنه قبلا ما بود یک ان ام کا از یک تا n رو کل داده ها بیا این در واقع چیز رو حساب کن جمع لاسا رو حساب کن الان میگه فقط رو بچ سایز حساب بکن و بیا دبلی

برو بچ بعدی یه دور کامل که تمام بچه‌ها رفتی یه ای پاک رفتی دوباره برو داداشافل کن بچه سایزهای جدید بساز دوباره برو جلو تا زمانی که بالاخره از این نقطه شروع کردی بیفتی تو یه نقطه مناسب و حس کنی که اوضاعت خوب و مناسب خدمت شما عارضم که آیا گریدینت دیسنت یا این چیزی که ما گفتیم اسمش هست استوکست که ما با اس جی دی نشونش میدیم بهترین راه جلسه قبلی گفتیم نه لزوما بچه ها الگوریتم های اپتمیزیشن بسیار زیادی توسعه پیدا کرد تو این فرایند و بعضی هاشون هم برای حل مشکلات دیپ لرنینگ اومدن و اون اینجوری بود که تونستن یه سری معضلات رو حل بکنن استوکستیک گریدت دیسنت درسته خوبه درسته همه بر پایه این اومدن جلو درسته سالها مشکلات حل میکرد اما مشکلات داره یکی از مشکلاتشون نقطه های صدل پوینت اینجا نگاه کنید این داده قرمز رنگی که توی نقطه صدل افتاده نقطه های

ماکسیموم این اونجا گیر میفته و دیگه نمی‌تونه بره و فکر می‌کنه به راه مناسب رسیده ولی جاش چیزهای دیگه‌ای وجود داره عدم مومنتوم آدا دلتا آداگراد الی آخر و اینا روش‌هایی‌اند که بعداً توسعه پیدا کردند و تونستن بعضی از این مشکلات رو حل کنند و شما تو شکل بالا دارید می‌بینید قرمزه گیر افتاده خدمتتون عارضم که ولی بقیه حتی یکیشون میرفت که گیر بیفته اما تونست در بره یه عده سریع در رفتن یا اینجا میتونید ببینید اگر مثلاً از نقطه های یکسانی شروع بکنند به نقطه ستاره برسند اینکه کدومشون با چه سرعتی داره میرسه این استوکست قرمزه میبینید کندترین بعضی وقتا حتی ممکنه نرسه چون مشکلات زیادی داره توی مواجه با صد پوینت و پیشنهاد میشه از روش های دیگه استفاده کنید یکی از روش های جایگزین اسمش عدم حالا آدام هر چیزی بهش بگن سوزن چی باشه عدم باشه

میتونه تلفیق که خودش تلفیقی از روش‌های مومنتوم و آرم اسپراپ حالا بدون توضیح اضافه روش مومنتوم توی در واقع چیزش مراحل آپدیت کردن wوهاش یه سری جملاتی از جنس سرعت و شتاب و دمپینگ‌های سیال در نظر میگیره که بتونه نوسانات توی راستای نامناسب حین فرایند بهینه سازی میرا بکنه مثلاً فرض کنید شما اگه می‌خواستید از استوکست بدید رو مسیر آبی داشتید میرفتید جلو در این وسط برسید الان تو مسیر بالایی قائم اضافه داره هی میره بالا و برمیگرده این مومنتوم کمک میکنه که دمپتون کنه و مسیرتون هموارتر باشه ما مکانیکی ها که با فنر آشنا هستین میدونیم مثلا چیزه توی سیستم های نامیرا این نوسان های شدید میتونیم داشته باشیم در حالی که سیستم میراژ کنیم یا میرای بحرانیش کنیم اوضاع بهتر میشه و خب یه ترم های از اون جنس اضافه میشه که من اینجا براتون نوشتم میتونید ببینید که این پارامترهای مومنتوم چه

وقتی گرادیانو حساب می‌کنید چیکارش می‌کنید خب چه در واقع روش میزنن و فلان که حالا هر کسی خواست برای خودش بره بیشتر مطالعه کنه یه روش دیگه هم بود به نام پراپ که اون سرعت پیشروی تو جهت‌های مختلف میومد نگاه میکرد که شما تو این راستا دارید سرعتی میرید یا کند میرید بعد میومد تقسیم بر یک پارامتری میکرد که سرعتتون رو چیز بکنه تعدیل بکنه تو اون راستا الکی زیاد نشید الکی کم نباشید و تلفیق این دو تا شد روش عدم که کلی کار راه میندازه اگر هیچ وقت نمیدونید از چه روشی استفاده کنید تو بین سازی پیشنهاد من عدم براتون خب توی این نرم افزارهای محاسباتی اس جی دی خیلی دیگه چیز ساده ایه و ممکنه گیر بکنه شما اگه دوست داشتید از عدم و اینا استفاده کنید سرعت همگرایی بالاتری داره تو عمده مرتضی معماری های شبکه عصبی هم میتونه بسیار مناسب عمل کنه مرتضی ببخشید بابت این شوخیه خدمت شما عارضم که مفهوم بعدی که ما داریم

توی شبکه‌های عصبی بحث اورفیتینگ خوب شبکه‌تونو اگر شما این داده‌هاتون باشه این قرمزها اگر شبکتونو جوری ترین کردید که این خطه بگذره یه آدم خسته مثلاً استان فارسی مثل ما هستید خب که زیادی یاد نگرفته دیگه هنوز مثلاً این بالا مالاها رو نمی‌فهمه این پایین تشخیص میده این بالا پایین تشخیص میده و شما میگن آندرفیتید به اندازه کافی وقت نذاشته شبکتون در واقع خودشو ترین کنه اگر اومدید نه کاری کردید که بره از تک تک نقطه ها بگذره خب یعنی تمام اصطلاحا ترینینگ دیتاها رو بدون اینکه مو درزش بره درست بگه اگه گفتید مثلا ایکس یک این ایکس تا ایکس مثلاً ۷۸۴ این چند میشه میگه نه بعد دوباره بعدیش میگه میگه صفره ها اگه بخواد تک تک اینا رو درست بگه ولی نتونه داده های جدید و دنبال بکنه میگن شما اور فیت شدید خب یا به جای

یاد بگیرید حفظ کردید از این جملاتی که چی معلما ابتدایی می‌گفتند ها و حالت ایده آلش که آیدیال فیت باشه بینابین این دوتاست یادمون باشه بچه‌ها شبکه‌های عصبی زورشون خیلی زیاده یعنی اگه بهشون زیادی در واقع زور بیارید این میره تمامشو حفظ می‌کنه براتون نه نمیگه خب ولی ولی ماجرا اینه که به دردتون می‌خوره بره همشو حفظ کنه اگه یه داده جدید اومد چی کل ماجرا اینه و یه مفهومی وجود داره به نام ریگولاریزیشن که قراره با همین داستان مواجه بشه ها میگه که آقا من چیکار کنم که مدلم نسبت به داده هایی که تا الان ندیدم خوب عمل کنه ها و این ماجرا یه مسئله جدیه اگر خیلی بهش فشار بیارم میره ماهی های قزل و خاردار رو تک تک از همدیگه جدا میکنه خب یعنی یه دونه خطای ترین هم نداره ولی چی ولی مثلاً اگر یه داده اینجا افتاد که موسم روشه دفعه دیگه این ماهی قز

تشخیصش میده در حالی که ممکنه اون احتمال خیلی زیاد حداقل ظاهر چیز حس و حال ما میگه اون داده باید ماهی خاردار باشه غلطه به دردمون نمی‌خوره از اونور اگه فقط با خط از هم جداش کنیم اینه که پذیرفتیم تعداد خطاهامون ممکنه زیاد باشه کلی الان قرمز افتاده این و خط کلی سیاه ممکنه اونور خط باشه و ما خیلی دیگه مدل ساده‌ای استفاده کردیم مثلاً اینجا خطی ولی شاید بهترین مدل این باشه که چی که مثلاً یه همچین مسیر منحنی شکلی رو بکشه که اوضاع بهتری رو رقم بزنه خب ریگولاریزیشن یعنی اینکه در واقع تکنیک رو به کار ببرید یا مجموع تکنیک های رو به کار ببرید که چی که شبکه تون از یه حدی به بعد نره پیچیده و پیچیده تر بشه وقتی نتونه داده های ندیدش جنرالایز کنه خب و حالا ماجرا این میشه که من از چه کارهایی میشه استفاده کرد حالا احسان کاظمی ممکنه که بخاطر اینکه درس چیزو میدونم گذرونده بهینه سازی و گذر

آشنا باشه مثلاً با اضافه کردن چه میدونم ضریب لاندا در مثلاً یه چیزی نور یه چیزی به توان دو الی آخر اون کارهایی که می‌کردن اینا همه جز رگولاریزیشن میشینند اما من اگه بخوام کوتاه تو دو سه دقیقه براتون بیان کنم فوق معروف‌ترین ریگولاریزیشن های که میشه بیانش کرد اینه یکی دراپ اوته یکی airl spینگه که میتونه به کار ما بیاد البته بعضی از منابع اینا رو جز رگولاریزیشن حساب نمیکنند ولی حالا بعضی ها میکنن دراپ اوت حرف حسابش چیه میگه فرض کن شما یک شبکه داری زمانی که داری ترینش میکنی تو هر بار تو هر ای پاک بیا چیکار کن تو هر لایه یه مشت نیرون ها رو خاموش کن بنداز بیرون ها مثلاً با احتمال ۵۰ درصد نیرون ها رو خاموش کن مثلا اینجا اگه چهار تا نیرون بوده تو لایه اول رندوم دو تاشو بنداز بیرون اصلا وجود نداره و شبکه شبکه ساده تری بوده باز تو لایه بعدی مثلا ۲۵ درصدش بنداز بیرون توی لایه اصلا ننداز بیرون خب و برو خروجی ها رو حساب بکن گرادیان ها رو

فکر می‌کنید با بهره‌گیری از این تکنیک دراپ اوت حالا دفعه دیگه یه سری‌های دیگه رو بنداز بیرون چه اتفاق خوبی میتونه برای ما بیفته فکر می‌کنید چه اتفاقی میفته کسی ایده‌ای داره اگر بتونید حالا حس و حالتونو بگید ممنون میشم من خودم یکی دو تا دلیل الان براتون میارم اگر ایده‌ای ندارید مشکلی ندارد فرشاد نوشته سرعت افزایش پیدا می‌کنه سرعت حالا نمیدونم سرعت رسیدنمون شاید باشه ولی بیشتر از سرعت حالا آها مرتضی باز داره یه چیزایی بهتری میگه خب اجازه بدید برای اینکه وقت رو کمتر در واقع از دست بدیم من خودم بگم اتفا مثبتی که میفته اینه یک اینه که وقتی شما یه سری نیرونو رندوم تو یه سری مراحل بندازید بیرون

شبکه مجبور غنی‌تر فکر بکنه فیچرهای جذاب‌تری پیدا بکنه و در ضمن به چند تا فیچر همزمان نگاه کنه تا براتون تصمیم بگیره مثلاً فرض کنید می‌خواسته گربه رو تشخیص بده خب اگر این نرون همیشه وجود داشت یا این نرون بالای وجود داشت این فرض کنید این نرونه مثلاً گوش گربه است مثلاً داره معادل گوش گربه است یعنی اگه گوش گوش گربه اونجا وجود داشته باشه این یک میشه خب اوکی تا اینو دیده مثلاً می‌گفته اوکی گربه من دیدم ولی به محض که این شانس رو بدید که اینا خاموش بشن اون مجبوره یاد بگیره گربه دم دار گوش دارد چشم دارد و حالا چند تا از اینا رو ببینم میتونم تصمیم بگیرم گربه هست یا نیست خب این اولین چالششه و دیگه نمیره اور فیت کنه مجبوره حالت های مختلفی رو ببینه و یه ماجرای دیگه اینه احسان کاظمی باز یه بار ازمون پرسید گفت آقا چه میشه بهینه این تعداد لایه ها رو پیدا کرد مثلاً چند تا نیرون بذاریم فلان اینجا دوباره داره یکی از اون اتفاقا میفته یعنی اینکه فرض کنید شما مثل اینکه الان یه شبکه دارید وقتی که

این دو تا راه انداختید بیرون این یکی رو هم انداختید بیرون وقتی اون دو تا بالاییه هستند دو تا پایینی نیستند فلان انگار یه شبکه دیگه رو دارید امتحان می‌کنید نه همچین چیزایی حالا بهره‌گیری از چندین شبکه به صورت همزمان تو ماشین لرنینگ خیلی متداوله و شما با دراپ اوت دارید انگار همزمان از چندین شبکه استفاده می‌کنید و از توانمندی چند تا شبکه با همدیگه بهره می‌گیرید طبیعتاً این اتفاق فقط تو ترینینگ اتفاق میفته و بعد از اینکه دیگه ترین شد شما هیچ نرونی رو خاموش نمیکید و تو تستتون تمامی نیرون ها روشن ولی انتظار دارید که شبکه غنی باشه یعنی مثلاً هم نیرون بالایی یاد گرفته باشه که این می‌تونه مثلاً چشم گربه باشه هم اون پایینی هم یه چیز دیگه جدی از گربه رو یاد گرفته باشه و جفتشون حالا بیان به همدیگه کمک کنن و مطمئن تر و قاطع تر به شما بگن که اون عکسی که دارید میبینید گربه هست یا نیست دراپ out نرخ داره اگر هیچ دیدی ندارید چند بزارید عدد ۵۰ درصد رو میزاررن اما میتونید باهاش ور برید با این هایپر پارامترها و با ژنتیک الگوریتم یا هر چیز دیگه اینا رو بهینه کنید

با رزولوشن ۱۰ درصد بخوام چک کنم ببینم مثلاً دراپ اوت نرخ‌های دراپ اوتو تو لایه‌های مختلف هم چند بزارم اوضاعم خوب میشه ماجرای بعدی که از اون حفظ کردن جلوگیری کنه و یاد گرفتن و معیار قرار بده پلات کردن کاست یا لاس فانکشن بر حسب ای پاک هاست خب هر ای پاک که میرید جلو بیاید دو تا چیزو پلات کنید یک کاس فانکشن روی ترینینگ دیتا کاسشن روی تست دیتا ماجرا اینه که شما وقتی یه سری داده دارید نباید همه رو خرج بکنید برای آموزش یه چند تاشو باید نگه دارید برای چی تست تو روش های سنتی ماشین لرنینگ حداقل ۲۰ درصد داده ها رو برای تست نگه میدارن یعنی شما اگه ۱۰۰۰ تا داده دارید ۲۰۰ تاشو می‌ذارن تست از ۸۰۰ تاش برای ترین استفاده میکن بعد نگاه می‌کنن به اون ۲۰۰ تای باقی مونده حالا چقدر داره شبکه خوب عمل میکنه ها یکی از معیارهای خوب عمل کردن اینه که خب کاسپانکشن رو روش

ببینید یا اینکه دقت شبکه رو ببینید که چند درصد داده‌هاشو داره درست میگه البته شاخص‌های دیگه متریک‌های دیگه‌ای هم وجود دارند حالا اگر رسیدیم بعداً باید بگم یکی از جاهایی که فرصتشون ندارم خب علی الاصول اتفاقی که میفته اینه که با گذشت زمان شبکه‌تون اول خیلی بیخوده وزنش خیلی بیخوده هی میرید جلوتر باید چی بشه هم تو ترینینگ اوضاع خوب باشه هم تستتون هم بره به سمت بهتر شدن اما از یه جایی به بعد شما ممکنه ببینید ترینینگ تون داره هی میاد پایین و پایین تر ولی تستتون یه دفعه اوج میگیره و کاستشنش خراب تر میشه این حالا میشه کجا حالا میشه مشابه اینجا که درستش شبکه عصبی زورش می‌رسید بره صد صد داده های ترینینگ هم یه و دقتشو بالا ببره ولی چی ولی جنرالایز نمیتونه بکنه یه مشتی داده هست الان مثلاً آبی رنگه که من بهتون نشون ندادم اینا داده های تست من مثلا اینجا افتادن این گفته سیاه ولی اون میگه قرمزه غلط گفتیم این و تو قرمز افتادن این بعد میگه قرمزه بعد میگه نه غلط گفتی سیاهه و و و اینجوری میره جلو و ماجرا اینه

برنامه نویسی‌ها و لایبراری‌های مختلف جا داده شدند و شما میتونید جایی رو که در واقع لاس روی ترینینگ و تست شروع می‌کنند به فاصله گرفتن و دیگه به عنوان نقطه چیزتون تصمیم نهاییتون قرار بدید w اینجا رو ببینید حالا یا از این به بعد یه فکر دیگه‌ای بکنید یا همینجا رو تصمیم بگیرید که اینجا رسیدید و معیار انتخاب کنید بگید آقا من همین قدر کافیه دیگه بیشتر نرم جلو چون بیشتر برم ترینینگ هم خوب میشه بله میره خطش پیچیده و پیچیده تر میکنه مرزهای عجیب غریب تر ولی چی ولی اوضاع رو تست هم خیلی خراب میشه این بچه ها دو تا رگولاریزیشن معروفی بود که گفتم محدود به این نمیشه ولی اجازه بدید که همینجا جمعش کنیم و آخرین مطلبی هم که می‌خوام تو حوزه تئوری خدمتتون بگم اینه که ما مشتی دیتا ممکنه داشته باشیم ولی دیتاهامون میتونن در واقع با یه سری حقه مناسب اضافه بشن حالا تو جمع شما عرض به حضورتون پارسا ریاضی هست که توی تزش داره این کار میکنه از

آگمنتیشن استفاده می‌کنی یا افزونگی داده‌ها شما یه سری داده تقلبی ولی چیز استاندارد می‌سازید برای شبکه مثلاً فرض کنید که این عکس گربه رو دادید بهش خب اوکی اگر فقط گربه‌هایی که بهش میدید همیشه دارن به چپ شما نگاه می‌کنند خب شبکه هم فقط گربه‌هایی رو یاد می‌گیره که دارن به چپ نگاه می‌کنن یعنی گربه به راست نگاه کنه ممکنه یادش نگیره در حالی که این عکس رو اگه فیلیپش کنیم نمی‌دونم یه بخشی از کلشو ببرید یه جاش زوم کنید فلان هنوز گربه است دیگه شما علاوه بر اینکه اینو دارید بیاید یه روتیشن کوچیکی یه فیلیپش تغییر رنگش سیاه و سفیدش کنید رنگیش کنید و الی آخر تارش کنید اینا رو هم باز به شبکه بدید بگید این هم گربه است من اینم خوبه دیگه شما افزونگی داده داشتید حالا چرا ما در رابطه عادی نمی‌تونستم این کارو بکنم شما هی می‌خواستید برید از گربه های دیگه عکس بگیرید بعد لیبل بزنید باید پول خرج میکردید کلی باید براتون هزینه داشت در حالی که یه دونه عکس گرفتید میاید ۱۰ تا ازش گربه می‌کشید بیرون روتیشن

فیلیپش می‌کنید عرض کردم خدمتتون رنگشو کم و زیاد می‌کنید تارش می‌کنید اینا همه به اینا می‌گید برچسب گربه و این شبکه می‌تونه غنی‌تر یاد بگیره و خب اینا مواردیه که وجود دارد خب این تمام تئوری‌هایی بود که ما باید در مورد شبکه‌های عصبی بهتون می‌گفتیم خودمم میدونم که یک سری چیزهای دیگه باقی مونده اما به نظرم به جای اینکه دیگه ادامه بدیم تئوری گفتن بریم یه مسئله عملی رو مثال بزنیم تا چی تا بعدش شما هم بتونید کاراتر عمل کنید انشالله ما بتونیم اولین ست تمرین بدیم من سعی میکنم تا قبل عید بارگذاری کنم تحویلش هم میزاریم نه بلافاصله بعد عید من خیلی علاقه ندارم بچه ها توی تعطیلات عید بخوان برای درس خودم وقت زیادی بزارن اگه خواستن بزارن بزارن اونور عید رو بهتون وقت میدیم حالا یه هفت هشت ده روزی بهتون وقت میدیم ولی کسی دلش خواست بره تو عید انجام بده بچه‌ها برای اینکه این کارو بکنیم شما باید بتونید در واقع پایتون رو نصب بکنید و این کارها را انجام بدید اما یک راه خیلی

وجود داره که این کارو خودش برای ما کرده و ما نیازی به پردازشگرهای خفن نداریم استفاده از یه سایتی به نام گوگل کولب سایتشم اینه کولب.research.google.com خرجشم اینه که فقط یه جیمیل داشته باشید همین اوکی این چیکار میکنه این اجازه میده که شما یه نیو نوت پد رو مثلاً باز کنید اجازه بهتون میده که هم یه فضایی بهتون میده که هم کد بزنید هم اگه خودتون بخواید زیرش برای خودتون توضیحات بذارید خب اینجا که داره علامت پلی بغلشه کد پایتون میشه زد زیرش بعد میتونید تکست هم اضافه کنید توضیحات که این بخش از کد برای چی بود حتی عکس اضافه کنید بچه این مثل یه پی دی اف بسازید که برای طرف خوشایند باشه هم کد توش باشه هم توضیحات توش باشه خب خدمتتون عارضم که مهمترین جذابیت هاش اینه گوگل اومده یه سری در واقع از سخت افزارهاشو در اختیار شما قرار داده که این با چیز سینک میشه با بروزر شما اصلاً کامپیوتر شما زحمت محاسبه نداره یعنی کلشو

گوگل تحمل می‌کنه اگرچه من بزرگترین محدودیتش اینه که نمی‌ذاره تا بی‌نهایت ازش استفاده کنید هم از لحاظ زمانی از لحاظ حجم و رم و دیسک محدودیت براتون به وجود میاره ولی معمولاً تمرین‌های درسی و اینا انجام میشه حالا پایان‌نامه‌ها شانسیه یا انجام میشه یا اینکه شما می‌تونید اینیشیالایز بکنید وزن حالا اولیه‌ای رو پیدا بکنید از اون به بعدش مثلاً روی کامپیوتر خف و خفن تر بزارید یا پول بدید ببینید این بچه‌ها چیزه این خدمتتون عارضم که اینجا کد پایتون میشه زد بعد مثلا حالا نمیدونم چقدر آشنایت دارید اینه که مثلاً می‌نویسید آ مساوی دو پرینت کن آر همین و این فکر میکنه حالا دیگه زیادی هم داره به نظر میاد فکر میکنه و بعدش جواب برای ما باید چاپ کنه حالا اینشیالایزینگ داره میکنه تازه وصل شد حالا تازه کانکت شد اینا دو رو برامون چاپ کرد خروجی بهم داد و میگه شما اینقدر رم اینقدر دیسک استفاده دارید میکنید و خرجش اینه که این خودش عرض کردم فقط یه جیمیل شما داشته باشید اون گوگل کلب خودش براتون پایتون رو نصب کرده

در ضمن کلی لایبراری که اگه شما خودتون بخواید نصب بکنید یعنی رو کامپیوترتون داشته باشید باید جداگانه نصب بکنید آماده داره حالا شما بچه‌ها اگه خواستید پایتون نصب کنید یا میتونید از پایتون ساده برید نصب بکنید آخرین ورژن پایتون رو برید از سایتش بگیرید یا از یه سری حالا نرم افزارهایی مثل آناکوندا اسپایدر جوپیتر اینا اسمشو درست گفتم اسپایدرو میدونم این آناکوندا مطمئنم فکر می‌کنم جوپیتر هم هست اینا در واقع مسیر های هستند حالا اگه کسی مطمئنه بچه ها برام بنویسه ممنون میشم اشتباه نکرده باشم که چیزه که میتونید شما کدهای پایتون توش بزنید لا تو هم اد کنید و فلان حالا رامت نوشته دیگه چیزای دیگه هم میتونه باشه محدود به اینا نیست خب خدمتتون عارضم که من یه کد نوشتم اینجا با همدیگه تند تند مرورش میکنیم پلیش میکنیم با همدیگه ببینیم اصلاً من الان پلیش میکنم تا این شروع کنه کار کردن بعدش میریم چیز میکنیم بعدش میریم حالا مرورش میکنیم روش حرف میزنیم بچه من یه کد

E:\courses\LangChain Project\main root\data\SCR_Session07_transcript_part3.txt

قرار میدم شما تو این فاصله بد نیست برید خورد خورد پایتون رو یاد بگیرید نیازی نیست اینا رو حفظ کنید آماده می‌تونه یه نمونه کد جلوتون باشه و هی غنی و غنی‌ترشم بکنید و کپی پیست کنید سایت کراس و در واقع تنسور فلو و اینا ریخته توش انواع مثال‌هاست یعنی دیگه با یه با یه سرچ ساده کامل پیدا می‌کنید این الان داره بچه‌ها تلاش می‌کنه حل کنه داره یه سری اتفاقات اینجا رقم میخوره داره یه سری چیزا میره جلو همین قدر ببینید نوشته اپ که یک از ۱۰ ها داره یه کارایی میکنه ما برمیگردیم روش حرف میزنیم خب بریم ببینیم کد چی نوشته اول کدهای پایتون خب اول اومده این علامت شارپ نماد چیزه کامنته اصلا اینا هیچی برای خودتون توضیح گذاشتید تو کد یکی از یکی از چیزهایی که پایتون داره دستور ایمپورته خیلی از این چیزای پایتون لایبری دیگران براش نوشتن شما استفاده میکنید مثل مشابه تول باکس های مطلب خودمونه مثلاً می‌نویسید ایمپورت کراس الان دیگه کراس رو ایمپورت

شما اگه نصب کنید باید اینم نصب کنید لایبراری هم نصب بکنید و در ضمن می‌تونید ازش استفاده کنید یه دستور دیگش اینه که فرام فلان چیز ایمپورت کن فلان چیز مثلاً فرض کنید تو خود کراس زیر مجموعه دیتا ستاش یه سری چیزا وجود داره به نام مثلاً ام نیست که همون شبکه‌ای باشه که دست خطا توش بودن یکی از اوناست ۷۰ هزار تا داده داره ۶۰ هزار تا ترین ده هزار تا تست و فکر میکنم کراس داتo سایتش برید به راحتی به راحتی هرچه تمامتر حالا گت استارتد و اینا داره تو ای پی ای داکس میتونید چیکار کنید سرچ بزنید دستورتون رو انواع مثال ها رو ببینید و انواع چیزها رو هم اینجا مشاهده بکنید مثلاً اینکه در واقع ببینید که چه چیزی داره چه دیتا ست های داره و فلان و یا شما چه میتونید دیتا ست خودتون رو اضافه بکنید کدگزپل داره و اینکه به جز ام نیست دیگه چیا داره میتونید همینجا مشاهده بفرمایید خب خدمتتون عارضم که

گفته که از کراس دات مدل کن لازمش دارم دیگه ایمپورت کن سیکوئنشال دیگه شما بعداً نیازی نیست در عادی بنویسید ساده بنویسید این میشناسه وگرنه باید در عادی این کارا رو می‌کردید خب خدمتتون عرض کنم چیز اد کردیم و بعدش میخوایم بریم حالا کد رو شروع کنیم سه تا ظرف تعریف میکنم بچ سایز ۱۶ نام کلاس ده ایپکس ده بعد سایز میگه که من سایز های اون چند تا چند تا رو توی دسته قرار بدم و برم باهاش برم جلو من ۱۶ تا گفتم ده هزار تا باشه این ۱۶ تاشون ۱۶ تا میشکونه میره جلو حالا ممکنه اون آخری هاش دیگه دقیق ۱۶ در نیاد نام کلاسs ده چرا ده تاست چون قراره صفر تا نه رو برام بنویسه عکس های صفر تا نه بدم بهم بگه که صفر یک فلانن ده تا من کلاس دارم ده تا ای پاک هم گفتم برو جلو شما این عدد رو میتونید یک بزارید هر چی دلتون میخواد خب

گفتم که ام نیست که حالا لود شده بود من اگه یادتون باشه گفته بودم بالا از فلان فلان ایمپورت کن ام نیستو پس کلمه می‌شناسه خب گفتم ام نیست و حالا باید لودش کنی باید بری سرچ بزنید که اوکی نیست که خودش توشه چجوری لود میشه اگه بزنید دات لود دیتا پرانتز باز بسته و بریزید توی در واقع مجموعه های ایکس ترین وای ترین و ایکس تست وای تست این خودش میره براتون میریزه ۶۰ هزار تا ایکس ترین بهتون میده برچسباشو تو وای ترین میریزه ده هزار تا تو ایکس تست ۱۰ هزار تا برچسب های تست رو میریزه تو اون و در ضمن تست ها با ترین ها هیچ اشتراکی ندارن یعنی یه سری چیزهایی هستند تو تست هستند که اصلا تو ترین نیست حالا یه سری پیش پردازش اولیه بعضا لازمه که خب باید شما به اون فرم درش بیارید اگه یادتون باشه ما گفتیم چی ما گفتیم که ایکس های ترین فلان فلان باید چیکار کنید تو بردار جا بدید ما مثلا ایده آللمون بود که ایکس آییم خودش توی بردار ستونی قرار بگیره و برچسبش

مثلاً وای آی یه عدد باشه بعد ایکس یک ایکس دو تا ایکس ان میرفت جلو دیگه همه اینا میرفت جلو اما اگه یادتون باشه قبلا اشاره کردم هنر لایبراریا به این نیست که اینا رو تک تک بدن بعد بنویسم فور آی از ۱ تا فلان هنرشون به اینه که برداری بدن یعنی من درسته بهتون گفتم بک سایز حساب کن فکر نکنید این قراره بره فور آی از یک تا مثلاً ۱۶ اینو حساب بکنه میره یه ماتریس گنده‌تری می‌سازه ۱۶ تا از این ستون ها رو حالا یا سطرها رو کنار هم میذاره خب بعد میاد یه جوری سعی میکنه درجا حسابش بکنه خوبیش هم اینه که یه مشت جمع و ضرب ماتریسیه میتونه بندازه رو هسته های مختلف جی پی یو و سریع انجامشون بده و بزنه تنگه اما کلی محاسبات و سرعتتون رو ببره بالاتر این چیزایی که تا ده سال قبل واقعا چالش بود حالا مثلاً از ۲۰۱۲ به این و جدی رشد کرد و فلان و خب خدمتتون عارضم که این کارو میاد انجام میده شما لازمش اینه که مثلاً تو این دیتا ست یا حالا تو کراس

مثلاً بیاید ورودی‌هاشو بذارید تعداد سطرهاشو بزارید معادل شماره داده ستون‌هاشو بذارید فیچرهاست مثلاً ما الان یه عکس ۲۸ در ۲۸ داریم هر کدوم باز کنیم ۷۸۴ تا عدد توشه این اومده سطر اولو گذاشته عکس شماره یک سطر دوم عکس شماره دو تا سطر ۶۰ هزار یعنی الان یه ۶۰ هزار در ۷۸۴ عدد دارید ایکس تست هم همین کارو کرده دستور ریشه این کار براتون میکنه قبل از اینکه ریشه کنه خودش یه جور دیگه بوده سایزش مثلاً ۲۸ در ۲۸ بوده مثلا ایکس مثلا بگید ایکس ترین یک رو بهم نشون بده یه ماتریس ۲۸ در ۲۸ بهتون نشون میده اما اینجا اگه بزنید مثلاً ایکس ترین یک رو بهم نشون بده حالا دیگه یک سطر ۷۸۴ تایی بهتون نشون میده همین کار برای ایکس تست میکنم بعد یه چیز دیگه که داره حالا این جهت اطلاع خودتون این ممکنه لازم باشه بعضی از داده هاتون رو به حالت های مختلف تقسیم کنید چون تو مطلب با دابل آشنایید ولی چیزای دیگه هم داریم که حجم های کمتری بیشتری از حافظه رو اشغال میکن یکیش مثلاً

فقط اتفاقی برای عدداش نمی‌افته فقط نوع تایپش از دابل مثلاً یا حالا هر عدد دیگه که قبلا بوده به فلوت تغییر میکنه عددش بین صفر تا ۲۵۵ اگه پلات کنید ببینید گفته تقسیم بر ۲۵۵ هم تمام داده هاشو بکن که حداکثر داده‌هام یک حداقلشون هم صفر باشد اینم بهتره تو شبکه انجام بشه نرمالایز بشن ولی اگر هم انجام ندید تئوری خطا نمیده خب میگید که هم ایکس هم دبلیو میتونه از منفی بیهایت مثبت بی نهایت باشن اما بودن توی صفر حالا دلایل داره که اگه برسم چند دقیقه در مورد این هم صحبت میکنم اینکه در واقع نرمالایزشن خب اینجا گفته پرینت کن ایکس ترین شیپ صفر رو و ایکس آرلا تست شیپ صفر رو جلوش بنویس ترین سمپل تست سمپلز بچه ها توی زبان های برنامه نویسی اگه سی پایتون اینا کار کرده باشید برخلاف مطلب که درایه هاش از یک شروع میشه این از صفر میتونه شروع بشه مثلا اینجا اولین کاری که کرده برامون اینجا اولین

چیزی که تایپ کرده بهمون گفته که خدمتتون عارضم البته رفتش دیگه ها نه اینجا نوشته بله اینجا دانلود کرده فلان گفته ۶۰ هزار ترین سمپلز داری ۱۰ هزار تستمپل داری همین برای خودش خواسته فقط ببینم مثلاً درست لوت کرده یا نه خب تا اینجا فقط داشتیم چیکار میکردیم لود می‌کردیم بحث بعدی در مورد وای هاست وای ها الان برچسبی که خودش داره صفر یک دو تا نه یادتونه گفتم اگر کلاس داشته باشید از چه نمایشی استفاده بکنید کسی یادش هست به جای اینکه صفر یک تا نه استفاده کنید کدام از یه نمایش معادل استفاده کنید که بهتر در میاد از نمایش وان هات مرسی علی جان نمایش وان هات دستورش اینجا اینه میگه که یوتیلز دات np_ تو کتگوری کال این کار براتون میکنه یعنی الان گفته وایت رو داری نامmb of clas هم داری که بالا بهش داده بودیم دهه این صفر تا نه اونم صفر تا حالا نه

دستور تو کتگوریکال این کارو می‌کنه پس الان وای ترین و وای تست هم کتگوریکال میشن پس الان اوضاع دیگه خوبه حالا دیگه آماده‌ایم شبکه‌مونو درست کنیم پس تا الان پیش پردازش های اولیه مون بود شما برای مسئله خودتون ممکنه یه جور دیگه ببرید جلو اولین کاری که میکنیم آقا مدل می‌خوام تعریف کنم مدل من شبکه عصبی مدل مساوی با سیکوئنشال سیکوئنشال ساده ترترترین نحوه تعریف هاست تو عمده مواقع کار ما با همین راه میفته بالای ۹۰ درصد اوضاع تو شبکه های که در واقع پشت سر هم میرن جلو حالا یه سری شبکه ها ممکنه شما شبکه های عجیب غریب تری بخواید طراحی کنید که از گزینه های دیگش استفاده کنید تو کراس سرچ بزنید مثلا زیر مجموعه های مدل رو تا بهتون بگه به جز سیکونشال چی دارید و مثالالاش هم ببینید بعد میگه اوکی یه مدل تعریف شد مدل خالی الان یکی یکی بهش اضافه کن خب به نام خدا مدل دات اد dس ۵۱۲ اکتیویشن ریلو اینپوت شیپ ۷۶۴

یه چیز خالی این میگه چیکار کن میگه یه لایه دنس می‌خوام خب چرا حالا دنس نوشته ما چون به جز چیز دیگه‌ای داریم بله در مورد کانولوشن حالا بعدا صحبت خواهیم کرد من شبکه‌های ملپیم فقط دنس دارن دیگه لایه اول گفته چیکار کن ۵۱۲ تا چی دارم برام ورودی بزار این بچه ها لایه اول منظورم لایه اول هیدن ها چون ورودی ورودیش که ۷۸۴ تا بود خودش میدونم میشناسه الان اکتیویشنش هم گفته ریلو بزار به جز ریلوید و فلان هم وجود داره که چجوری میشه از اونا استفاده کرد برید نگاه کنید و اینا همه چی داره خب اینپوت شیپش هم گفته گفته آقا ورودی های که ازش میاد چون این لایه هیدن اوله ۷۸۴ تایی براتون میاد یه جای فانی و مضحکی داره پایتون که یه سری جاهاش باید و یه چیز خالی بذارید حالا الان یعنی وقتش نیست ولی اگه لازم شد بعضا میشه بعدا توضیحاتی داد میگه ۷۸۴ تا تو ورودی داری باید خودش بفهمه که زیر مجموعه کراس که ما داریم تعریف میکنیم الان ۷۸۴ در ۵۱۲ تا دبلیو

۵۱۲ تان بایاس لازم داره دیگه اینو خودش می‌فهمه بعد میگه یه دونه دیگه اد کن دراپ اوت اضافه کن بهش گفته modle.ted drop out.۲ دهم با احتمال مثلاً چه می‌دونم ۲۰ درصد نیرون‌هاشو تو اون لایه مثلاً بیاد چیکار کن خاموشش کن خب می‌تونید اینم نذارید تو به خصوص ام الپی شاید لزوماً لازممون نشه ولی تو سی ان ان ها و اینا لازم داریم بعد یه لایه دیگه اضافه کن دنس ۵۱۲ تا اکتیویشنreلو دیگه اصلا اینپوت شیپش نمیخواد چون میدونه که خروجی اون میره به ورودی این و دیگه خود خودش داره بعد دوباره دراپ اوت می‌ذارم تهش میزارم چی یه دنس نامبر آف کلس لایه آخرم اکتیویشنشون سافت مکس میزارم دیگه حالا میتونستید سیگ بزارید لایه آخر کسی ریلو هم نمیذاره خیلی سیگمایید و جدی نگیرید خب الانا دیگه توی به تاریخ 2۲2 ریلو جز اولویت هاتون باشه سافت مکس برای لایه آخر باشه تنش باشه دیگه اگه رفتیم تو ال اس تی حالا یه جاهایی هم اجبارا ریلو رو هم استفاده چیز

دو کلاس است حالا سافت مکس یه جورایی اونم داره پوشش میده دیگه خب و تا اینجا مدلمو ساختم تموم شد پس مدل فلان مدلم ساخته شده یه شبکه مثلاً فلان لایه دارم با یه سری لایه نیرون های ورودی و میانی و در ضمن یه لایه سافت مکس خروجی مدل دات سامری رو گفته بهم بده این برات الان اینجا براتون چاپش کرده گفته آقا لیرت اینه اگه دلتون خواست بدونید دنس اول دارید ۵۲ تا داره این ناناش همون اون چیزه بود پرانتز خالی بود گذاشته بودید گفتم مضحکه کاریش نداشته باشید میگه آقا شما ۵۱۲ تا لایه میانی داری چند تا پارامتر داره ۵۱۲ در ۷۸۴ تا به علاوه یه سری بایاس میگه 4192 تا wلیو فقط اینجا مجهوله که باید بهینشو پیدا کنید خب خدمت شما عرضم لایه بعدی انقدر لایه بعدی اینقدر در کل توتال پارامترهاتون ۶۶۹ هزار تاست با این آرایشی که من چیدم

در ضمن هر ۶۶۹ هزار و خورده‌ای باید ترین کنی من بهت نگفتم چیزیو فیکس کن حالا بعداً توی ترانسفر لرنینگ یه اشاره‌ای می‌کنیم ما بعضی از اینا رو میگیم آقا بهش دست نزن دلم میخواد دلم میخواد آقا به اینا دست نزن ولی مثلا ۴۰۰ هزار تاشو فقط تغییر بده ولی اینجا اینجوری نیست همه رو میگه چیکار کن این کار کن پس این تا اینجا مدل سامری رو داریم مدل دات کامپایل که بزنید این میره به سمت اینکه حالا مدل رو سال چیز کنه بره به سمت اینکه دیگه آماده بشه حالا ترینش بکنه خب ما فقط دونستن نیرون ها کافی نبود مدل دات کامپایل لاسشو میگه از چی تعریف میکنیم مثلا من کتگوریکال انتروپی تعریف کردم چیزای دیگه هم میشه گذاشت برید تو سایتش ببینید خب اپتیمایزش گفتم استوکستیک گریدت دیسنت بزار با لرنینگ ریت یا ات ثابت مثلا یک صدم خب حالا اتهام بچه ها جهت اطلاعتون تو این مسائل ام ال پی ساده خودمون از اوردر یک میتونن باشن هی بیان پایین و پایین تر ولی تو شبکه های دیپ

۵ اونوراست ولی توی مسائل خودمون یک دهم یک صدم یکم حتی بعضاً کار می‌کنه گفته چه متریکی میخوای با چه در واقع چه چیزی رو میخوای برات من خروجی بعضا نمایش بدم من گفتم اکیوریسی رو بده اکیورسی یعنی نگاه کن شبکه چی تشخیصش داد داده واقعیش چی بود اما به جز این متریک چیزای دیگه هم هست اما این سوپر معروف ترین متری که میشه به کارش برد خب خدمتتون عارضم که بعد گفتم مدل دات فیت که بزنید این شروع میکنه ترین شدن ها ولی گفتم مدل دات بریز تو هیستوری چون من کارش دارم یعنی میخوام نه تنها ترین میک بلکه یه سری اطلاعات هم تو خود حافظت ذخیره بکنی من میخوام بع فراخوانی کنم اگه ندید اینو میندازه دور بعدا شما یه بار دیگه باید کلاً از اول فیت کنید خب میگه چیکار کن اولین چیزایی که بهش میدیم یه ایکس ترین رو با یه ترین رو بهم بده حالا اسمشو میتونستید علی

یکیش سایز در واقع خود چیز خودشه در واقع نوشته یارو خود کد است زیر مجموعه فیته اون بک سایز دوم اون چیزیه که ما داریم این بالا براش تعریف کردیم ۱۶ میتونستید اسم اینو علی بزارید خب یعنی نیازی نبود حالا حتما اسم اینجا باشه بک سایز مساوی با بک سایز و خدمتتون عارضم که ایپکس هم گفته بزار ایپکس بالا گفته بودم چند نام تعریف میکردید به جای ده مثلا نوشتید نامبر باکس وربوس یک این فکر میکنم یعنی اینکه گزارش بده سکوت نکن هر کاری میکنیم برای ما حرف بزنه اصطلاحا خب چون میتونه حالا مقدار های دیگه هم بگیره در ضمن گفته آقا تهش میخوای رو چی تست کنی خب ولیدیشن دیتا اسمشو گذاشتن من اینجا یه پرانتز باز بکنم بچه ها ما تو حالت عادی تو ماشین لرنینگ خب وقتی

داده برچسب‌دار داریم مثلاً فرض کنید که ۱۰۰ هزار تا عکس سگ و گربه دارم آقا می‌خوام تو دستشون کنم اینا سگن یا گربه من در حالت عادی شما از من این حرفو شنیدید که دو ست داده دارم ترینینگ و تست خب تست و ترین اوکی تو روش‌های ماشین لرنینگ کلاسیک که داده‌ها کم بودن کم که میگم یعنی کمتر از مثلاً هزار یا تو اردر هزار بودن معمولاً ۸۰ درصد ترین میذاشتن حداقل ۲۰ درصد تست یعنی چی یعنی ۲۰ درصد همون اول شافل هم می‌کنی خیلی هم حب و بغضی نداریم مثلاً همه صفرها رو نمیای کنار بذاری شافل میک میزنی تو هم ۲۰ تاشو می‌ذاری کنار ۲۰ درصد رو نبینه اصلاً ۸۰ درصد فقط ببینه یعنی ۲۰ از همه تخم مرغ ها استفاده نمی‌کنیم بعضی هاش تو در واقع سبدهای دیگه می‌ذاریم خب حالا اینجا باز دوباره احسان یه بار همون پیرو اون سوال قبلی که پرسیده بود احسان به نظر میاد یه سوال پرسید تو این درس ولی خیلی میشد ارجاعات زیادی

اینکه آقا من اگه بخوام شبکه‌های مختلفی رو امتحان کنم باید چیکار کنم این درست نیست که بیایید یه بار یه شبکه رو چیکار کنید مثلاً با سه لایه مخفی بزنید بعد برید تستش کنید بعد با دو لایه مخفی بزنید برید تستش کنید بعد ببینید کدوم بیشتر بود اونو گزارش کنید شانس آوردین اینجا بعضیا میان چیکار می‌کنن به این تست اصلاً دست نمی‌زنن میگن من خود اینو به دو دسته حالا ترین و ولیدیشن میشکونم خب یعنی ولیدیشن تست منه تستی که من حق دارم تست کنم و تصمیم بگیرم خب اوکی حالا این چه معنی داره میگه شبکه شماره یک تو ران کن ولیدیشن بزن روش ببین چند درصد دقت داره شبکه دو تو ران کن بعد مثلاً با یه لایه بیشتر یه لایه کمتر باز ولیدیشنش ببین حالا بین اینا بهترینش بردار یا تلفیقی از اینا رو بردار حالا برو رو تست امتحان کن ببینم تست چند درص و آره سوال کلیدی بود اصلاً خدمت شما عارضم که پس ما دیتا ست مون میتونه به سه بخش ترین ولیدیشن و تست یا در ساده ترین حالت به ترین و تست بشکنه

شبکه‌های عادی که زیر هزار تا بودن ۸۰۲۰ یا ۷۰ ۱۰۲۰ میشه شکوند یا ۶۰ ۲۰۲۰ میشه شکوند ولی خدمت شما عرضم اگه رفتید شبکه‌های دیپ که مثلاً تو اوردر ۱۰۰ هزار داده به بالا دارید واقعاً نیازی نداره ۲۰% رو بذارید تست خب شما میتونید عددهای خیلی کمتری بذارید یعنی تو جایی که میلیونن ۹۸۱۱ می‌ذارن خب یک درصد یک میلیون تا میشه چقدر میشه ۱۰ هزار تا دیگه درسته شما ۱۰ هزار تا تست تست دارید یعنی اینکه مثلاً ۹۸ درصد دقت ۹۸۰۰ تا از ۱۰ هزار تا رو دارید درست جواب میدید پس واقعاً نیازی نیست توی اینا تو به اصطلاح تو روش های کانشنال و سنتی بودن این تو روش های به اصطلاح مدرن که تعداد داده ها زیاده بیشتر رو میدن به ترین و تعداد کمتری در حد یکی دو درصد رو میدن به تست و ولیدیشن حالا حالا بیایم تو کد خودمون ما اینجا

ولیدیشنی نداریم خیلی چون من یه شبکه بیشتر نمی‌خوام ران کنم ولیدیشنم چک کن هم رو تستم می‌خوام ببینم اورفیت کردم نکردم و فلان خب تمام شد مدل دات فیت این کار یعنی شبکه رو شروع کردن به تعداد ایپاکا برو جلو از این اپتیمایزر استفاده کن رو اینام امتحان کن اینجا دیگه تمامه این شبکه شروع کرده تمام شدن و اینا جاهایی بود که شما دیدید یه سری این چیزا به علاوه ها اینا پر شدن تا ده تا ایپاک رفته جلو که حالا نگاش میکنیم چی داره بهمون میده ایپا که یک خب داره میگه که من اینقدر طول کشیدم ۳۲ ثانیه و هشت میلی ثانیه طول کشیدم اینو میخواست رو کامپیوتر خودتون امتحان کنید بچه ها ممکن بود خیلی اوضاعش بدتر باشه چون شما عموما بلد نیستید در حالت عادی خودتون قدیما که کسی بلد نبود جی پی یو استفاده کنه یا خیلی حالا جی پی یو خوبی هم نداشت ممکن عددا خیلی بیشتر بشه گفته که لاستون رو ترینتون چنده عدد ۴۸

کاسپانکشن ۴۸ بچه‌ها من نمی‌دونم این باید چند باشه میدونم اگه صفر بشه فوق ایده آل من نمی‌دونم باید چند باشه می‌دونم هرچی کمتر باشه بهتره مثلاً الان با ۴۸ صدم شروع کردم لحظه آخر و هفت صدم تمام کردم عالیه خب اکیوریسیم رو ترین تو ایپاک اول ۸۶ درصده آقا من تو ترینت همون با یک ای پاک که رفتم جلو با مینیچ های ۱۶ تایی ۱۶ تایی تمام که شد یه دور ۶۰ هزار تاشو دیدم من تونستم ۸۶ درصد داده های ترینمو به درست جواب بدم خب ولی هنوز ۱۴ درصد غلط جواب میدم همین مسیر رفته جلو لحظه آخر ۹۸ درصد داده ترین رو داره درست جواب میده یعنی مدل به اندازه کافی غنی شده و تونسته ۹۸ درصد از اون ۶۰ هزار تایی که بهش دادیمو واقعاً درست جواب بده و البته دو درصدش داره غلط میگه یعنی با وجود که جزو ترین بوده ولی باز نمیتونه بگه میگه همین کار برای ولیدیشن هم انجام بده این شاید خیلی مهم باشه میگه رو تستتم یا همون ولیدیشن ست هم برو

حساب بکن و اکیورسی هم حساب بکن حالا شانسیه بعضی وقتا می‌بینید عمدتاً اینه که ولیدیشن اکیورسی باید از ترین اکیورسی پایین تر باشه کاملا شانسی این عدد میتونه بیشتر باشه اینجا اتفاق اتفاق اتفاقی این ماجرا رخ داده یا داده هایی که تو تست قرار گرفتن داده آسونی بودن اون وسط مس ها بودن که قشنگ توش کلاس های درستی می‌نشستن لب مرزها نبودن اگه میبودن داستان میشد خب ولی تو ترین های چند تا لب مرزی هم خرابکاری کرده و همین کار گفته ۱۰ تا هیپاک برو برام انجام بده آخرین عددی که با ۱۰ تا هیپاک برام رسیده در کلا مثلا اینقدر دقیقه مثلاً شده باشه چه میدونم چند دقیقه فلان شده باشه نمیدونم س مینور ۴۶ ثانیه خب به دقت ۹۸ درصد تقریباً رو ترین و ۹۸ درصد تو تست رسیدم همین این داده بچه ها بهتون نشون میده که شما لزوما چیز نکردید اور فیت نکردید خب بعد گفتم چیکار کن خب اوکی

گفتم از این به بعدش دیگه چیز نیست از این به گفتم پلات برام بکش بچه‌ها یه چیزی نمی‌دونم شنیدید یا نه یه لایبراری توی پایتون وجود داره خود پایتون این زورو نداشته بعداً براش نوشتم که بتونه ادای مطلب در بیاره محاسبات ماتریسشو ساده کنه کسی اسمشو بلده چیه کسایی که حالا پایتون اسمشو شنیدن یا کار کردن یه لایبراری معروفی داره ولی این کارا که ما الان غیر مستقیم هم صداش زدیم یعنی کراس رو که صدا زدیم توش بود کسی اسمشو شنیده لایفه نامپای مرسی خانم گودرزی نامپای لایبراری که الان مطلب رو در میاره توی محاسبات ماتریسی یه لایبری دیگه دارن به نام مت پلات لیپ که ادای پلات های مطلب رو در میاره خیلی هم ظاهر نوشتاری شبیه خود مطلبه میگه مت لیپ اینپورت کن پایپلات از پی ال تی وقتی میگید ایمپورت کن پایپلات یعنی که اولا پایپلات کلا باز میشه از پی التی یعنی من از الان به بعد دیگه p ال تی صداش میکنم هرجا پی ال تی تایپ کردم همون پایپ لاته دیگه نیازی نیست

اینو تایپ کنم خب نوشته plt.fger رو باز کن همین مثل مطلب ساب پلات حالا ما تو مطلب ۲۱۱ بعد چیکار کن مثلاً بیا اینا رو رسم بکن حالا یادتون مدلو ریختیم تو هیستوری بعد این هیستوری خودش زیر مجموعه داره هیستوری این هیستوری میتونست اسمش هیستوری نباشه میتونست اسمش علی باشه علی دات هیستوری لاسو مثلاً گفته با رنگ بلو و مثلاً هیستوری.ستوری ولیدیشن رو با رنگ قرمز برام رسمش کن خب بعد وای لیبل براش بزار آشغال که تو مطلب هم داشتیم و فلان اکیوریسی رو برامون رسم بکن و فلان در ضمن اینا رو نمیکشه تا زمانی که شما بهش بگید پلات دات شو این فقط تو حافظش میسپاره ولی شما اینو باید بگید p الt شو تا بعد چیکار کنه براتون بکشدش اوکی اینو که گفتیم بدون ارور رفته انجام داده دو تا نمودار کشیده یکی نمودار لاس بر حسب ای پاک تو ده تا ای پاک یکی نمودار اکیوریسی یا دقت من چیزی که هست لاس در واقع چیز شده

کاهشی بوده هم برای یارو ترینینگ هم برای تست در ضمن چیز نشده دیگه به ارگ استاپینگ و اینا کار نکشید که آبی بزنه بره بالا حالا یا بالعکس قرمزه بزنه بره بالا آبیه بیاد پایین و پایین تر بستگی داره کدوم کدوم بود دیگه خب خدمت شما عارضم که از اونور هم درصدمونم اینجوریه که مثلاً این آبیه با هشتاد و خورده ای شروع کرده قرمز حالا شانسی عرض کردم عمده وقتا این قرمزه زیر آبی میفته یعنی ولیدیشن زیر این میفته و رفته باهاش بالا و جفتشون به صد صد نزدیک شدن کاملا پس مسیر چیه مسیر درست و همواری بچه من این کد رو در اختیارتون قرار میدم خب که بتونید ازش استفاده کنید بعد گفته چیکار کن اسکور رو چاپ کن برام مدلvیت کن ایکس تست وای تست و و توی اسکور بریز حالا بعد گفته چیکار کن تسلاس رو و تست اکیوریسی هم چیکار کن چاپش کن اسکور صفر اسکور یک این اسکور میشه با این فرمی که نوشتم

امتحان میکنه و بهتون حالا چیزهای متریکس‌های مختلفی که انتخاب کردید از بالا می‌تونه براتون بریزه و اینجا براتون چاپش می‌کنه در کل که شما رو تست ستتون خدمتتون عارضم که چه دقتی دارید تسلاستون عدد هفت صدمه که گفتم این عدد نمیدونیم مینیممش چنده هرچی بیاد پایین تر بهتره اما تکست اکیورسی که دیگه ته تهش صد درصده برای من شده چی نزدیک ۹۸ درصد و این خب بسیار قابل قبول و مناسبه اوکی این میشه کل مسیر که رفتید اما یه سری جزئیات داره حالا ممکنه هی باز اضافه بشه اگر بخواید یه عکس خاصی رو تو تست ببینید خودش چنده و اینکه چند تشخیصش داده مثلا فرض کنید من تست آ دی رو مثلا ده هزار تا عددی از صفر تا9۹ میتونم بزارم مثلا میزارم یک اوکیه بعد گفتم چیکار کن برو آی ام شو بکن رسمش بکن ایکس تست رو و ریشیپش کنید به ۲۸ در ۲۸ تا یه عکسی در بیاد ببینیم این چیه عکس صفر بود

بعد گفته که مدل دات پردیکت کن این مدله که بود همه کل مدلی که ترند شد تو پارامتر به نام مدل ریخته شد میگه آقا رو این تستی که جدید برام اومده هم اکنون به دست من رسیده برو بگو چنده و رفته چیز کرده در واقع پردیکت کرده حالا اول لازم بوده عکس رو به یک در ۷۸۴ بشکونه اینجاش باز ۲۸ در ۲۸ بوده بعد این ده تا عدد به شما میده همون چیزه دیگه سافت مکس زده بیشترین میشه معیار دیگه میگه با احتمال ۹۹.۸۸ چیز هستید تو کتگوری سافت مکس اولی که صفر باشه دیگه با احتمال اینقدر در ده به توان منهای شش درصد اینت و فلانید و نزدیک هم نداره یعنی خیلی مطمئنه که این صفره که واقعا هم هست ولی خب چون تست ست مون مث صد درصد نیست شما میتونید مثلا برید چیکار کنید برید بگردید ببینید واقعا کدوم بوده اشتباه کرده مثلاً الان ۶۰۰۰ زدم ۶۰۰۰ نه بوده چند تشخیصش داده نه تشخیصش داده

۹۹/۷ درصد ۹ تشخیص داده ولی بعضی وقتا اتفاق میفته و رقیبی هم نداره یعنی نزدیک‌ترین رقیبش یک دهم درصده مثلاً گفته آقا با یک دهم درصد چند شده صفر ۱ ۲ ۳ ۴ ۵ ۶ ۷ راستم میگه انصافاً ببین میگه ۹۹ و فلان درصد نه یک دهم درصد دارم حدس میزنم این شاید هفت باشه و هست خب یعنی اونم شبیهه و ایناش خیلی چیز جالبیه که می‌تونید چک بکنید و در ضمن اگر بخواید حالا دبلیه خاصی رو ببینید از این دست دستور میتونید استفاده کنید حالا اگه دلتون خواست میتونید به این فکر کنید یا سرچ بزنید که چجوری میشه اینا رو توی تکست فایل یا توی اکسل فایلی ریخت مطلب اگه میخوید بازش کنید بعدا دقیق تر ببینید و در ضمن یه چیز دیگه‌ای داره مدل دات سیو بچه ها میتونید این کارو بکنید این مدلتونو که استخراج شد سیو کنید مثلاً توی فایلی به نام مدل مای مدل اچ فایو ریخته حالا پسوندش باید اچ فایو باشه بسته به مثلا چیز ورژن پایتون اون

که دارید استفاده می‌کنید گفته دل مدل مدل قبلی رو پاک کن کلاً این مثل الان سیویه که تو مطلب ما داشتیم بعد اگر لود مدل در واقع ایمپورت کنید و لود مدل h5 رو بریزید تو مدل همون اتفاق میفته یعنی دیگه نیازی نیست دفعه دیگه اومدید دوباره بخواید وقت بذارید و اینا کنید شما میتونید آخرین مدلتون رو سیو بکنید لودش کنید یه جایی تمام وزنشم لود بشه و حالا استفاده کنید ادامه بدید بقیه کاراتونو الی آخر و اینا مواردیه که بچه ها به ذهنم میخورد خیلی سعی کردم آن تایم برسونم به نظر میاد فقط یک دقیقه دیگه وقت دارم و از این فرصت یک دقیقه‌ای استفاده می‌کنم سال نو بهتون تبریک میگم انشالله هر جا که هستید خوش و خرم باشید انشالله کلاس تا اینجا خوب بوده باشه ما هدفمون اینه که شما رو با ابزارهای جدید و به روز آشنا بکنیم انشالله که تو این راه موفق باشیم انشالله که جذاب باشه انشالله که به کارتون بیاد توی موارد مختلف و اولین ست تمرین سعی میکنیم در اولین فرصت آپلود بکنیم براتون

اونور سال درس می‌تونه جذاب‌تر باشه کارا حرفه‌ای‌تره از شبکه‌های ام ال پی یه مقدار اوج می‌گیریم و به شبکه‌های دیگه‌ای مثل نتورک و همینطور شبکه میریم و اونارم باز پیاده‌سازیشو توی پایتون بهتون یاد میدیم اگر دوست داشتید تو این مدت شروع کنید الفبای پایتون یاد گرفتن و در ضمن با سرچ‌هایی که تو اینترنت میزنید به راحتی هرچه تمام‌تر می‌تونید نحوه نوشتن دستورات کراس و یا حالا تنس فلو یا پای هر کدوم از این لای های که دوست دارید به خوبی فرا بگیرید خوش و خرم باشید خیلی ممنون بابت حضورتون در پناه حق انشالله به شرط حیات اون و سال در خدمتتون هستیم سال نو مبارک

E:\courses\LangChain Project\main root\data\SCR_Session08_transcript_part1.txt

به نام خدا دوستان عزیز و ارجمند درس رباتیک اجتماعی شناختی عرض سلام و ادب و احترام اول تبریک بابت سال نو انشالله سال پر از شادی و خیر و برکت داشته باشید پر از سلامتی و انشالله پر از موفقیت به اون آرزوهایی که دارید انشالله هی بتونید نزدیک بشید یا کامل برسید همینطور امیدوارم ماه رمضان پر خیر و برکتی پیش روتون باشه و بهره های معنوی لازمو ازش ببرید اگه بخوام شیطنت هم بکنم مدام بهتون میگم که بچه اجازه ندارید امروز آب بخورید خدمتتون عارضم که خیلی ممنون بابت تشریف فرمایی تون خوشحالیم که میبینیمتون انشالله هر جا که هستید سلامت باشید پیش خودم فکر میکردم شاید این احتمال وجود داشته باشه که کلاس حضوری بشه هم اشتیاق بیشتری داشتم بچه ها را از نزدیک ببینم بعضی ها رو سه چهار تا کلاس با هم داشتیم ولی هنوز درست حسابی از نزدیک ندیدیم و دوم این بود که

فکر می‌کردم شاید بشه یه بخش‌های آزمایشگاهی توی درسمون در نظر گرفت که شما از نزدیکتر با ربات‌ها آشنا بشید خدمتتون چند تا اناسمنت میدم بعدش میریم سر درسمون یه ماجرا به قبل عید برمیگشت که من یه ویدیو براتون بارگذاری کردم که توش آموزش کار با دستگاه پرینتر سه بعدی بهتون آموزش داده میشه به صورت عملی یه ویدیو چند دقیقه‌ای ۱۷ ۱۸ دقیقه ای حتما ببینید چیز در واقع ضرر نداره و میتونه در آینده براتون راهگشا باشه حتی منبع درآمد باشه و اینو سعی کردیم برای بچه ها به وجود بیاریم این بستر رو حالا تو این درس خوب خیلی دوست داریم که یه سری مجموعه های مهارت محور به شما یاد بدیم تو حوزه های نرم افزاری و سخت افزاری که حالا اگر قراره به حضوری شدن بشه میتونیم بعدا یه بار دیگه از نزدیک

براتون ران بکنیم و ببینید خدمتتون عارضم که ما تمرین سری اولو توی عید بارگذاری کردیم براتون البته نه به این قصد که شما توی عید وقت بذارید و درس رو انجام بدید بیشتر به این منظور که اگر کسی به هر دلیلی دوست داره مطالعه کنه علاقه‌منده بتونه زودتر وقت بذاره و شروع بکنه ولی من تحویلشو این برای سال تاریخ ۲۳ فروردین سه شنبه هفته آینده انتخاب کردم که خب به اندازه کافی نزدیک به ۱۰ روز سال وقت وجود داشته باشه و خوب شما بتونید انجامش بدید خیلی هم جوری نیست که در واقع به چالش بر بخورید یعنی هر چی هست میتونه سبب بشه که شما چیزهای جدیدی یاد بگیرید و خوب این انتخاب سوالات آگاهانه است من اجازه بدید صفحه نمایش به اشتراک بذارم یه توضیح اجمالی روش بدم دغدغه های بوده بچه ها تو این چند روز مطرح کردن خواستم خدمتتون بگم سوال اول یه سوالی که برای این بوده که یک بار شما چشمتون به دست

بنویسه و ببینه که چگونه می‌تونیم ما رند لاس رو به رند هر کدوم از دبلیوها از لایه‌های آخر به حالا ماقبل آخر و و به سمت اول حساب بکنیم عمداً هم دو تا نیرون بیشتر تو هر لایه ندارم که شما چی بتونید ببینید که هر کدوم از اون دبلیوهای دیگه یا مثلاً اف حالا ایکس های موجود چگونه خودشونو نشون میدن اگه خیلی خیلی مثلاً طولانی شد عیب نداره که چه میدونم برای پارامترهاتون اسم بذارید مثلاً w1 در ایکس یک به اسمشو بزارید زد یک بعد از اون استفاده بکنید ولی این انتظار را دارم که دستی این چند تا جمله رو بنویسید حالا اگر نرم افزار هم محاسبه کنه باز ایرادی نداره ولی خب میخوام یه بار به چشم ببینید واقعا که رند لاس به رند هر کدام از این دبلیو ها چه قیافه‌ای داره خب و بعدش هم گفتیم که یک بار یا یه ای پاک برید اینو چیکار کنید به روز رسانی کنید باز میتونید دستی انجامش بدید یا یه کد بزنید

چه تو مطلب چه تو پایتون چه هر زبان برنامه نویسی دیگه‌ای و اینو چیکار کنید برای ما انجامش بدید این بیشتر دست گرمی یه سری سوال جذاب مفهومی وجود داره که بعضاً ساده است ولی شما رو به فکر فرو می‌بره مثلاً اینکه ما چرا تاکید می‌کردیم که این توابع فعال سازی باید غیر خطی باشن اگه همه رو خطی بذاریم مگه چی میشد ها خیلی ساده است ولی میخوام ذهنه رو قلقلک بدم که یه مقدار بنیادی به داستان فکر کنید یا اینکه مثلاً همه وزن اولیه خیلی خوب نیست که صفر باشه و روش های مختلفی وجود داره حالا ما بعضی هاشو آگاهانه چون نمیرسیم چون درس ما درس ماشین لرنینگ و هوش مصنوعی از این درس ها نیست اشاره نمی‌کنیم مثلاً توی حالا پایتون هم بیان نکردم دیگه حالا دفعه دیگه که کد بعدی که براتون ران کنم بهتون میگم از مثلاً روش زبیر استفاده میکنه برای اینکه این روش چی هست شاید ما فرصت نکنیم بگیم خب ولی حداقل شما نیازی نیست خیلی نگرانش باشید یعنی اون خودش کار خوبی انتخاب میکنه

و الی آخر سوال‌های مفهومی سوال سوم یه سوال رگریشن لایه آخرش یه تک نرونه که میتونه مقدارش خارج از بازه صفر تا یک بیفته شما یه تابع لنیر باید بزنید آخرش یعنی بگید که فقط اون لایه آخر نه لایه ماقبل آخر اون لایه آخر آخری دبلیوها در زدهای لایه ماقبل آخر ضرب بشن با هم جمع شن همین و همون خودشو بده بیرون یا اینکه دوستان ایده های دیگه زده بودن گفته بود مثلاً ما اول سیگ میگیریم بعد خوب میدونیم مثلا بین بازه فلان تا فلان به اون بازه مپ خطی میزنیم و الی آخر حالا گفتیم برید جلو ببینید ولی من خودمم اینو مثلاً توی ۱۰ دقیقه یه ربع با چیز زدن با تا زدم شد کار درآورد و ۴۱ نقطه به شما دادیم گفتیم از اینا به عنوان آموزش استفاده کنید یه بار ببین تو سایر نقاط صفر تا دو پی چگونه رفتار میکنه این تابعی که داره شبکه تو میده آیا با تابع واقعی که دارید همخانه یا نه یه بار مث برید خارج اون

تابعی که شما دارید تخمینش می‌زنید فقط تو اون بازه صفر تا دو پی خوب در میاد یا حتی اونجا هم خوب در نمیاد یا فقط اونجا خوب در میاد یا نه همه جا خوب در میاد بچه‌ها این می‌دونید دیگه این وای مثلاً می‌تونسته جواب یه معادلفرانسیل باشه من قبلا بارها تاکید کرده بودم که تو سیستم های دینامیکی سیستم های کنترلی الی آخر میشه از شبکه های ملپی استفاده کرد و بعضا ممکنه تو پایان نامهتون به دردتون بخوره در آینده نزدیک و گوش ذهنتون باشه آنتن تیز باشه که خب اوکی این یک راه برای اینکه یه سیستمی که حالا داره خودش سال میشه حل میشه مثلا من بتونم تخمینش بزنم با یه بلک باکس ولی حداقل خودم وزنشو داشته باشم اگه به کسی هم ندم و خوب داره کار میکنه یا نه مناسبه نیست چقدر ربات چقدر خوبه یکم برم بیرون بازه همچنان این خوبی رو داره یا نه و همین کیفیت یعنی نمیخوام حالا چیز خاصی مد نظرم نیست فقط می‌خوام هدفمو از طرح این سوال بگم و سوال چهارم هم که سوال چالشی جذا

مثال واقعی تو حوزه سوشال رباتیک ما یه پایگاه داده بهتون دادیم که توش آدما بعضاً دارن می‌خندن ناراحتن یا عصبانین و و ۸ حالت مختلف داره یه حالتش نوتراله اگه اشتباه نکنم حالت طبیعی و خدمتتون عارضم که عکسا خودش ۶۴۰ در ۴۹۰ن عمدتاً گری اسکیل هم تو طیف خاکستری اند ولی ممکنه رنگی توشون باشه بهتون گفتیم اگه رنگی بود چجوری با یه دستور سیاه سفیدش کنید اول حالا سیاه سفید نه به معنای سیاه یا سفید اینکه از بین سیاه تا سفید بتونه رنگ خاکستری هم به خودش بگیره و چیکار کنید با یه ام ال پی حالا البته نگفتیم چند تا نیرون چند تا لایه اینا بر عهده شماست برید یه جوری باشه که یه عددی بده دیگه مثلا فرض کنید که احتمال شانسش یک هشتم دیگه مثلاً ۱۵ ۱۶ درصد ها نمیدونم ۱۲ درس چقدر میشه حالا بگیم ۱۵ درصد اینکه مثلاً یه شبکه بسازید که مثلاً ۱۰ ۱۲ درصد باشه برای خودتون خوبه من الان سکه بندازم میتونم با احتمال ۱۵ درصد بگم اینا چجوریرین و فلان از اون و خب یه شبکه

بیاد بالا حالا بیاد بالای ۳۰ ۴۰ ۵۰ ۶۰ ۷۰ حالا هی بره بالا و بالاتر طبیعتاً برای ما بهتره و خیلی منظور خاصی نداشتم که کسانی که زیر ۷۳% مثلاً به دست بیارن نه نمره بهشون ندیم نه بیشتر زور و ضرب زدنتون برام مهمه بچه‌ها این تمرین ادامه دارد این تمرینه این تازه راند یکش بود و یه راند دویی داریم که به درس امروزمون مربوط میشه به شبکه های کانولوشنیه و انشالله یه بار دیگه بعداً به اون باید حلش کنیم حالا من دو تا خواهش ازتون دارم یکی تا سه شنبه زحمت بکشید یکی سوال یک برای خودتون حل بکنید چون میخوام چیزایی بگم که سه شنبه اگه سوال یک و دستی حل کرده باشید برای خودتون راحت تر دنبال میکنید و یکی هم توی سوال چهار یکی بی زحمت واقعا شروع بکنه بهم بگه چالشی دارید یا نه چون عدد در واقع ابعاد عکس یکم بالا میخوام ببینم که گوگل کلب یا شبکه های دیگه چیز حالا به اصطلاح کامپیوتر شخصی

ران کردنشو دارند یا نه اگه نداشته باشن من یه راهکار دیگه هم کمکی بهتون میدم فعلا فرض بر این بذاریم یا خودتون میرید دنبالش یا عرض به خدمتتون که مشکلی نیست و بدون این میشه رفت جلو بچه‌ها کسی یه لحظه بوق زد برای من کسی دست بالا کرد یا سوالی داشت اگه هست در خدمتتون هستم حالا فعلا که گویا نیست آرمین دستش بالاست آرمین سلام وقتت بخیر سلام خوبی آقا سال نو مبارک در سال نو شما مبارک استاد حالا سوال چهارم رفتم سراغش بعد سوال اولم اینه که ما اگر این دیتابیس یه جور دیگه حالا غیر از اون توضیحاتی که شما دادی آخرش بیاریم بالا مشکلی نداره نه مثلا بگو توضیح بگو مث اومدم تو گوگل درایوم آپلود کردم عالی عالی عالی عالی کار این تکنیک به کار

من دیدم چک کردم ۶۴۰ در ۴۹۰ نبودن همشون نبودن آره میشه این اتفاق افتاد خیلی ممنون آرمین چون من چند تاشو رندوم هفت هشت تاشو چک کردم بودن خب شاید یه پوشه خاصی رفتم ولی عرض به خدمتت اگر نیستند یا خود من یه دستور بهتون میدم یا خودتون راحت با یه سرچ ساده توپن سی وی پیدا کنید که چگونه یه عکس دلخواهی رو میدید با یه ابعاد خاصی به شما بده تحویل مثلا همه رو بکنه ۱۰۰ درصد اصلا صرف نظر دیگه چند در چنده اینا یه سرچی بزنید خیلی چیز ساده‌ای باید باشه یه خط دستور یه دستور در حد این داره که اینپورت سی وی تو رو بزنید که اوپن سی وی لود بشه بعد یه خط دستور هم میزنید که اوکی این عکس رو بگیر مثلا فلان در فلانه و بده به من لایه تغییر سایز هم خود کراس هم علی هم میگه داره که بله اینم هستش

چیزی که بود این بود که مثلاً هر کاریش کردم لایه اضافه کردم نرون هر لایه رو زیاد کردم عوض کردم توی مثلاً دومی ایپوک در واقع اون اکیورسی بیشتر از ۳۷ درصد نمیشد هیچ جوره خب اوکی سوال ۲ هست نوشتم چرا یه سری مشکلاتی داره ام ال پی و داستان به نظر چیه حالا یک باید باهاش بازی کنیم مثلا برو چیزتو عوض بکن اپتیمایز عوض کندم بزار یه چیز دیگه بزار خب اینایی که بعضا ل ریت و ادپتیو عوض میکن خب آدا را امتحان بکن اینا رو امتحان کن تعداد نیرون ها را عوض کن تعداد لایه ها را عوض کن همین همین کارهایی که داری میکنی دقیقا اون چیزی که من میخوام خب یعنی میخوام یک دور یاد بگیرید که چگونه این پیاده کنید بعد همون ۶۴۰ در ۴۹۰

۱۳۴۰ بماند اون خیلی برام مهم نیست ۶۴۰ بماند حالا می‌خواستم یه کلک دیگه‌ای هم یادتون بدم این عکسی که توش وجود داره علاوه بر اینکه یه آدم هست یه سری چیزا آشغال دیگه هم هست خب شما می‌تونید به این جستجو بکنید تو اوپن یه سری در واقع دستورات آماده است که بره آدمه رو براتون پیدا کنه خب و ببره فقط اون تیکه رو نگه داره خیلی یعنی در حد یه خط دو خط کده اگه نتونستید پیداش کنید تا سه چهار روز آینده خودم بهتون میدم آها اینم هست آره از این استفاده کنید کوچکتر میکنه و جذاب هر حقه دیگه مثل آگمنتیشن و اینا می‌خواید بزنید خودتون میدونید آره بزنید و تو توضیحاتتون بنویسید دیگه یه کد به ما تحویل میدید یه توضیح و خروجی و الی آخر بله بعد واسه اینم که گفتید میکشه یا نه مثلا سیستم اینا آره مثلا چند کلا اجازه میده بهتون چند تا ای پاک اجازه میداد اجازه میده اصولا مث دو سه بار هم که

تغییر بدی و ران بگیری اجازه میده ولی یهو دیگه رم پر میشه و کرش می‌کنه دوباره از اول باید اینو بگم دیگه می‌خوام ببینم یعنی یه دونه شو تا چند تا ای پاک میزاره بری یه دونه معماریتو حالا من بیست و سی و اینا هم رفتم ولی خب بیشترشو دیگه امتحان نکردم عالی خب خوبه خوبه اگه تا میره اوکیه یعنی چند بار که مثلا شبکه بخوای عوض کنی و اینا بگیری اون آخه میدونی که شما داری با یه کامپیوتر سخت افزار تو شرکت اونا یه کارایی میکنه اونم نمیذاره بیشتر از یه حدی از سخت افزارش استفاده کنی مجانی آره دیگه واسه همین بسیار همین خیلی ممنون خب من بچه ها جمع بندی بکنم دو تا مسئله من یه ویدیو مجموعه ویدیو آموزش پایتون از کلاس تی ای درس دکترشکی توی پیدا کردم که

ممکنه به کارتون بیاد یعنی از صفر صفر طرف میاد درس میده چه جوری نصبش می‌کنید رو کامپیوتر خودتون و چگونه دستوراتو می‌زنید خیلی ساده تعریف حالا متغیرها و چیز و ایف و فور و فلان نوشتن میره جلو اینو میزارم براتون اگه کسی دلش خواست نگاه کنه یا بغلش باشه شایدم تا الان یا خودتون یاد گرفتید یا عرض به خدمتتون که نیازی نداشتید با مطلب یا چیزهای دیگه کارتون راه افتاده یا اینکه اصلا از اینترنت منابع دیگه‌ای پیدا کردید این یه ماجرا دوم که ما بهتون گفتیم بسترهای مختلفی برای پیاده سازی شبکه های عصبی حالا عمیق و غیر عمیق وجود داره ما داریم کراس رو به شما میگیم من اگه دقت کنید تو در واقع جزوه جزوه هام دارم دستورات مستقیم تنسرفلوش هم مینویسم و همینطور چیز خدمتتون عارضم که یه مجموعه ویدیو های از درس خانم دکتر سلیمانی پیدا کردم آموزش پایتورچ میده اونم باز یه مجموعه که میشه کار دیپ لرنینگ باهاش کرد و یه عده اصلاً با اون میرن

میرن جلو و من اون ویدیوهای اونم انشالله براتون بارگذاری می‌کنم اگه کسی دلش خواست ببینه اجبار نیستا خود اون مثلاً چه میدونم چند تا ویدیو ۹ تا ویدیو حالا نمی‌دونم چند ساعت است مثلاً یکی دوتاشو رندوم نگاه کردم مثلاً یکیش کوتاه بود یه ربعه بود تقریبا و میتونه کمک حالتون باشه دلتون میخواد قویتون قویترتون میکنه و ممکنه شما بخواید دلتون بخواد به هر دلیلی از اون استفاده کنید پس اینم مجموعه های جانبی که باید می‌گفتم و دیگه به نظرم بدون فوت وقت بریم سر درس امروزمون اگه اجازه میدید خب بریم درس رو شروع بکنیم ما خدمتتون عارضم که میخویم امروز همچنان تو فصل سه باشیم که اسمش بود یادگیری ماشین گامی به سمت یادگیری عمیق ولی میخویم مبحثو عوض کنیم و به جای شبکه های ام ال پی این دفعه به سمت و سوی شبکه های سی ان ان یا کامولوشنال نتورک یا شبکه های عصبی پیچشی بریم خب این دیگه بچه ها شروع

یادگیری عمیق ما تو این فصل یه مقدماتی خواهیم داشت ضروریات و المان‌های اصلی سی‌ان رو خدمتتون معرفی می‌کنیم بعد آرکتکچرهای یا معماری‌های متداول شبکه‌های cnn و معروفشون که ما ممکنه از اینا کلی استفاده بکنیم مثل لینت الکس نت جی جی گوگل نت رو خدمتتون میگیم و در نهایت در مورد ترین کردنشون صحبت خواهیم کرد و یه مقدار بک پراپشن و مواردی که از این دست به کار ما میاد تا بتونید همون کارهایی که تو ام ال پی میکردید رو اینجا چیکار کنید تعمیم بدید خب اینم به خودتون بخندید خودم کشیدم سال نوتون مبارک توی چیز کشیدم ویندوز ژورنال و اینجا کپیش کردم بد نشد همچین مجدداً از تمام کسانی که بهم کمک کردن این درس رو یاد بگیرم این مطالب رو و همینطور یا از مطالبشون جزوات ش استفاده کنم برای ساخت جزوه که میبینید تشکر کنم که اسم

وجود دارد ما توی فصل گذشته در مورد ام ال پی مطالعات خوبی داشتیم و تلاش کردیم از جهت‌های مختلف اینو یاد بگیریم همین که رو کاغذ بتونیم حلش کنیم همین که بتونیم شبیه سازی های کامپیوتری مناسبی انجام بدیم و روز به روز شما با این تمرینی که خدمتتون دادیم اگر از پسش به خوبی بر بیاید خیلی قوی و قویتر هم میشید و این میتونه خبر خوشحالی برای ما داشته باشه اما شبکه های عصبی پیچشی یکی از سوپر معروف ترین شبکه های عصبی هستند که امروزه داره استفاده میشه در کجا در همه جا درسته که ظاهرش و ذات اولیه اش برای ایمیج کلاسیفیکیشن و دسته بندی تصاویر و عکس ها بود ولی این روزها با یه سری حقه که بهتون یاد میدیم به راحتی هرچه تمام‌تر تو حوزه های پردازش صوت با بهره گیری از اسپکتروگرام ها توی حوزه های پردازش متن توی شبیه سازی

توی دیتکت کردن وضعیت بدن آدما اون کاری که الان پارسا ریاضی توی جمع شما داره برای پایان‌نامه‌اش انجام میده و الی آخر با این شبکه‌های کانولو بتونید به خوبی انجام بدید و یک قدرت خیلی زیادی داشته باشید برای پیشبرد مطالبتون و اسم اینو می‌ذاریم سوت آغاز ورود ما به حوزه یادگیری عمیق خب این شبکه‌ها شبکه‌ها مثل شبکه‌های عصبی امlp شبکه های رو به جلو اند شبکه هایی هستند که ما توی کراس بهتون یاد دادیم از کلمه س استفاده میکردیم همیشه یه بخشی وجود داره که رو بخش بعدی سواره یعنی از قبلیه خروجی میگیره و به بعدی ورودی میده و این شبکه ها توی مد وانیلی ساده ش واقعا همینجوری هستند نحوه تعریفشون خیلی ساده است توی کراس و ما سعی میکنیم انشالله جلسه آینده یه نمونه کد براتون ران کنیم که اون کد هم سی ان ان رو به شما یاد میده هم میتونه کمک حالتون باشه توی باز بهبود تمرین سری اولتون

بیشتر با نگاه ورودی تصویر اینو بردن جلو من یه سوسکی کلمه شبه تصویرم جلوش گذاشتم می‌تونم همینجا بهتون تقلب برسونم مثلاً اسپکتروگرام‌ها یا همون کاری که تو پوزیتکشن یا مثلاً آنالیز حرکت آدما که به ظاهر هیچ ربطی به تصویر نداره میشه با یه حقه یه عکس ساخت و اون عکسو آنالیز کرد حالا چیزایی که بعضیاتون ممکنه باهاش آشنا باشید اگر هم نیستید نگران نباشید و با این با هم خواهیم دید ویژگی های جالبی وجود داره که قراره باهاش بحث کنیم من اینجا سورت کردم فقط دسته کردم که ببینید ولی در مورد هر کدومش میخویم خط به خط صحبت کنیم این که ارتباط دو بعدی یا چند بعدی مقادیر پیکسل ها با هم اتفاق میفته کاری که توی ام ال پی ها نبود و به عبارتی ارتباط وابستگی مقادیر پیکسل های مجاور از نظر مکانی کاملاً دیده میشه ها یعنی ویژگی های اسپیشال کاملاً برای ما مهمه در حالی که توی ام ال پی ما اینو میریختیم دور و اصلا ازش استفاده نمی‌کردیم تلاش

که تو این شبکه‌ها از سیستم‌های بینایی چشم پستانداران مثل انسان‌ها یا گربه الهام گرفته بشه و اون فیچر اکسترکشن اتفاق بیفته در نهایت کلاسیفیکیشن انجام بشه و فقط هم فکر نکنید قرار بود تصاویر و توی دو بعد انجام بشه شما قابلیت تعمیم دارید به کارگیریش توی ورودی هم با ابعاد پایین‌تر یعنی توی بردارهای تک بعدی و هم میتونید برید بالاتر و توی آنالیز ویدئوها حتی ازش استفاده بکنید و این خیلی ابزار ابزار قدرتمندیه روش رایجی که برای استخراج ویژگی استفاده میشه استخراج سلسله مراتبی هایرکه و عمدتا به منظور طبقه بندی از شبکه های سی ان ان استفاده میکنیم و یا ممکنه خروجی هاش آماده سازی کنیم برای شبکه های پیچیده تری که حالا بعضی هاش خارج از محدوده درسی ماست ولی بعضی هاشون ممکنه برسیم اشاره بکنیم ما ممکنه تو این اسلاید به خاطر عدم آشنایی عموم شماها با حوزه کامپیوتر ویژن و یه سری از این ادبیات موضوع

چند تا خاکی بزنم من ها و یه سری در حاشیه خواهیم داشت حاشیه اول اینه که خب چون ما قراره حالا با نگاه تصویر شروع کنیم به کار کردن اینه که بدونیم آقا اصلاً تصویر چیه یا کامپیوترها چیو می‌بینن بچه‌ها تصاویر همونطور که قبلاً هم خدمتتون گفتیم توی ام نیست عدد ها یا یه بیان دقیق‌تر ماتریسی از اعدادن و در حالت عادی درایهاشون به صورت تیپیک بین صفر تا ۲۵۵ می‌تونن ۲۵۶ مقدار صحیح رو به خودشون چیکار کنند بگیرند ها حالا این عکس ها میتونن یه بعد سوم داشته باشن اگه تو منطقه خاکستری رنگ باشن شبیه این عکس پایین سمت چپی که مشاهده میفرمایید بعد سومشون یکه یعنی ۱۲۸ درصد ۱۲۸ پیکسل وجود داره و به عبارتی یک ماتریس ۱۲۸ درصد ۱۲۸ن که میتونین عکس رو برای شما بسازه البته ورژن گری اسکیلش یا تکرار خاکستری شو و اگر رنگی باشه مثل این عکس که واقعا اینجا میبینید یا تلویزیوناتون یا صفحه مانیتورتون و چه میدونم

ال سی دی تبلت و موبایلتون اینا اینا علاوه بر اینکه یه سری ابعاد ایکس و وای تعداد پیکسل دارند یه ضربدر سه هم دارند که نمایانگر کانال‌های آر جی بی یا رد گرین و بلوئه ها که حالا در مورد این صحبت می‌کنیم بچه‌ها اون چیزی که ما می‌بینیم این عکس‌های این مدلیه یعنی یه شهود خیلی خوب داریم خیلی راحت می‌تونیم بگیم که چند تا آدم تو تصویر چند تا رباته چه اجسام دیگه‌ای هستن من اینو برای اینکه آگاهانه بخوام یه چیزی رو به شما نشون بدم اومدم کیفیت ۲۰ در ۲۰ پیکسل کشوندم بخاطر همین الان میبینید خیلی تار شده این الان این چیزی که شما ۲۰ در ۲۰ پیکسل رو میتونستید ببینید مثل موبایل های قدیمی بودن در حد پیکسل بودن اون چیزی که شما می‌بینید اینه اون چیزی که کامپیوتر میبینه اینه ها یه ماتریس ۲۰ در ۲۰ با یه سری عدد بین صفر تا ۲۵۵ و اینا رو رو هم انداختیم تا ببینید که شما چی می‌بینید اون چی میبینه شما به راحتی می‌تونید آدمو تو شناسایی کنید ولی اون باید با این عددا بیاد این آدمه رو شناسایی کنه و این حالا چالش ماجراست و

ببینیم چه جوری میشه قدرتو بهش داد که بره چیکار کنه در واقع با این عددا بره واقعا استخراج کنه یه آدم توش هست داره میخنده چند تا رباته ولی آخر اینم ماجرای آر جیبیه کلاً هر عکس رنگی برای کامپیوتر از سه تا کانال تشکیل شده کانال قرمز سبز و آبی که اینا رو رو هم میریزه و به شما چیو میده و به شما در واقع یه جوریه که شما اینو میبینید ها تمام تلویزیون رنگی موبایللاتونو الی آخر اینجور چیزا رو استفاده میکن البته توی صنایع چاپ اینا از الگوهای دیگه استفاده میشه چاپ های کاغذی اینا ممکنه اگه کسی آشنایی داشته باشید تو اون حوزه کلمات دیگه‌ای رو شنیده باشید یا رنگ های دیگه رو شنیده باشید مثل فیروزه‌ای و فلان و اینا که حالا ما کاری نداریم بهش این پس شد جاده خاکی اولمون خب تو حوزه کامپیوترژن بچه‌ها اگه بخوایم کلاسیک نگاه کنیم اینه که یه سری ماجراها میتونه اتفاق بیفته شما برای اینکه یه عکس بخواهید کلاسیفیکیشن کنید بگید این مثلاً آدمه یا مجسمه است یا نمیدونم سگ گربه است و الی آخر انواع چالش

زاویه‌های مختلف بگیرن همچنان همونه ها اگر تو نورهای مختلف شب روز تاریکی روشنایی بگیرن هنوز همونه شما شبکه‌تونو چیکار می‌کنید که مثلاً بفهمه این آدمه حالا چقدرش کوتاه باشه چه بلند باشه بتونه تشخیص بده ها یعنی یه سری اسکیل‌ها رو شناسایی کنه یه سری ماجرا پیچیده‌تر می‌شه مثلاً شما وقتی صندلی رو میرید بررسی می‌کنید می‌بینید که اوکی صندلی خودشون انواع مختلف دارن ها و اینجا باید واقعا اصطلاحا ببخشید به صورت عامیانه میگن گل بر سر گرفت که ما چه کنیم که کامپیوتر بتونه اینا رو بفهمه تازه بماند که اینا همه عدد براش یعنی یه ماتریسن شبیه این چیزی که اینجا دیدید ها و با اینا باید بفهمی که اینا صندلین اینا صندلی نیستن و الی آخر از قدیم الایام و دهه ها کسانی که تو حوزه کامپیوترژن داشتن فارغ التحصیل می‌شدن و مطالعه می‌کردن و پژوهش می‌کردن تو این حوزه دارن کار می‌کنن و بعضاً کار به جایی رسیده بوده که به صورت دستی میرفتن فیچر انتخاب می‌کردن سلکت میکردن پیدا می‌کردن که چی

که این کارا رو بکنه اما خوشبختانه ما باید خوشحال باشیم که شبکه عصبی به قدری رشد کردند که این فرایند بدون اینکه ما اصلا اطلاعات زیادی در مورد تصویر بخواهیم داشته باشیم یا ویدئو به ما این امکان را بدن که ما بتونیم چیکار کنیم ویدیوها رو حتی به شکل ساده یا تصاویر حتی به شکل ساده چیکار کنیم طبقه بندی کنیم توی جاده خاکی ۲ یا در حاشیه دو گفتیم که خب اوکی تصاویر اگه بخوان دسته بندی بشن قبلاً هم اشاره کردیم آیا میشه مجموعه ویژگی های سلسله مراتبی استخراج کرد ها و در ضمن از دستم خیلی استفاده نکرد مثلا برای اینکه یه آدمو بشناسیم خب قبلش بریم بگیم چشم و گوش و بینیش بشناسیم بعد خود چشم و گوش و بینی حالا خودشون یه سری انحنا و منحنیان بعد اونا خودشون از یه سری خط و پاره خط تشکیل شدن و هی سلسله مراتب بیایم سادش کنیم تا به عکس اولیه مون برسیم آیا راهی وجود دارد خب پاسخ اینجوری که من گفتم نباید خیر باشه و خب یه راهی باید براش پیدا کرد کلید واژه حلش اعمال یه سری فیلتر

مناسب با سه قصد مختلف اگه نمی‌دونید فیلتر چیه هیچ نگران نباشید ما در اسلایدهای بعدی جزئیات تمام در موردش صحبت می‌کنیم کلاً اینکه یه سری ویت و وزن در نظر بگیرید اسمشو فیلتر میذاریم با یه شکل و شمایل خاصی و میایم لوکال فیچرز ها را استخراج میکنیم از مناطق مختلف چیزهای مختلفی رو استخراج میکنیم بعد از تعداد بیش از یک فیلتر استفاده می‌کنیم تا بتونیم فیچرهای بیشتری رو در بیاریم و در نهایت چیکار میکنیم به شکل اسپشیال مکانی پارامترهاش با هم شیر میکنیم و در ضمن میتونیم اون کار خوبی انجام بدیم برای این راه با ما آشنا باشید اما ما نیاز داریم قبلش حداقل از نظر خود بنده که یه جاده خاکی سه هم بزنیم من اینو دلی نوشتم این بیشتر این دو سه تا اسلاید بعدی دل نوشته است و دوست دارم که بام همراه باشید نوشتم شبکه های عصبی چند لایه یا ام ال پی که ما یاد گرفتیم قبل عید یا ممکنه بلدم بوده باشینش از قدیم شروع خوبی بود برای حضور ما ورود ما به حوزه یادگیری

پردازش تصویر و حالا بعداً می‌بینیم پردازش صوت و فلان اما به نظرتون این شبکه‌ها چه مشکلاتی دارند یا بهتر بگیم چالش‌هاش چیه من دوست داشتم از خود شما استفاده کنم اما چون می‌ترسم وقت کم بیارم اجازه بدید خودم برم من اولین چیزی که نوشتم و از نظر خود شخص بنده است و ممکن هم درست نباشه فقط برای اینکه سوسکی یکم تعدیلش کنم از جمله مهمترین ها قبلش گذاشتم ولی واقعا از نظر بنده مهم‌ترینه اینه که شبکه های عصبی ام ال پی و البته تقریباً هر نوع دیگه‌ای از شبکه‌های عصبی حتی سی ان ان و اینا ما توش کنترل کاملی روی خروجی نیرون های میانی نداریم ما درسته که نیرون های آخرمون خوب جواب میداد اما هیچ تضمینی نبود که نرونای میانی بخوان چیزهای معنادار قابل تفسیر قابل درک برای ما ارائه بدن ها دلیل اصلیش هم از نظر من

این بوده که ما اصلا مسیر رسیدنشون به اون خروجی برای ما اصلا مهم نبوده اصلاً معنادار نبوده ما فقط برامون مهم بوده که برس به خروجی ها و طبیعتاً قابلیت تفسیر پذیریشون رو پایین می‌آورده به خصوص تو ام ال پی حتی از سی ان ان خیلی پایین تر خب و خروجی لایه مخفی یکی از مهمترین ابهامات کاربرانه و احتمالاً این اتفاق به این دلیل رخ میده که چی ما وقتی لاس رو تعریف می‌کردیم یا کاسپکشن فقط میومدیم برای چی نرون نهایی داده نهایی تعریف میکردیم میگفتیم وایتی که توی نیرون آخرت پیدا کردی بیا از وای واقعی کم کن به توان دو برسون سیگما روش بگیر اینو مینیمم کن دیگه ولی بهش نمیگفتیم نیرون های میانی چه اتفاقی براشون بیفته و این سبب میشد که اوضاع خیلی جالب نباشه حالا سوال های دیگه پیش میاد آیا شبکه های ام ال پی مسیر استخراج ویژگیشون کاملاً سلسله مراتبیه خب تا حدودی سلسله مراتبی هست که لایه می‌گیرن می‌دن به لایه بعدی ولی واقعا

تفسیر نیست لزوماً و یه سری اتفاقات عجیب غریب می‌تونه بیفته من می‌تونم یه مثال خیلی ساده براتون بزنم مثلاً فرض کنید بیایم توی اینجا براتون بنویسم فرض کنید یه شبکه عصبی طراحی کردید که عرض به خدمتتون یه لایه قبل آخرش سه تا نرون داره و لایه آخرش یه نرون مثلاً قرار بوده وای رو برای شما چی ایکس دو به علاوه دو ایکس به علاوه سه رو مثلاً برای شما تخمین بزنه فرض هم کنید بسیار خوب شبکه تو نوشتید و با دقت بسیار بالایی اینترپ هم دارید میکنید داره اینو میده سوال جدی اینه آیا این نیرونه داشته ایکس دو و این دو ایکس و این سه رو تولید میکرده با هم جمعش کنند پاسخ متاسفانه خیر خب ما خیلی شاید دوست داشتیم که این اتفاق بیفته تو ام ال پی دیگه واقعا از دست ما خارجه حالا تو سی ان ان اینا یه کارایی میکنیم تا حدودی با مارا بیان و به ساز ما برقصن مثلا ممکن بوده که چه میدونم این مثلاً ایکس دو به علاوه ایکس باشه اینجا به جای دو ایکس ایکس بده تازه این خوبه ها ممکن بوده این به علاوه تانژانت ایکس مثلاً با

E:\courses\LangChain Project\main root\data\SCR_Session08_transcript_part2.txt

منطقی نبوده بعد اینجا یه منهای تانژانت بوده باشه ها حالا منهای ضرابی که بعداً در دبلیو ضرب شده باید اینو بزنه و الی آخر و انواع اتفاقات دیگه‌ای که رقم بزنه یا اصلاً خروجی نرونه به درد نخوره مثلاً اینجا با سه جمع بزنه اصلا اینجا تاثیر نداشته باشه با یه دبلیو نزدیک به صفر بیاد اینا همه چالش های که توی ام ال پی ها وجود دارند شاید خود شما هم بتونید بهش اضافه کنید و اینا چیزایی بود که به ذهنم میخورد دغدغم بود دوست داشتم با شما به اشتراک بذارم دیگه شاید نمیدونم تا الان این کارو کردید یا نه من اون زمان که ایمیل تدریس میکردم آگاهانه اینو نگفتم آیا میشد به اون شبکه‌هایی که ما به شما گفتیم همزمان بیش از یک شیء رو در تصویر شناسایی کرد یا محل آنها را به ما بده ها من خاطرم نیست اسلاید شماره چند بود اگر بتونم سریع پیداش بکنم بریم اون سایتی که قبلا بازش کردیم در مورد شبکه های ام ال پی توی سایت تری بلو

خاطرم بیاد کدوم اسلایدم بود فکر می‌کنم قبل این بود حالا اگه بتونم سریع پیداش بکنم یه چیزی می‌خواستم بهتون نشون بدم که شاید شاید دقت کرده بودید شایدم نه یعنی شاید براتون مهم نبوده باشه یادم نیست کدوم اسلاید بود الان یه مقدار عجله دارم سخت‌تر می‌تونم پیداش بکنم اگر بچه دوستان بهش رسیدید بهم بگید من بیارمش امیدوارم بهش برسم خب اینکه یوتیوبش بود این بچه‌ها به این نگاه کنید اگه یادتون باشه ما اینجا اومدیم چی یه چیزی نوشتیم و به ما جواب داد من نمیدونم کسی

امتحان کرد یا نه مثلاً اگه یکی می‌نوشته ۳۱ و چک دیجیتو می‌زده آیا به شما سی و یکم می‌داده یا نه به من چندو داد داد صفر ها و این شبکه اصلاً قابلیت اینو نداره و نداشته که چی به شما بیاد دو تا رقم بده یعنی اینکه شما ۳۱ رو براش بنویسید اون به شما بگه هم ۳ رو دیدم هم یکو دیدم و کجا دیدم این یه مسئله جدائه ها و اینا همه چالش های که تا حالا باهاش روبرو بودیم و ممکنه بازم بشیم راه های دارند ما هر چقدرشو برسیم بهتون میگیم که چگونه کاری کنیم که اوکی تشخیص بدیم آیا میتونن خودشون خروجی تولید کنند یعنی من اگه بهش بگم یه سه بکش یه چهار بکش خودش میتونه شبکه های mp قادر نبودن و خب شبکه‌ها شبکه‌های گن بودن که این کارها را میکن و اینا و اینا تازه مشکلات عمومی شبکه ها بودن یعنی نه لزوما ام ال پی اما بیایم خود ام ال پی رو نگاه کنیم خود ام

جدا از مطالبی که ارائه دادیم در خیلی از مواقع نظیر پردازش تصویر ویدئو صوت متن و غیره ما میریم به سمت استفاده از شبکه‌های مدرنتری نظیر cnn و تهش حالا از ام ال پی استفاده می‌کنیم خب ولی چرا این کارو می‌کنیم اجازه بدید سه تا مثال براتون میزنم هر سه تا مثال گویا ساده است همه یک حرفو می‌زنن ممکنه بیانشون متفاوت باشه اجازه بدید من یه لحظه اینو بیارم بیرون که شما چیزو نبینید نوشته بره خب خدمتتون عارضم که مسئله اول اینه گفته اگر شما به یک شبکه ام ال پی اینو بدید و بهش بگید این گله آیا بعداً اینو بهش بدید میشناسه یا نه پاسخ بچه‌ها چیه از نظر

لزوماً نه لزوماً نه خب یعنی اینکه شبکه‌های mlp هیچ وقت نمی‌دونن در واقع اون گل‌هایی که بهشون دادید مکان اون گله هم براشون مهم بوده ما قبلاً هم بحث کردیم مکان گله براشون مهم بوده یکی از نقطه ضعفشونه و این نشون داده که توی عکس‌ها بعضا مکان پیکسل‌ها رو در نظر نمیگیرند لحاظ نمی‌کنن خب و شما اگر گل های سمت راست پایین تصویر رو نشونش نداده باشید شبکه تو لزوما نمیفهمه که این گله خدمتتون عارضم تو خیلی از مسائل کلاسیفیکیشن اینا برای ما یه گلن ها فرقی نداره حالا بالاخره یکی دوست داره اینو تو ربع یک سوم سمت چپ بندازه یکی سمت راست بندازه یکی دستش میلرزه فلان میشه ولی آدم ها به راحتی تشخیص میدن که این گل این درختمون ابره و فلان ها و خوب اولین اتفاقی که میفته اینه که شبکه های ام ال پی نمیدونن و چرا نمی‌دونن ما باید کاری کنیم که به جای اینکه کل این پیکسل ها رو بگیره اون پ

گل یاد بگیرم من این قرمزه رو این کادر قرمزه رو اگه یه جا دیدم این گل دیگه ها دیگه مهم نیست کجای تصویره پس این یکی از این چالش شبکه‌های ملپی که ما می‌خوایم بریم سمت سی ان ان اوکیه خدمت شما عرضم یه مثال دیگه اینه یه فایل صوتی به شما بدم فرض کنید که توش کلمه ولکام ازتون بپرسن گفته شده یا نه یه جمله است و معلومم نیست کجاشه ها خب ساده‌ترین اتفاقی که میفته اینه که شما یه مجموعه فایل صوتی داشته باشید و حالا با حقه اسپکتوگرام به عکس تبدیلش کنید یعنی به یک چیزی تبدیلش کنید که مجموعه از داده های زمانی و فرکانسی توش باشه و این عکس رو به عنوان ورودی به شبکه ام پی بدید کنید و برید انجام بدید ها یک راه بدیهیه یک راه حل بدیه اما آیا واقعاً می‌تونه اگر بالایی به عنوان ترینینگ بهش داده باشید که ولکام اینجا صوت گفته شده بود و یه ولکامی آخر صوت به شما بدن و بتونه درک کنه پاسخ لزوماً بله نیست اگر شما داده های

غنی داده باشید ولکام‌های مختلفی تو تمامی نقاط مختلف صوت بهش داده باشید و در واقع داده رو به اندازه کافی سیستم غنی کرده باشید ورودی‌ها رو حالا شاید بتونه بگه ولی در کلی نمیتونه پیداش بکنه و این دلیلش اینه که نمیتونه بفهمه که این ولکام اول با ولکام آخر فرقی نداره یعنی یک ویژگی حالا زمانی یا مکانی رو کلاً از بین ببره از ذهنش بره و این یه دلیل دیگه‌ایه که ما ام ال پی رو نمیتونیم به خوبی استفاده کنیم یا یه داستان ساده تر دیگه فرض کنید که شما ۱۰ تا خدمه دارید یه سری باکس وجود داره تو سطح شهر و شما به عنوان مدیر به خدمتون می‌خواید دستور بدید که برن این باکس ها رو برای شما جمع آوری کنن بیارن شما دو تا استراتژی دارید اولی میگید هی همه شما من برام مهم نیست و نمیدونم چهج هر طوری هست اون جعبه ها رو به دست من برسونید ها و اون ده تا هم که باید یه جوری برن بگردن یکیشون ۱۸ تا بیاره یکیشون یکی بیاره دو

بخوابند و الی آخر و کار انجام بشه ولی یه حالت دیگه اینه که بگی هی مرتضی تو برو اینور شهر یا علی تو برو اونور شهر من این کارو بکن خیلی هم مدیونید فکر کنید دارم در مورد مرتضی معماری و علی قدمی صحبت می‌کنم داشتم فکر می‌کردم چه اسم‌هایی بنویسم سال‌های دیگه هم به درد بخوره علی احتمالاً باشه ولی سوال های دیگه رو نمی‌دونم خدمت شما عارضم که و این این دو تا استراتژی که اینجا میبینید یعنی اون مدیر خشنه که میگه من برام مهم نیست و این که آدم ها رو وادار کنه برن از یه سری مناطق خاص یه سری چیزا رو جمع کنن و اگر این سمت راستی رو اسمشو ام ال پی بذارم من باید دنبال راهی باشم که این چی نظم سمت چپی رو داشته باشه و این حالا دلی که من میرم سمت شبکه های به نام کامرال نتورک ها خب فول کانکتد ها یا لایه هایس چالش های دارند و داشتن نیرون هاشون کاملا مستقل عمل میکن و هیچ اطلاعاتی از نظر مکانی شیر نمیک ها یعنی هیچقت نمی‌فهمن

که این کجای تصویر بود نرون اول برای خودش داره کار می‌کنه دومی برای خودش همه هم به همه بعدی‌ها وصلن و کلی تعداد چیز پارامترهای شبکه زیاده و به شدت میتونه رشد کنه و به سمت خیلی زیاد بره مثل این مثال ۴ که ما تو این تمرین به شما دادیم یعنی عکس‌های ۶۰۰ در ۴۰۰ شما تصور کنید که توی ام ال پی می‌خواید بندازید و چقدر میتونه متغیر به شما بده و ما خیلی برامون مهمه که شیفت این ورین باشه و حداقل براش مهم نباشه که فلان چیز کجای تصویره یا تو چه زمانی یا تو چه مکانی اتفاق افتاده و بتونه به ما بگه در ضمن یادمون باشه وقتی که تعداد پارامترهای یک شبکه خیلی خیلی خیلی زیاد میشه شما ممکنه اورfت کنید یا بیش برازش داشته باشید یعنی رو داده های ترینینگتون عالی عمل کنه ولی رو داده های تست تو کاملا مزخرف باشه پس چالش های اصلی با دو تا میشه عنوان خلاصش کرد یک هیچ

اطلاعات مکانیو تو خودشون ام ال پی ذخیره نمی‌کردند یا لحاظ نمی‌کردند و دو تعداد پارامترهای بسیار بسیار زیادی داشتند پس اجازه بدید ما از شکل سمت چپ که همه نیرون‌ها همه عکس‌ها را به صورت یک وکتور در می‌آوردیم خیلی برامون مهم نبود که کی بغل کیه کی راست و چپ کیه و بالا و پایین آدم اون نرون‌ها اون پیکسلا کیا هستن همه رو توی خط جا می‌دادیم و به نورون‌های بعدی وصلش می‌کردیم ولی اجازه بدید بریم به سمت اینکه چی از یه آرایه دو بعدی استفاده کنیم به جای یک بردار و مکان به مکان نگاه کنیم مثلاً بگیم شما که پهلو حمید برید سعی کنید فلان رو در بیارید فلانی یا شما نگاه کنید ببینم اینو پیدا می‌کنید یا نه و الی آخر و این حالا کلید واژه ما که ما به این میگیم لوکال کانکتیویتی و این دیگه میشه کلید واژه ما رویای ما اینه که تا حد امکان سیستم بینایی مصنوعی مون رو به سیستم های پستانداران یا آدم ها نزدیک بکنیم خب این

سیستم‌های انسان‌ها این ویژگی‌های جذاب رو داره نسبت به انتقال از انواع مختلف می‌تونه چی ربات باشه اگر چیزی جابجا بشه می‌تونه ربات باشه اگر چیزی بزرگ و کوچیک باشه چشم شما راحت متوجه میشه اگر یه چیزی دوران بکنه شما میفهمین و اگه چیزی نویزی هم باشن بعضا میفهمید تو نور نامناسب تر توی صدای خر و خش دار ولی آخر باز هم شما بعضاً متوجه خواهید شد تا حدی ها و کلید واژه ما اینه که از یه سری فیلترها استفاده کنیم فیلترهایی که کاملا مکان براشون مهمه یعنی چپ و راست و بالا و پایین آدما براشون مهمه و این فیلترها برن بگردن کل عکسو جارو بکنن به محضی که یه فیلتر مثلاً حرف آ رو بعضا تشخیص بده دیگه مهم نیست این آ رو تو چنته خودش داره و این آی اگه بعداً بره پایین یا یه جای دیگه هم قرار بگیره چیکار میکنه میره اون هم پیدا می‌کنه اما بچه‌ها اینجا رو به من جواب بدید شیفت این در واقع این وbلیتی یا عدم حساسیت به

انتقال ساده‌ترین چیزی که شبکه‌های سی‌ان‌ان به راحتی اینو جمعش می‌کنند اما دومی سومی و چهارمی چه پیشنهادهایی براش دارید حالا شبکه‌های ممکنه بعضیاتون بشناسید ممکنه بعضیاتون هیچ ایده ای نداشته باشید عادی باریکلا پارسا اولین چیزی که به ذهن می‌خوره آگمنتیشن ها داده ها را آگمنت کنیم و انواع داده ها را به ترینینگ تو ترینینگ اونجا بدیم و من انشالله تو کدی که حالا انشالله جلسه آینده براتون حل می‌کنم نشونتون میدم که چگونه میشه تو کراس هم یه سری داده رو کرد ممکنه به کارتون بیاد تو پروژه هاتون هم توی تمامتون الی آخر و این آگمنت کردن ها میتونه از مناظر مختلف اینکه نور رو دست بزنید یه مقدار روتیشن بدید بهش یه مقدار بزرگ و کوچک کنید ولی آخر کمک کنید که شبکه تو غنی تر باشه داده های بیشتری ببینه و انشالله تو تست بتونه چیکار کنه بهتر عمل کنه اما واقعیتش اینه که تنها راه نیست خب حالا میریم جلوتر یکی دو تا چیز دیگه میگم کاملا شانسی بعضی هاشون یه سری کارهای دیگه هم برای ما انجام میدن بچه‌ها ما می‌خوایم در

شبکه‌های cnn وارد بشیم و ورود بکنیم من یک دور معرفی می‌کنم لایه‌هاشو بعد میریم یکی یکی بازش می‌کنیم شبکه‌های سی‌ان یه همچین قرار قیافه‌هایی دارند و حالا می‌تونه حالت‌های مختلفی باشه ولی عموماً یه همچین قیافه‌هایی به خودش می‌گیرن ایناش سی ان ان ساده‌ترین حالتن یه عکس یا ویدئو یه چیزی ورودی می‌گیرن بعد میبینید یه سری مربع های تعداد کم ولی با ابعاد زیاد کشیده میشه بعد کوچکتر میشن بعد هی کوچکتر که میشن ولی تعدادشون بیشتر میشه و تهش هم با یه سری اف سی یا فول کانکتد ها بسته میشن و الی آخر این چیزی که ما داریم حالا عموماً لایه‌هاشونجورین یک لایه ورودی دارن که بهش اینپوت لیر این میتونه یک تصویر یا آرایه سه بعدی باشه دارای طول و عرض و عمق مثلاً اگر عکسون رنگی باشه خب یه طول و عرض داره که سایز طول و عرضستونه چند تا پیکسل طولی و عرضی دارید مثلا با موبایلتون یه عکس بگیرید آپلود کنید رو کامپیوترتون یه پروپرتیس ازش بگیرید ابعاد چند در چند بهتون میده ما چند در چند پیکسله و یه عمق هم داره که اگر عکسون گری اسکیل باشه یکه اگر رنگی باشه سه هستش ولی حالا خواهیم دید که این عمق

ما بعد از اون لایه‌های پیچش یا لایه کانولوشن رو داریم که چرا بهش میگن پیچش حالا میگیم و توشون خب هر نیرون بلوکی از پیکسل‌های نزدیک به همون میبینه واقعا ویژگی‌های مکانی رو لحاظ میکنه بعد از اینکه خروجی گرفتیم از لایه‌های پیچش یه تابع فعال سازی غیر خطی مثل دفعات قبل تو ام ال پی اعمال میکنیم عموما تابع خواهد بود تا بتونه رفتار غیر رفتار شبکه را غیر خطی کنه بعدش ممکنه ما از لایه های نمونه برداری یا پولینگ استفاده کنیم یک یا چند لایه ممکن هم نکنیم اندازه ویژگی ها کوچک میشه و این عکس ها میبینید هی میرن جلوتر میتونن کوچک و کوچکتر بشن شک بکنن و کار ما رو راحت تر بکنند و بعدش هم در نهایت از لایه های تمام متصل یا فول کانکتد یا همون دس خودمون که تو ام ال پی دیدیم در نهایت استفاده میکنیم برای چی دسته بندی و تا قبل از این لایه های بالایی تقریباً ویژگیشون فیچر اکسترکشن یعنی ویژگی استخراج میکن و لایه های فولی کانکتد عموم

کار دسته‌بندی رو برای شما انجام میده ما قبلاً یه همچین چیزی براتون گفته بودیم فرض کنید می‌خواید ببینید یه چیزی که به شما دادن قرمزه یا سبزه دو هست یا نه خب یکی از کارهایی که میتونستید بکنید اینه که چی از یه اصطلاحی من استفاده کردم کسی یادشه یا نه گفتم اینو رو اون بندازیم داد کنیم اگه از یه عددی بیشتر شد اون اصطلاح کسی یادشه چی بود گفتم چیکارش کنیم اینو در اون دات بکنیم معادل شابلون اندازی باریکلا گذاری بود گذاری بکنیم ببینیم آیا این چیزایی که بهمون میدن به این دو سیاهه نزدیکه یا نه میگه چیزش کن داتش کن حالا یا با یه بایاس جمع کن یا نه ببین از یه ترشولدی بالاتره یا نه و هر چی بالاتر بود حدس بزن که این دو مثلا این سبزه در واقع کلیلیشنش شده ۸۲ و خدمت شما عرض کنم یکی شده ۵۷ صدم پس این با اطمینان بیشتری میشه گفت این سبزه عدد دو خب ولی داستان اینه که این تو ریاضی یا تو حوزه سیگنال به همچین کارهای

کورولیشن ولی ما میایم تو حوزه‌های ایمیج پراسسینگ که میریم کلمه کانولوشن بعضاً براشون به کار میره اگرچه تو حوزه سیگنال‌ها یه چیز دیگه‌ایه یعنی لازمه که فیلیپ هم بشه در واقع اون سیگنالتون بعد در یه سیگنال دیگه ضرب بشه حالا توی زمان گسسته اینجوریه توی پیوسته یادتون باشه اون انتگرال های اف این تی در جی تی منهای دی تا و الی آخر و اینا بود و یه همچین اتفاقی میفته ما خیلی جزئیات کاری نداریم خب فرض کنید که مثلا میخویم ببینیم این عکس ایکسه خب این این عکس سمت راستی هم یه ایکس که دوران کرده میخویم شبکه بسازیم که ببینه این سمت راستی هم ایکسه خب کاری که میشه کرد اینه که ما یه سری فیچر یا ویژگی استخراج کنیم مثلا بگیم آقا هر ایکس صرف نظر از اینکه حالا صاف باشه یا دوران کرده باشه احتمالا یه همچین بخش وسطی داره بخش نارنجی رنگ که قطر اصلیش سفید روشنن مثلا یک اند یا

۵۵ مثلاً چهار تا خونه فلانش صفرن یا نزدیک به صفرن یا میتونه تو گوشه‌هاش مثلاً این بخش سفید سفید سیاه سیاه اینجوری دورش سبزه رو داشته باشه یا بنفشه رو داشته باشه آخر و اینا هی معادل‌هایی باشند که توی همه عکس‌ها بشه پیداشون کرد خب من به این مربع‌هایی که الان دارم شابلون میزارم ولی این دفعه رو کل کل عکس نیست اگه بیارمشون بیرون و برای خودم اینا رو عدد گذاری بکنم میتونم به اینا بگم یه فیلتر بچه‌ها این یک اصطلاح رایج عمومی در کامپیوتر ویژن هیچ ربطی هم به سی ان ان نداره یعنی شما اگر بینایی ماشین گذرونده باشید با این آشنایید و اگر نگذرونده باشید ممکنه اصلا هم به گوشتون نخورده باشه حالا در حد سادش بهتون میگم اینا چیکار دارن می‌کنن خب و اینجوریه که این فیلترها یه ویژگی جالب دارند به محضی که میفتن روی شابلون روی چیزی که خیلی شبیه خودشونه وقتی دات میشن یعنی تک تک یا متناظر دارم ضرب میشن با همدیگه جمع میشن مقدارشون میره بالا ها

حاصل مقدار داتشون میره بالا و این نشون میده که این تیکه این تیکه مثلاً اگه من یه فیلتری گذاشتم روی این عکس مدام لغزوندمش و رفت جاهای مختلف جایی که رسید و یه دفعه مقدارش زیاد شد میگم آها این احتمالاً اونجا شبیه خودش در اومده درسته و برای اینکه این کارو بکنید این فرایندی که تک تک درایه‌های یک فیلتر رو در تک تک درایه‌های متناظرش از یه عکس ضرب بکنند و بعدش در نهایت با همدیگه جمع بکنن میگن چی میگن اپراتور کامولوشن ها یا اپراتور پیچش همین به این دلیل ما به این شبکه میگیم شبکه‌هایی که می‌خوایم استفاده کنیم میگیم کامولوشن نتورک چون از این اپراتور میخویم زیاد استفاده کنیم یه مثال خیلی ساده بزنیم تا کاملاً دید داشته باشید فرض ما بر اینه که هیچ آشناییت هیچ کدومتون با چی حوزه تصویر ندارید ما گفتیم عکس چیه گفتیم عکس خدمتتون عارضم که یه ماتریس ها یه ماتریس فرض کنید یه عکسی

که تو واقعیت آنچه ما می‌بینیم اینه بالاش کامل سفیده نصف بالاش نصف پایینش کامل مشکیه ها این یعنی چی یعنی که بالاییاش همه ۲۵۵ تا این خط قرمزه که دیگه وسطه و پایینیاش همه صفره درسته یعنی تاریک‌ترین حالت ممکن این چیزیه که کامپیوتر می‌بینه حالا من از شما می‌خوام یه فیلتر بردارید یه فیلتر در واقع دو در یک مقدارش هم باشه یک منفی یک ها حالا خیلی وقتا این اتفاق میفته که جمع درایه‌های فیلترها صفر میشه خب ولی نشددم مهم نیست یعنی اینجوری نیست که حالا محدوده به این باشه دیگه ساده ترین فیلتری که میشه بذارم میگه این فیلتر رو بیا از اینجا شروع کن گذاشتن و هی در زیر پای هاش دات بکن با همدیگه جمع بکن و اینو بلغزون بره تا آخر بعد که تموم شد بیا برو ردیف بعدی

تا آخر و و الی آخر این کارو بکن بچه‌ها به نظرتون خروجیاش چی میشه خب وقتی ما تو بالاترین نقطه ممکن هستیم یعنی نقطه‌ای که اینجا هستم معادلش چند بدست میاد چند به دست میاد برام بنویسید الان اینجا ۲۵۵ اینجام ۲۵۵ بعد فیلتره یکیش یکیش منفی یک یعنی باید شما یک در ۲۵۵ منفی کنید با همدیگه جمع کنید چند میشه میشه صفر ردیف بالا صفر صفر صفر صفر ردیف های پایین بچه ها چند میشن اینجا که صفر بودن یعنی زمانی که فیلتر هم رفته لغزیده یه دور اینجوری رفته و هی حالا البته اینجوری نه ها این موجی بره یعنی هی بره تا ته دوباره برگرده از اول تا ته بره باز چند میشه باز صفر میشه اما یه اتفاق جالبی که میفته زمانی که میرسه به این مرز قرمزه به نظرتون چند میشه یعنی فیلتر بیفته رو نقطه که الان سبز رنگ گذاشتم یعنی بالاش ۲۵

۵ پایینش صفره حالا چند میشه حالا میشه ۲۵۵ یه اتفاق عجیب غریب افتاد بعد از اینکه شما این فیلتر رو روش سر دادید تا آخر رفت عکستون به یه عکس جدید تبدیل شد کل درایه‌هاش صفر شده یه ردیفش فقط ۲۵۵ اینو اگه ویژوالایز بکنیم یعنی چی شده بچه‌ها اگه من برای خودم ببینم یعنی من چی میبینم از این عکسه این عکس اینجوری بود که من بالاشو سفید می‌دیدم نسبت پایینشو سیاه می‌دیدم این عکسه چی میبینم برام بنویسید وسط سفید بقیه جاها کاملاً سیاه باریکلا وسط سفید حالا من البته بنفش میکشم الان و چی بقیه جاها کامل کامل برام سیاه میشه این تو زبان کامپیوتر ویژن ها یا دید کامپیوتری یا کسایی که پرده تصویر کار میکن میگه شما یه فیلتر استفاده کردید رفتید این خط

افقی رو برام پیدا کردید یعنی کاری کردید که به جز اون خطه هیچی نمونه حالا این فیلتر خطای افقی رو پیدا می‌کرد طبیعتاً می‌تونید حدس بزنید اگه اینو می‌خوابوندینش جای یک و منفی یک افقیش می‌کردید می‌رفت براتون خطای عمودی رو پیدا میکرد فیلترها رو اگر ابعادشو بیشتر کنید باز ممکنه بره خطای افقی و این دفعه حالا با مثلاً نویز های کمتر نسبت به نویز حساس باشه مثلا یه بدی که یک منفی یک تکیه داره اینه که چی یه مثلا دستتون خورده باشه یه خط کشیده شده باشه یه جایی بعد میره سریع بالاشو نگاه میکنه پایینشو نگاه میکنه میگه یکیش فلانه بعد سریع میگه نه من اونجا خط دیدم در حالی که مثلاً حالا یه لحظه یه اتفاقی افتاده بوده پشه خرابکاری کرده بوده ولی آخر ولی وقتی که تا ابعاد فیلترتون رو بالاتر میبرید رو بازتر میشه و بسیار هم متداول که فیلترهایی که میشناسین یا باهاش مواجه میشیم سه در سه باشن و الی آخر و این سعی کردم به بیان خیلی خیلی ساده بهتون بگم که فیلترها چیکار میکنه و هدف ما اینه که بعدا این ضرب های داخلی

انجام بدیم و هرجا عددا زیاد شد اولاً فیلترهای مناسب پیدا بکنیم که شبکه ترند بشه برامون خودش پیدا کنه بگه تو این عکسه مثلاً سگ گربه نمیدونم انسان الاغ و و چه چیزهایی مهمند که من بتونم با اینا یا با مجموعه‌ای از اینا بفهمم این سگ این گربه است این فلانه و حالا محاسباتشم در موردش صحبت می‌کنیم بچه‌ها به اینکه یک فیلتر که اینجا ۳ درصد با نارنجی نشون داده شده از بالا شروع بکنید یکی یکی سورش بدید و دات کنید درایه هاش در زیر پایه هاش و با همدیگه جمع بکنید و یه عدد بشه و توی نرون دیگه توی عکس جدیدی بذارید به این فرایند کلا میگن کانولوشن ها یعنی بخاطر اینه که ما این کار میخویم بارها و بارها انجام بدیم و خاطر این به این شبکه‌ها می‌گن شبکه‌های کانولوشننی پس این کاری که ما داریم فیلتر و سر میدیم در واقع اپراتور اپراتور کانولوشن داریم اجرا میکنیم و به ازای هر از این نه تا خونه آبیه

که در زیر پایش داد میشه یه خونه سبز رنگ داره به وجود میاد اولین اتفاقی که افتاده اینه که به نظر میاد با این شرایطی که دارم میرم جلو عکس سبز رنگ یا عکسی که داره تولید میشه از عکس آبی رنگ ابعادش چیه کمتر یا بیشتره یا مساوی کمتره باریکلا یعنی اینکه اگه عکس اولی هم هفت در هفت بوده الان میبینم که عکس ثانوی هم تو این شرایط شده ۵ در ۵ و این چیزی که حالا می‌خوایم در موردش صحبت کنیم و شما خودتون باید بگید که اگر کل یا فیلترهامون چند در چند باشن عکسمون چی میشه بچه‌ها به فیلترها هست یا کل میگن و این فرایند هم گفتیم بهش میگیم کلا فرایند کامولوشن و به این فیلترها فیلترها کانولوشن میگن که میتونه عکس رو اسکن میکنه با یه فیلتر و بعدش هم چیکار میکنه جمع میزنه زیر پاشو البته میتونه یه بایاس هم داشته باشه یعنی میتونه یه تک عدد هم داشته باشه که با اون جمع بشه و در نهایت اون عددی که با بایاس جمع شده تو این خونه ها بشینه که

اپراتور کانولوشن ساده رو با هم مرور کنیم فرض کنید فیلتر یک صفر یک۰۱۰ فلان داشته باشیم روی صفحه سبز رنگ انداختیم از این درایه بزرگتر یعنی با وجود نارنجی شدن همون مال صفحه سبز رنگه و یک بار اول اینجا قرار داره حاصلشو بدست میارید یک ضرب در یک باید بشه صفر ضربدر یک بشه یک ضربدر یک بشه صفر ضربدر صفر یک ضربدر یک فلان فلان بعد با هم جمع میشن حاصل شده چهار هرچی بیشتر بشه این عدد این ته تهش دیگه نه میشه دیگه درسته مثلا اگه میخواست بشه حالا اگر یک و منفی یک بود الان که دیگه صفره خب دیگه ته تهش میشه شش هر چی بیشتر بشه یعنی فیلتری که روش انداختید به این منطقه از لحاظ ظاهری شبیه تره فاز بعدی اینه که یه دونه سورش بدید سمت راست و یه بار دیگه انجام بدید سه بدست میاد یه بار دیگه و این اپراتور کانولوشن رو دارید حالا هررک ممکنه با یه نمادی نشون بده و کامت میکنید میرید هی میرید ادامه میدید میرید میرید و در نهایت چی یه ماتریس سه در سه بدست میارید و میتونید حالا حدس بزنید که

جاهای تصویر واقعیتون به این شابلونه شبیه بوده در ضمن چیزی که وجود داره اینه که هر تک نیرون الان ها ما شکل اولیه‌مون ۵ در ۵ بود ولی الان شکلم چیه سه در سه شده خب بایاس چیزه احسان جمع میشه فقط بایاس جمع میشه این عددی که به دست آوردیم چهار مثلا اگه بایاس سه بود چهار و سه هفت می‌نویسیم حالا بعداً لازمش داریم دیگه توی چیز توی توابع فعال سازی خب خدمت شما عارضم که پس اول این ۹ تا کاموا میکنید یه عدد میشه و اون بایست جمع جبری میزنیم اوکی خدمتتون عارضم که چیزی که الان میشه نشون داد اینه که بچه ها این چهاره این چها که الان الان یک تک عدد برام بدست اومد حاصل دیدن چند تا نیرون از لایه قبلیش بود یعنی خودش یه نیرون شد ولی چند تا نیرون دیده بود که این چهاره رو بهمون داد نه تا نرون

باریکلا ۹ تا رو دیده بود اینو بهمون داد که به این اصطلاح میگیم رسپتی فیلد ها اینکه میدان دیدش چقدر بوده خب و البته لوکالی هم دیده یعنی اینا واقعاً نقطه بغل هم بودن و همینطور می‌تونه این اتفاق برای سایر یعنی شما برید حساب بکنید که این چاره داشته حالا به کدوم ۹ تا نگاه می‌کرده که میشه به این ۹ تای وسطی که موس من داره روش میره خب و اینجوری می‌تونیم انجام بدیم بچه‌ها من یه کاری کردم باز دوباره تو فیلترها براتون مثال زدم وقتی که یک فیلتر رو کامت میکنید و میرید تا آخر یه چیزی به دست میارید به اون شکلی که به دست اومده اون تصویری که به دست اومده بهش میگن فیچر مپ مثلاً این کارو کردم عکس حالا خودمو گرفتم حالا یه مقدار البته پیکسللاشو تعدادشو کم کردم اول در این فیلتر این با این فیلتر کامپ کردم اینجوری شده یعنی یه جاهایش سفید شده یه جاهایش مشکی شده خدمتتون عارضم با این فیلتره که زدم اصلاً اسم فیلتره هست اچdteکشن حالا بع چیز بخونید ماشینویژن بردارید یا خودتون برای خودتون

نگاه کنید چه اتفاقی افتاده این عکس این عکس دومی که موس من روشه یکی برام بنویسه چی توش اتفاق افتاده یه اتفاقی توش افتاده یه چیزایی موندن یه چیزایی رفتن چیزایی که موندن چی اند اونایی که رفتن مشکی شدن دیگه اونایی که موندن هم طبیعتاً سفیدن لبه‌ها موندن فرشاد باریکلا لبه‌ها یا اجها موندن اینا کلمه تخصصشونه کلمه عادی ش که مرزها یا در واقع پاره خط های که حالا بین دو تا جسم بودن باقی موندن بقیه رفتن این اچ دیتکشن بوده خب یه ماتریس دیگه هست که مثلاً رفته استرانگ اجشن کرده بچه‌ها کسی حدس میزنه این چه اتفاقی توش افتاده تو این عکس آخری سمت راستی بچه‌ها تو خط تو شکل قبلیش تو شکل سومی از سمت چپ

اتفاقی که افتاده بود هم مرزهای در واقع افقی باقی مونده بودن هم مرزات قائم یعنی مرزهای تلفیقی هم حتی باقی مونده بود ولی اینجا چیزی که شما می‌بینید اینکه من فیلتر رو جوری طراحی کردم که بیشتر بره مرزهای افقی و تشخیص بده و حالا قوی حالا اینکه باید این قوی هم در واقع باید محاسبه بشه اونجا ببینم چقدر اختلاف داره و خب اون تعیین کننده است واقعا این مقادیری که اینجا داده شدن تعیین کننده بچه‌ها کدش هم اینجا براتون گذاشتم فقط طبیعتاً اینجا که مثلاً من نوشتم چه میدونم از ایمیج آنلاین ای آر مثلاً چیزه شما این عکس رو باید قبلش براش تعریف کنید یعنی اینو تغییر بدید اینم کدیه که میتونید بزنید برای اینکه کل های مختلف اینجا تعریف بکنید یه ماتریس سه در سه یا حالا مثلاً هر چند در چندی و چیکار کنید و همینجوری تمرین کنید اصلا ببینید چهه من اینجا یه پرانتز باز کنم تو انانسمنت ها یادم رفت بهتون بگم من به بهانه در واقع حالا کارهایی که ما تو حوزه پرش تصویر ممکنه بکنیم یا بربخوریم یا اینکه عکسامونو یعنی شبه عکس

حرکت آدما شبه عکس بسازیم من خودم یه جلسه آموزش اپن سیوی براتون خواهم داشت ولی چون نمی‌رسیم فیلمشو براتون ارسال می‌کنم و تو cw بارگذاری می‌کنم دیگه یه نیم ساعت ۴۵ دقیقه یک ساعتی در مورد اوپن سیبی صحبت می‌کنیم براتون که الفباشو یاد بگیرید یکی از فوق خفن ترین لایبراری های حوزه پرش تصویر دنیاست و همه میرن از اون استفاده می‌کنن خیلی از چیزایی که شما دنبالش هستید تو اوپن سی با یه خط کد آماده است یعنی اینکه مثلاً شما بهش بگید عکسو برام قرمز شد جدا کن آبی شد جدا کن نمی‌دونم تارش کن سر و تهشو بزن روتیشن بزن همه اینایی که دارم میگم همه یه خط یه خطه با یه دستور همه رو زدن توابعش اصلا نیازی نیست شما فور ای هم خیلی بنویسید و الی آخر خب حالا بریم سر کارمون اوکی ما یاد گرفتیم که اگر یه فیلتری رو بلغزونیم روی عکسی و تا آخر بریم سورش بدیم به این عمل میگیم کانولوشن کاری که ما میخویم تو شبکه های کانولوشن انجام بدیم اینه ما می‌خوایم یه سری فیلتر حالا یا تعریف

E:\courses\LangChain Project\main root\data\SCR_Session08_transcript_part3.txt

کنیم فعلاً فرض کنید مقادیرشو داریم ولی بعداً به خود شبکه میگیم تو برو یاد بگیر که باید درایه‌هات چند باشند و سورش بدیم رو این در واقع تصاویرمون تا یه چیز جدیدی بهمون بده حالا می‌خوایم در مورد اینا صحبت بکنیم خب فرض کنید که عکس اولتون ۳۲ در ۳۲ در سه بوده بچه‌ها من به این ابعاد میگم طول و عرض عکس به اون ۳۲ در ۳۲ همون چیزایی که شما میبینید و اگر به اون در واقع سه میگم عمق عکس یعنی اگر عکسون رنگی باشه شما سه تا کانال آر جی و بی دارید که وقتی در قالب سه تا عکس سیاه و سفید بهش بدید خاکستری بهش بدید اون که دیگه نمیفهمه کدوم قرمز کدوم آبیه میگه اوکی من سه تا لایه عکس سه تا لایه ماتریس ۳۲ در ۳۲ دارم که به هم چسدم و یه حجم ۳۲ در ۳۲ در سه به وجود آوردم اولین اتفاقی که میفته توی شبکه های کانولوشن اینه که شما باید فیلترهایی تعریف بکنید که سایز طولی و عرضیش دست شماست طبیعتاً هم باید کوچکتر مساوی طول

اصلی باشه ولی سایز عمقش به هیچ عنوان دست شما نیست و دقیقاً باید سایز عمقش همونی باشه که ورودیتونه اینجا ۳ اینم باید ۳ باشه اگه عکستون گری اسکیل خاکستری بود بهش داده بودید اینجا ۳۲ در ۳۲ در یک بهش داده بودید اینجا هم حتماً باید فیلترتون پنج در پنج در یک میبود این تازه یه دونه فیلتره ها ابعاد طولی و عرضی دست شماست ولی عموماً فرد انتخاب میشه که نقطه وسط داشته باشه در ضمن عموماً ابعاد طول و عرض فیلترها با هم برابر قرار یعنی انتخاب میشن مثلاً ۵ در ۵ میگیرن ولی معنیش این نیست حالا پنج در شش گرفتی ۵ در هفت گرفتید غلط باشه بازم کارتون ممکنه راه بیفته حتی ممکنه بهتر هم راه بیفته ولی متداول نیست خب پس این دو تا کلید واژن هم لحاظ بکنید دیگه حالا ما می‌خوایم اینو سرش بدیم خب و چیزی که مشخصه اینه که می‌خوایم عمل کامولوشن هم انجام بدیم یادمون باشه این اتفاق افتاده من می‌خوام تاکید کنم دیگه خیالم راحت باشه که اینو فهمیدین ها خب

عکس اولیم ۳۲ در ۳۲ در ۳ بوده یعنی اگه میخواستم ماتریسشو بنویسم ۳۲ در ۳۲ در سه درایه داشتم خب که سه تا لایه ۳۲ در ۳۲ ای داشتم خب فیلتری که تعریف کردم چی بود گفتم پنج در ۵ در ۳ است اجازه بدید ۵ در ۵ موازی خود این برادر بکشم سه هم عمقشو من تحمیل شده بهم که باید چیکار کنم با سه این برابر بزارم این دست من نیست خب اینا قراره توش خونه هاش قراره وزن های من قرار بگیرند خب و وزن های من قرار بگیرند که گفتم یا فرض میکنیم الان داریم ولی بعداً شبکه باید یادش بگیره طبیعتاً من چند تا درایه اینجا مجهول دارم برام بنویسید بچه ها چند تا درای وزن مجهول دارم می‌خوام همینجا بهم بگید چند تا مجهول هم داریم خب چون بعدا باهاش کار داریم آره پنج نه چرا ۱۲۵ تا رامت

۵ ضربدر ۵ ضربدر ۳۷۵ تا درایه خود این حجمه داره یه دونه بایاس سوسکی براش در نظر بگیریم کلا یه با یکم جمع میشه میشه ۷۶ تا حالا بعضیام هستن تو محاسباتشون اینو نمی‌نویسن با یاسر فقط می‌خوان تند تند ضرب کنن برن ۷۶ تا پارامتر داره خب ۷۶ تا پارامتر داره که شما باید لحاظ کنید حالا چه‌جوری کانوال می‌کنید اینو عین شابلون میندازید روش کل عمقشو که میگیره هیچی اینجا رو میگیره تمام این ۷۵ تا عدد رو در ۷۵ تا عدد ناظرش ضرب می‌کنید با همدیگه جمع می‌کنید یعنی رسماً دات میکنید ها که تو حوزه سیگنال بهش میگن کورلیشنش دارید میگیرید چیزا بهش میگن کانولوشنش دارید میگیرید ماشین ماشین ویژنی ها خب شما کانولوشن اینو دارید میگیرید یه عدد میشه خب امید خدا یه عدد شد بعد میاید حالا یکی دیگه یه دونه شیفتش میدید اینورتر حالا اینکه چرا یه دونه باید میرم بهتون میگم میتونه یک

ولی فعلاً فرض کن یه دونه شیفتش میدی اونورتر باز دوباره این ۷۵ ضرب می‌کنیم با این بایسته جمعش می‌کنید میشه حالا بعدی اوکی میرید تا آخر میرید بعد حالا یه دونه میارینش پایین و باز دوباره تا آخر می‌رید انقدی میرید که برسید به چی آخرین نقطه مورد نظر و به ازای هر کدوم از اینا بعد از اینکه اون ۷۵ تا عدد در هم ضرب کردید متناظر با هم جمع کردید یه تک عدد تک عدد جمع کردید یه سری تک عدد بهتون میده در نهایت به شما یه سری ابعاد می‌ده بچه‌ها حالا فعلاً کاری نداریم که طول و عرض این چنده عمق این بچه‌ها چنده اینه که خدمتتون گفتم یک باریکلا چیزی که بهم میده یه صفحه است یه ماتریس یه چیزی در یه چیزی در یکه دیگه داخل نداره مثل این س نیست این تازه یه دونه فیلتر بود خب ممکنه فیلتر اول مثلاً قرار باشه مثلاً شما چشمتون رو میخوید دیتکت کنید مثلاً یه فیلتر می‌خواید که اینو براتون شناسایی کنه بعضا یه فیلتر می‌خواید

بشناسه یه فیلتر می‌خوای گردالی داخل چشم رو بشناسه ها پس شما به تعداد بیشتری فیلتر احتیاج دارید یه فیلتر دو دیگه می‌گیرید باز با همین سایز ۵ در ۵ درس ولی این دفعه دیگه شماره ۲ درایه‌هاش یا همون ۷۶ تا پارامترشم کاملاً متفاوتن ها و یه بار دیگه اینو کانوا میکنید این به شما چی میده باز دوباره یه فیچر مپ دیگه میده درسته بازی عمقش چنده اینم عمقش یکه از لحاظ ابعادی هم طول و عرضش با اون یکیه حالا می‌خوایم حساب بکنیم چنده حساب بکنید تا دور نشدیم فرض کنید که ما یه پنج در پنج داریم یا حتی چهار در چهار ساده تر میشه ۱ ۲ ۳ ۴ ۵ در پنج کشیدم دیگه یه فیلتر سه در سه داریم عمقش هم فعلا فرض کنید یکه من اگه اینو کامولوشن کنم روش از اول تا آخر برم خروجیش چند در چند میشه برام حساب بکنید به بگید اولیش اینجا میفته بعد اینجا بعد اینجا چند در چند

بچه‌ها میگن سه درسه قبول دارید یا نه اگر یه دونه یه دونه سرش بدم سایر دوستانی که ننوشتن سه درسه قبوله به نظرتون یعنی اینکه من یه بار این قرمزه رو بندازم رو این یه درایه میشه یه دونه میاد بغل یه درایه میشه یه دونه میاد ته دیگه میره ردیف پایین و و اوکی این درسته حالا چه‌جوری به دست میاد میگه اگر سایز در واقع ابعادتون دبلیو باشه خب یا اچ باشه یا حالا هر کدوم که whمون عموماً یکی می‌گیریم خب ما به ابعاد میگیم دبلیو مثلاً در اچ به این عمق هم میگیم دپس خب دبلیو در اچ در یک اینجا هم چی سه در سه* یک من به این سه هم بگم اف بزرگ که باز اف در اف باشه نمیگم اف یک در اف دو ما گفتیم اینو یکی بگیریم خب این شده بوده چی

سه درسه قبول دارید که در واقع دبلیو رو اول باید منهای اف بکنم خب یعنی باید ببینم چند تا شد نمیتونه بخوره بعد حالا خود این کامله یا نه یا یه بعلاوه منهای چیزی میخواد میشه پنج منهای سه میشه ۲ ولی من چند بار سر خوردم یه بعلاوه یک هم بکنم عالیه باریکلا یه بعلاوه یک هم بکنم این چی میشه به من اینو یارو رو میده درسته حالا این جزئیات داره اگر شما به جای یکی بیشتر از یکی یکی می‌پریدید یه چیزی اینجا اضافه میشد به نام استرایت که میخویم در موردش صحبت کنیم و اگر هم پدینگ اضافه کنید که باز میخویم صحبت کنیم این فرمولتون در نهایت به این تغییر میکنه دبلیو منهای f+ دو پی تقسیم بر اس+وه یک این میشه ابعاد حالا اچ دو یا وس دو فیچر مپتون ها که اینو دیگه گمون کنم الان همه یاد گرفتید حالا تازه این میشه این عمقش هم چنده

حالا اگه دو تا فیلتر گذاشتید میشه یه دونه h۲ در دبلیو ۲ اینجا دارم یه دونه h۲ اینجا دارم درسته و اگه سه تا گذاشتید سه تا ۴ تا ۵ تا ۳۰ تا گذاشتید ۳۰ تا میگه لای کانولوشن میگه آقا اینا رو حساب کردی اینا رو همه رو بزن تنگ هم ها که به یه عکس جدید برسی البته این عکسه خیلی قابلیت نمایش نداره مثل اون قبلیه نیست که بگیم آقا کانال اولش نماد رد و گرین و بلو برو یه عکس بهم نشون بده این میگه مثلاً اگه ۳۲ تا داریم من ۳۲ تا عکس پشت سر هم به هم چسدم استک کردم یا در قالب اسلایس های مختلف به هم چسدم اینجا تعداد فیلتررام که من با کا نشونش میدم با کا بزرگ و دبلیو دو هم و اچ دو مون چیزایی بود که از این فرموله بدست آوردیم و خودتون کمک کردید خب یعنی فعلا دبلیو منهای اف به علاوه یک بود حالا ما s و پی هم تعریف میکنیم که اینجوری نقش نقش آفرینی کنن من کل حرفو زدم خب لایه کانولوشن اینجوری عمل میکن اینه که فیلتر

میرن روش سر میخورن به ازای هر کدوم یه عدد میدن یه بار دیگه میگم ببین ممکنه این قاطی نکنیدا این فیلتره این عکسه عمقش ۳ بود فیلترم عمقش ۳ بود نه فکر کنید فقط اولی این در اولین ضرب میشه یه جا می‌شینه دومی در دومی نه اولی در اولیش که داد شد هیچی دومی در دومش داد میشه اینا عددن با هم جمع میشن یعنی شما باید عمق سوراخ کنید همیشه یعنی با این فیلتره کلاً باید کل این آبیه رو میندازید روی این آبی پررنگی یه عدد تک عدد باید بدید بیرون همین انشالله که گرفتیم بچه یکی بنویسه گرفتیم که من خیالم راحت بشه چون دارم خودمو تیکه تیکه می‌کنم که این تیکشو درست بهتون بگم خدمتتون عارضم که یه مبحث دیگه باز کردیم گفتیم رسپتی فیلد یا اندازه فیلتر موقع تلفیق کردن فیلترها نه آها موقع ترکیب کردن ترتیب فیلترها مهمه تو کدتون بله دیگه برای کامپیوتر نه اونقدر چون

اگه شما بدونید که کدوم فیلتر رو دارید تو کجا می‌ذارید در کل نه مثل این میمونه که تو وزن‌های شبکه عادیتون شبکه‌های عصبی عادیتون شما مثلاً با من نرون دوم سوم جاشو عوض کنید مادامی که به همدیگه اطلاع بدیم اوکیه درسته پس چیز مهمی نیست به خصوص اینکه شما دبلیوها رو تعیین نمی‌کنید می‌ذارید w خودش تعیین بشود اوکیه مرتضی گرفتی خب در عمق چه‌جوری دات میکنیم هیچی تمام تک تک نقطه های متنناظر رو در هم ضرب کن همه رو با هم جمع کن حله مثلاً الان ۷۵ تا عدد بود ۷۵ تا نقطه بود ۷۵ تا ضرب دو به دو داری ۷۵ تا عدد تکی با همدیگه جمع می‌زنی تازه با یه بایاس هم جمع می‌زنی عدد ۷۶ اون میشه یه عدد اینو میدی تازه نفر بعدی میگه بغلی بگیر چیکارش کنم بده بغلی خب خدمت شما عارضم که اگرکستون ۳۲ در ۳۲ در سه باشه چاره‌ای ندارید که هر کدوم از تک فیلترهاتون

ولی می‌تونید مثلاً ۱۰۰ تا از اینا داشته باشید پس فیلترها بچه‌ها ابعادشون اگه می‌خواستید تو بردار یا ماتریس یا الی آخر تو تانسورا بنویسید چند بعدی هستند فیلترها کلشون با هم کل فیلترها رو می‌خوام باهم بهتون نمایش بدم باید چند بعد به شما نمایش بدم برنامه بنویسید الان یه دونش سه بعدیه شاید صدامون قطعه آره بچه‌ها صدامو دارین چهار بعدی باریکلا محمد چهار بعدی دیگه فیلترها رو بخوام شکل نمایش شکیل داشته باشم چهار بعدی میگم ۶۴ تا ۵ در ۵ درس دارم ها گفتم دیگه سه تا عددش از این چهار تا دست منه همین ۶۴ تا دست منه یعنی چند تا باشه

۵ در پنجه دست منه که من معمولاً دوتاشو یکی می‌گیرم ولی سه دست من نیست مثلا اگه کسی بخواد حالا رو لایه بعدی شما کانولوشن بزنه الان فرض کنید تعداد فیلتر شما مثلاً فرض کنید اینجا هست ۱۰ ۱۰۶۴ خب می‌خواد کانولوشن بزنید کانولوشن مثلاً فرض کنید سه در سه باز می‌خواید بزنید روش یک دونه فیلترش باید چند در چند باشه بچه‌ها بگید می‌خواید اینو بندازید روی این برید فقط یادتون باشه باید عمق سوراخ کنیدا سه در سه در ۶۴ باریکلا علیرضا سه در سه که خوب خودم انتخاب کردم ۶۴ ندارم فرض کن ۱۰۰ تا از اینا مثلاً گذاشتی میشه چی فیلترهای تو میشه صد تا از این سه در سه در ۶۴ خب حالا سایز خروجی چند میشه یعنی اینو حالا کانولوشن زدی روش رفته سر خورده رفته رفته تا آخر

چند میشه حالا یه بار دیگه شما بگید اینجا ۱۰ در ۱۰ بود ابعادمم سه در سه از این استفاده کنید w۱۰ اف ۳ پی فعلاً صفره اسم فعلاً یکه حاصل چی میشه میشه عکسم ۸ در ۸ در چند آرمین باریکلا میشه به یه عکس ۸ در ۸ در ۱۰۰ دارم می‌رسم یک لایه که برم جلو اینه البته قبل از اینکه برم اعمال کنم یعنی کانولو شبکه‌های واقعی یه رلو هم روش میزنم رو تک تک داده بود سایز ده در ۶۴ یه سری عدد شدن یه میزنم منفی هاش صفر میکنم مثبت هاشو نگه می‌دارم خودشو بعد میرم کانولوشنش میکنم و اینو ادامه میدم اگه دبلیو و اچ فیلترها متفاوت باشن می‌تونن متفاوت باشن برای دبلیو اینه w تو میشه فلان اچ دو میشه اچ یک منهای اف تقسیم اس به علاوه فلان میتونه متفاوت باشه ولی متداول نیست البته ما با متفاوتش هم کار کردیم یعنی

یه کاری کردیم چیز بدی هم در نیومده حل احسان گرفتی عالی خب خدمتتون عارضم که حالا نحوه کانولوشن صحبت کردیم من همه توضیحاتو نوشتم همین که بیان کردم الان گرفتید با هم عالی بود بچه‌ها تک نرونی که اینجا اومد یادتون باشه ها داشت به یک منطقه نگاه می‌کرد ها خروجی یک منطقه رو داشت با همدیگه می‌دید خب پس این تک نرونه برخلاف شبکه های ام پی شبکه های m پی میومدن همه به همه وصل می‌شدن یعنی همه سرورازی نداشتن همه همه باید وصل بودن و دو به دو هر کسی با هر کس دیگه‌ای در واقع تعامل داشت خب ولی تو شبکه‌های کانولوشن اتفاقی که میفته و کلی در واقع توی هزینه محاسباتی به کار ما میاد و در ضمن اون دیده میشه اینه که مثلاً فرض کنید من این سه تا وزن رو دارم خب فقط

این نرونه نرون اولیه که حالا هر کدوم از اون خونه‌های اون مربعی چه می‌دونم فلان در فلان درصده بود یعنی هر کدوم یه نئون بودن حالا اینجا دایره است اونجا مربع کشیدم خب داشته مثلاً به این سه تا نگاه می‌کرده اوکی بعد نمی‌دونم این نرونه فقط داشته به این سه تا نگاه می‌کرده و به عبارتی سی ان ان داره شبیه ام ال پی عمل میکنه که کلی از وزنش صفر گذاشته شدن و در ضمن فریز شدن یعنی نمی‌ذاره به جز صفر چیز دیگه‌ای به خودشون بگیرن یعنی این نرون بالاییه مثلا تو لایه اول هیچ وقت اون نرون مثلاً تهیه لایه آخر ممکنه نبینه خب این ویژگی کانولوشن در ضمن ویژگی که داره پارامتر شیرینگ داره یعنی اینکه شما توی ام ال پی ها دبلیو این به این وصل بود به این وصل بود به این وصل بود بعد بعدی به فلان فلان وصل بودن اینا دبلیوهاشون هیچ ربطی به هم نداشتن اینجا پارامترها عینا شعره یعنی دبلیو که یک و دو و سه رو به اولی وصل میکنه با دبلیو که دو و سه و چهار به دومین وصل میکنه

کاملا همیشه هر لحظه یکیه یعنی w بالایی w1 اون یکیه wh با اون wشم با اون به این میگن پارامتر شیرینگ ها و اینکه ویژگی در واقع جذاب cnn‌هاست که سبب شده حالا کار در بیاد و دیگه برخلاف mlpی‌ها انقدی هم اسیر نشید در کل اینا مواردی که هست اینه که چرا توان دو میزارن سه در سه فوق روتین تره حتی من خودم سه در سه شروع میکنم اصلا کلا هم یه جمله براتون دارم هر وقت ایده‌ای ندارید چند در چند بزارید سه در سه بذارید ۵ در ۵ دومین فیلتر فرد در فرد به خصوص اگر عکس اولتون خیلی سایزش زیاد باشه مثلاً فرض کنید ۳۰۰ در ۳۰۰ پیکسل ۱۰۰۰ در0 پیکسل باشن تلاش می‌کنید هی زودتر شیرینش کنید اکثر هی کوچک کوچکتر کنید چون احتمالاً مثلاً تو اون ابعاد مثلاً پنج تا فیلتر با

یارویی که می‌خواد شما پیداش کنید شاید خیلی در اون حد ریز نباشه که بخواید واقعاً سه درسش کنید ولی بهت نشون میدم سه درسه‌های متوالی به ۵ در ۵ می‌ارزن حتی از لحاظ محاسباتی ولی بهترین نمیشه گفت چون ام ال پی هم ما نتونستیم بگیم بالاخره چند تا لایه بهترینه چند تا نیرون ولی سه در سه پنج در پنج فوق متداول ترینه حالا ببخشید دیگه بیشتر از این شاید نتونستم جواب سوال جواب بدم دقیق تر خب حالا این چرا از این اتفاق استفاده میکنه چرا پارامتر شیر میکنه چرا میگه وزن های مثلا پنج در پنج در سه ای که برای بالا گرفتی با اسلاید بعدی با لغزش بعدی اینا همه یکی بگیر حرف حسابش اینه میگه آقا اگه یه ویژگی مثل لبه توی موقعیت مکانی مفید باشه تو موقعیت های دیگه هم میتونه مفید باشه مثل داستان گل است دیگه شما اگه گل رو بالا

بعداً یه بار دیگه اینجا پایین پیداش کردم بازم گله دیگه ها و عین پارامتر تو همون فیلتر همون میزاری اگر می‌خوای پارامتر عوض کنی کلاً یه فیلتر جدید اضافه میکنیم اوکی من یه فیلتر گذاشتم مثلاً برای پیدا کردن خط‌های افقی قرمز یه فیلتر گذاشتم برای خط های با زاویه ۴۵ بنفش ها و الی آخر یعنی میره فیلترهای مختلفی تعریف میشه و بیش از یک فیلتر هم هست به ازای هر فیلتر گفتیم یه فیچر مپ فلان بهتون میده الان ۳۲ در ۳۲ با فیلتر پنج در پنج با استراید یک یعنی یه بار لغزش داشته باشید ۲۸ در ۲۸ خروجی هاتون اگه تعداد فیلترهاتون رو بیشتر کنیدچ مپ های بیشتری میگیرید من اینجا چند تا پارامتر تعریف کردم لطفاً به خاطر بسپارید کی تعداد فیلترهای هر لایه است من ممکنه بعدا بالا اندیس ال هم براش بذارم بگم مثلاً k به توان نه اوکی اندیس ال یک یعنی تعداد فیلترهای لایه یک بعد همین کار برای دو و الی آخر اف گفتیم سایز مکانی چیزه فیلترهاست که معمولاً اف و اف یکی

میتونید یکی نگیرید اسمش می‌گیم استراید میزان سر خوردن یکی یکی چرا بریم یکی میگه آقا یکی یکی کنده برو تندتر برو دوتا دوتا برو پنج تا پنج تا برو یه پی داریم به نام زیرو پدینگ که بهش میگم برای چی استفاده میشه و دی هم دپس لایه بعدی حالا مثلاً دی یک اسمشو گذاشتم نه اینجا دیپس لایه قبلی عمق لایه بعدی مثلا تو اینجا عکس ما اگه مثلاً رنگی بود لایه اول بودیم تو لایه اینپوت مثلاً سه بود اگه سیاه و سفید بودیم تمام اینا رو به همدیگه بچسبونید فیشر مپتون فرض کنید شش تا عکس داشتید شما ۲۸ در ۲۸ در شش سری بعدیتون بود این فرایندی که انجام دادید یک کانولوشن لیر بهش میگفتن همین کار میتونید ادامه بدید تا برید چیکار کنید سایز عکس و شروع کنید کوچیک کنید ولی از اون و چی عمق تو هی زیاد کن و چی هی برو حالا میخواد بره ویژگ های سطح بالاتر دربیاره فرض کنید مثلا لایه های سطح اول قراره در مورد خط ها و

صحبت بکنند لایه بالاتر بره در مورد منحنی‌ها صحبت کنه یه لایه بعدش در مورد اینکه این چشم داره یا نداره صحبت کنه لایه بعدیش اینه که این گربه است بالاخره سگه و الی آخر صحبت کنه و حتی بعدش ممکنه نژادشونو و و یعنی هی لایه‌های بعدی به صورت سلسله مراتبی چیکار کنن اینو انجام بدن مثلاً اینجا باز مثال زده گفته اگه ۳۲ در ۳۲ با ۳ داشته باشیم شش تا فیلتر پنج در پنج در سه بزنیم چی میشه میشه ۲۸ در ۲۸ در شش و چون شیشه توی ۲۸ در ۲۸ تاثیر نداره ولی عمق میگیره ها یعنی فیلتره که عمق تعیین میکنه بعد این ۲۸ در ۲۸ در شیشه بدیم به ۱۰ تا فیلتر پنج در پنج در شش شش اجباریه چی میشه شیرینک میکنه یکم کوچکتر میشه از ۳۲ شده بود ۲۸ بعدی میشه ۲۸ منهای در واقع سایز فیلتر که پنج باشه به علاوه یک میشه ۲۳ به علاوه یک میشه ۲۴ در ۲۴ در ۱۰ ولی آخر ادامه میدید هی دارید میبینید اضلاع کوچکتر عمق هم داره چی بعضاً بیشتر میشه اینا نمایش مختلفشه اینجا اینو براتون گذاشتم اگه

کد بزنید اگه می‌خواستید کد بنویسید به شکل اسپشال و مکانی و یه فوری بندازید روش و مثلاً زدها که حالا معادل فیچر مپ‌ها باشن قبل از البته رفتن تورلو رو حساب بکنید چه جوری این کارو می‌کردید فرض کنید دبلیوها رو داشتید w یادتون باشه گفتیم که چهار تا بعد در حالت عادی دارن دیگه یه اینکه فیلتر شماره چندی اس نماد فیلتر شماره چندمه مثلاً یک باشه فیچر مپ شماره یک رو بهتون میده دو باشه نماد حالا عمق و طول و عرضش اینست و اینی که چجوری در درایه های مربوطه ضرب بشن با چیز جمع بشن بایاس جمع بشن و در نهایت برای شما چیزو بسازه فیچرهای اون درایه های مختلف بسازه و این کار توی فیچرهای مختلف انجام بده باز دوباره شکل های دیگه براتون آوردم فقط بیشتر برای چیزه گویای مسئله است میگه آقا اگه لای قبلتون مثلاً فرض کنید عمق شش بود یعنی شش تا از این تک دونه تک دونه‌ای‌ها

فیلترتونم باید ۶ تا عمق داشته باشه بعد دو بعدی دو بعدی برید اون اولی رو در اولی دومی در دومی سومی در سومی همه داد کنید ولی تش یادتون باشه باید همه رو جمع بزنیدا ها نباید بگید من لایه اول رو فقط با هم می‌گیرم بعد لایه دوم رو با هم نه همچین چیزی نداریم و اینا رو باید با هم جمع بزنید با بایاس هم جمع کنید تازه میشه حالا نیرون بالای گوشه سمت چپ فیچر مپ شماره اول سورش میدید همه فیلترهاتون تو همه لایه‌ها به عبارتی اون حجممو سور دادم اینجا بازش کرده به سه تا دو بعدی من یه بار سه بعدی براتون کشیدم باز همون مقادیرا دست نمیزنه نگاه اینجا آبی پر رنگ فلان فلان مثلاً صفر یک دو باشه اینجا دقیقاً همون صفر یک دور تو لایه اول ولی لایه دوم لزومی نداره که حالا چیزش یکی باشه اصلا دبلی متفاوتن دیگه ۷۵ تا w مختلف داشتیم برای اینا ولی آخر میریم میسازه پر پرش که کرد تازه چی مپ شماره یک ساخته میشه میره یه بار دیگه حالا فیلتر شماره دوشو را میکنه فیلتر شماره دوش این دفعه فیلتر شماره یک درسته از لحاظ سایز و عمقی یکیه ولی از

شماره‌های داخل عددها اصلا لزومی نداره یکی باشه و قراره یه فیچر دیگر رو استخراج کنه و هر کدوم از این در واقع بچه‌ها این فیلترها قراره یک ویژگی رو برای ما در بیارن و ما طبیعتاً راندای اول تعداد ویژگی‌های کمتری می‌گیریم چون پارامترها خیلی خیلی اما بعداً که عکسمون شروع کرد کوچیککتر شد چیکار می‌کنیم تعداد فیلترهامون می‌تونیم بالاتر و بالاتر هم ببریم معمولاً هم توان دو می‌گیرن ۳۲ ۶۴ ۱۲۸ الی آخر ولی معنیش این نیست شما نتونید صد تا بگیرید پارامتر بعدی هم که میخویم در موردش فقط معرفیش میکنم دیگه بریم درس رو ببندیم حالا دیگه زمانمون داره تموم میشه پارامتر به نام استراید یا میزان سر خوردن یا اسمشو اجازه بدید گام بذاریم به فارسی ما در عادی یه دونه یه دونه سر می‌دادیم ها و یادمه تازه هفت در هفت رو با فیلتر سه در سه یه دونه یه دونه سر دادیم عکسمون شد ۵ در ۵ خب ممکنه یکی بگه آقا به هر دلیلی من زودتر می‌خوام به نتیجه برسم و نمیخوام حجم محاسباتم زیاد بشه

محاسباتیم کمه حالا یا هر دلیل دیگه استرایدمو بیشتر می‌کنم فیلترمو سر خوردن‌های بیشتری براش در نظر میگیرم و اینجا عکس هفت در هفت اگه دو تا سر بدید حالا چی میشه ها عکسش خیلی خیلی کوچکتر میشه مگه حساب بکنید اولین جا تو قرمزه می‌شینه دومین جا تو سبزه می‌شینه سومین جا اینجایی که موس من داره میره یعنی کلاً ردیف اولش سه تایی شد ردیف دومش هم همینطور ردیف سومش هم همینطور در ضمن استراید راستای ایکس و وای میتونه متفاوت باشه اینجا یکی گرفته یعنی اگه اینجا دو تا خونه قرمز رو برد جلو اینجا هم دو تا میاره پایین ها یعنی شروع ردیف دومش از اینجاست نه از دومی اوکیه و اینو باز می‌بره جلو و معادلشو پیدا می‌کنه یه دفعه عکس هفت در هفت رو به یه عکس سه در سه تبدیل میکنه که حالا خود این چالشه وقتی هم اتفاق میفته میگه آقا نیازی نداره اینقدر مربع‌هایی که دارن میرن با قبلی اورلپ کنن حالا سه در سه پنج در پنج بوده من بیام چهار تاشو یکسان بگیرم فقط یکیش متفاوت باشه نه میگه دو تا میگم اصلا اصلا اورل نمی‌کنم مثلاً میگم

یکی یکی اصلاً بدون اینکه هیچ اورلپی داشته باشی برو جلو و این دفعه عکسی که بهم میده خیلی طول و عرض کوچک‌تری دارن و خب اسمشو اگه گام بزاریم معادل تعداد پیکسل‌های حرکت روی تصاویرمونه کاربرد بالقوه‌ای که داره اینه که در واقع اندازه تصویر باید اندازه تصویر از اندازه فیلتر هم خیلی بزرگتر باشه که استرایک به کار بیاد منطقیه دیگه که دو تا پنج تا پنج تا برم احتمالاً عکس اولم خیلی بزرگ بوده روی تصویر خروجی به شدت تاثیر میذاره هرچی گام بزرگتر باشه تصویر کوچیک‌تر میشه در قالب یه جمله توی مخرج خودشو نشون میده جلسه آینده انشالله نگاه می‌کنیم بهش مقدار معمولیش عموماً یکی یا دو میتونید استرایدهای دیگه هم بگیرید میتونید در راستای ایکس و وای هم متفاوت بگیرید ولی اگر کارتون بشه با یک احتمالاً در واقع چیزید دیگه اینفورمیشن کمتری از دست میدید ولی این خطر وجود داره که اگه زیادی هم هی سر بدید سر بدید برید جلو ممکنه یه جاهایی اطلاعات مهم عکس رو از دست بدید و اینجا خاطر همین نباید

همینجوری بی هوا یه دفعه خیلی خیلی بزرگ انتخاب کرد خدمتتون عارضم که یه چیز دیگه هم که لحاظ باید بکنید که مقدار گام باید به گونه‌ای باشه که اندازه تصویر خروجی مقداری صحیح یا ولید یا معتبر باشه یعنی شما استراید رو اگه اینجا ۳ می‌ذاشتید چه اتفاقی می‌افتاد اینجا قرمزه بود ها میومد یکی جلوی سبزه بعد سه تا می‌بردینش رو یه بخشی از فیلتر می‌افتاد بیرون عکس این خیلی چیز مناسبی نیست برای اینکه بتونید استراید مد نظرتون رو داشته باشید میشه یه حقه‌ای زد به نام زیرو پدینگ که جلسه آینده معرفی می‌کنیم و اون اینه که صفر میان اطراف عکس اضافه میکن به سطر و ستون های صفر اضافه می‌کنن به عکس و دستی یه ردیف پیکسل و هر جهت دو ردیف پیکسل و هر جهت اضافه میشه و خدمتتون عارضم که حداقل میتونید بیشتر هم حتی زیروپد بکنید و اونجا حالا میتونید اینقدی تنظیم بکنید که یعنی پد اضافه زیرو اضافه بکنید که چی که استراید مد نظرتون بهش

فرمولشو که گفتیم دفعه دیگه خواهید دید و آخرین جمله امروزم اینه که اگر گام استرایدمون یک باشه و تعداد فیلترهامونم فرد باشه شما اف منهای یک دوم از سمت چپ یا راست یا بالا یا پایین صفر اضافه کنید بعد از اینکه استراید رفتید جلو عکستون از لحاظ خروجی ابعادش با ورودی کاملاً یکسانه ها یعنی اینکه درسته این استرایک داره کم میکنه زیرو پد هم داره زیاد میکنه اگر این عدد بگیرید زیاد و کمش یه جوری تعدیل میشن و در نهایت عکس خروجی کاملاً به ورودی چی میشه یکسان میشه اینا تمام صحبت‌های امروز ما بود تا اسلاید صفحه ۴۲ بعدش دیگه از اون به بعد ماشالله زیرو پد رو میگیم و دیگه شماتیک نشونتون میدیم چجوری یه شبکه کار میکنه و خدمتتون عارضم که چجوری خروجی میده ما چه میتونیم کد بزنیم تو پایتون و ویژگی های گرافیکیش چجوریه اینا مواردی که انشالله جلسه آینده بخشی از صحبت های ما را به خودش اختصاص خواهد داد بچه‌ها خیلی

که همراه بودید ببخشید که کلاس طولانی میشه چون من تو ذهنمه که همه چیو بگم و دوست داره یعنی خیلی خوشم نمیاد اگه چیزی از قلم نمونه بعضی از چیزا رم خیلی تکرار می‌کنم خسته‌تون می‌کنم می‌دونم یکی از نقطه ضعف‌هامه ولی نقطه ضعفمه متاسفانه هنوز نتونستم هندلش کنم آقا خوش و خرم باشید انشالله اگه سوالی هست در خدمتتون هستم وگرنه انشالله براتون آرزوی سلامتی و موفقیت می‌کنم خانم احمدی توی لایه اول فقط مربوط به رنگشونه خب عکس سیاه و سفید سه لایه نیست مگر اینکه فیلم سیاه و سفید داشته باشید یعنی تو زمان‌های مختلف بخواید مثلاً ۱۰ تا فریم متوالی رو بهش بدید آره اینجا حالا دیگه شما یه عمق ده تایی خواهید داشت ولی عکس های سیاه و سفید البته سیاه و سفید هم من اصلاح بکنم یکم کلمه بهتری به کار ببریم گری اسکیل خب که بتونه بین سفید تا خاک سیاه و حتی خاکستری هم به خودش بگیره نه فقط سیاه و سفید این صفر و یک نباشه یا صفر و ۲۵۵ نباشه حالا انشالله که جواب سوالتونو دادم

سلامت باشید خیلی ممنون دوستان خسته نباشید خدا نگهدارتون انشالله تا سه‌شنبه می‌بینیمتون خدانگهدار

E:\courses\LangChain Project\main root\data\SCR_Session09_transcript_part1.txt

به نام خدا دوستان عزیز و ارجمند درس رباتیک اجتماعی و شناختی عرض سلام و ادب و احترام به این جلسه خوش آمدید ما تو این جلسه قراره دو تا پارت مختلف داشته باشیم یکیش بخش تدریسمونه تا قبل از ساعت ۴ از ساعت ۴ تا ۴:۳۰ ما انشالله یه مصاحبه زنده خواهیم داشت انشالله و میتونه خیلی جذاب باشه برای خود من فوق العاده هیجان انگیزه و امیدوارم به خوبی انجام بشه و خوب در خدمتتون عارضم که شما هم علاقمند باشید و خیلی خوشحال میشم ممنون میشم که تشریف داشته باشید خود بخش درسنامه مون هم خودش سه بخش خواهد داشت یکیش تکمیل تدریس موارد مربوط به سی ان ان که ما چه شبکه رو میتونیم کامل بسازیم موارد باقی مانده

جلسه قبل البته بعد از یه مرور کوتاه بعد از اون هم نحوه پیاده‌سازی کدهای سی ان ان توی گوگل کلب یا پایتون مرور می‌کنیم با همدیگه یه نمونه و همینطور یه نمونه از حالا نمونه کدهای اجرا شده دیگران براتون پخش می‌کنیم که در کل یه حس گرافیکی بهتری داشته باشید خب بدون فوت وقت بریم سر کارمون احسان دستش بالاست در خدمت هستم احسان بفرمایید وقت خوش و سلام سلام بفرمایید آقا دوستان من در رابطه با بی پی سوال داشتم میخواستم اول سوال بپرسم یا سوالتون رو بفرمایید الان استاد اونجا که میخویم بیایم وزن ها رو چیز کنیم آپدیت بله بله همون که میگیم چیز دیگه میخویم چیز بریم جلو یه بچه یه بچ میخویم بریم جلو بله

خروجیهای هر لایه نیاز داریم درسته که تمامه دیگه اصلا ترینینگ معنا نداره خب یه وزنه رند هر سری خروجی همه حساب خیلی راحت ترین کار یعنی محاسبه فواردش اصلا زمانی نمیبره چند تا فقط جمع و ضرب دیگه آها این کار انجام بده فورواردش به قدری سریع که بعدا ریل تایم میشه ازش استفاده کرد یعنی بعد از اینکه شبکه تو ترین شد تمام خب دیگه میشه ریل تایم ازش استفاده کنیم پس یعنی باید این کار انجام باید این کار انجام بدیم و تو تمام کدهای سود و کدهای بکشن هم اگه نگاه کنید حتما یه محاسبه فوارد رو دارند بعدش بکوارد رو میزنند

رامتین نوشته از هر عکس سه تا بود نه بیشتر بوده رامتین تو همه فولدرها فقط سه تا عکس داشتی ممکنه از یه آدم سه تا باشه ها خب اینو خود بچه‌های ما گرفتن توی فیلم بوده نه سه تا تکراری نیست مثلاً توی فیلم بوده تو فریم‌های مختلفش گرفتن ولی به قدری ممکنه پشت سر هم باشن اختلافش جزئی باشه ولی همشون مثلاً در حال لبخندن حالا با یه جزئیاتی تفاوت عالی خب پس اگه سوالی نیست بچه‌ها بریم سر کارمون و انشالله تا قبل از ساعت ۴ من سعی میکنم سه و۵۵ درس رو یه جوری جمعش کنیم و پنج دقیقه استراحت داشته باشیم و حتما صبر بکنید انشالله ساعت چهار امیدوارم اتفاق خوبی بیفته خدمتتون عارضم که

خب بریم سر کار خودمون ما جلسه قبلی بچه ها در مورد شبکه‌های cnn صحبت کردیم یه دور اول مرور بکنیم حالا با این سوال احسان من ترجیح میدم یه پله کلاً بیام عقب‌تر بچه‌ها ما شبکه عصبی که می‌خوایم طراحی کنیم شبکه عصبی برای ما یه بلک باکس یه جعبه سیاهه خب که قرار نیست خیلیا داخلشو ببینن حتی خود ما هم بعد از اینکه ترین شد به داخلش کاری نداریم یک یا چند تا ایکس ورودی بهش میدادیم یک یا چند تا وای خروجی به ما میداد که این وای ها میتونستن برای کلسیفیکیشن باش یا برای رگریشن باش یا برای انواع حالا مسائل تلفیقی و ترکیبی دیگه خب که ما اون چیزایی که از خروجی شبکه میگرفتیم اسمشو وای هت میذاشتیم نگاه میکردیم چقدر به وای واقعی مون شبیه به اینم میگفتیم بردار ایکس ورودی هاش که حالا یک یا چند تا میتونست باشه میتونست از داده های ساختار یافته باشه داده هایی که جدول مدلی مشخصا یا داده های غیر ساختار یافته که آدم ها خیلی خوب تشخیص ش میدن ولی کامپیوترها به خوبی نمیتونن این کار بکنن مثل عکس مثل صوت

عکس برای کامپیوتر یه ماتریسه در حالی که آدما به راحتی با دیدن میفهمند که خب اوکی دو تا شخص توشه مثلاً یه حیوون توشه دو تا گل و گیاهه و الی آخر خب خدمت شما عارضم که ما میومدیم برای این یه شبکه عصبی انتخاب می‌کردیم خب که حالا شبکه عادی‌مون شبکه‌های ام ال پی بودن که بعدش گفتیم حالا میخویم بریم سمت شبکه های دیگه شبکه های ام ال پی اینجوری بودن که یه تعداد نیرون داشتن که به تمامی نیرون های بعدیشون وصل بودن و در نهایت میرفتن بالا به تعداد وای‌هایی که خروجی داشتیم تو لایه آخر می‌گرفتند و هدف این بود که شما دبلیوها یا وزنه های شبکه رو در هر لایه به گونه ای تعیین کنید تمامیشو که چی که وقتی این ایکس رو میدیم در اون دبلیو ها فوروارد ضرب میکنیم بعد جمع میکنیم بعد روش مثلاً یه تابع اکتیویشن فانککشنی مثل ریلو یا سیگما یا فلان میزاری باید دوباره در wهای دیگه جمع میکنیم در نهایت چی وای که وایتی که به ما خروجی میده به وای خروجی ما خیلی نزدیک باشه چون تعداد این w

خیلی پیچیده است ما چیکار می‌کنیم اول یه سری دبلیوهای رندم در واقع چیز داریم رندوملی انتخاب می‌کنیم و به همه این وزن‌ها یه مقدار اولیه میدیم یعنی چی یعنی وقتی میدیم بتونه یه وای بهمون بده احتمالا وای که میده چرت و پرته چون دبلیو خوبی نیستند و تلاش میکنیم با الگوریتم بکشن اینو چیکار کنیم هی دبلی رو اصلاح کنیم اصلاح کنیم تا در نهایت به نقطه اپت برسیم فرض کنید w شما اینجا اند باید یه کاسنی دارید که وقتی پلاتش کردید یه چیز عجیب غریبی بوده انواع درها و قلا داشته یه مسیر اینجوری طی میکن تا برید به درش برسید بچه ها مسیر طی شده اصلا مهم نیست یعنی هیچکی به این مسیرتون کاری نداره اصلاً هیچ اهمیتی نداره که از چه مسیری میرید فقط مهمه چی برسید به این تهه این ته که رسیدید دیگه تمامه دیگه این دبلیو ها رو فیکس میکنید این بلک باکس رو برای خودتون دارید حالا میتونید برای یه عده نمایش بدید میتونید بازش نکنید بگید ملت حالاست بده من وای بهت میدم ها و این

ضرب و جمع اتفاق میفته بعدش یه سری اکتیویشن فانکشن‌های ساده اتفاق میفته و میره وایو میده به قدری می‌تونه سریع باشه که شما تو کارهای ریل تایم هم ازش استفاده کنید ولی بکشن که یک بار انجام میشه این کار فرایند زمانبر و طولانی و خوب شما باید برید تا به دبلیو بهینه برسید بعد که رسیدید دیگه تمام خب این میشه کلیت ماجرا اما گفتیم خود امlp ماجراهایی داره ام ال پی خیلی پارامتر داره هر نرونی میخواد به تمام بدی ها وصل شه و وقتی که بخواید عکس آنالیز بکنید عکس های که مثلا هزار در هزارن یه میلیون تا پیکسل دارن اگه شما بخواید لایه بعدتون چند تا می‌خواید بگیرید ۱۰۰۰۰ تا ۱۰۰۰ تا چند تا وزن خواهید داشت این یه میلیون تا به تمام اون هزار تا بعدی وصل میشن بعد دوباره اون هزار تا قراره به یه عده دیگه وصل بشن و اینجوری برید جلو شبکه‌تونو ترین بکنید میبینید تعداد پارامترهاتون به قدری زیاده که یا هزینه محاسباتیتون سنگین میشه و یا اصلا شما اونقدر ترینینگ دیتا ندارید که بخواهید خوب ترینش بکنید شبکه رو همینقدر چیزی کیفی بدونید که هر

پارامتری که بخواید زیاد بکنید هولوشن ۱۰ برابر ۱۰ برابرش باید ترینینگ دیتا داشته باشید خب یعنی مثلا شبکه تون ده تا دبلیو داره میگن آقا بهتره که شما ۱۰۰ تا ترینینگ داشته باشید اگه ۱۰۰ تا داره شما هزار تا داشته باشید این همه ترینینگ رو از کجا میخوید بیارید چقدر میخوید آگمنت کنید چقدر کامپیوتر شما زور دارن رم دارن هارد دارن و بخواید هی اینا رو به در واقع گنجینه حالا دادگانتون اضافه بکنید خب بریم سر بعدی ما جای شبکه های ام ال پی که همه چی وکتورایز میکردن همه به همه وصل بودن گفتیم که میریم یه شبکه‌ای که چی بتونه لوکالی هم یه سری چیزا رو ببینه یعنی تو شبکه های ملپی وقتی که یه عکس مثلاً ۱۰۰ یا ۱۰۰۰ در هزار باز میشد مثلاً به ۱۰ هزار تا پیکسل در واقع توی بردار هیچ وقت این پیکسل ها دیگه یادشون نمیموند بغل کی بودن ها و دبلیو هاشون هیچ وقت دبلیو این بغلیه با قبلیه با بعدی ربطی به هم نداشتن و جدا جدا داشتن

ولی هیچ وقت استفاده نمی‌کرد از اینکه اینا ممکنه کنار هم یه سری اتفاقات رو رقم بزنند و تو برو اونا رو پیدا کن تکنیکی که سالها و سالهاست توی شبکه‌های عصبی توش رشته ماشین ویژن داره استفاده می‌شه خب و ربطی هم به شبکه‌های عصبی cnn نداشته و از اون حقه استفاده می‌کنند اسمشم فیلتر گذاشتیم و میره مبنای تولید شبکه های میشه به نام شبکه های سی ان ان یا کانولو نتورک که بهش میگن شبکه های عصبی پیچشی گفتیم توی شبکه های عصبی پیچشی چیکار میکنیم ما اول یه عکس یا عکس و به سیستم میدیم این البته عکس چون عرض کردم برای عکس توسعه پیدا کردن کلا با ایمیج میره جلو ولی معنیش این نیست که حتما باید دو بعدی باشه میتونه یه بعدی باشه میتونه سه بعدی باشه یعنی ورودیتون به جز عمقش خب شما یه عکس دارید این عکس میتونه رنگی باشه میتونه سیاه و سفید باشه مثلا فرض کنید عکس رنگی یه صد صد پیکسل داره یه سه تا هم عمق داره یعنی چی سه تا عمق داره یعنی سه تا از ۱۰۰ درصدهای

در واقع یک بعدی یعنی هر کدوم یه ماتریس ۱۰۰% رو دارن تشکیل میدن گفتیم به هر کدوم از اینا توی عکس‌های رنگی می‌تونیم بگیم یک کانال یا یه چنل کانال رنگ قرمز آبی سبز و آبی rgb و یه جورایی مثل سه تا عکس سیاه و سفید جدا جدا برای اینکه از رو عکس‌های رنگی هم بخوان عکس سیاه و سفید بسازن کاری نداره یا میتونید میانگین بگیرید از تمام درایه‌هاش به یه ماتریس ۱۰۰ در یک برسید یا اینکه یه ضریب میانگین وزن داری بگیرید یه ضریبی از این ضریب سومی و در کل یه ماتریس صد در صد با درایه صفر تا ۲۵5 بسازید که از عکس رنگی سیاه و سفید پیدا بشه که به راحتی توی اوپن سی وی توی مطلب این قابل پیاده سازیه سرچ بزنید توی مطلب بزنید بهتون میگه آر جی بی تو گری اسکیل چجوری اتفاق میفته توی اوپن سی هم خودمون به شما تو اون فیلم اضافه که یاد میدیم اما گفتیم که برای اینکه ما از این در واقع شلوغی ام پی با تعداد وزن ها و پارامترهای زیاد نخواهیم استفاده بکنیم

تو ماشین ویژن استفاده میشه استفاده از یه سری فیلتر و کانولوشه اعمال اپراتور کامولوشن فیلترها اینجوری بودند که اولاً دارای طول و عرض دلخواهی بودند شما تعیین می‌کردید تعدادشون گفتیم بهتره فرد در فرد بگیرید تا نقطه وسط داشته باشند تعداد طول و عرضش میتونستید یکی بگیرید نگیرید ولی بهتره یکی بگیرید یعنی متداول یکی میگیرن عمقش دست شما نبود اگه این عمقش سه بود حتما باید این لایه اول شما عمقشو سه میذاشتید و به عبارتی مثلاً اگه یه فیلتر پنج در پنج داشتید یعنی ۷۵ تا پارامتر داشتید که اینجا باید چیکار می‌کردید پرش میکردید این فیلتر رو بعد این فیلتر رو چیکارش میکردید مینداختید رو عکسون ها رو عکس اصلیتون که عمقشو کامل پوشش بده و در واقع یه بخشی از عکس هم تو ابعاد طولی و عرضی بگیره ما به یکیش میگفتیم طول به یکیش میگفتیم مثلا عرض یا ارتفاع به یکیش میگفتیم عمق خب به این سه میگیم عمق یا دپس خدمت شما عارضم که

نشون بدیم wh خدمت شما عارضم که اینو سر می‌دادیم روی چی روی عکس اصلیمون و هر سری این ۷۵ داده را در ۷۵ داده متناظر زیر پاش ضرب می‌کردیم جدا جدا ۷۵ تا عدد میشد با همدیگه جمع میکردیم یک حاصل به ما می‌داد ها که ما تو یک موجودی به نام فیچر مپ تازه به عنوان نرون اول گوشه بالا سمت چپش می‌نوشتیم یه دونه سرش میدادیم دومی حساب میکردیم و تا ته میرفتیم و این کار تا آخر ادامه میدادیم تا یک عکس حالا در یک w2 در اچ دو در در عمق یک برام بدست بیاد این میشد یه دونه فیلتر یه دونه فیلتر دیگه میذاشتیم یه دونه دیگه میداد و و و بعد از اینکه کا تا از این فیلتررا میذاشتیم کات از این عکس های یه بعدی داشتیم خب که میشه اینا رو اگه بخواید سیاه و سفید پتشون کرد برای اینکه خودتون ببینید چجوریه و ما هم این کار براتون میکنیم حالا تو اون چیزهایی که داریم سمپل هایی که داریم تا ببینیدش بعد اینا رو این کات

و چی میشه یه عکس کبدی بهتون میده یعنی که میده با یه دبلیو ۲ در h2ئی و این دفعه با عمق کا ها قبل از سه بود و این دفعه با کام بهتون میده کا ده تاست ۵ تا ۱۰۰ تا ۱۰۰۰ تاست و هر کدوم از این کاها خدمت شما عارضم که چیه قراره هر کدوم از این کارت فیلتر قراره یه کار بکنه مثلا یکیشون قراره بره چی منحنی سبز رو برام پیدا کنه یکیشون برای دایره قرمز برام پیدا کنید یکیشون قرار خطای افقی بنفش پیدا کنه و اینا مهمن فرض کنید مهم میشن در آینده اوکیه خب خدمت شما عارضم اینو پیدا کردیم الان یه ماتریسی داریم با اچ دو ضرب در دبلی ضرب در کا تا پارامتر که میتونن از منفی یه عددی تا مثبت یه عددی باشن خب کاری که میکنیم مثل تمام کارهایی که توی شبکه ها عصبی میکردیم بعد از اینکه این حالا چیز ضرب های دات حساب میکردیم wو رو در ایکس جمع میکردیم اسمش زد میذاشتیم از یه اکتیویشن فانککشنی رد میکردیم اینجا هم همین کار میکنیم قبل از اینکه برید لایه بعدی

میاید همین عکس رو از اکتیویشن فانکشن عمدتاً رلو رسم چیز می‌کنید رد می‌کنید تا به یک عکسی برسید که چی این دفعه درایه‌هاش دیگه مثبتن یا صفرن یه منفی نداره و ولی ابعادش همونه یعنی تک تک درایه‌هاشو نگاه می‌کنید یه ایف ساده است اگر مثبت بود خودشو بزار اگر منفی بود صفرش کن و میاد به یه عکس جدید میرسه شما یه لایه کانولوشن اینجوری رفتید جلو و یه سری از این دارید که رو همدیگه سوار شدن استک شدن و عکس بعدی دوباره میتونید برید لایه بعدی رو بزنید حالا با ابعاد مختلف w2 اچ دو که دارید میتونید برید یه فیلترهای جدیدی با تعداد جدید با ابعاد متفاوتی بردارید مثلاً فرض کنید که قبلا ۵ برداشته بودید این دفعه میتونید مثلا سه در سه بردارید و یا نه همون پنج در پنج باشه ولی چاره ای ندارید جز اینکه عمقش چی باشه همون کا باشه باز ببینید چند تا می‌خواید یکی دو تا سه تا و دوباره اینو کانو میکنید روش مینداز

روش سرش میدی تا برسید به یه عکس‌های جدید باز اگه لازم شد رلو میزنید و الی آخر و چی و میریم تا یه جایی که عکسم از لحاظ سایزی کوچیک شده باشه ولی احتمالاً عمق زیادی داره چون من هرچی برم جلوتر با یه محاسبه ساده می‌تونید ببینید که من میتونم چیکار کنم تعداد پارامترهامو مثلاً با تعداد افزایش فیلترها اینجا خیلی زیاد نمیشه به نسبتی که چی اینجا میخواستم این کارو بکنم مثلاً فرض کنید تو لایه اول که شما عکستون صد درصد یا هزار بود می‌خواستید هزار تا فیلتر بردارید خب هر فیلتر ۵ در ۵ درصد ۷۵ تا یه بایس ۷۶ تا مجهول داشت ها بعد مثلاً شما ۱۰۰۰ تا از اینا وداشتید حسابش کنید چند تا پارامتر اینجا داشتید عرفاً اینجوریه که اول تعداد فیلترها توی لایه های قبلی کمتر از لحاظ تعدادی کاشت هرچی میره جلوتر که عکس میکنه ابعادش کوچکتر میشه این کاشو هی می‌برن بالا و بالاتر ها تا در نهایت چیکار میکنیم تا در نهایت دیگه می‌خوایم حالا کلاسیفیکیشنش بکنیم یه یه مرحله

اینجا مثلاً فرض کنید که رسیدیم به اینکه شما الان دبلیو ان تا در hn تا در کا ان تا عمقتونه چند تا نرون دارید به عبارتی hn در wn در کا ان تا چی دارید نرون دارید که توش عدده حالا این عددا اگه از رله هم گذشته باشن چی یا صفر یا مثبتن منفی دیگه نیستند درسته ابعاد همه فیلترها خانم احمدی خیلی سوال خوبیه فعلاً بله یه حقه جلسه آینده یادتون می‌دیم تو شبکه‌های اینستاگرام اومد که آقا چجوری من میتونم توی لایه شماره یکم یه فیلتر پنج در پنج یه دونه سه در سه داشته باشم و چه حقه‌ای بزنم خیلی سوال خوبی بود خب ولی تعداد ابعاد فیلترهای لایه دو می‌تونه کاملاً با لایه یک چی باشه متفاوت باشه حالا انشالله که جواب سوالتون هم داره خیلی خب خدمت شما عرض من به همچین تعداد نرونی میرسم ها چه بهتر که این wh n تا حد امکان کم شده باشن حتی شده باشه یک* یک شده باشن اینو به این تعداد نیرون میام چیکار می‌کنم یه ساختاری به نام فلت

می‌زنم و اینا رو بازش می‌کنم وکتورایزش می‌کنم تازه بشه چی شبیه ورودی‌های شبکه nlp خودمون و اینا رو همه زیر هم می‌چینم دیگه بغل هم بودنشون حالا دیگه خیلی مهم نیست یعنی بعد این همه مدت اومدن کنار هم دیگه انشالله از بغل هم بودن‌ها چیزایی یاد گرفتن دیگه اینجا دیگه اندازه کافی یاد گرفتن اینجا رو وکتورایز می‌کنیم یه امlp بعدش می‌ذاریم همون عادی خودمون مثلا فرض کنید چه میدونم تهش می‌خواید بگید که آقا اون نوشته‌ها صفره یک دو یا نه پس لایه آخرش چیه ۱۰ تا درایه داره بینش میتونید یک دو چند تا لایه هیدن بذارید پس فقط اینجا مستطیله رو بازش کردید فلتنش کردید و اینا رو به همدیگه وصل می‌کنید و در نهایت کلسیفیکیشن رو انجام میدید و به شما این عکس رو میدید بهش میگید عکس اول که بهت دادم به من بگو این گربه بود سگ بود انسان بود هیچکدوم نبود ها و اینجا کلسیفیکیشن می‌کنید خب حالا ماجرا اینه که این مال بحث جلسه امروزمون نیست این که چجوری وزن ها رو تنظیم کرد یک کلی وزن اینجا داریم این وسط مسا تو بخش امl پیش داریم شبیه قبلاً یه کلی

اولین سوال چرا یه دونه یه دونه برن جلو ها یعنی چرا دفعه قبلی با دفعه بعدی مثلاً اگه ۵ در پنجه ۴ تاش هنوز اون قبلی مشترک باشه فقط یکیش جدید باشه ها و چرا اینه یکی ممکنه عجله داشته باشه یا ابعاد عکسش زیاد باشه به خاطر منابع محاسباتیش به این حس کنه که این گامو بالاتر ببره ما به این گام می‌گفتیم استراید با اس نشونش میدیم خب پس تعداد فیلترها رو با کا نشون دادیم ابعاد رو با اچ و دبلیو عمق با دپس نشون دادیم ابعاد فیلتر رو با اف نشون میدیم بزرگ و فرض کنید پارامتری به نام گام یا میزان سر خوردنش با اس نشون بدیم خب s اولین همینجوری هم تازه با اس یک هم که میریم جلو اون روز دیدیم که عکس ها دارن کوچیک و کوچکتر میشن فرمولی که اون لحظه براش رسیدیم این بود که تو شبکه های تو لایه های کانولوشنی هر کدوم از ابعادمون منهای اس میشن منهای یک اف میشن تعداد ابعاد فیلتر با یک جمع میشن اون چیزی که خانم احمدی هم اون لحظه فرمولش گفتن حالا اگر

شما چیز داشته باشید خدمتتون عارضم که اسمتونو از یک ببرید ۲ این دفعه ابعاد عکس نهاییتون یعنی w لحظه بعدی یک باشه یه تقسیم بر اس هم میشه اینجاش خب و داره عکس یه دفعه شیرین می‌کنه کوچیک می‌شه حواسمون باشه اس زیادی خطر از دست دادن اینفورمیشن یا اطلاعاتو داره یعنی مثلاً فرض کنید شما میخوید تو این عکسه مثلاً یه گل و پیدا کنید ها بعد مثلا اگر استون هم اینجوری زیاد بگیرید ممکنه از دستش بدید یعنی اگر از اینجا بپرید اینجا هیچ وقت نبینید اینو و اس رو عرفاً عمدتا یک یا دو میگیرن یا اگر خواستید بالاتر یادتون باشه حاصل دبلیو منهای اف اس باید یه عدد صحیح یا اینتیجر باشه نمیتونه خورده بیاره ها و اگه خورده آورد باید چیکار کرد ما اینجا درسمون تمام شد جلسه قبل و امروز می‌خوایم ادامه بدیم مفهوم جدیدی که وجود داره برخلاف استرایده

زیروپدینگ خب زیروپادینگ حرفش اینه که به یه تعداد لایه دور عکست صفر اضافه کن ها مثلاً اگه زیرو پد یک باشه یعنی چی یعنی یه ردیف صفر دور تا دور عکس اضافه کن یعنی به ابعاد طولی و عرضی بچه‌ها چند تا اضافه میشه هر کدوم چند تا اضافه میشه دو تا اضافه میشه باریکلا یکی سمت چپ یکی راسته یکی بالا یکی پایینه اوکیه خب خدمت شما عارضم اگه زیروپدتون رو دو بذارید شما می‌تونید دو لایه اضافه کنید یعنی اول عکس تو ۳۲ در ۳۲ بوده دو لایه پ اضافه کنید بعداً میشه ۳۶ در ۳۶ اوکیه اما این زیرو پدینگ به چه درد میخوره ها زیرو پدینگ خدمت شما عارضم که دو تا فلسفه میتونیم براش به بیان عامیانه بگیم شاید فلسفه های دیگه باشه من خیلی یعنی صلاحی نیازی نمیبینم بخوایم روش بحث کنیم اولین فلسفه که میشه اضافه در موردش اشاره کرد اینه وقتی شما یه فیلتر مینداختید و سرش میدادید میبردید جلو این نرونه

کی گوشه بالا سمت چپ بود یا کلاً گوشه‌ها بودن می‌تونست این سوال از خودش بپرسه آقا مگه من آدم نیستم بقیه همه اینایی که وسطن ده بار داری از روشون رد میشی منظور کلی بار داری از روشون رد میشی خب مثلاً این نرونه رو یه بار اینجا می‌بینی یه بار تو گوشه میوفته می‌بینیش یه بار وسط میفته من فقط یه بار میفتم توش ها و این بغل‌دستیش میتونه بگه حالا منم خیلی وضع بهتری نسبت به تو ندارم اگه استراید یک باشه دوبار بیشتر نمیفتم خب و طبیعتاً چون اینا دارن کمتر میفتن این شانس میتونید به عکسه بدید که چی که این بیشتر بیفتن یعنی صفر بدید بهش بعد بدید که یه صفرهای اضافه کنید یه عکس جدیدی دارید و رو اون عکس جدیده حالا شروع کنید فیلتر انداختن این دفعه این قرمزه باز بیشتر دیده بشه این یک فلسفه پشتشه ماجرای بعدی هم اینه که شما در حالت عادی وقتی یه فیلتر میزدید جلسه قبلی زدم دیدید رو عکس خودم زدم سیاه و سفیدش کرد نمیدونم خطا رو مشخص کرد خط های افقی رو مشخص کرد الی آخر یه عکس جدید بهتون میداد

در حالت کلی عدم وجود زیروپد سبب میشه که چی بشه که شما عکستون شیرین کنه ابعادش کوچکتر بشه ها یکی از کارهایی که می‌تونن بکنن که سایز در واقع عکس ثابت بمونه اینه که به اندازه کافی زیرو پت کنند مثلاً فرض کنید که شما یه عکس دارید هفت در هفت ها فیلتر سه در سه میخوید روش بندازید حالا فعلاً هم فرض کنید که عمقش یکه یه لایه زیر پت کنید ها یعنی عکسون عکس جدیدتون ۹ در ۹ باشه این دفعه دیگه نه هفت در هفت ها و اگه این کارو بکنید سایز عکس نهاییتون چند میشه خب ما گفتیم سایز طولی عکس که میشه دبلیو حالا این دفعه جدیدش منهای f تقسیم بر s+وه یک s هم یک بگیرید میشه چی میشه نه منهای سه تقسیم بر یک به علاوه یک میشه چند میشه هفت فاکتوریل نیست علامت تعجب چه جالب من اگه یه لایه زیر پت کنم با فیلتر سه در سه عکس نهایی که می‌گیرم همون سایز خودم

اینکه سایز خودتون بگیرید یه خوبی داره می‌دونید که احتمالاً خونه اول سمت چپ بالا معادلی از خونه اول مثلاً چی سمت راست سمت چپ بالای اون عکس قبلی است ها وقتی فیلتر زدید و اینا یعنی چی یعنی یکی هست که مسئولیت قبول کرد یعنی این خونه میگه من مسئول این خونه‌ام یه جورایی ها و الی آخر یعنی بعد اون که فیلترتون رو زدید بعد معادله ها فقط اینکه بگیم معادل سازی شده خب عادی ولی اگه این نبود چی میشد عکس میشد نوع هفت منهای سه میشد چهار یک پنج در پنج میشد یعنی اینجا هفت اونجا ۵ معلوم نبود کی مال کیه اگر چه میدونیم بعضیا تو همه رفتن دخیل شدن و حالا یه بار دیگه هم مرور میکنیم ولی الان یه خوبی داریم که یه چیز داره یه نفری هست اونجا که میگه من معادل اینم حالا یه عده اصلاً از این پدگه استفاده نمی‌کنن من این پدینگ رو با پی نشون میدم طبیعتاً فرم نهایی فرملام اینه دیگه دبلیو به علاوه

یا دو برابر تعداد پدینگام زیرو پدینگام میشه طول نهایی منهای تعداد سایز فیلترم تقسیم برای استرایدم به علاوه یک میشه سایز من این میشه چی فرمول نهایی شما توی عکس لایه بعدیتون درسته آره حالا ما می‌خوایم شیرین کنه و احسان این باز خیلی سوال به موقعی پرسیدی خب این کاری که ما کردیم شیرینگ نکرد حالا یکی ممکنه بگه تو روش‌های کلاسیک ماشین لرنینگ هم یا ویژنم نمیخوام شیرین کنه فقط صرفا میخوام توش سیاه و سفیدا رو در بیارم یه سری الگو دربیارم اوکی اینجا که اصلا نیست حالا بخواهیم شیرین کنه یه کار دیگه جاش میکنیم که بهتون میگم و این کار کار جذاب‌تریه اینجاش بچه‌ها کاملاً به شما ربط داره همونطور که توی لایه‌های قبلی نمی‌دونستید تو مسائل قبلی چند تا لایه بذارید تو هر لایه چندرون و هی باید با این پارامترها بازی میکردید اینجا هم همینه یه عده ممکنه هیچ وقت از پدینگ استفاده نکنن یه عده ممکنه یه وسواسی داشته باشن و یکی از بچه‌هامون توی کاراش همیشه کاری که میکنه که انقدی پدینگ

عکس لایه بعدی با عکس لایه قبلی یکسان بشه حالا چه جوری شیرین می‌کنه از یه راه دیگه میره خب همیشه میگه من دوست ندارم هیچ اینفورمیشنی از دست بدم دوست دارم استیبل بمونم خب و در ضمن یادمون باشه بچه‌ها اگرم سریع شیرینکش کنیم نتایج خوبی نمیگیریم شما اگه یه عکس صد در صد درجا بکنید ۱۰ در ۱۰ اصلاً نتیجه خوبی نداده تو واقعیت و بخاطر همین پله پله و غیر عجولانه میرن جلو تا این اتفاقه بیفته خب این شد مسئله پدینگ که میتونه کاربردهای این مدلی داشته باشه که اوکی اگه دلمون بخواد سایز یکسان بکنیم و در ضمن خدمتتون عارضم که به اصطلاح اون نیرون های گوشه هم آدم حساب بشن و تعداد بیشتر دفعاتی دیده بشن توی رولینگ هاشون خب که قراره افزودن صفر رو صفر به سطر و ستون باشه و کمک میکنه به کنترل اندازه تصویر خروجی و معمولا هم یکی یا دو یعنی کسی نمیاد مثلاً ۳۰ تا پد بزنه خب ولی شما میتونید یک دو یا سه حالا بزنید برای کاتون انجام بشه حتی ممکنه یه عده تو هیچ اصلا نخواهید

پدینگتون صفر باشد و حالا قبل از اینکه در مورد شیرین صحبت کنیم یه دور به صورت ویژولایز ببینیم داشتیم چی میگفتیم فرض کنید یه عکس آبی ۵ در ۵ با عمق سه داشتید ها مثلاً کانال rgb بوده یه عکس مثلاً سگ گربه فلان الاغی الی آخر خب یه ردیف بندینگ اضافه کرده با خاکستری نشون داده ولی برای اینکه شما ببینید اگه شما ببینید اومده با سه تا عکس دو بعدی نشونش داده وگرنه همون بهتر باید مثل من با اون مکعب‌های عمق دار نشونش میداد طبیعتاً فیلتری که میخواد استفاده کنه باید عمقش حتماً حتماً چند باشه بچه‌ها حتماً حتماً باید سه باشه فیلترشو گرفته سه در سه در سه پس این سه تایی که دو تا سه در سه های که دارید میبینید معادل در واقع طول و عرضش این سه تا مستطیل مربع قرمزی که عمق تصویره میگه چیکار کن میگه خب یه بایاس هم دارم فرض کنید وزنش هم اینه حالا یا ترند شده یا از اونا حدس اولیه‌تونه فرض کنید من اگر میخوید رسم

منفی یک سیاه‌ترین حالت ممکنه مثبت یک سفیدترین حالت ممکن صفر مثلاً میشه خاکستری بینش و الی آخر اگه می‌خواستید برای خودتون بکشید شابلونه رو بنداز روش با استراید ۲ برو جلو یعنی چی خب زیروپدشم کرده پس دیگه باید زیروپد شدشو نگه دارید نه عکس اولیه دو تا برو جلو اینا رو چیکار کن اولاً در هم ضرب کن دات میکنه این ۹ تا رو این ۹ تا رو این ۹ تا رو ۹ تا عدد ۹ تا عدد ۹ تا عدد این ۲۷ تا عدد با هم جمع میزنه با اینجا هم جمع میزنه با این بایاس میشه یه عدد ها میشه پنج حالا هر چی هم بیشتر بشه نماد اینکه خیلی شابلونه شبیهش بوده خب و خدمتتون عارضم دو تا میره جلو بعدی رو حساب میکنه دو تا میره جلو بعدی و بعدی دو تا میره پایین خب یعنی استراید دو اینور هم گرفته و و و میره حساب میکنه تا به تهش برسه اوکی به تهش که رسید فیلتر اول کارش تموم اوکی فیلتر اول خروجیش داشت فیلتر دوم یه فیلتر دیگست سایزی خودش ولی درایه هاش فرق میکنه یه بار دیگه میندازه روش از اول و

تنگم و میره لایه‌های بعدی اگه دلش بخواد عالی خب اتفاقی که میفته اینه که ما هرچی رفتیم جلو سایزمون کوچکتر شد سایز عکس اولمون ۵ در ۵ بود یه پد که اضافه کردیم شد هفت در هفت فیلتر سه در سه روش انداختیم با استراید دو طبق اون فرموله میشه چی هفت منهای هفت منهای خدمتتون عارضم دو میشه ۵ ۷ منهای فیلتر سه میشه چهار تقسیم بر دو میشه دو با یک جمع میشه میشه ۳ در کل عکسون سه در سه میشه یعنی یه عکستون از هفت در هفت میکنه به سه در سه حالا با یه عمق دوتایی اگه تعداد فیلتر بیشتر بود باز بیشتر پس این نماد گرافیکیه اما برای شیرین کردن پیرو سوال احسان شاید بهتر از این که با استراید بخواهید باخصوص زیاد بخواید عکس و شیرین کنید شاید اینی که بهتون میگم منطقی تر باشه یه فرایندی داریم به نام پولینگ ها یا بخونیدش نمونه برداری خب میگه وقتی یه عکس بهتون میدم

E:\courses\LangChain Project\main root\data\SCR_Session09_transcript_part2.txt

مثلاً به یه سری مربع‌های دو در دو بشکونیمش بیاید توی عکس نهاییتون از هر مربع ۲ در ۲ یه نماینده بردارید عکستون یهو شرک می‌کنه به یه ابعاد طولی نصف در نصف یعنی کلی پارامتر برای ما سیو می‌کنه در حالی که اینفورمیشن زیادی از دست نمیده مثلاً فرض کنید پیکس عکستون ۱۰۰۰ باشه پیکسل اینو بغلیش که اونقدی فرقی ندارن اصلاً شما درک نمیکنید میگه بیا بین این چهار تا یه نماینده بردار بین اون چهار تا یه نماینده بردار اما این نماینده چی میتونه باشه به نظرتون بچه‌ها چی می‌تونه باشه شما باشید چیو برمی‌دارید بین این چهار تا قرمز یک یک پنج شش میخوید یه چیزیو بردارید که بهترین اینفورمیشن از دست نده محمد محمدزاده نوشته ماکس رامت نوشته بیشترین عدد باریکلا یکی از کارهایی که میشه کرد مکس پولگه که بسیار بسیار متداوله یعنی من پیشنهاد می‌کنم در حالت عادی از این برید مگر اینکه خلافش ثابت شه بیاید نگاه بکنید بین این چهار تا کی ماکسیمم

اتفاق جالبی که میفته اینه میگه عکس فرض کنید یه اسلایس رو ببینید عمقو نریدا یه اسلایس خالی تکی رو ببینید ۲۲۴ این عکسه بوده میگه من میرم چهار تا چهار تا بهش نگاه می‌کنم بین هر چهار تا ماکسیمم می‌گیرم به یه عکس ۱۱۲ ۱۱۲ می‌رسم میکنم که کلی از لحاظ هزینه محاسباتی به نفعم باشه و در ضمن بتونم با این ادامه بدم می‌بینید که این ۱۱۲ عمده اطلاعات ۲۲۴ رو داره یعنی شکل ظاهریش داره ها مکس به نظر اتفاق خوبی هم میتونه رقم بزنه مثلا اگه توی عکس یه کوچولو یکی یه پیکسل اینور اونور جابجا شد نسبت به این نوع نویز هم چیه روباسته یعنی کامل می‌گیش خیرشو میگیره و نمیذاره از دستش در بر ها پس مکس پولینگ در واقع یه لایه نمونه برداری شبیه فیلترراست بچه‌ها به نظرتون یه فیلتر چند در چند مثل که روش انداخته بهم بگید با این این شکلی که دارید میبینید چهار در چهار رو بکنید دو در دو مثل اینکه یه فیلتر چند در چند انداخته

داره سر میده برام بنویسید دو در دو انداخته باریکلا دو در دو انداخته با استراید چند بچه‌ها با استراید ۲ عالی مثل اینکه یه فیلتر دو در دو انداخته با استراید ۲ دوتا دوتا برو جلو اورلپ هم نکن با قبلی هیچ وقت هم نمیخوام حالا قبلیه رو دوباره یه بار دیگه ببینی خیلی نمیخوام چیز بشم عکسم بزرگ بشه یه دفعه میخوام شیرین که آنی بکنم اما به جز بچه‌ها مکس پولینگ کاررای دیگه هم میشه کرد یکی از کارهایی که میکنن بهش پولینگ میاد میگه به جای اینکه در واقع همه رو آدم حساب بکنم میانگین اینا رو میفرستم لایه بعدی خب یکی دیگش میگه آقا پینور باید بگیری که پی مثلاً می‌تونه چه می‌دونم نورم پنج نرم دو نرم هر چیزی باشه میگه برو ایکس به توان پی رو جمع بزن خب روشون سیما بگیر تقسیم بر یک به پی دو بکن رادیکال با فرجه پی بگیر شما نرمال دو رو راحت میشناختید از قدیم که یک به ایکس به

دعا رو جمع بزنه در نهایت چیکار کنه تقسیم بر میانگینشون بکنه رادیکال بگیره تقسیم بر تعدادشون بکنه ها و این کارهایی که از قدیم هم شما انجام می‌دادید خدمتتون عارضم که پینورشو می‌تونه بگیره یه عده از اینم یه ممکنه خشخاش بیشتری بزارن اگرچه خب خیلی متداول نیستا میگه ببین من برای همینم حتی شبکه میزنم یعنی میشه ببخشید شبکه تو شبکه میشه خب میگه مثلاً چهار تا ورودی دارم برو یه شبکه ام پی ترین کن که یه خروجی بهم بده بعد برو تو این شرایط هم هی برو چیکار کن هی برو ترین بشو تو فرایند ترینینگ بگو اینا چندن فقط یه ویژگی جالب داره میگه ببین همونطور که من اینجا گفتم مکسولینگ برای این دو در دو با مکس برای این دو در دو هیچ فرقی نداره همون کاری که برای این کردی برای اینث گرفتی برای اونمث بگیری برای این برای اونج میگه هر شبکه اینجا پیدا کردی برای دو در دو اولی باید برای بعدی ها همین باشنا خب میگه همچین چیزی ولی متداول نیست این نتورک این نتورکه احسان پرسیده چرا مکث ازج بهتره احسان مکس داره

در میاره دوم اینکه مکس یک تابع غیر خطی یه تابع غیرخطی و ما دوست داریم کلاً شبکه‌مون هی بره غیر خطی و غیر خطی تر شه تا بتونه کار بهتری در بیاره حالا تفاوت ریزشو بهت میگم انقدر شبکه عمق پیدا می‌کنه که بعضاً دیگه تو نمیتونی بفهمی این خوبی شناسایی قدرت شناساییش به خاطر تعداد فیلترت بود به خاطر در واقع ابعاد فیلترت بود یا خاطر مکسولینگ بود یا خاطر همه اینا با هم بود حالا نمیدونم انشالله که تونسته باشم عمومی قانعت کنم خب ولی یه تفاوت های دارند مثلا همینجا سوسکی بهت میگم مکس پولینگ توی بک پراپشنش فقط یه نرون و آپدیت میکنه یعنی سه تا نیرون کاری نداره خب شیشه اگه آپدیت بشه این شیشه رو آپدیت میکنه یک یک پنجه سر جاشون ثابت می‌مونن باید وایسی ببینی حالا یه عکس دیگه بیاد که یکی دیگشون مکث بشه اون هم تغییر بکنن دبلیو هاش خب ولیج پولینگ همه رو تغییر میدهد خب ولیج خطیه ولی مکسینگ یه المان غیر خطیه حالا تونستم بگم اصلاً

خدمت شما عارضم که بچه‌ها دقت کنید توی مکس پولینگ ما نسبت به هر اسلایس مکس میگیریم ها یعنی تعداد عمق‌ها ثابت می‌ماند من نمیرم تو عمق مکس بگیرما خب برخلاف اون فیلترها که وقتی جمع می‌زدم می‌گفتم برو تا تهشو جمع بزن میگه آقا برو مثلاً یه عکس ۱۰۰% در ۲۰ عمق داری رو هر کدوم از ۱۰۰% یه مکسولینگ بزن تا بشه ۵۰ در ۵۰ عمقش هم ۲۰ باقی می‌ماند اما مکس حول و حوش چیکار میکنه گفتم یه سری نویز کنسلیشن داره بعضی وقتا میتونه قابلیت های شبیه اسکیل این وریبلتی و اینا داشته باشه مثلا فرض کنید یکی این سه رو نوشته باشه یا یکی این سه رو نوشته باشه و اگر مثلاً فیلترهای شما سه در سه باشه و ماکسش اینجا اتفاق بیفته اینا جفتشون یه چیزو می‌بینن و این در واقع اعمال یه تابع غیر خطی این شانس رو به شما میده شانسی البته همینجوری فقط نوشتم صرفا به عنوان شهود که مثلاً این سه و این سه برای شما دوتاش تو یه طبقه دیده

طبقه ۳ خواهد بود خب ولی فعلاً همین قدر داشته باشیم و خیلی خوبه به ابعاد نصف فوق العاده هستا یعنی شما تعداد دبلیوهاتونو اینا که مجهولن فوق العاده یه دفعه کم میشه و این خیلی خبر خوبیه برای ما پس در مجموع اگر بخواهیم جمع بندی کنیم تو شبکه‌های cnn ما این کارو می‌کنیم ما یه اینپوت میدیم شروع میکنیم یه سری کانولوشن لیر زدن یعنی چی یعنی یه سری فیلتر تعیین میکنیم روش میلزونیم تا بره یه سری عکس کوچیک شده تر با عمق بیشتر بده حالا یا پولینگ میزنیم یا نمیزنیم حالا تو خود کامپولوشن هم یا پدینگ زدید یا نزدید یا استراتون بیشتر از یک هست یا نیست یعنی اینا همه کامل دست شماست خب این پولگه رو یا میزنید یا نمیزنید میتونید همه جا بزنید میتونید هر چند تا لایه یه بار بزنید مثلاً عرفاً می‌بینید توی شبکه بیشتر از دو سه بار پولینگ شاید نزنن خب و بعدش هی دوباره یه کانولوشن دیگه یه پولینگ دیگه و اینقدر میره جلو تا ابعادتون به اندازه کافی کوچیک شده باشه عمقتون زیاد شده باشه حالا چیکار می‌کنید بچه‌ها کسی یادش موند

گفتم چیکارش می‌کنیم بعد از اینکه به اندازه کافی کوچیک شد یه اصطلاحی براش به کار بردم فلتن می‌کنیم بله فلتن میکنیم و میدیم به شبکه‌های ام ال پی ۱ ۲ یا سه لایه بیشترم نمی‌دیم فلت شبکه‌های ملی‌پیش دو لایه کافیه و در نهایت اوت پوتمون حالا ببینیم مسئله مسئله چیه قرار بوده عدد رو شناسایی کنه عکسا رو شناسایی کنه مثلاً تو خودرو خودرانید میخوید عابر رو بشناسید رو ربات اجتماعی هستید میخوید ببینید که طرف خوشحاله ناراحته یا الی آخر و اینجوری این بخش آبی رنگ بچه ها یا این کادر سبز رنگ بالا که تلفیقی از کامولوشن ها و پولینگ هاست یه جورایی داره برامون فیچر اکسترکشن ها انجام میده و این بخش های ام ال پی نهایی داره چی کلاسسیفیکیشن رو برامون انجام میده بچه ها به این شبکه‌هایی که خودش سر تا ته رو در میاره و شما هیچ دخالتی نداشتید اینکه تحمیل بکنید بهش فلان فیچر رو برو استفاده کن برخلاف مثلاً ماشین ویژن که برو اول خطوط افقی رو در بیار بعد این کارو بکن و فلان کسی میدونه بهش چی میگن یه اصطلاح داره اینکه

کلاً خود شبکه شما در حالی که دارید کاپوچینوتونو می‌خورید البته بعد افطار این خودش سر تا ته ماجرا در میاره اصطلاحا بهشون میگن شبکه‌های برام بنویسید ان تو اند بهش میگن شبکه‌های ان تو ان خودش میره سر و ته ماجرا رو در میاره و شما هیچ دخالتی ندارید برخلاف روش‌های سنتی ماشین لرنینگ که چی که شما بودید که شروع می‌کردید به کدوم سمت بچه ها عرف اینه که همونطور که گفتم هر هرچی تعداد لایه ها کاملشن میرید جلوتر تعداد فیلترهاتون رو بیشتر بکنید خب خدمت شما عارضم این یه مثال واقعی از کسانی که رو شبکه زدن یه شبکه فرض کنید مثل سیفرد یا سی فارسی ۱۰۰ که مثلاً ۱۰ تا یا ۱۰۰ تا خروجی داره مثلاً فرض کنید ماشین نمیدونم کامیون فلان فلان اینو عکس رو بهش ورودی داده فرض کنید به اندازه کافی ترند شده اصلاً ما الان کاری نداریم چجوری ترند شده فرض کنید که بکشن یکی برای اون زده یا ما جلسه بعدی شده و یاد گرفتیم خب اوکی دیگه الان رسیدیم به

تست کنیم شبکه آماده است یه عکس ماشین بهش میدیم عکس ماشین که بهش میدیم این تهش بهمون میگه ایول سافت مکسش با احتمال بسیار زیادی نسبت به بقیه احتمالات میگه ماشینه ایول درست گفتی اما تو این فرایند چه اتفاقی افتاده فیلترهایی بودند که کانولوشن می‌کردن روی این عکس پیاده میشن من نمیدونم چقدر شما دارید اینو خوب میبینید ولی اگه ببینید هنوز عکس ماشینه روشه ها حالا یک اتفاقاتی افتاده یه جاهاییش تاریک شدن یه جاهاییش پررنگ شدن خب و این تازه قبل از اعمال رلوعه یه جاهاییش ممکنه منفی شده باشه خب چون wو ها میتونن منفی مثبت یا صفر باشن بعد میگه رلو بزن رلو که می‌زنید یه جاهایی تاریک میشه یعنی دیگه روشن ها میشن سفید به سمت سفید و سیاه ها به سمت تاریک میرن مثلاً میگم فرض کنید فیلتر دوم بعد از اعمال رلو مثلاً این تیکه فقط سفید باقی مونده بقیش سیاه شده شاید شاید این داره تلاش می‌کنه پنجره رو دربیاره خب مثلاً اون بره چرخ رو دربیاره شایدم نه فقط این تو لایه اول چون خیلی لایه اولی فقط رفته خطوط

با زاویه ۴۵ رو درآورده ها مثبت ۴۵ مثلاً اینه گفته آقا این اینجا رو داره خب ولی آخر ولی می‌بینید فیلترهای مختلف به خاطر اینکه درایه‌هاشون مختلف بودن چیزهای مختلفی درآوردن بعد میگه حالا برو کانولوشن بعدی رو بزن تو راهش نه بچه ها پولگی نزده‌ها دیدید مثلاً گفتم پولینگ شانسیه دست خودتونه دلتون میخواد گفته مستقیم برو پولینگ بزن پولینگ چیز ببخشید کانولوشن بزن یه کانولوشن جدید زده از یه سری فیلتر رد کرده ضرب کرده باید دوباره یه عکس جدید شدن هنوز یه نمایی از حرکت ماشین توش هست بعضی جاهاش نه ماشین داره بدتر میشه یه دیگه زده بعد چیکار کرده یه دور طول کرده پول که کرده مثلا فرض کنید اینجا اگه ابعادش ۱۰۰ بوده یه دفعه شده ۵۰ در ۵۰ حالا عمقش چقدره به تعداد فیلترهاست اینجا ۱۰ تا نشونتون داده ممکنه کلی فیلتر دیگه بوده باشه که نشونتون نداده باشه و بعدش چیکار میکنه دوباره کانولوشن بعدی ریلو بعدی کام بعدی ریلو بعدی باز یه پول این استایلش این بوده که هر دو تا کام دو تا رلوی پول بزن ها بعد میبینید اینجاها که رسیده دیگه پیکسل پیکسل شده عکسا کوچیکه

مربع مربعه و میشه اصلا یه ماشینی دیده نمیشه و وقتی که از رلو می‌گذره اتفاقات جذاب و عجیب غریب میفته مثلاً فرض کنید کل عکس خاموشه سیاه سیاه ۴ تا دونه مثلاً مربع خاکستری یا سفید توش افتاده ها و حالا یه عده اومدن بشینن واقعاً اینا رو تفسیر کنن می‌گفتن مثلاً اگر مثلاً چه می‌دونم رفتیم نگاه کردیم جسمایی که توشون چرخ یا تایر وجود داشتن مثلاً می‌رفته اینجا روشن می‌شده نمادی از این بوده که اوکی این نمادی از اینکه جسمه چرخ داره یا نمادی از اینکه این جسمه ماشینه حالا و و و هی کامپلو میکنه کامپلو میکنه در نهایت چی حالا با یه مثلاً ممکنه یک یا دو لایه فول کانکتد زده و گفته با سافت مکس بهم بگو کدوم از اون پنج تا ده تا صد تا المان و جسمی هم که من بهتون دادم این کاری که بچه‌ها تو واقعیت میکن این عکس از یه سایتی گرفته شده که مال دانشگاه استنفورد و همه هم از روی اون تدریس می‌کنن خب بچه‌ها به اینا این پارامترها یه بار دیگه تو فرمول براتون آوردم بیاید با هم توافق کنیم

وزنه‌های شبکه و بایاس‌ها می‌گیم پارامتر خب و به این چیزهایی که ابعاد فیلتر طول و عرض عکس تعداد نمی‌دونم دپس و تعداد فیلترهایی که ما می‌خوایم انتخاب کنیم بهشون بگیم ابر پارامتر یا هایپر پارامتر که با اون دبلیوها اشتباه نشن ها تنظیم کردن اینا خوب راست تره دست ماست ولی دیگه اونا خیلی پیچیده میشن و در حد چند صد هزار و میلیون می‌شن ولی اینا تعدادشون خیلی معمولی تره و ما توی خطای کدامون به همین درجه یکی دو تا عدد اینا رو مینویسیم و نهایتا اگر بخوایم بهینه سازی انجام بدیم بعضاً روی این هایپر پارامترها انجام میدیم خب عرفشون چجوریه کا که تعداد در واقع تعداد فیلترهای هر لایه باشه رو عموماً توان دو می‌گیرن حالا نگیرید هم معنی بدی نداره ۳۲۶۴ ۱۲۸ ۲۵۶ گفتم از لایه‌های اول معمولاً کمتره میرن جلوتر تعدادشو بیشتر می‌کنن f عمدتاً عدد فرد میگیند بهترین انتخاب اگر ایده‌ای ندارید سه هستش اگر

خیلی بزرگه و با الگوبرداری یه سری از شبکه‌هایی که حالا محمدم جلسه قبل اشاره کرد ۵ هم می‌تونید بگیرید ولی شاید براتون عجیب و فوق یعنی پیچیده باشه که چرا حتی فیلترها رو یک در یک می‌گیرن خب این به چه درد میخوره اینو صبر کنید جلسه آینده صحبت می‌کنیم ولی میشه فیلترها رو یک در یک گرفت استراید عمدتا یک و دو میگیرن حتی اگه بتونیم توان محاسباتیتون بکشه شما یک بگیرید دو هم نگیرید حتی و پی هم اگه لازم دارید بگیرید یعنی پدیدینگ بکنید یا نکنید من گفتم دوستانی دارم که وقتی شبکه رو میرن جلو میگن ما حتما اینقدی پدینگ میزاریم روش که چی که سایز عکس قبلم با بعد هم یکی بشه با پولینگ نصفش میکنم مثلا ما مثال زدیم اگر سایز فیلترتون سه در سه باشه بچه ها طبق فرمول و روابط یک دونه پد بیشتر لازم نیست اگه و استرایدتون یک باشه حالا اگه استرایدتون دو باشه بچه ها به نظرتون چند تا پد لازم داریم اگه استرایدتون دو باشه مثلا شما سایزتون

با استراید دوتون می‌خواید یه پی ببخشید با فیلتر ۳ در سه هم داشته باشید با استراید دوتون می‌خواید به یه چیزی برسید که دقیقا دبلیو باشه من چند تا پی لازم دارم اگه اگر استرایدم یک بود یه دونه لازم داشتم الان چند تا می‌خوام بچه‌ها با استراید ۲ با خدمت شما شاید بد نوشتم تعداد فیلتر رو همون یعنی f و f ننوشتم سه در سه گذاشتم خب خدمتتون عارضم که اینجا فقط من فقط اینو بکشم برای خودم یه دور با همدیگه بریم جلو ما گفتیم اگه استراگ یک باشد فیلترتون هم سه

سه باشد شما یک لایه پدینگ اضافه بکنید از هر طرف چی میشه یک لایه پدینگ از هر طرف اضافه کنید سایز خروجیتون با ورودیتون یکیه مثلاً فرض کنید اول ۵ در ۵ بودید با عدد بگیم بهتر می‌تونیم بیانش کنیم ۵ که یه لایه پدینگ اضافه کنه میشه ۵+ ۲ یکی میشه هفت تا منهای سه می‌کنم خدمتتون عارضم که تقسیم بر یک به علاوه یک که بشه میشه چی میشه با یه لایه پینگ جمع میشه خب حالا فرض کنید که پنج در پنج باشه می‌خوام بهتر بود یعنی براتون می‌گفتم که این که گفتم فرد اوکی پنج در پنج باشه این دفعه استرایدم سه باشه خب استراید هم ببخشید دو باشه سایز فیلتر هم سه باشه الان باید چیکار کنم که باز پنج بشه ها میشه یک میره اونور پنج میشه چهار چهار دو تا هشت تا

اینجا میشه ۲ ۲ میاد اونجا این تقسیم برای پی باید چند باشه ۳ باشه درست گفتم اشتباه که نکردم نه پنج منهای ۳ با دو سه تا شش تا نه چیز شد ۵ ۲ ۶ ۸ دوم ۴ و ۱ ۵ فکر می‌کنم درسته دیگه نه خب پس پس بچه‌ها مثلاً من اگه میخواستم با استراید دو برم جلو البته الان اشتباه نکنم ۱ ۲ ۳ ۴ ۵ تا قرمزه بکشم مثلاً باید چند تا پدیدینگ میذاشتم که این رند بشه اگر مثلاً دو تا پدینگ میذاشتم یا یکی پشتم اتفاق بدی که میفتاد چی بود این بود که این فیلترها رو وقتی سر میدادید یهشیش یه جایش می‌رفت که مثلاً یکیش بود روش دوتاش می‌افتاد بیرون یا دوتاش روش بود یکیش میفتاد بیرون که این خوب نبود ما گفتیم این فاصله باید چی باشه این حاصل باید اینتیجر باشد خب و اینجوری می‌تونید پیدا بکنید چند تا

لازم دارید و بریم الان یه نمونه ازشو ببینیم و انشالله هم دیگه بریم آماده بشیم برای کارمون من فقط تو این فاصله به لیست اسامی کلاس نگاه بندازم خب فعلاً که شخص مصاحبه شوندمون تشریف ندارند حالا امیدوارم بیان آخه چون این چیز براشون ناشناست احتمالاً بریم بچه‌ها اینم ببینیم و بعدش دیگه من حالا کد رو هم نرسیدم امروز بگم میریم انشالله جلسه آینده توی چیز یکی از سایت های آموزشی دانشگاه استنفورد خدمت شما عرض کنم که یه کدی وجود دارد برای سیف ده یه لینکشو براتون گذاشتم یه خدمتتون عارضم چیزه طبقه بندی عکسه که ۱۰ تا کلاس بیشتر نداره ایرپلین اتومبیل پرنده کت فلان فلان داک قورباغه نمیدونم اینجوری و یه سری عکس بهش میده عکساش البته سایزش کوچولو کوچولو اند و پیکسلاشون زیاد نیست خب و

می‌کنه و شما این عکسو بهش میدید میره ترند میشه که خب این عکس جز کدوم طبقه است حالا چند تا رو ترینینگ میده چند تاشم تست امتحان می‌کنید این یه سایتیه که اومده این کارو به صورت گرافیکی برای شما انجام داده خب اول من می‌زنم که شروع بکنه انجام بده چند تا چیز داره بهم میده اطلاعات میگه لاسم چقدره اکیوریسیم رو ترینینگم چند درصده و رو ولیدیشنم چنده الان بچه ها ۱۸ درصد یعنی چی یعنی خیلی اول راهشه ها وزن از نوع اگه رندوم رندوم بودنوش ۱۰ درصد به من میداد خروجی درسته الان یکم اوضاعشو بهتر کرده شده ۲۰ درصد ولی ۱۰ تا کلاس دارم ولی ۱۰ درصد تقریبا یعنی تازه ۲۰ درصد رو ترینینگ شانسی رو ترینشه تو واقعیت نتونسته بگه تو اون تستش و این داره چی رو رسم میکنه براتون لاس رو بر حسب زمان رسم میکنه بچه یکی میتونه بگه چرا لاس لزوما چیز نیست نزولی اکید نیست

برام بنویسه چرا هی داره بالا پایین میشه و میره بالا میاد پایین چون چیکار کردن چون آره چون اومدم چون اومدم نیومدم کل داده‌ها رو با هم بهش بدم سایز بهش دادم که میتونید شما تغییر بدین چهار تا چهار تا دارم بهش میدم نمیتونه لزوما نزولی اکید باشه اگه همه رو با هم بهش داده بودم حتما نزولی بود ولی خب زبان محاسباتیش نیست بچه‌ها یه شبکه زده بیانش با اون که ما می‌نویسیم متفاوته ولی حرفاش اینه میگه آقا اولین چیزی که اولاً عکسی که من دارم ۳۲ در ۳۲ درصد است یه عکس رنگی ۳۲ در ۳۲ بهتون میدم اینایی که می‌بینید ۳۲ در ۳۲ چون هم رنگیه عمقش سه میشه خب خدمت شما عارضم لایه اول گفته که یه کانولوشن میزنم تعداد ۱۶ تا فیلتر با استراید یک با پدینگ دو حالا میریم نگاه میکنیم و اکتیویشنre بزن خب بعدش چیکار کن پولش بکن ماکس پولش بکن با

به اصطلاح دو در دو و اورلپم نکنه با ۲ دوباره برو ۲۰ تا فیلتر با استراید ۱ و پدینگ ۲ در نظر بگیر دوباره کانولوشن بزن بزن و در نهایت بدون این با دو سه تا کانولوشن سریع برو یه چیز بزن فلتن کن سافت مکس بزن یعنی دیگه حتی بینش چیزم نمیاره خدمتتون عارضم که بعد از اینکه دو سه تا کانولوشن زد یه دونه هم سافت مکس زد و در نهایت شبکه پیدا کرد اما اینجا گرافیکشو براتون نشون داده گفته عکس اول ۳۲ در ۳۲ درصد از شما میتونید رنگی شوید بعد خدمتتون عارضم که گفته من ۱۶ تا فیلتر کانولوشن میزنم فیلترهایی که زده پنج در پنج در سه بودن بچه ها شما عکستون ۳۲ در ۳۲ در سه بوده خب پدینگ دو داشتید استراید یک عکس نهاییتون باید چند در چند باشه اینجا با هم بریم اینو برام بگید شما عکس اولتون ۳۲ در ۳۲ در سه بوده فیلترراتون

۵ در ۵ گرفته حتماً باید عمقشو ۳ بگیره ۱۶ تا هم از اینا گرفته عکس نهاییتون باید چند در چند باشه اگر بدانیم پدینگ ۲ استراید یکه بگید میشه ۳۲ به علاوه دو دوتا چهارتا میشه ۳۶ منهای ۵ ها منهای درست گفت میشه منهای ۳۱ تقسیم بر یک میشه ۳۱ بعلاوه یک میشه ۳۲ چه اتفاقی افتاد عکس لایه بعدی به واسطه حقه که رو پدینگ زد دو لایه صفر اضافه کرد اطرافش به چی رسید به یه عکس ۳۲ در ۳۲ در چند میرسیم بچه ها برام بنویسید ۱۶ تا فیلتر استفاده کردم ۳۲ در ۳۲ در ۱۶ میرسیم خب ۳۲ در ۳۲ در ۱۶ رسیده و خدمتتون عار

این ۱۶ تا عمق تصویرشه یعنی اینو که دادی یه لایه که رفته جلو ۱۶ تا لایه خاکستری داره خب دیگه نمیشه به شکل عکس رنگی دیدش دیگه درسته اومدی ۱۶ تا لایه خاکستری براتون آورده و بعدش چیکار کرده اومده ویتاشم بهتون نشون داده من الان بچه‌ها ویتا ۵ در ۵ در سه بودن ۱۶ تا بودن من زوم می‌کنم علی الاصول شما باید زومشو ببینید دیگه ببینید ۵ در پنج که خب خیلی پیکسلی پیکسلی مثلا این چیز فیلترهایی که بعد از ترین شدن پیدا کردنشون ها یعنی گفته که اوکی فیلتر اول اینو بنداز من میدونم به کارم میاد دومی اینو بنداز حالا چون چرا تونسته بچه به صورت رنگی نشون تو بده این تنها در واقع جایی که میتونه فیلترشو رنگی بهتون نشون بده چرا میتونه نشون بده چون عمرش سه هستش ها چون عمرش سه هست میتونه ولی بقیه جاها دیگه نمی‌تونه میاد یکی یکی نشونتون میده اوکی

یه رلو زده بعضیا خاموش شدن ها یعنی فرض کنید قبل رلو بوده رلو رو که زده بعضیا سیاه و سفید شدن حالا ولو که زده دوباره اومده یه پولینگ زده نصف کرده ابعادشو ۱۶ در ۱۶ کرده ۱۶ تا هم فیلتر داشتیم بعد دوباره یه کامولوشن زده با ۲۰ تا فیلتر این دفعه ابعاد ۵ در ۵ دوباره یه استراید یک زده پولینگ ۲ که دوباره سایز تصویرتون خودش باقی میمونه این دفعه اینجوری نشونتون داده گفته عکساتون اینجوری میاد بیرون اینم ویتاتونه یعنی مثلا ببینید ویتا چند تاست ۲۰ تا ۵ در ۵ در ۱۶ ها ۵ در پنجا که با یه عکس دو بعدی نشون داده ۱۶ تاشو توی پرانتز نشون داده ۲۰ تا از این پرانتز باز و بسته ها میبینید برید برای خودتون ببینیدش و ببینید بذارید به اندازه کافی ترین بشه و در نهایت هم داره بهتون میگه مثلاً الان که شبکه خوب ترین نشده مثلاً این داگ بوده اشتباهی فعلا کت دادتش تازه این یکی مثلاً اتومبیل بوده اصلاً اتومبیل تو گزینه‌هاش نیست ولی مثلاً این یکی نه تونسته

جلسه آینده‌مون و ما با این میریم جلو انشالله که ببینید داره خیلی خوب کار می‌کنه اگه دلتون خواست می‌تونید بذارید ران بشه هی بره جلو جلوتر لاسش بیاد پایین با پارامترهاش میتونید بازی بکنید و البته ما جلسه آینده یه کدم خودمون بهتون میدیم همین کارو شما بتونید با پایتون انجام بدید که خودتون کد بزنید و این کارهای سی ان ان رو براتون انجام بده فعلا هم در مورد گرادیان گریدت وزن هیچ صحبتی نکرد خب اینکه وزننا چجوری باید تغییر کنند چجوری رند لاس به رند w حساب میشه من هیچ حرفی نزدم خب و این فقط اومده گرافیکی بهتون گفته بچه‌ها لایه‌های اولش گرافیکش یک شاید معنا داشته باشه مثلا میگه آقا همون اولش گفته من دارم چیکار می‌کنم یه همچین فیلتررایی رو میندازم رو عکسم هرجا این شبیه شابلون هرجا اینو دیدی فایر کن روشن یعنی میزان بیشتر مقدار بیشتری داشته باش ولی هر چی میرید پایین تر به یه جاهایی می‌رسید دیگه خیلی با

سیاه و سفید مواجهید و شاید یه لایه قبل سافت مکسون که حالا قراره بگه ۰۱ تا کدومی ۹ تا ۱۰ تا کلاسه یعنی ماشین اتومبیل چیزی هواپیمایی فلان فلان آخریاشو ببینید مثلاً این یه لایه آخرمونه که پول کرده بچه‌ها اینجاهایی که سفید توشه احتمالاً اینجوریه مثلاً به یه جایی میرسه که اگه ماشین توش بود روی اکتیویشن مپ دوم وسطش یه سفید ظاهر میشه اینجوری دیگه می‌فهمه بعداً این ماشین مثلاً و اگه هواپیما بخواد بشه مثلاً یه جای دیگه یه چیز دیگه اضافه میشه و این اتفاقاتیه که باید رقم بخوره بیشتر از این شاید فرصت نکنم در موردش صحبت کنم بذاریم انشالله بقیه ماجرا رو خودتون بررسی بفرمایید دیگه کم کم بهش آماده بشیم برای اتفاقی که افتاد خب به نظر میاد که مهمان عزیزمون تشریف آوردن لتس chg to انگلیs

E:\courses\LangChain Project\main root\data\SCR_Session10_transcript_part1.txt

به نام خدا دوستان عزیز و ارجمند درس رباتیک اجتماعی شناختی عرض سلام و ادب و احترام خیلی خوش آمدید آرزو قبولی طاعات دارم خدمت همتون یکی دو تا اناسمنت بدیم و بعدش بریم سر از سرگیری درسامون یکی اینکه پیرو درخواست یکی دو تا از بچه ها من تمرین سری اول تا روز جمعه تمدید کردم جهت رفاه حالتون و خاطر اینکه یه کدی رو امروز هم میگم شاید این کد باز به دردتون بخوره یه ماجرا و همینطور انسمنت دوم اینه که که به این اولی هم ربط داره اینه که من آخر هفته گذشته پیرو قولی که بهتون داده بودم ویدئویی از آموزش اوپن سی وی و لایبری اوپن سی وی توی پایتون براتون فرستادم به مدت یک ساعت که کسانی که بخوان با الفبای پروش تصویر آشنا بشن حالا لزوماً خودشون هم دانشی نداشته باشند ولی بخوان

بلاها سرش بیارن تارش کنن نمی‌دونم یه تیکه شو ببرند و و الی آخر از اون استفاده کنن شاید باز اون به کارشون بیاد به همین خاطر ما این سری استثنا این تمدید رو لحاظ کردیم تا الانم از تلاش مجدانه یه سری از دوستان واقعاً سپاسگزاری می‌کنم من یکی دو تا از بچه‌هام حتی جوابشونو فرستادن دیدم و خب برام ارزشمند بود زحماتی که کشیدن و حتی چیزهایی که رفتن تو این مدت یاد گرفتند براش خدمتتون عرضم بسیار اتفاق میفته تو این حوزه ها که شما یه سری چیزا رو بلد نباشید ولی نیازی هم نداره برید اختراع بکنید یا بخواهید کارهای عجیب غریب بکنید در حد پنج دقیقه ۱۰ دقیقه بعضی وقتا بیشتر کمتر با سرچ های اینترنتی نمونه های مورد نظرش میتونید پیدا بکنید مثلا مثالی که براتون میزنم امروز من در مورد مثلاً محاسبه چیز نحوه رسم کانفیوژن ماتریکس من هیچ دیدی نسبت بهش نداشتم با یک

چند خط کدو پیدا کردم و کپی کردم حالا نهایتاً یه سری تغییرات ریزی دادم و کار کرد و برام رسمش کرد که حالا امروز خدمتتون میگم آرمین سلام وقت شما بخیر در خدمتتون هستم سلام خسته نباشید بفرمایید اینم سوال خوبیه مرسی خدمتتون عارضم که یکی از بچه‌ها این کارو کرده خوبه هم کد پایتون رو بدید حالا چه سیو از گوگل کلپ میزنید یا پایتون دارید دات پی وای هم اگه تو گوگل کلب زدید اچ تی ام ال سیف کنید صفحتون رو که هم کدهاتون هست هم ریزالت هاتون خب همونجا من ببینم اگر هم توضیحی چیزی اضافه تر دارید هم باز مثلا یه پی دی اف هم کنارش بزارید دیگه مثلا ممکنه یه تیکه دستی نوشته باشید یه چیز اضافه تری خارج از اون محدوده کد داره اگه خارج از اون نیست همون فقط کد رو بذارید مثلاً بگید من به این اکیورسی مثلاً رسیدم نمیدونم این چالشش بوده

دست نوشته داشته باشید خب خوبه عکس بگیرید pdf کنید پیشنهاد من اینه که کلا یه فایل رر به من بدید تحویل که به ازای هر سوال به ازش سوالاتی که کد داره مثلاً با نام اون سوال کد پایتونش و همینطور صفحه ثبت شده‌اش از چیز نتیجه نهاییش باشه html سیوش کنید و همینطور اگه دست نوشته هم دارید در قالب یه پی دی اف یکپارچه یا پی دی اف های جدا جدا مثلاً کوسشن یک دو سه چهار بعد مثلا شبکه که ترین میکنیم وزن ها رو باید سیف کنیم مثل همون کاری که الان الان من نمیخوام ازتون چیزی نخواستم برای بع خب ولی اینو سعی کن برای خودت یاد بگیری که اگه خواستی وزنش سیف کنی بعدا لودش کنی یه جای دیگه استفاده کنی هم شدنی باشه حالا امروز نشونت میدم میگم کجا کاربرد داره همچین کاری چون سوال چهار گفته بودید که بع مثلا همین سوال رو این دفعه

شبکه‌های کانولوشنی بهتون بدم حل کنید خب یعنی اجازه استفاده از شبکه‌های سی‌ان هم دارید کنار ام ال پیتون و حالا ببینیم به چه نتایجی می‌رسید پس من نمی‌خوخواستم ولی اگر فکر می‌کنی چیز داره ممکنه به کارت بیاد در آینده سیو کن ضرر نداره دیگه بعدشم دانلودش کن تو کامپیوترت باشه باشه خیلی ممنون در خدمت هستم ولی من اضافه تر ازت چیزی نمی‌خوام تا جایی که نگفتم امیرعلی سلام سلام دکتر وقتتون بخیر زنده باشید آقا این فقط ما کد براتون بفرستیم این مسئله که داره اینه که مثلا تور ۵۰ که من زده بودم دقتش میرسید به ۴۰ ۵۰ درصد ولی یه دفعه گذاشتم تا ۷صدی پاک بره مثلا یه دفعه شد ۹۰ درصد خب اینو موقع ران کردنتون من که دیگه کد من فقط کد رو میخوام چشمی بخونم نمیخوام رانش کنم شما نتیجه ران هم برام بزارید عرض کردم خدمتتون یا از آخرین اتفاق مثلا اسنپ شات بگیرید یا اگر تو گوگل کلب هستید چیز بگیرید

عرض به خدمتتون hdml سیوش کنید که نتایجتون اونجا بمونه یعنی علاوه بر خودتون یه چیز دیگه هست اینه که من دیتاها رو برای اینکه موقع ترین کردم دفعه شافل کردم اینا رو به صورت رندوم بعد این هر بار که کد ران میشه این شافل میشه حالا دقت هاش حدوداً ولی تغییر میکنه این باریکلا امیر علی به چیز خوبی اشاره کردی که حالا گذاشته بودم عمدا خودتون ببینید و دارم کم کم اینا رو میگم این فرایند که ما داریم فرایند تصادفی و استوکست یعنی هم وزن های اولیه که ما به چیز میدیم پارامترها میدیم متفاوت اند و هم شافل شدن ها متفاوتن پس میتونه رو عملکرد شبکه اثر بذاره اینج وقت ها اگر قدرت پردازشی کافی داشته باشید یکی از کارهایی که میکنن که مثلا ۱۰ بار ران میگیند میانگین اینا رو گزارش میکن ولی من الان ازتون نخواستم خب اگه خواستید بع پیپر بدید مقاله بدید مثلا دیدید یکی یه جا نوشته ۹۰ درصد دقت

احتمالاً منظورش مثلاً از ۱۰ بار ران کردن بوده که مثلاً یه بار ۸۸.۲ شده یه بار ۹۱ و فلان شده بعضاً ماکس هم گزارش می‌کنند میگن ماکسیمم به این رسید یعنی مثلاً میگه ماکسم ۹۲ شد ولی ۸۹ شد خیلی ممنونم خب اگه سوالی نیست به نظرم من موارد خدمتتون گفتم بریم کارو شروع کنیم خب ما امیدوارم که سوفار از حالا درس ما استفاده های لازم داشته باشید جلسه قبل خواستم غافلگیرتون کنم با یکی از اساتید فوق برجسته حوزه رباتیک اجتماعی و شناختی در دنیا به نام آقای دکتر صحبت داشتیم استاد تمام دانشگاه یل و فارغ التحصیل تمامی مقاطع با انواع رشته ها از دانشگاه مای تی خب ایشون میهمان ما بودند و امیدوارم که صحبت هاشون برای شما مفید و الهام بخش بوده باشه

خود بنده که خیلی حس خوبی داشت به خصوص اینکه خودشون پیشنهاد دادن که دوست دارم به صورت آنلاین تو کلاست باشم حتی اگر ساعتش ساعت غیرمتعارفی باشه و این برام ارزشمند بود و احتمالاً برای اون هم ارزشمند بوده ارائه یه درسی تو شاخه تخصصیشون یه جای دیگه دنیا و خب احتمالاً براش یک موضوع مهمی بوده زنده باشید البته ما چیزهای دیگه هم داریم مصاحبه دیگه هم گرفتیم به صورت آفلاین که حالا به موقعش پخش میکنیم ولی این یکی خوب خوشبختانه خود به پیشنهاد خود آقای دکتر از آنلاین برگزار شد خدمت شما عارضم که بریم سر ادامه ماجرا و ادامه درسمون بدون فوت وقت و پیش ببریم مطالب حوزه سی ان ان و شبکه های عصبی پیچشی انشالله اگه خدا بخواد سه شنبه دیگه به هر جا رسیدیم میبندیم هر چند که من خودم یه مقدار کوچولو ناراحتم که یه سری چیزا اضافه تری

شاید نرسم ولی از ما ببخشید دیگه سعی کردیم حالا چیزهای واجبشو بهتون بگیم یه سری نمک فلفل‌هایی هم داره که من امسال حالا فعلاً نمی‌رسم بریم ادامه بدیم برای ماجرا اونو وارد شبکه‌های ریکارنت و اینا بشیم اگر تونستیم بعداً تکمیلش می‌کنیم چون ساخت جزوهش خیلی هم از من وقت می‌گیره نمی‌تونم الکی بهتون قول بدم که مثلاً یه روز دیگه‌ای این کارو خودم می‌کنم ولی تا آخر ترم خدا چی میخواد ولی سعی میکنم عمده مطالب بهتون بگم ما آخر جلسه گذشته رفتیم توی یکی از این سایت در واقع دانشگاه استنفورد یکی از اون دروس که ارائه میشه و ترین شدن سیف ده و به صورت ویژوالایز شده و تصویری دیدیم خب دیدیم که بهتون گفتیم سیفارده یه دیتا ستیه شامل عکس های ۳۲ در ۳۲ پیکسل رنگی که ده تا کلاس داره چند تا جک جونور اند نمیدونم

قورباغه مثلا گوزن و سگ و گربه و فلان اسب داره بعد ماشین داره کامیون داره نمی‌دونم هواپیما داره و پرنده داره و کشتی داره و الی آخر و خب باید ترین میشد و گفتیم چجوری به صورت ویژولایز میشه اینها رو دید مثلاً فرض کنید که عکس اول ۳۲ در ۳۲ عمقش به خاطر رنگی بودنش ۳ هستش اولین کاری که میکنه یه کانولوشن پنج در پنج میزنه تعداد ۱۶ تا از اینا ۱۶ تا ۵ در پنج در سه دیگه ها چون عمقشو گفتیم حتما باید خودش باشه ننوشته با استراید استراید یک با پدینگ دو این کاری که میکنه اکتیویشنش هم گذاشته سبب میشه که خروجیش باز همچنان ۳۲ در ۳۲ باقی میمونه چون ۱۶ تا داشتیم ۳۲ در ۳۲ در ۱۶ میشه خب یه رلو هم روش میزنه همچنان ۳۲ در ۳۲ در ۱۶یم بعد یه ماکس پولینگ میزنه روش با سایز دو در دو با استراید دو همون اتفاقی که براتون گفتیم و الی آخر ادامه میده دو سه سری کانولوشن داره و در نهایت هم

بدون فوت وقت سافت مکس میزنه آخرین لایه پولینگشو فلتن می‌کنه همه رو وصل میکنه به چی ده تا نرون تو لایه آخر و خب تلاش می‌کنه اینا رو ترین کنه ببینم یکی از دوستان دستش بالاست من بیام ببینم سوال چیه و در خدمتتون هستم خانم احمدی سلام وقت شما بخیر روزتون بخیر زنده باشید در خدمتتون یه سوال داشتم از جلسه قبل که حالا وقت نشد بفرمایید پردینگ رو اضافه میکنیم روی عکسمون یعنی عددای مختلفی ازش توی پیکسل های اون خود عکس اصلی بدون پ ضرب میشه این باعث نمیشه اطلاعات تغییر کنه نه خب اونا که اونایی که اضافه کردیم صفرن دیگه خب این در عادی ما اگه پدینگ رو اضافه نمیکردیم خب اتفاقی که میفتاد که میتونه تو حوزه ویژ به خصوص مهم باشه حالا شاید تو کارهای ما خیلی هم اتفاق بدی هم نیفته اینه که مثلاً شما

چهار در چهار داشتید عکس اصلیتون بود و یه سه در سه روش مینداختید خب اتفاقی که می‌افتاد اینه که اینجا یه دونه می‌دید اینجا یه دونه می‌دید اینجا یه دونه اینجا یه دونه یعنی خروجیتون دو در دو میشد ها اتفاقی که می‌افتاد بیان کردیم براتون گفتیم مثل اینکه این گوشه‌ها رو خیلی توجه بهش نکرده یه بار فقط دیدتشون در حالی که مثلاً اینا رو بیشتر دیده درسته گفتیم یه راه جبرانش اینه که به اندازه کافی اگه لازم شد پدینگ اضافه بکنیم البته حالا این مثال من مثال خیلی خوبی نیست چون عکس زوج در زوج فرد در فرد بهتر بود که بعضی وقتا لازم میشه بعضی وقتا لازم میشه که پینگ های سمت چپ و راست و بالا و پایین تو متقارن نباشن حالا ما کاری نداریم خب بسته به استراک چنده فرض کنید به اندازه کافی پدینگ اضافه میکنیم این به قول شما همه صفرن یعنی پیکسل های جدیدی از تصویرن مثل که عکس جدید تو تصویر اضافه شده حالا این مربعه میفته روش خوشبختانه جایی که صفر هیچ اتفاقی نمی‌افته خب و فقط اون بخش های که غیر صفرن و توش افتاده حالا سبب میشه که چی تو عکس خروجی هم

یه نماینده‌هایی بیاره از این گوشه موشه‌ها اوکیه منم اعتقاد ندارم که این نماینده‌ها دقیق‌ترین نماینده‌اند ولی خب یه چیزایی میاره حالا سوالتونو بفرمایید اگه اشتباه متوجه شدم متوجه شدم ولی مثلاً شما یه فیلتر در نظر بگیرید اعدادش مثلا یک تا نه وقتی عادی رو داریم عدد یک میفته روی اولین پیکسل ولی دو لایه پد اضافه می‌کنیم دیگه عدد یک روش این مربع آبی را دوباره تو عکس نهایی دارم که اولیش میفتاد خب یعنی از اون از اون قبلیا چیزی کم نمیشه ما فقط یه سری دور تا دور بهش اضافه می‌کنم اینو قبول دارید آها درسته اینفورمیشن اصلی وسط از دست نمیدم این شانس رو میدم که این گوشه موشه دیده بشن و تو بازی باشن خب متوجه شدم بعدش دیگه پولینگ میزنه اون اسمشون میکنه خواهش بعد پولینگ میزنه اون اسمشون میکنه و فلان و اینا و در نهایت رفت و در مورد ویژولایز کردن

صحبت کردیم اینکه هر کدوم از عکس‌ها نماد چین اینکه وقتی که کامبولوکشن روش زده میشه عکس‌ها به چی تغییر پیدا می‌کنند یا اینکه خود ویتا چه شکلی‌اند وقتی ویتا تعدادشون زیاد میشه چه جورین همینجوری اول ماجرا آخر ماجرا رو بخوام بهتون بگم اینه که هر جور تفسیری بخواید بکنید اینا عموما ساخته ذهن خودتونه یکی از مشکلات بزرگ شبکه‌های عصبی و شبکه‌های عصبی عمیق همچنان اینکه تفسیر پذیریشون مشکل داره یعنی اینکه بالاخره چه‌جوری می‌خواید تفسیر کنید هرچی میره جلوتر چه اتفاقی میفته من همینجوری به بیان ساده بهتون گفتم گفتم فرض کنید این یک لایه قبل چیز باشه یک لایه قبل سافت مکس این مثلاً سافت مکس نهاییتونه خب که فلتن شده بود و فلان یه سافت مکس نهایی دارید مثلا فرض کنید که نمیدونم مثلاً گربه بهش نشون دادید میبینید خیلی از این عکس ها یا سیاهن یا نزدیک به سیاهن حالا چون کوچیکن البته خیلی نمیشه دید ولی یه سری جاهاشون خیلی روشنه خب که حالا رو اینا میشه بحث کرد بعضی وقتا روشن شدن ها

مثلاً فرض کنید چشم گربه رو ببینه می‌بینید که اینو روشن می‌کنه بعداً تو حالا فولی کانکت داشت این خودش اثر خودشو می‌ذاره یا حتی خود گربه رو ببینه بعضی وقتا نه اصلا تفسیری نداره یعنی یه الگوی نامشخص روشن شدنی از اینا در نهایت به گربه منجر میشه و اینا چیزایی نیست که بشه به راحتی تفسیرش کرد روش میشه حرف زدا ولی من خارج از وقت منه که یک جلسه میشه در مورد تفسیر پذیری خروجی های در واقع کلا شبکه های عصبی صحبت کرد که من متاسفانه فرصت ندارم ولی در این حد بدونید که اوکی یه همچین کارایی داره میکنه و هرچی لایه لایه میریم جلو انشاالله بگید که داریم چیکار میکنیم فیچرهای سطح بالاتر پیدا می‌کنیم خب مثلاً فیچرهای سطح اول رو دیدید چجوریرین یه مشت رنگ بودن ها یا یه الگوی رنگ بودن مثلاً فرض کنید رنگ بنفش و سبز بنفشی که سبز پایینش باشه اینا آبی بالاش باشه شده یه فیلتر مهم برای این در واقع شبکه تا اینجای کار البته من خیلی هم نذاشتم بره جلو چند تا ای پاک مثلا رفته نهایتا ۵

۴۰۰ تا عکس دیده خوب و هنوز جا داره الان ترینینگ اکیرسی ۴۰ درصده در حالی که مثلاً ممکنه ترینینگش به ۹۰ و خورده‌ای برسه اگر ما اجازه بدیم پاک های بیشتری بره یا بک سایز بزرگتر کنم یا با پارامتر پارامترها مثل لرنینگ ریت مومنتوم اینا بازی بکنم ولی آخر هر اتفاقی ممکنه بیفته که شما تا الان تجربشو داشتید خب و در کل سبب شده که اوکی این اتفاق رقم بخوره که در نهایت با سافت مکس پایانی بیاد حدس بزنه و اینجا هم تستش تا اینجا پلات کرده همین قدر بدونید اینقدر شبکه الان بدققه که مثلا فرض کنید عکس سگ بهش نشون دادید اصلا تو سه تای اول حدسش اصلا اسم سگ نیست ها با احتمال بالاتری کامیون تشخیص داده بعد کشتی بعد گربه یعنی سگ تو سه تای اولم نیومده تو تاپ تریش نیومده خب ولی باید وایسیم تا اینا چی بشن جوری بشن که همه بیان تو تاپ وانا و در ضمن با احتمال بالایی هم بیان مثل این اصلا با احتمال خیلی زیادی بگه این اسبه و در ضمن حالا احتمال خیلی پایین‌تری نزدیک به صفر بگه ممکنه چیزای دیگه

با ادامه ماجرا که احتمالاً خودتون کار کردید بریم سر پیاده‌سازی همچین کدی توی چی خدمتتون عارضم که پایتون و یا گوگل کولب اگه بخوایم ما کد cnn بزنیم چیکار می‌کنیم خیلی کار سختی نخواهید داشت نسبت به قبل من یه بار دیگه اومدم سی ان ان روس پیاده کردم دیتا ستی بود که چی ۶۰ هزار تا در واقع صفر تا نه دست نوشته بود که خودشون اومده بودن تمیزش کرده بودن به ابعاد فکر می‌کنم ۲۸ در ۲۸ خاکستری طیف خاکستری شکونده بودن و ما میومدیم چیکار ۱۰ هزار تومن بهمون داده داده بودن برای تست و گفته بودن که اوکی برید شبکه بسازید که این کار بکنه ما قبلا با ام ال پی اینو ساختیم حالا میخویم با کانولو نتورک اینو بسازیم کارهایی که باید بکنیم اینه که مثل سابق باید یه سری چیزا رو ایمپورت کنیم چیزای اضافه تری که باید ایمپورت بشه ایناست یکی فلتن همون لایه ای که آخرین کامولوشن رو براتون باز میکنه یکی کانو دو دیه که ما برای عکس هایی که حالا

استفاده می‌کنیم ولی توی خودش کام یک بعدی و سه بعدی هم داره مثلاً برای آنالیز فیلم‌ها می‌تونید کام سه بعدی بزنید یا برای سیگنال‌های یک بعدی واقعا کامتی بزنید و مکس پولینگ دودی داره چیزای دیگه هم داره شما اینا رو لازم دارید که چیز کنید صدا بزنید ایمپورت کنید ولی مثلاً دس رو قبلا دیدید دراپ اوتو دیدید سیکوئنشال رو دیدید که چگونه نیست رو ببینید دیدید الی آخر خدمت خدمتتون عارضم که یه سری چیز هم جدید اضافه کردم حالا البته ممکنه ما الان خیلی ازش استفاده نکنیم گفتیم چیز کن بکند و ایمپورت کن زیر مجموعه کراس با نام کی هر جا من یعنی چیز دیدم کی نوشتم کی دات یه چیزی یعنی بک رو دارم صدا میزنم یک جزئیه خب حالا کاریش نداریم اگه بهش لازم شد اشاره میکنیم خودتون با سرچ هم میتونید پیدا کنید خب مثل سابق گفتیم که بک سایز هم ۱۶ تاییه ده تا کلاس دارم یه مقدار ایپوک ای

اضافه‌اش کنیم بعد گفتیم عکس‌ها رو ایمپورت کن عکس‌ها رو که ایمپورت بکنه بعد گفتیم چه میدونم سایت نوعشو به فلوت ۳۲ تغییر بده تقسیم بر ۲۵۵ هم بکن تا بین صفر تا یک بشه بچه‌ها من اینجا یه پرانتز باز بکنم خیلی عادت دارند ورودی شبکه‌شونو همون اول اول قبل بدن به شبکه چیکار می‌کنن نرمالایز میکنن بهترین نرمالایز اینه که شما میانگین بکنید صفر میانگین ورودی هاتونو لایه بردار ها ورودیتون و استانداردویشنشو بکنید یه عددی مثلا یک یا کوچکتر از یک ها یه عدد روی عددی ست کنید خب شما می‌تونید هیچ‌وقت هم این کارو نکنید همینجوری عددا رو تا اومده بهش بدید مثلاً چهار و پنج و شش مثلاً عکس مثلاً پیکسلن بدون اینکه ببرید تو این بازه بدید و بازم شبکه تو خوب کار کنه ولی یادتون باشه هیچ وقت شما از نرمالایز کردن ضرر نمیکید یعنی بدتر نمیشه اوضاعتون برای نرمالایز کردن هم کافیه که بردار

منهای بردار میانگین ایکس بکنید که من با میو نشونش میدم به استاندارد کتاب‌های چیز خدمتتون عرضم تقسیم سیگما بکنم تا این استاندارد بشه به یک بازه جدید حالا بعضیا با ایکس مثلاً هت یا الی آخر نشونش میدن و این میشه نرمالایز شدن بعدا تست هم که بدید باید منهای این میوه تقسیم سیگما بکنیدا خب و اول نرمالایز بشه بعد اینو بدید به ورودی شما از این کار ضرر نمی‌کنید خب حالا من البته نرمالیزم خیلی نرمالیز علیه السلام نیست من فقط بازار بین صفر تا یک آوردم شاید نرمالایز بهتر بین منفی نیم تا نیم بود خب خدمتتون عارضم که همینجوری گفتم شیپش هم چاپ کن ببینم چند تا دارم و الی آخر و بهتون گفتیم وای هم چه ترین چه تستش به کتگوریک ها تقسیم کنید چون الان لیبلی که این دیتا ست خودش زده تو کراس لیبل زده شما میارید صفر یک دو سه تا نه ولی ما گفتیم به وان هات پرسنتیشن تغییرش بده و خب این دستور این کار برای شما میکرد خب

حالا ما قبلاً هم اینو داشتیم می‌نوشتیم مدل مساوی با سیکوئنشیال پرانتز باز بسته می‌خوام همه رو بریزم تو مدل پله پله بچه‌ها مدل همونطور که از اسمش معلومه قراره پله پله بره جلو و حتماً لایه بعدی رو لایه قبلی سواره ها هم ام ال پی تا الان اینجوری بود هم سی ان انا اینجوری اند ها لایه یک به دو داده میده دو به سه و الی آخر و هیچ وقت یک به سه یک به پنج داده نمیداد ولی طبیعتاً ما شبکه های داشت که بتونن بدن و انشالله فرصت کنن جلسه آینده در مورد اینکه این را چجوری تو چیز پیاده کنید یه شبکه من درآوردی حالا امروز یکیشو معرفی می‌کنم اگه برسم چه‌جوری مثلاً من از لایه یک بخوام لایه چهار داده بدم ها چگونه این کار بکنم تو واقعیت تو کاغذ که میشه چجوری توی یارو کراس هم پیادش کنم انشالله براتون صحبت سعی میکنیم بکنیم پس داده این از جنس سیکوئنشاله صدا میزنم میگم مدل دات اد من میتونم لیر اضافه کنم ها فعلاً به این دو تا کاری

باشید برمی‌گردم صحبت می‌کنم اصلاً به این کاری نداشته باشیم مدل دودی اوکی پرانتز باز بسته این پرانتز بازش اینجاست پرانتز بسته‌اش اینجاست اوکیه توش یه چیزایی باید بنویسید میتونید سرچش بزنید توی کراس.io که کانو دو دی چه جوری نوشته میشه مدل دات اد یعنی یه لایه کانولوشن دو بعدی برام اضافه کن ۳۲ اولش یعنی تعداد فیلترهامه ها ۳۲ تا فیلتر میخوام که سایز مساوی با سه و سه میتونید حدس بزنید که فیلتررام سایزش سه در سه باشد خب اکتیویشن هم ریلو باشد اینپوت شیپ من مساوی با اینپوت شیپیه که بالا دادم که مثلاً بهش گفتم که آقا برو اینجا اینپ شیپت مثلاً مثلاً فلان ۲۸ در ۲۸ در یک یا مثلاً ۳۲ در ۳۲ در یک خب و خدمتتون عارضم که اینو برام اد بکن جهت اطلاعاتتون شما که بعداً سرچ بزنید مثلاً ببینید کراس داتo رو اینجا بزنم

برای همه چیش این برقراره‌ها خب نه فقط اینجا یعنی فقط این دستوری که میگم نیست مثلاً بنویسم کانو دودی اوکی هلپشه دیگه میرم تو دستور کام دو دی لیر بچه‌ها وقتی میخواد اجراش کنه حالا بدترین حالت پیچیده‌ترین حالتش اینه که بنویسید tf.layers.cody پرانتز باز بسته یه مشتی آت آشغال توشه خب اینایی که مساوی ندارن شما حتماً باید وارد کنید نوشته فیلترز اوکی باید حتما نامبر فیلترز شما وارد کنید خب ولی اینایی که مساوی دارند شما میتونید وارد نکنید و خودش دیفالت خودشو میگیره خب یعنی استرایدش اگه شما نزنید دیفالتی داره احتمالا یک در یکه پدینگش ولید ولید فکر می‌کنم یعنی پ نداشته باشد خب وقتی چیزی نزنید اوکی پس شما وقتی میخوید اجرا بکنید همین در حد ساده مینویسید آقا چند تا فیلتر می‌خوام چند در چند اوکی دیگه ساده ترینشه اکتیویشنش حالا می‌نویسید

بعدی چی مدل.ad conve de۶۴۳ درصد اکتیویشن رلو تازه این لحظه یک پله ساده‌ترم شد اولاً می‌تونید حدس بزنید که یه کانولوشن دیگه زده این دفعه ۶۴ تا ۳ درسه با اکتیویشن سری قبلی داده بودم اینپوت شیپش مساوی با اینپ شیپی که بالاست چون لایه اول بود بدون که اینپوتت باید چند باشه دیگه لایه بعدی اصلا نمیگید خودش میره پیدا میکنه میگه خروجی قبلی ورودی بعدی منه اوکیه دستور مدل دات اد ماکس پولینگ دو دی با حالا هیچی میتونید نذارید توش یا پول دیفالت خودش و یا بنویسید پول سایز مساوی با چی دو و دو که همون در واقع دو در دو براتون میزنه حتی میتونید استراید هم بهش بدید دیگه ها دیفالت ما این بود که دو در دو بزنیم با استراید دو ولیسان دیگه چیزهای دیگه هم زدن حالا بهتون نشون میدم مثلاً سه در سه میزنم با استراید دو یا با استراید یک حتی خب خدمتتون عارضم که پس طبیعتاً

قبلا هم داشتید با نرخ ۲۵ صدم بعضی از نیرون‌ها رو خاموش کن بعدش هیچی بدون هیچ چیزی فلت تنش کن اصلاً تمام یعنی نمی‌خوام بعد دنس اضافه کن دنس رو قبلاً دیدید دراپ اوت هم دیدید دنس آخرم که اکتیویشن سافت مکس میزارم و چی میشه این یه شبکه کامل بسته میشه یعنی الان یه مدل کامل میتونید شما ترین مدل رو تعیین کرده باشید همون ترینش نکردیم اوکی پس الان فرقی که کردیم این بود که شما باید کام دو دی و ماکس پولینگ دودی رو بالا ایمپورت میکردید اینجوری صداش میزدید همین درسته هیچ تغییر دیگه‌ای نداره و جزئیاتی داره اگه دلتون خواست برید نگاه کنید اگه میخوام استراید رو تغییر بدم باید چیکار کنم دراپ اوت داشته باشم نداشته باشم دلم میخواد ماکس پولینگام بیشتر باشن نباشن چون پولینگ ها عموما تعدادشون زیاد نیست تو شبکه یعنی به ازای هر کاموی نمیان باز یه دونه چیز هم بزارن دیگه خب ماکس بزارم خدمت شما عارضم که اوکی تا اینجا مدل رو بست

هی اد اد این رو سر هم سوارشون کردم سیکوئنشال چیکار کردم پشت سرم تعیینشون کردم خب حالا یه سری جزئیاتی اضافه کردم لرنینگ ریت اگه یادتون باشه ما گفتیم که اگه ثابت بگیرید به خصوص یاد بگیرید الگوریتم تو ممکنه همگرا نشه ممکنه معماری شبکه‌تون خوب باشه ولی لرنینگ ریتتون خوب نیست بعد شبکه تو همگرا نمیشه خیلی ها تو الگوریتم هاشون با روش های متنوعی که داره و کراس هم بعضی هاشو پوشش داده اینه که لرنینگ ریت رو به مرور زمان تغییر میدن عمدتا کم میکن یکی از روش هاش اکسپوننشیال که هر دفعه در واقع بر یه عددی تقسیم میشه حالا یا در ای به توان منفی چیزی ضرب شه مثلا و این کاهش پیدا کنه من مثلا چیکار کردم این دفعه حالا پیچیده تر دادم گفتم یه ظرفی به نام اس سی اچ دارم نماد اسکجولمه خب از این کلمه استفاده کردم بعد گفتم تیf. اپتیمایزر اسکجول دات اکسپوننشیال دیک حالا مثلا با نرخ اولی یک صدم داشته باشه بعد دیکیکی استپ ۱۰ هزار تا

نگاه کنید این چیکار می‌کنه چه فرمول ریاضی پشتشه حتی اگه نمی‌دونید هم مهم نیست میتونید با دیفالت‌های خوش استفاده کنید و عمده وقتا کارو در میاره مدل.comple دارید مثل سابق باید بگید که لاستون از چه جنسیه ما باز کتگوریکال کراس انتروپی هستیم اپتیمایزرتون چیه میتونید اس میتونه باشه چیز باشه حالا آدا دلتا ولی آخر باشه لرنینگ ریت این دفعه عدد ثابت ندادم اس سی اچ دادم که خودش بره هی با مدام تغییر کنه بعد در ضمن بچه بدونید شما میتونید برای همه اینا تابع های دلخواه من درآوردی خودتون هم بنویسید ها یعنی این حقم بهتون میده کراس تو آپشن هاش هست که بدید آقا اینجا لرنینگ ریت دلم میخواد تابع من باشه اونی که من میخوام حالا خوب باشه نه کاری متریکس و من اینو تو تمریناتتون تو یکی دوتایی که فرستادین دیدم اینو بهتون بگم بچه ها اکیوریسی متریکیه برای چیز برای به اصطلاح شبکه مسائل طبقه بندی برای مسائل رگریشن شاید این اکیورسی خیلی شاید چیز خوبی

یعنی چیزای دیگه‌ای هم هستن مثلاً همین برید مین اسکورت ارورشو بردارید متریک رو عوض کنید شاخصی که می‌خواید آنالیزش بکنید خب کنارش ریکال و پلی استیشن و اینام نوشتم فقط همینجوری سوسکی رد میشیم خدمتتون عرض کنم که این برای که خودتون بدونید چیه بچه‌ها وقتی دو کلاس داشته باشید مثلاً می‌خواید بگید عکسی که بهش دادم در واقع سگ هست یا نیست خب یا گربه هست یا نیست ما یه چیزی تشکیل میدیم به نام کانفیوژن ماتریکس یا ماترییکس در هم ریختگی بعضا ترجمه میشه ولی نمیدونم دقیقا کامپیوتر یا چی بهش میگن میگه یهورشو پردیکتد بزار یه وشو اکچوال یعنی یه و واقعا چی بوده یه و ما چی شبکه‌مون داره تخمین میزنه به اونایی که ما دقیق خودشون مثلاً گربه هستن و ما هم داریم گربه تشخیصشون میدیم میگیم تروپازیتیو به اونایی که گربه هستند ولی گربه نیستند ولی ما گربه تشخیصشون میدیم میگیم فالس پازتیو به اونایی که گربه نیستند

ما گربه تشخیصشون میدیم میگیم فالس نگاتیو و به اونایی که گربه نیستند و ما هم تشخیصشون نمیدیم که گربه نیستن یعنی می‌گیم هستن یا نیستن و درست تشخیص حالا از روی اینا یه سری متریک تعریف میشه که مثلاً ریکال چیه و الی آخر و حالا دارم نگاه میکنم تو گوگل ببینم هستش یا نیستش دنبال اینم که انشالله پیدا بشه میخواستم نشونتون بدم خیلی چیز سختی نیست حالا از روی همین چهار تا در میاد خب و متاسفانه پیدا نشد تو نگاه اول حالا نتونستم پیدا کنم و خدمتتون عارضم که وقتی تعداد کلاس‌ها بیش از دو میشه مثل الان که ام نیست صفر یک دو سه تا نه داره دیگه ماتریسمون ماتریس n در n میشه n تعداد کلاس هاست میگیم آیا صفر ما صفر تشخیص دادیم یا نه چند درصدش چند تا از صفرها که صفر بودن ما یک تشخیص دادیم یا چند تا از اونایی که یک بودن ما صفر تشخیص

در واقع ماتریسی می‌سازیم بهش میگن ماتریس همون کامپیوتر ماتریکس یا ماتریس درهم ریختگی بعضیا بهش میگن ماتریس گیجی هم ترجمه میکنن احتمالا ترجمه خوبی نباشه قطر اصلیش خیلی برای من مهمه یعنی چند تا از اونایی که واقعاً اون بودن منم اون تشخیصش دادم که می‌خوایم الان براتون رسمش کنیم تا ببینید خب خدمتتون عارضم که پس متریکا که گفتم برام پلات کن اینان اکیورسی ریکال و پریسشن رو برام بکش رسمش کن چیز کن در هر لحظه برام بنویسد خب بعد یه چیز جدیدی معرفی کردم کال بک ها خب نمیدونم تا الان رفتید سمتش یا نه این کراس کال بک های مختلفی داره این کالک ها برای اینن که هر از گاهی یه تصمیمی بگیره وسط حلتون مثلاً یکی از تصمیمات ارلی استاپینگ قبلا بهتون گفتیم گفتیم اگر دیدی ترینینگ رو تست رفتنصلشون یه جا اومدن در واقع اول داره کم میشه کم میشه اوضاع داره خب یه دفعه داره زیاد میشه این فرض رو بذار احتمالاً داره یه اورفیت می‌کنی یعنی رو ترین

E:\courses\LangChain Project\main root\data\SCR_Session10_transcript_part2.txt

اوضاع خوب میشه ولی رو تستت داره خراب میشه یعنی جنرالیزیشنش بد شده داره داده‌ها رو به جایی که یاد میگیره حفظ میکنه به خاطر همین مثلاً برو چکش کن نمی‌خواد شما کد بزنید اینا داره بعضی از این کالبک‌ها رو ارلی استاپینگ برای اینه چندین نوع استفاده داره مثلاً بهش بگی آقا بعد چند وقت یه بار اگه دیدی از هم دور شد این کارو بکن صبر بکن یا نکن اگر وزنی و آخرین بار مثلاً تو یه جایی دیدی سیو بکن یا نکن مثلا اینا حالت های مختلفی داره که اینجوری صداش می‌زنید من اسمشو گذاشتم ای اس مساوی با فلان بع تو کالبک ها صداش میکنن به جز این یه کالبک دیگه به نام تنسور بو هم هست البته اگه اشتباه نکنم برای رسم یه سری حالا گراف های خب که رو کامپیوتر یعنی زمانی براتون مهمه که رو کلب ران نکنید رو کامپیوتر شخصی پایتون بزنید اینو اینو اونجا بخواید اینجا ران کنید یارو براتون مینویسه که اوکی یا ارور میده یا اگر هم ران کنه نهایتا اون کسی که تو گوگل نشسته شما دارید رو کامپیوتر ران میکنید اونو میبینه شما نمیبینید خب

ولی کالبکی که میتونه به کار بیاد بله میتونید احسان خودت تعیین کنی حالا اینو سرچ بزن گوگل کن بهت میگه هم خودش چندین راه برات گذاشته یکی از سوپر معروف‌تریناش روش زویره ولی شما میتونی هرچی دلت بخواد بدین حق بهت میده خب من این کالبکارم تعیین می‌کنم یه تیبی دارم یه ای اس دارم بعداً می‌چسبونمشون به هم و چیز میکنم و بع میخوام حالا ازشون استفاده بکنم خدمت عارضم که گفتم در ضمن تو فولدر لاگ یه چیزی بریز بچه وقتی ران میشه اینجا یه فولدر بهتون میده البته چیز ها موقته یعنی دفعه دیگه خارج بشید وارد شید اینا کامل می‌رن و تو لاگز مثلاً یه سری چیزا براتون می‌ریزه یا یه سری چیزا شما می‌تونید اینجا سیو کنید مثل همون مای ماد رو بعد اینجا دانلودش بکنید برای خودتون کامپیوترتون داشته باشید که اگه خواستید هر وقت دیگه هر جای دیگه اجرا کنید بتونید خب خدمت شما عرضم که بعدش که مدل رو فیت بکنید همون مثل سابقه x ترین وای ترین رو بهش میدید بچ سایز دارید یا ندارید چند تا ای پاک بره

براتون خروجیاشو چاپ بکنه یا نکنه ولیدیشن دیتا دارید یا نه تست کال بک اگه دارید می‌نویسید کالبکس مساوی با چه چیزهایی من بهش گفتم کوروش باز بسته تی وی و ای اس هر دوتاشو می‌خوام بچه‌ها این کالبک‌ها رو سرچ بزنید به جز ارلی استاپینگ چیزهای دیگه‌ای هم ممکنه به کارتون بیاد ولی ارلی استپینگ خیلی مهمه ها میتونه به کارتون بیاد حتی تو این مثلاً تمرین شماره چهار که اینجا دارید هم باز ممکنه به کارتون بیاد یعنی مثلا چه میدونم امیرعلی گفت که مثلا من ۷۰۰ تا ای پاک ران کردم رفته دقت مثلا فرض کنید ترین رسیده به ۹۵ درصد آیا دقت تست هم به همین خوبی هست تو همین اوردر هست یا نیست اگه نیست شاید اور فیت کردید ها و قبلش بهتر بودلی استپینگ هم میذاشتید خب خدمت شما عرضم که بعد گفتم مدل کن ایکس تست وای تست رو و تو اسکور برام بریز سیوش هم بکن میتونستم بگید سیو نکن بعد بگید مدل و دی کن حالا این الکی این مثلاً مدللو پاک بکن یه بار میخوام خودم حالا لودش بکنم ببینم ارور نده و ببینم اوکی ارور نداد و تونستم همون چیزی که

پاک زدم بره جلو حالا یه بار دیگه ران می‌کنم خدمت شما عارضم یه توضیح فقط اجمالی اینجا بدم قبلا خیلی جزئیاتشو نمیدونم اینجا خب این ایمیج دیتا فرمت ها دو گونه می‌تونستن باشن اگر چنل فرست بودن شما باید عمقشو درایه اول می‌نوشتید بعد طول و عرض می‌نوشتید اگر غیر این بودن باید در سوم نیست دومی است یعنی باید باشه ۲۸ در ۲۸ در یک اینجوری خب اینجا بالاش نوشته بودیم که اینجا وقتی میخونی داده رو فلان میگه آقا ایکس ترین ۶۰ هزار تاست ۲۸ در ۲۸ در یکه ۶۰ هزار تا ترینینگ سمپل ده هزار تا تست سمپل داریم الان تو ایپاک شماره یکم ۸۰۰ و فلان تا از ۳۷۵۰ تا یعنی از ۳۷۵۰ بچ که لازمه من اینقدرشو رفتم جلو داره براتون میره تخمین زده دو دقیقه دیگه کار داره لاسش که هرچی پایین تر باشه

عدد ۷۷ صدم اکیورسیمونم ۷۵ ۶ درصده با یه پاک البته احتمالاً به چیز خوبی فلان و فلان اینا که بهتون گفتیم به دست میان چیز ساده‌ای هستند یعنی یه چیزی به علاوه یه چیز دیگه و فلان فلان و اینا رو میتونید ببینید یکی ممکنه متریکش یه چیز دیگه‌ای باشه اکتیویشن فکشن ها رو میتونی خودت هم حتی تعریف کنی منظورت اینه میخوید سوال سه که سینوس بود خب من انتظار ندارم که شما اکتیویشن فشن سینوس بزاری خب خواستی این کارو بکنی خود سینوس میخواستی بذاری پس متوجه نشدم الان شما اکتیویشن فکشن هر وقت دلت بخواد میتونی عوض کنی باید بعضی از این که میگم چندین راه دارن دو سه نوع راه دارن یعنی یک راه نیستش میخواستی مپ کنی و اون یکی دیگه رو عادی بکش حالا نمیدونم شاید یا دست بالا بگیر سوالتو شفاهی بپرسی آخر کلاس در خدمتت باشم حالا ببین

تایم ران میشه اینو بگیم سوال احسان جواب بدم احسان جان بفرمایید داشت میرفت یه دقیقه دیگه کار داره ثانیه دیگه میگم اگه خواستی سوالتو در خدمت هستم اگر نه بزار بعد کلاس در خدمت خب بچه‌ها این داره میره جلو میتونستید تعدادی پاک بیشتر کنید که طبیعتاً بره به دقت بالاتری برسه اما آها این دوتایی که بهتون نگفتم و کامنتش کردیم الان بگم بچه این دو تا نمادی از کی اند نمادی از عرض به حضور شما آگمنتیشن گفتم مدل دات اد کن میشه لایه های رندوم روتیشن اضافه کرد یعنی عکس رو بیا از منفی مثلا اینقدر درجه تا مثبت اینقدر درجه یا رادیان حالا یادم نیست این پنج صدم چی بود چیکار کن روتیت کن و اینو در واقع بده به عکس حالا این یه توضیحات دیگه هم داره وقتی عکس رندوم چیز روتیت میکن اتفاق حالا

خالی می‌مونن خب یعنی اینجوری میشه دیگه میگه حالا این پیکسل خالی رو چیکارش کنم اینجام باز بهتون آپشن داده میگه برم اینو بردارم بزارم جاش فرض کنم نمی‌دونم یه عکس دیگه مثل خودش اینجا بود اونی که تو اینجا افتاده رو بذارم یا نه برم نگاه کنم نزدیکترین پیکسل ها بهش چی اند اونو بزارم و الی آخر راه های مختلفی بهتون میده این نمادی از آگمنتیشن حالا یه خوبی هم که داره اینه که من اصلاً یادگمنتیشن رو دیگه سیو هم نمی‌کنم گفتم آقا هر وقت میرهرسی به یه در واقع عکسی توش ورودی رندوم دیگه حالا یه عددی مثلاً بین اینقدر تا اینقدر درجه دورانش بده ممکنه هیچی دوران نده و خدمت عارضم که اینو بده به ورودی بعد در ضمن اینم بهش اضافه کردم اد کراس دات لیرز g نویز با مثلا فرض کن که چیز استانداردویشن چقدر یعنی یه نویز گسی هم رو عکسام اضافه کن می‌خوام مثلاً عمدا عکسمو یکمی خراب‌ترش بکنم تا این ربات

قویتر باشه که بعداً اگه یه روزی برق رفت یه عکسی تاریک‌تر و روشن‌تر اومد مثلاً تو میدان دید ربات بازم بتونه اونی که می‌خوای تشخیص بده مهم اینه که میدان غنی کنید اما یه اتفاق خوبی که میفته اینه که من این عکس‌ها رو سیو نمی‌کنم که بخوام حافظه بکشم یعنی بخوام تمام عکس‌هایی که داشتم ۷۰ هزار تا بعد بیام ۷۰ هزار تای دیگه روتیشن ۱۰ درجه ۷۰ هزار تا دیگه ۲۰ درجه نمی‌دونم ۷۰ هزار تا فیلیپ شده ۷۰ هزار تا رنگش کم شده الی آخر اضافه کنم حافظه کم بیارم همینجا بهش میگم آقا خودت یکی از اینا رو بزن برو جلو اگه نمیدونم به نظر خودم چیز درستیه اگه ای پا کار ببرید بالا شبکه‌تون غنی میشه همه اینا رو میبینه چون اینا رندومن دیگه ها و سعی میکنه خیلی زیاد ببینه و این دو تا مدل دات ات فلان میتونست کلی کار شما رو راه بندازه بچه ها به جز رندوم روتیشن نویز برید نگاه بکنید برید زیر مجموعه کراس لیرز دیگه چه چیزایی وجود داره برای آگمنتیشن و این چیزای مختلفی هست من الان نزدم آگمنتیشنم الان نیومد خب این تمام شد بچه‌ها این دستور

من اینجا نمی‌تونم رانش کنم باید روی کامپیوتر خودتون ران کنید برای ویژولایز کردن ولی یادتون باشه اگر خواستید تو پایتون کدهای ترمینال لینوکس بزنید باید یه علامت تعجب اولش بزنید مثلاً می‌خواید یه لایبراری رو نصب کنید مثلاً فرض کنید کراس نداره مثلاً چی تقویم شمسی در عادی ممکنه روش نباشه شما دستورشو باید نصب کنید مثلا نمیدونم دیدید اون فیلم چیز یا نه پی آی پی اینستال فلان فلان مثلاً مال اوپن سی وی اگه نداشته باشه باید اینو بزنید علامت تعجب فلان تا اون بره نصبش بکنه بعدش حالا استفاده بکنید ازش خب بریم باکس سوم مدل دات سامری رو قبلا دیدید چیکار میکنه مدل دات سامری چیکار میکنه من اینو یکی یکی کامنت کنم یکی یکی بهتون نشون بدم مدل دات سامری سامریش به صورت جدول بهتون میده میگه که اوکی لیر اولتون کانولوشن بود اوکی چند تا بود ۳۲ تا ۲۶ ۳۲ تا خدمت شما عرض کنم که کام داشتید مثلاً خروجیش این میشد

بعدیش پلیر بعدی که میزدید ۶۴ تا داشتید خروجیش ۲۴ در ۲۴ میشد چند تا پارامتر داشت ۳۲۰ تا لایه اول داشت ها چه جوری شما ۳۲ تا ۳ در ۳ داشتید میشه ۳۲ تا ۳ در ۳ درسته یعنی ۳۲ تا ۹ تا برای دبلیوهاش چرا بچه‌ها ۳۲۰ ولی اینجا ۳۲ تا ۹ تا ۳۲۰ نمیشه یعنی یه جورایی ۳۲ تا ۱۰ تا شده علی دیگه تموم شد که این چیزه دیگه نیازی نیست حذف کنیم چون شما تست تو اصلا با این لایه نمی‌گیرید شما وقتی می‌خواید ایویت کنید اصلاً یه چیز جداست مشکلی برات به وجود تو مدل مشکلی به وجود نمیاره باریکلا بایاس مرسی یه دونه بایاس هم دارن یعنی در واقع هر یه دونه سه در سه سه تا نه تا ده با یه بایاس ۱۰ تا مجهول داشت ۳۲ تا ده تا ۳۲۰ تا اینجا داشت بعدی ۶۴ تا نمیدونم چیز زدم حالا باید ببینم چند در چند بود سه در سه بود یادم نیست چند در چند زده

فلان باز دوباره یه سری پارامتر میده لایه‌های ماکسولینگ بچه‌ها پارامتر نداره هیچی پارامتری به شما اضافه نمیکنه و البته جایی که یه دفعه پارامترهاتون خیلی زیاد میکنه لایه چیزه جایی که شما فلتن کردید بعد می‌خواید دنس کنید خب یه دفعه مثلاً تعداد پارامترها شده یک میلیون و ۱۷۹۷۷۶ تا فقط لایه‌ای داره که بعد از اینکه فلتن کردید ۹۲۱۶ تا نرون به شما داده بردید به ۱۲۸ یعنی ۹۲۱۶ تا ۱۲۸ تا از اولی به تمام ۱۲۸ تا چی داره وصل شده تازه بایاس هم داره ها ۱۲۸ تا بایاس هم دارم و یه دفعه اینجا پارامترها پارامترهاتون زیاد میشه در نهایت چی شبکه بسته میشه اینجا تمام توتال پارامترهاتون رو داده یه میلیون و ۲۰۰ هزار تاست و همشون هم قابل ترین شدنه خب و بعدش البته ترین هم شدن دیگه خب چگونه می‌توان چیکار کرد به شکل ظاهری دید که شبکه من چهه حالا اینجا راحت

دنبال همن این دستوره بهتون کمک می‌کنه کراس کراس دات یوتلز دات_ مدل مدلمون اون پارامتری که بالا به نام مدل تعریف کردیم تو چه فایلی میگه برامون سیو کن در ضمن حالا یه سری آت آشغال‌های اضافی هم داشته باشه یا نه اینو گفته برام رسمش کن بچه‌ها اینو بکشید رسمش کنید یه اتفاق جالب میفته تو این فولدره الان یه فایلی اضافه میشه که میتونید همینجا پلاتش کنید هم میتونید دانلودش بکنید و اینجا بازش بکنید ببینید شبکه‌تونو به صورت گرافیکی بهتون نشون میده میگه شما یه لایه اولی دارید اینقدر در اینقدره بعد میره به لایه دوم بچه‌ها می‌بینید قشنگ سیکوئنشال داریم میریم جلو اصلاً نزدیم تو صف اولی به سومی وصل نیست اولی چهارمی چیزی خبری نمیده ولی بعدا بریم جلو میخوید مطمئن باشید که یه شبکه عجیب غریب طراحی کردید آیا دارید شکلش درست میبینید یا نه حتماً اینو سیو کنید مثلاً این که آشغال تهش اضافه کردم این رو هم جلوش نوشت سایزشو یعنی اگه مثلاً اضافه نمی‌کردم دیگه فکر

بهتره این باشه که شما ببینید و حس و حال خوب داشته باشید اینم جهت اطلاعتون خدمتتون عارضم که اینم باز این هم البته قبلش باید ایمپورت می‌کردیدا خب اینم میتونم کامنت کنم سوال بعدی اینه که چجوری به ویتاش دسترسی داشته باشیم بچه ها راه های متفاوتی وجود داره مادلز دات بزنید به شما کل بیت رو با هم میده خب یه اتفاق جالب میفته ولی یک خوندنشو تا حدودی سخت می‌کنه اولاً همه چی قاطیه یعنی کانولوشن هستن دس ها هستند ماکسولینگ هستن این بالاش که خوبی داره یه سری اضافه آتشغال می‌نویسه در مورد شیپشون و اینا توضیحاتی میده خب ولی این دستور خیلی دستور غنی نیست خب من اگه جاتون باشم احتمالاً از این پایین ها استفاده میکنم شما بنویسید پرینت مدل دات لیرز به شما لیرها رو به ترتیب میده میگه لایه صفرمتون حالا یا لایه اولتون

دات لیرز دات کامولوشنال دوبعدیه خب بعدی دوباره کانولوشنال بعدی پولینگه و الی آخر حالا مثلاً می‌خواید لایه اولو مثلاً درایه‌هاشو ببینید میگید که مادل دات لیرز صفر رو به من نشون بده خب میگه اوکی اولین چیزو خواستیم فقط مطمئن میشم که اوکیولوشنال دو بعدی میتونم بالا هم چکش بکنم بچه‌ها اینم نماد صفر ایکس یعنی تو مرتبه تو چی میگن چیز ۱۶ نمایش داده شده مبنای ۱۶ تا نه که یک دو سه تا نه می‌ذاره صفر یک دو سه نه میذاره ای بی سی دی ای اف و اینا هم برای چیزه برای اینکه ۱۰ و ۱۱ و ۱۲ و نیم است که نمیتونید نشونش بده حالا خدمت شما عارضم که اگه بزنید مادل دات لیرز هفت دات ویکس خب به شما چی رو میده وزن های اون لایه رو میده اوکیه این یه راهه ولی باز این همون آت آشغالا رو داره تی اف داد وریبل فلان فلان اگر

عدد بده یه ماتریس دبل بهتون بده که شما بتونید باهاش کارهای ریاضی هم بکنید دستور گت ویت باز به نظر من بهتره خب را دست مدل دات لیرز ۷ gets خب حالا مثلاً یا مدل دات لیرز حالا ۷ نمیدونم چند در چنده یعنی باید ببینم خب خدمت شما عارضم که الان فقط ویتا رو میده ولی خب کلی ویته دیگه یعنی هنوز معلوم نیست یعنی شما باید شیپشو بگیرید ولی خوبیش اینه که اینا همه درایه یعنی بعداً می‌تونید با دو فلان جمع بزنید و مثلاً چه میدونم مثلا بنویسید مدل دات لیرز اپت ویت کن بعد درایه صفر و صفر و صفرشو بهم بده مثلا اگه سایزش ۳۲ در ۶۴ در فلان در فلان باشه به ترتیب میره درایه اول اولی دومی و الی آخر رو برمید مث الان یه عدد شد یعنی مدل دات لیرز هفت گت پرانتز باز بسته صفر و صفر رو گفتم بهم بده یعنی در واقع همون طول و عرض و ارتفاعش بهش دادم و اون

برخلاف مطلب اینا از صفر شروع میشن به جای یک و این چیکار می‌کنه یه عدد به شما میده قشنگ میتونی به تک تک بیت‌هام دسترسی داشته باشه اینم جهت اطلاعتون اگه می‌خواید بیتا رو ببینید بعدی کانفیشن ماتریکس کشیدنه میتونه کمکتون کنه میتونید یه سری چیزا ایمپورت کنید کانفژن ماتریکس دیسپلی و اینا رو ایمپورت کنید من به دو روش ماتریکس براتون کشیدم فقط یه کاری که هست بچه‌ها یادتون باشه ما وای هامون وای چیز بودن کتگوریکال بودن با این دستور اول میام به صفر تا نه تبدیلش میکنم میتونم حتی براش اسم بنویسم که مثلاً بهش بگم آقا صفر اگه دیدی کت بنویس مثلا گربه بوده ولی آخر من این کارو نکردم دیگه این دستوره سی ام اول گفتم وای پرد تست برام حساب بکن باید هم سایز باشن بعد بگو کانفیژن ماتریکس وای تست و وای پردیک رو برام تو سی ام بریز بعد دیسپلی کن سی ام برام و رسمش بکن اینم یه راه دیگست حالا یکیش در واقع کامپلوژن ماتریکس

عدد توش می‌نویسه یعنی بهتون میگه آقا ۹۶۸ تا صفر بوده که تو من صفر تشخیصش دادم تو تست خب من هیچ صفری و یک تشخیص ندادم دو هم تشخیص ندادم ولی یه دونه صفر بوده که من سه تشخیصش دادم ها و الی آخر بدترین خطامم تو صفر کیه در واقع وقتیه که صفر و شش شناختم ها یعنی صفر بودا ولی من شبکه به من شش خروجی داده ۶ بار این اتفاق افتاده جمعش که بزنید بچه‌ها من فکر می‌کردم باید ۱۰۰۰ بشه بعد متوجه شدم امروز که این دیتاست به نظر متقارن ندادن تو تستش مثلا فرض کنید بیش از هزار تا برای یک گذاشتم ولی مثلاً ۹۸۰ تا فکر کنم برای صفر گذاشتم مثلاً الان ۶ از ۹۸۰ در واقع شش تشخیص داده ولی بقیش فلان خب قطر اصلیش می‌بینید عدد و عددای بزرگی اند هر چی هم رنگش پررنگ‌تر باشه یعنی عددتون بیشتره این یک دیدگاهه که می‌تونید ببینید چی با چی داره اشتباه میشه این چند بار مثلاً دو

۱۰ بار صفر تشخیص داده شده خب که اینا جای بعضاً بحث داره یه حالت دیگه هم با یه روش دیگه براتون درصدشو پلات کردم شاید این بعضا بهتر هم باشه اینکه چند درصد داده‌ها درست تشخیص داده شدن ۹۹ ۹۹% و و الی آخر و بعضی وقتا ملت میانگین این قطر اصلی رو گزارش می‌کنن که شبکه‌شون چقدر خوب کار کرده اینم دو روش بیان ماتریکس که من این کد رو در اختیارتون قرار میدم بعد جلسه که انشالله بتونید چیکار کنید ازش استفاده کنید دلتون خواست اینا نمونه های بود که شما میتونستید کانولوشن را بکنید پس اینم پیاده‌سازی کدهای کانولوشن به صورت سیکوئنشال بود ولی ما هنوز شبکه های پیچیده رو بهتون نگفتیم انشالله فکر میکنم بره جلسه آینده امیدوارم هم برسیم اما بریم ادامه درسمون سعی میکنم یکم سریع باشم تا یه مقدار بشه به یه نقطه مناسبی رسوند مرتضی سلام وقت شما بخیر در خدمتم سلام استاد وقتتون بخیر استاد یه سوال داشتم این قسمت آخر کد میشه لطف کنید بیارید بله بله

برای چی کامپیوتر لیبل‌ها رو از حالت کتگوریکال خارج تا ۹ فعلا معنی دارند دیگه خوب ولی من میتونستم بعداً حتی اینم بهش اضافه کنم که صفر معادل گربه است خب یعنی اینم باید یه پله براش اضافه بنویسم لیبلز باید یه پارامتری به نام لیبل تعریف میکردم نمایش دادن ماتریس درست بنویس من یه سوالم اینه که الان ما ابتدای کار یه دور اومدیم صفر تا نه کتگوری کال کردیم که بشه حالت وان هارت یه دور برش گردیم بله بله حالا میتونستیم وان هاتش نکنیم اگر از همون اول میدونستیم قراره که کانفیوژن ماتریس توی این در بیار کاری که من کردم که خیلی کار سخت نیست صرفا برش گردوندم و فلان خب ببین من

نمی‌دونم که چون اینجا کتگوری کال کراس انتروپی رفتم قطعاً باید وان هاتش میکردم ببین چیز من اینه دیگه خب این یارو لاس من اگه لاستو میزدی یا چیز ام اس ای مین اسکورت ارور این حق داشتی بله یعنی نتیجه متفاوت بشه کتگوری خیلی بهتره بهتون گفتم نه اگر اگر ام اس ای میزدم لاس رو دو حالتی که من یه دور ببرم درسته یا نه باید چک کنیم ولی نمیبردیش درست بود اصلا کاری که شما الان تو مسئله شماره سه تمرین باید انجام بدید اینه دیگه چون رگریشن دارید لاست تو باید مثلا تا اون بره جمع توان دوشو بهت گزارش کنه و اونو مینیمم کنه اونو مینیمم بعد حالا یه سوال دیگه هم دوباره راجع به همین اینجا که داره برمیگردونه از وان هات به صفر تا نه بله مثلا شما حالا احتمالش ممکنه ضعیف باشه

حالت اینه که از بین مثلاً این ۱۰ تا دسته دو تا از دسته‌ها یا سه تا از دسته‌ها چند حول و حوش ۳۰ درصد باشند یکیش خیلی ناچیز باشه بله همین کارو کرده اگه دقیق دقیق یکی باشن خب دقیق دقیق یکی باشن احتمالاً اولی رو برمیداره خب یعنی مثلا تا ۸ چند رقم اعشار نگه داشته برای خودش ولی این احتمال تو واقعیت خیلی بعیده هزار تا اتفاق میفته که خیلی تاثیر نداره دست شما درد نکنه خب بریم بچه ها ادامه ماجرا چند تا ماجرا مونده امروز اول یه توضیح در مورد فیلد بدم که هم میدان دید در واقع کانولوشن ها رو بررسی کنیم هم به اون سوال آقای محمدزاده که دو سه جلسه قبل پرسیدن در مورد سایز فیلترها بشه یه جورایی مستندتر جواب داد بچه‌ها کانولوشن

یک بعدی اما می‌تونیم داشته باشیما یعنی که شما یه لایه دارید بعد مثلاً سه تا سه تا هی روش سرش میدید بره جلو بعد سه تای اول این یه خروجی بهتون میده سه تای دوم یه خروجی و الی آخر پس اگه یکی ازتون پرسید این لایه‌ای که موس من روشه داره چیو میبینه میگید این سه تا رو داره میبینه درسته اگه این کیو میبینه این سه تا رو طبیعتاً وقتی یه کانولوشن دیگه میزنیم از این سه تا این به وجود میاد حالا یکی ازتون پرسید جی سه توی کام قبلی چیو میدید میگید سه تا رو داشت می‌دید ولی اگه گفت تو لایه اول چی داشت میدید طبیعتاً داشته تمام کسانی که این سه تا رو ساختن رو می‌دیده دیگه پس میدان دیدش بیشتر از این سه تا بوده ها و این سبب میشه که خیلی راحت بشه آنالیز کرد اگه یک عکس پنج در پنج داشته باشیم یه فیلتر پنج در پنج روش مینداختیم بچه‌ها خروجمون چند در چند میشد یه عکس پنج در پنج داریم یه فیلتر پنج در پنج روش میندازیم خروجیم چند در چند میشه یک* یک تمام یه دونه خونه میشه اما اگه تو راش دو تا سه در سه مینداختم این اتفاق جالب

توراش دوتا سه در سه بندازم باز دوباره یه تک خونه اینجا میفته وسط که این تو لایه قبلش معادل اینکه یه سه در سه رو دیده اون سه در سه هم هر کدوم از خونه‌هاش یه مشتی سه در سه دیدن و این معادل اینه که چی اون تک خونه داشته میدان دید وسیع‌تر یا ۵ در ۵ رو می‌دیده ها پس این سوال به وجود میاد یعنی این گرا رو ما داریم می‌گیریم که دو تا فیلتر سه در سه متوالی از لحاظ عملکردی ظاهراً شبیه یه فیلتر پنج در پنج عمل میکن ها سه تا سه در سه مثل چند در چند عمل می‌کنه بچه‌ها حدس میزنید سه لایه سه برم هی کانف کنم تا آخر مثل که اون خونه وسطیه داشته میدان دیدش نسبت به اولی چند در چند بوده احتمالاً برام بنویسید یه کانولوشن یه کانولوشن یه کانولوشن سه در سه دیگه بزن

معادل هفت در هفت میشه داره یه میدان دید ۷ در ۷ می‌بینه بله خانم احمدی خب حالا این سوال مطرح میشه میگه آقا مثلاً من وقتی دارم گل و شناسایی می‌کنم برم فیلترامو ۷ در ۷ بزارم خب که در هر جا دیگه گل و تشخیص بدم حالا از سایر بک گراند یا اینکه نه عجول نباشم و برم فیلترهامو تا حد امکان کوچکتر بردارم ها خب یه آنالیز محاسبه ساده می‌کنیم اولاً اگر فیلترهای سه در سه بردارید و هی لایه ها را ببرید جلوتر همون همینجوری متوجه شدیم که دو تا لایه سه در سه یا سه تا لایه سه درسه معادل یه دونه هفت در هفت عمل میکنه پس علی‌الاصول باید بتونه سه لایه این اونو در بیاره خب شانس خوبی هم که به ما میده و از روی ظاهرش قابل فهمه که لایه های سه در سه شانس رو به شما میده که به جای گل پلکانی تر برید جلو گلبرگ ساقه و الی آخر هم در بیارید بعد اونا رو به هم بچسبونید یه پله جلوتر بگید گل یعنی لایه سوم بگید من به گل

ولی قبلش گلبرگ و اینارم در آورده باشم در حالی که اگر هفته حرف می‌زدم اینو در نمی‌آوردم خب حالا ماجرایی که یه محاسبه ساده نشون میده که کدومش تعداد وزنه‌های بیشتری داره اگر شما فرض کنید که یه عکس اچ در دبلیو در سی دارید عمقش مشخصه خدمتتون عارضم که ۳۰ تا فیلتر هم می‌خواید بزنید در ضمن به اندازه کافی پدینگ اضافه می‌کنید که سایز عکس نهایی اچ در دبلیو بماند می‌خوام سایز عکس بدون تغییر بماند دلیل هم داره می‌خوام بتونم این دو تا با هم مقایسه کنم یه شهود به شما میده اگه یه دونه هفت در هفت بزنید شما هفت در هفت در ۳۰ تا در واقع هر فیلترتون پارامتر داره باید ولش کنیم حالا ۳۰ تا هم از این فیلتررا دارید ۴۹ ۳۰ به توان دو تا پارامتر لازم دارید اگه سه تا سه سری کانولوشن سه در سه بزنید شما سه سری در واقع هر فیلترتون سه در سه در ۳۰ تا پارامتر داره

در ۳۰ تا فیلتر دارید این کام به لایه اول به دومه کام به لایه دوم به سوم همین کامل به لایه سوم چهارم سه تا از این ۳۰ تا ۳ در سه در سی دارید و نتیجه این میشه که چی شما ۲۷ c2 پارامتر دارید ها یعنی با حفظ این شرط‌هایی که اینجا گذاشتم تعداد پارامترهای سه بار کانولوشن سه در سه زدن از یه دونه ۷ در ۷ زدن نصف اونه تقریبا در ضمن شما تو این فاصله دو بارم چیز می‌زنید رله میزنید یعنی هر سری تموم میشه یه میزنید و غیر خطی شدنه کانولوشن سه در سه‌تون باید از غیرش خطی شدن هفته یه بار میزنم بیشتره پس این نتیجه کلی داره به ذهن میرسه که تو واقعیت هم از یه سالی به بعد از سال ۲۰۱۴ به بعد واقعاً اومدن سمت این تا حد ممکن چیکار کنن فیلترها رو کوچیک‌تر انتخاب کنن خاطر به جای اینکه فیلترها رو گل گشاد همه سایز های بزرگ بزرگ بخوان انتخاب بکنن خب بریم سر شبکه های معروف اما قبلش

اشاره بکنیم تو حوزه دیپ لرنینگ داده شده به سه تا آدمی که غول‌های این حوزه اند گادفادر این حوزه حساب میشن یکیشون بدون شک یانگلیکانه که لینت و راه انداخت قبل از سال ۲۰۰۰ و خوب شبکه‌های کانولوشن احیا کرد بک پراپ براشون حل کرده بود پیپر مرتبط دیشب چک کردم ۴۵ هزار تا سایتیشن ناقابل داشت خدمتتون عارضم که نفر بعدی قطعا پروفسورتون باید باشه از دانشگاه فکر میکنم چیز تورنتو توی کانادا باید باشه فکر میکنم اگه اشتباه نکنم دو تا کار بزرگ کرد بزرگترین کارش تو الکس چاپ شد دانشجوهاش و خوب ریلو را پیشنهاد داد و سبب شد که دیپ لرنینگ احیا بشه خدمتتون عارضم که این اورده به نام نوبل پرایز آفوتینگ هم نام گذاری میشه ها خدمتتون عارضم که بریم سر شبکه

معروف سی‌ان‌ان شبکه‌های رایجی که معماریشون استفاده می‌شه من دوست دارم شما دانه معنی رو بگیرید خب دانه معنی بگیرید مردانه عقل من چند تا شبکه می‌خوام بهتون معرفی کنم آخرش می‌خوام از خودتون بپرسم که چه یافته‌ای دارید اگه شما بخواید یه شبکه بسازید چی می‌سازید کاملاً چیز داشته باشید یه لحظه فوکس کنید روی مدل هایی که من میگم و در نهایت مدلاتونو پیشنهاد بدید بچه‌ها شبکه‌ای که شبکه‌هایی که می‌خوام پیشنهاد بدم به جز شبکه اول لینت و تهیه برسم شبکه هایی هستند که توی مسابقه به در واقع رقابت پرداختند و برنده هاشون رو میخوان خدمتتون معرفی کنم یه دیتا ستی وجود داره به نام دیتا ست ایمیج نت خب که میتونید برید تو این سایت بگیرینش و هزار تا آبجکت توشه از میبینید دیگه چیز گل و گیاه و نمی‌دونم پرنده و جونور و فلان و اینا یک میلیون وست هزار تا ترینینگ ایمیج داره ۵۰ هزار تا ولیدیشن داره و صد هزار تا تست احتمالاً زمان

به آدما و وایمیستادن اون آدما رو با این ۱۰۰ هزار تا می‌سنجیدن مسابقه‌ای که براش راه افتاد اسمش این بود که با آی ال اس وی آر سی نشونش می‌دادند خب که تمام شد ها دیگه الان کگل جاش برگزار میشه تا قبل سال ۲۰۱۲ شبکه‌های معمولی و شلو بودن که برنده می‌شدن توش این هم که میبینید خطاهای شبکه است مثلاً یارو ۲۸ درصد خطا داشته یعنی ۷۲ درصد دقت داشته برنده می‌شده خب نمیدونم سال بعدش با ۷۵ درصد دقت برنده شده سال ۲۰۱۲ یه اتفاق میفته و یه دفعه خطا از ۲۵ درصد به ۱۶ درصد میرسه و طرف با ۸۳ چهار درصد برنده میشه و اونجا جایی نیست جز وقتی که الکس نت خودشو نشون میده که ما میخویم این معماری ها رو بیان بکنیم بچه‌ها ما با لینت شروع میکنیم الکس نت زدfنت وی جی نت گوگل نت رزنت و موبایل نت میریم که تقریبا

ترتیب‌های زمانی دارند گوگل نت تو یک سالن ولی بقیه‌شون هر کدوم سال‌های مختلف بودن ۲۰۱۲ ۱۳ ۱۴ این دوتا ۱۵ و بعدش حالا تا بیشتر تا همون ۱۵ ۱۶ رو با همدیگه میریم جلو بعدش حالا اگه برسم یه سری توضیحات شفاهی میدم اگر نرسیدم دیگه به بزرگواری خودتون ببخشید خدمتتون عارضم که اولین شبکه یلیکان در واقع مبدعش بود شبکه لینت بود توی ۱۹۸ و خورده ای راه افتاد بعد روش کار کرد تا قبل ۲۰۰۰ ایشون اومد دیپ لرنینگ رو احیا کرد ایده به کارگیری کانولوشن رو زد توی شبکه های عصبی خودش رفت فکر می‌کنم بکشو حل کرد و شبکه که زد برای شناسایی اعداد بود همون امروز باشه و بعدش حروف بود و اینجوری بود که کلاً دو لایه کانولوشن هم بیشتر نداشت یکی از دلایلش این بود که قدرت پردازشی اون زمان خیلی پایین بود یعنی کامپیوترها سخت افزارها جون نداشتن اینجوری بوده که عکس رو می‌گرفته ۲۸ در ۲۸ در یک یه کانولوشن

E:\courses\LangChain Project\main root\data\SCR_Session10_transcript_part3.txt

تمام صدق الله العلی العظیم و بهتون می‌گفته که چی بهتون می‌گفته که بالاخره چیزی که دیدم ۱ ۲ الی آخر همون کاری که من الان تقریباً تو این شبکه هم آوردم خدمت شما عارضم که این کار الهام بخش نفرات بعدی بوده البته تا سال ۲۰۱۲ می‌خوابه خیلی رشد نمیکنه نمیدونم دیگه میخوام جوابشو بگم جوابش میشه همون جواب یکی از بخش های سوال دوتون بچه‌ها شما هر وقت شبکه رو خیلی خیلی عمیق می‌کردید خب بعد که می‌خواید برگردید یه اتفاق بد میفته کسی میتونه برام بنویسه سریع چیه یا خودم بگم اگه سریع مینویسید ما چرا تعداد شبکه‌ها تعداد عمقو نمی‌تونستیم از یه حدی بیشتر کنیم یا حداقل نمی‌کردیم این کارو کسی ایده‌ای داره یعنی الان فرض کنید به اون سوال دو تمرین جواب دادید چی می‌نوشته جوابشو تعداد پارامترها زیاد میشه

فرض کن اوکی این درسته ولی فرض کن تعداد پارامترها من هندل کنم مثلا به جای اینکه نمیدونم چیز کنم دیگه تعداد نیرون‌های لایه‌هامو کمش کنم اطلاعات امیر محمد می‌نویسه از دست می‌رفت نمی‌دونم چرا این باورو دارید ولی به نظر میاد ببین من این سوال بپرسم چرا چرا یعنی نباید بدتر بشه دیگه حداقل باید مثل شبکه دو لایه عمل بکنه آها علی آقا قدمی تو مشتق گیری چه مشکلی به وجود میاد رو کاغذ که مشکلی به وجود نمیاد دیگه طبیعتا میشه مجتبی گرفت باریکلا خیلی زیاد که نمیشه چون اون زمان اصلاً رلویی وجود نداشته شبکه‌ها چی بودن سیگموید و تنش داشتن استفاده می‌کردن بعد از اینکه مشتق این بین مثلاً فرض کنید چیز بوده یه عدد محدود بوده بین صفر تا یک مثلاً بوده و به شدت هم چیز می‌شده حالا بین صفر تا یه عددی بوده برمیگشته دوباره و به

سریع سفت می‌شده و هیچ در واقع گرادیانی از بالا وقتی که بک پراپ می‌زدید به این اولیه نمی‌رسیده و نمی‌تونسته آپدیت کنه و عملاً انگار شما هیچ کاری نکرده بودید تا اینکه این نمونه‌هایی از دموش رو ببینید این چیزایی بوده که زده بودن البته این فراتر از اون کدی که ما زدیم و چند تا چیزو میخواد بهتون نشون بده میگه شبکه لینت نسبت به شیفت این ورینت اوکیه یعنی چارتتون هر جا نوشته باشه من چارت تشخیصش میدم سایزتون بزرگ و کوچک بشه اسکش اوکیه روتیشن بهش بدید همچنان دارم چارت تشخیصش میدم این خیلی جالبه مثلاً یک رد میشه یه دو رد میشه یه جایی بچه‌ها چهار تشخیصش میده می‌بینید این یک و دو اینجا که اینجوری میشن چهار می‌شناستش میگه من جدا جدا میتونم تشخیص بدم میگه ضخامتش زیاد و کم بشه میتونم تشخیص بدم اگه عکس رو نویزی بکنید بازم میتونم تشخیصش بدم یعنی نمیدونم یه سری خط و پیتک بندازید توش و فلان و اینا خب خدمت شما عارضم که این داستان ادامه پیدا میکنه تا

گروه هینتون سال ۲۰۱۲ دیپ لرنینگ و احیا می‌کنند و بدم احیا می‌کنند خدمتتون عرضم یه پیپر میدن که توش یه شبکه معرفی می‌کنند به نام الکس نت الکس اسم نفر اول این مقاله است این ای که می‌بینید الکسا ناقابل خدمتتون عرض کنم روم به دیوار روم به دیوار گلاب به روتون مقاله‌شون تا دیشب اگه اشتباه نکنم ۱۰۵ هزار تا سایتیشن داشت من معذرت می‌خوام اینو میگم لوگاریتم سایتیشن این مقاله به تنهایی ممکن هست سایتیشن بعضی از شما تک نفر بالاتر باشه یه مقدار باید بجنبید یا حداقل شانس در خونشون رو زده و یک کاری کردن واقعا رولوشن رو تغییرات اساسی به وجود آوردن شبکه‌شون الکس نت بود نامش اینجوری بود که ایده برداری کرده بود از شبکه های چیز لینت فقط تعداد به اصطلاح کانولوشنش بیشتر کرده بود اون زمان ابزارهای محاسباتی بهتر شده بود در ضمن رو دو تا هسته به صورت موازی پردازش می‌کرد خاطر همین

انجام میدیم دقیقاً نیست یعنی همون اولش اینجوری بوده که بعضی از اطلاعاتو می‌داده به بالای بعضیا رو به پایین بعد این پایینی و بالایی بعضی جاها هم شعر نیستن یعنی از همدیگه خبر نداشتن مثلاً اینجا شعر خبر داشته بعد اینجا خبر نداره بعد گفته آقا برو برو فلتن که کردی حالا به همدیگه خبر بده که اون به چی رسیده این به چی رسیده اینپوتاش عکساش ۲۲۷ در ۲۷ در سه بوده خدمت شما عارضم که اولین کانولوشن که میزنه ۱۱ در ۱۱ بوده سایتش سایت اندازش استراید چهار میذاره طبیعت سبب میشه ۲۲۷ منهای ۱۱ چهارم به علاوه یک بکنید به ۵۵ در ۵۵ تعداد پارامترهای لایه اولش هم ۳۵ هزار تا بوده خب حالا ما همونطور که دیدیم هرچی بریم به چیزا برسیم فول کانکتد برسیم اوضاع بدتر میشه ویژوالایز کرده ۹۶ تا فیلتر ۱۱ در ۱۱ که اینجا در آورده رفته در آورده رو کامپیوتر رو پردازشگر اول و دومشه این لایه اول مال بالایی است مال اینه خیلی هاشون اول خط با زاویه های مختلفن خب گفته

جایی که سبز باشه پایینش بنفش باشه من به کارم میاد شما کاری نداشته باشید چه جوری ها یا اینکه این الگوی رنگی رو داشته باشه من به کارم میاد و اینا خروجی های لایه اولش بودن خدمت شما عارضم که مهم‌ترین تغییراتش این بود که برای اولین بار از رلو استفاده شد و عمیق تر از لینت بود ولی الگوش شبیه اون بود خدمتتون عرضم خیلی راحت من پیشنهاد میکنم اینو چک کنید با ۲۷ در سه شروع میکنه ۹۶ تا ۱۱ در ۱۱ میزنه با این استراید و فلان میشه ۵۵ در ۵۵ در ۹۶ یه مکس پول میزنه با سه در سه استراگ دو بچه ما دو در دو استراید دو میزدیم این سه در سه است دو میزنه یعنی یه جاهایی اورلپ هم داره بعد سایزش برید تو اون فرموللا بزارید میشه چی میشه ۲۷ در ۲۷ در عمق که ۹۶ باشه اینو یه نرمالایز بکنید خیلی چیز مهمی نیست خیلی کار شاقی نبوده حالا فکر می‌کرده خودش خفنه ولی الان چیزهای بهتری اومد

۵ در ۵ ۲۵۶ تا روش میندازه بعد به اندازه کافی پدینگ میزنه که چیرینگ نکنه ۲۷ در ۲۷ بمونه یه پولینگ میزنه میشه ۱۳ در ۱۳ دو سه تا کام میره با ۱۳ در ۱۳ یه مکس پول میزنه میشه ۶ در ۶ در ۲۵۶ اینو ضرب بکنید یه عددی میشه از ۴۹۶ بالاتر اینو آنرولش میکنه یه فول کانکتور ۴۹۶ تا یه ۴۹۶ تا که در نهایت بهم بگو جز کدوم کلاسه دیگه خب یعنی دو تا لایه میانی اف سی داشته و اینجا یه دفعه پارامترهای وحشتناک میرن بالا یعنی این عدد رو ضربدر ۴۹۶ بکنید اردر میلیون میشه خب و میره بالاتر ویژگی های دیگش هم اینجا نوشتم و اون زمان با دقت ۱۶ درصد خطا ۱۶ درصد خطا بهش میرسه سال بعدش یک گروهی به نظر من گروه خودشون بوده دو نفر بودن که اسم های اول اسمشون زد یکی اف بوده اسم شبکشون رو می‌ذارن zf هیچ کاری خاصی هم نمی‌کنن می‌

الکس نت فقط میان تعداد لایه‌هاش که اینجا بود ۳۸۴ تا اینجا ۳۸۴ ۲۵۶ اینو منبع کامپیوترش بیشتر بوده می‌کنه ۵۱۲۴ ۵۱۲ و در ضمن به جای ۱۱ در ۱۱۷ همین کارو می‌کنه می‌بینه آقا دقتش یه دفعه از چیز ۸۳ درصد میرسه ۸۸ ۹ درصد و اینجوری میره بالا خدمت شما عارضم که این میشه کار بعدی که انجام دادن تا سال ۲۰۱۳۴ اتفاق جالب میفته دو گروه مختلف دو تا چیز مختلف ارائه میدن که با دقت کمتر از یک درصد اختلاف خب میاد برنده جایزه میشه و در ضمن جفتشون نود و خورده‌ای درصد دقت داشتن و قبلنا تا هفت هشت لایه می‌رفتیم جلو شلوها که دو سه لایه ما کلاً بچه‌ها به شبکه‌های عصبی عرفنا با دو تا هیدن لیر میدیم میگیم شبکه شلو یا کم دیگه سه تا هیدن لیر به بالا دیگه می‌گیم شبکه عمیق

حساب می‌شدن دیپ لرنینگ بودن بعد بعدی حالا کارهایی که می‌کنن تو حوزه نت و گوگل نت که کاری از بچه‌های گوگل بوده خدمتتون عارضم لایه‌ها رو بیشتر می‌کنند و دقت‌هاشون البته اختلافش خیلی کم بوده حالا نمیگیم معنا داره یا نه ولی به هر حال توی اشل به همدیگه می‌رسن بریم ببینیم اینا چیه ویجی ژنت کاری که می‌کنه اینه که میاد میگه آقا الکس نت میگیره میگه آقا من به جای کاموا ۱۱ در ۱۱ ۵ در کلا همه رو ۳ در می‌ذارم طبق اون محاسبه که براتون کردیم گفتیم به نظر میاد ضرر نمی‌کنید کلاً تمام کانولوشناشو به ۳ تغییر میده و همین همین کار سبب میشه که لایه های بیشتری بتونه بره جلو v جی جی ۱۶ و ۱۹ رو داشتیم چیز متفاوت بودن مثلاً اینجا می‌بینید تفاوت‌هاشون که تعداد کاموایی که اینجا زده یکی بیشتره مثلاً تو اینجا و این بخشش پولشم هر از گاهی میزنه ها بچه‌ها نمیاد به ازای هر کاموی پولینگ بزنه و رفته بوده جلو و خب خدمت شما عارضم که به یه دقت مناسبی می‌رسه و

معروفیه شما تو کراس وجود داره می‌تونید لودش بکنید و حالا تو ترانسفر لرنینگ که بهتون میگم چیه به دردمون می‌خوره خب و خدمت شما عارضم که ولی همچنان تعداد فولی کانکتد ها و سافت مکس‌هاشو اینا رو شبیه الکس نت می‌ذاره خب لینت بچه ها از اینم کم عمق تر بودا بعد دیگه الکستم خب این کارو در می‌آورد همون کارو برید بکنید بد نیست پارامترهاشو برید بخونید و اینکه چقدر مموری میگیره این دفعه آبی ها پارامترها مموری جایی که تو کامپیوتر اشغال میشه شما در واقع محدودیت های سخت افزاری اون زمانو ببینیدا لایه‌های اول مثلاً فرض کنید عکسون ۲۲۴ در 24 در سه بوده نزدیک ۱۵۰ هزار مثلاً جا باید تو کامپیوترتون می‌ذاشتید که اینا رو ذخیره می‌کردید کامپولوشن چیز که میزدید سه در سه ۶۴ تایی ۶۴ تا ۳ در سه که میزدید شما لازم داشتید که خروجی هاتون مثلا بشه چی ۲۲۴ در ۲۲۴ در ۶۴ یعنی ۳

دو دهم حالا میلیون جا از مموری و اشغال می‌خواستید بکنید چند تا پارامتر داشتید به راحتی بدون حالا بایاس‌ها می‌تونید حساب بکنید سه تا ۹ تا ۳ تا ۲۷ تا ۶۴ تا ۱۷۰۰ تا پارامتر اینجا دارم بیاید پایین هی کاموای سه در سه پولینگ فلان فلان که میزنه اتفاقی که میفته هرچی میریم پایین تر پارامترها زیاد میشن به خصوص کجا تو کانولوشن ها ببینید اینجا قبلیش چند تا بوده ۷ در ۷ در ۵۱۲ تا نیرون بوده بازش کرده به ۴۹۶ تا وصل میشه یعنی کل این عدد در کل اینجا ۴ باید ضرب بشه میشه ۱۰۲ میلیون پارامتر فقط کجا اضافه میشه اینجا جایی که آخرین پولینگ می‌خواد به اولین فول کانکتد وصل شه و میره جلو در نهایت ناقابل ۱۳۸ تا ۱۳۸ میلیون پارامتر داشته این شبکه و البته این عکسا خیلی زیاد بودن دیگه یک میلیون ۲۰۰ هزار عکس و خب تو ایپاک های مختلفش می‌داده و تلاش می‌کرده ببینه خدمت شما عارضم نتیجه اخلاقی که می‌گیریم هر چی اول ماجرا باشیم مموری بیشتر

می‌رفته هرچی آخر می‌رفتیم تعداد پارامترها بیشتر می‌شد و این کارو انجام داده بود و دقت خوبی میرسه اما بریم سال همون سال ۲۰۱۴ و یک گروهی تو گوگل یه گروهی تو گوگل با الگو گرفتن از فیلم اینسپشن یه دیالوگی توش داره گویا من ندیدم وینی تو گو دیپر اینو تشخیص میدن که ترجیح میدن که باید برن در واقع الهام بخششون میشه که برن عمیق تر بشن و بتونن به لایه های بیشتری برسند و نسبت به سال قبلش که ۸ تا لایه بیشتر نبوده چیکار کنن عرض به خدمت شما بیشتر برن شاید بتونن موفق‌تر باشن من یه پرانتز باز کنم بچه‌ها من خیلی فیلم بین نیستم شاید تو هفت سال اخیر با احتساب پاندای کنفوکار من هفت تا فیلم حداکثر کامل دیده باشم خدمتتون عارضم که اینسپشن رو ندیدم ولی میدونم که در مورد خواب تو خواب و ایناست اینجا نتورک تو نتورک بوده و چون فارسی با خواب علاقه خاصی داریم بالاخره من ندید میتونم طرفدار این فیلم باشم

ما کاری که توش می‌کرده معرفی یک ماژولی بوده به نام اینسپشن ماژول که با الگوگیری از همین فیلم بوده و در کل اسم شبکه‌شونو گذاشتن گوگل لینت یا حالا بعضاً بهش میگن گوگل نت خب همین یعنی یه جورایی تلفیقی بوده از حالا شبکه‌های لینت و اون ماژولی که توش اینسپشن و جا دادن اما این ماژوله حرف حسابش چیه خانم احمدی یکی دو جلسه قبل یه سوال خوب پرسیدن اینو میگفت آقا چرا کانولوشن ها همش مثلاً باید ۳ در سه باشن ها این میگه که ببین من می‌خوام دوست دارم از فضای اینپوت به یک لایه بالاترم سعی کنم چند تا چیزو با هم مزه مزه کنم و ببینم هم کانولوشن های سه در سه رو ببینم پنج در پنج رو ببینم پولینگ بزنم حتی و حتی کامشن یک در یک بزنم یک* یک چی میگیم خب و به اصطلاح یه ماجرا که وجود داشته این بوده که خب اگر در حالت تیپیک می‌خواستید برید جلو فرض کنید مثلاً کانولوشن سه در سه میخوید بزنید ۱۹۲ تا خب شما ۲۸ در

در ۱۹۲ در انقدر مثلاً اپریشنز داشتید جمع و ضرب باید انجام میدادید خوب احتمالاً البته پولینگ و اینا باید می‌کردید که سایز خروجی ۲۸ در ۲۸ باشه با ۵ در ۵ که برید طبیعتاً شیرینگ میکرده باز دوباره باید پدینگ لازمو میذاشتید که ۲۸ در ۲۸ باز برگرده خب و همه رو کاری کنید که ۲۸ در ۲۸ باشن بعد تهش چیکار کنید اینا رو کانکت کنید بزنید تنگ هم بگید آقا من یه عکسی دارم طول و عرضش ۲۸ در ۲۸ عمقش ۱۲۸ تاش از اولی ۱۹۲ تا اینجا ۲۵۶ جمع بزن چند تا میره ته و این بره لایه بعدی خب این که ایده خامش باشه چیز ضایعی بوده و به درد نخور بوده ۸۵۴ میلیون در واقع عمل ریاضی باید توش انجام می‌شده و به درد نمی‌خورده ولی یک حقه می‌زنن و از یک کانولوشن های استفاده میکن به نام فیلترهای یک در یک یا بهشون میگن باتلک لیرز ها خدمت شما عرض کنم اصلاً این فیلترها یک در یک چی هستند فیلتر یک در

میفته رو هر خونه پیکسل در اون پیکسل عدد میشه با همدیگه جمع میشه اتفاق جالبی که میفته اینه که اولاً هیچ تغییر مکانی به وجود نمیاره یعنی دونه دونه داره میره جلو مثلاً روی عکس ۲۸ در ۲۸ بره ۲۸ در ۲۸ هم به شما میده تحویل و براش هم مهم نیست که شما عمقتون الان چقدره لایه اول باشید سه تاست لایه میانی ممکنه خیلی بره ته ها میره کل این پیکسل بالا گوشه سمت چپ همه رو با همدیگه جمع میزنه حالا نه جمع مستقیم جمع وزن‌دار مثلاً میگه اگه ضریب دبلیوش مثلاً باید چه می‌دونم اگه عکس بود ۲۸ در ۲۸ در ۲۵۶ فیلترها یک* یک حتماً باید عمقشون ۲۵۶ بود دیگه یک* یک* ۲۵۶ هر کدوم که می‌دید تحویل بچه ها چه عکسی بهتون میده فرض کنید شما ۲۸ در ۲۸× ۲۵۶ عکستونه خب یه یک در یک در ۲۵۶ میندازید روش چی بهتون میده تحویل

برام بنویسید عمق یک میکنه به راحتی هرچه تمام‌تر عمقو می‌کشه خب و فقط نهایتاً اینه که وزن‌هایی که می‌ذاره رو عمق‌های مختلف یه جورایی اثرات اونا رو بولد یا کمرنگ میکنه مثلا میگه آقا من تشخیص میدم تو فرا اون قصه سومی خیلی مهمه مثلاً ضریبش میره بالا دومی نزدیک صفر میشه و الی آخر و اینجوری با هم حالا مثلاً فرض کنید ۵۰ تا از اینا بزنید اتفاقی که میفته اینه که شما به راحتی هرچه تمام‌تر می‌تونید چیکار کنید با حفظ طول و عرض عکس عمقشو تغییر بدید مثلاً میگید من ۵۰ تا ۲۸ در ۲۸ یک* یک* 25۶ میزنم عمق عکس ذهنتون میشه ۲۸ در ۲۸ در ۵۰ ها یا هر یا کمترشو بیشترش می‌کنید خب حالا از این ایده خام این ایده واقعی بود

یک در یک بزن یه خروجی بده یه تعداد اول تورات یک در یک بزن بعد تو رایت از سه در سه بگذرون بعد برو خروجی بده یه جا یک در یک بزن بعد ۵ در ۵ بگذرون خروجی بده یه جا ماکس پولینگ بزن بعد یک در یکش کن حالا البته مکسش پدینگ اینام داره ها چیز یا استراید مناسبی داره یعنی باید اینجا که می‌رسن می‌خوان کانکت بشن یا به هم بچسپن همه باید ابعاد طولی و عرضی ش یکسان باشه فقط عمقشون میتونه فرق بکنه خب چون این ممکن بود دید بهتون نده من اینجا عکس از جزوه اندروید هم براتون گذاشتم میگه فرض کنید ۲۸ در ۲۸ درصد ۹۲ باشه میگه اگه ۹۶ تا ۶۴ تا کام به یک در یک بزنید خروجی لایه بالایی یا اینجا چند میشه میشه ۲۸ در ۲۸ از ۶۴ درسته اوکی اینو داشته باشید میگه که تو راه سه در سه اول یک کام یک در یک بزنید از لحاظ محاسباتی بهترتونه بعد مثلاً ۹۶ تا بزنید میشه چند میشه ۲۸ در ۲۸ش

بعد سه در سه توراش بزنید بالا استراید مناسب و پولینگ و اینا اگه لازم شد پدینگ لازم که ۲۸ در ۲۸ بمونه ۱۲۸ تا فیلتر زده پس میشه ۲۸ در ۲۸ در ۱۲۸ یعنی پس ۲۸ در ۲۸ خودش فقط عمقش فرق کرد ۵ در ۵ میزنه یک در یک بعد ماکس پولینگ میزنه با اینایی که نوشته همشون ۲۸ در ۲۸ در یه چیزی اند کانکت بچه‌ها یعنی چی کانکت یعنی اینا رو بچسبون تنگه هم مثلاً دو تا بردار کانکت کن همون کاری که تو مطلب میکردید مثلا یه بردار با هفت تا درایه ها اینجا میگه ۲۸ در ۲۸ تا رو بزار بقیه رو تب تب بچسپ پشت هم بشه ۲۸ در مجموع ۶۴ به علاوه ۱۲۸ به علاوه ۳۲ به علاوه ۳۲ مثلاً میشه ۲۸ در ۲۵۶ و اینو بده در چی بده لایه بعدی اوکیه پس این میشه اساس ماژول اینسپشن خوبیش اینه که چیکار میکنه همه رو داره میبینه سه در سه ۵ فلان ماکسینگ ها رو میبینه از کانولوشن یک در یک استفاده میکنه حجم پارامترهاش به شدت میاد پایین

نرخ پارامترهایی که داره تو واقعیت نزدیک به یک دوازدهم الکس نت ها و فوق العاده می‌تونسته این شبکه‌ها رو سریع و حالا چیز بکنه سریع بکنه و شما بتونید با توان محاسباتی یکسان چیکار کنید بیشتر ایپاک برید جلو و حتی به دقت‌های بهتری برسید خدمت شما عرض شود که شبکه فقط گوگل نت اینجوری بوده که یه بخش الان خوابوندمش این الان شروع این پایان خب دو سه تا فرق داره باید بهتون بگم اولا تشکیل شده از این ماژول ها این ماژول های که میبینید همون که اسمشو گذاشتیم ماژول های چیز اینسپشن ورودی میگیره از این آشغالا میگذرونه خروجی میده هی تکرار شدن درسته دو سه تا اتفاق میفته یک اولش عادی میره جلو یعنی اولش یه چند تا کامپ میزنه سایزها رو بیاره پایین تر سایزها معمولی تر که شدن میده به این ورودی ها خب به تجربه بعد دومین چیزی که داره اینه فول کانکتد اصلا نذاشته براش این برخلاف وی جی جی و اینا که سه لایه فولی بودن ۴۹

۹۶ که کلی پارامتر اضافه می‌کردی نذاشته این درجا آخرین لایه یارو رو که ماکس پول میکنه سریع میده به حالا یا یه لایه اف سی یا کلا میده به سافت مکس خب ولی به تجربه فهمیدن که به همون دلیلی که حالا بالا نوشتید همتون هم فرشاد اشاره قدمی اشاره کردن اینجا فقط لاس گذاشتن خوب در نمیاد ها و سر راهش یکی دو تا خروجی خاکی دیگه هم زد یعنی اینجا هم همین پایان بازی که اینجا گذاشت اینجا هم گذاشت حالا چه اتفاقی میفته بچه‌ها وقتی محاسبه میشه دیگه اولاً این سیکوئنشال نیست ها دیگه فقط پشت سر هم نمی‌رن جلو اولاً هم خود ماژول اینسپشن هی داره چیز میره چند شاخه میشه همین که اینجاها چند شاخه میشه این شبکه یه جا داره میره ته هنوز جا داره تا برسه ته یه جا در جا میرسه ته و حالا اینجا رو باید حساب کتاب بکنید حالا ما کاری نداریم چگونه حساب کتاب میشه فقط همینقدر بدونید که وقتی که شبکه رو می‌خوان لاسشو حساب بکنن میرن این محاسبات انجام می‌دن

اینجا به تجربه کن و بیا وزنه رو آپدیت کن بچه‌ها فکر می‌کنید چرا این دوتا رو گذاشت اگه نمیذاشت احتمالاً چه اتفاق بدی می‌افتاد الان بچه‌ها ۲۲ لایه هستیم یعنی قبل از اون به این تاریخ کسی انقدی نرفته بود جلو فکر می‌کنه چرا این اتفاق افتاد اشباع می‌شد باریک مشتقات اشباع میشدند یا کلا کاری به اشباع نشده بک پروپشن خوب نبود به این به این اولی ها دیگه دلتا چیز دبلیو خوبی نمی‌رسید ها و این سبب میشد که اینا خوب آپدیت نشن و شبکه خوب کار نکنیم مجبور شد اینا رو بذاره بچه‌ها دانه معنی بگیرید من آخرش که گفتم اگه بخواید شبکه من‌روی مثلاً احسان نت بذاری آقای کاظمی عزیز چیکار می‌کنی خب و حالا دیگه میتونی ایده بگیری پس بچه‌ها این شبکه اینجوری شد کلی ماژول اینسپشن داشت یه استم یا ساقه داشت

توراش چند خروجی گذاشته بود و کوفولی کانکت داشتم تا حد امکان حذف کرد تعداد پارامترهاش بیش از ۱۰ برابر کمتر از الکس نت شد و البته به دقت ۶ درصد ۹۴ ۵ درصدی رسید و خوب بعد از اون یه اتفاق می‌افته یه شبکه میاد به نام رزنت اینا دیگه بعد از بیست و دو سه تا نرفتن جلو یا دیگه خوب نمی‌شدن رزنت اومد با یه حقه‌ای تا صد و خورده‌ای لایه که هیچی تا هزار و خورده‌ای لایه هم رفت و خوبم کار کرد دیگه به حدی رسید که دقت هاش از انسان بیشتر شد یعنی ارور رفت مثلاً زیر ۳ درصد یعنی نود۸ و خورده‌ای درصد این درست داشت جواب می‌داد و دیگه دیگه اصلاً مسابقه رو تمومش کردن گفتن آقا خداحافظی کرکرهشو کشیدن و دیگه از بعدش یعنی از ۲۰۱۷ ۱۸ به بعد دیگه در قالب کگل حالا مسابقاتی برگزار میشه و دیگه ما مسابقه آی الس وی آر سی و دیگه نداریم بچه‌ها به نظرم رزنت بذاریم انشالله جلسه آینده

سه‌شنبه خدمتتون میگم و بعدشم می‌گیم که چگونه اینا رو میشه توی کراس پیاده کرد انشالله و یه مقدارم در مورد صحبت می‌کنیم که بدونید چقدر میتونه کار سخت و پیچیده‌ای باشه و بعد از اونم دیگه انشالله سی ان ان تا اینجا می‌بندیم ولی شما ابزارهای زیادی بچه‌ها دم دستتون هست انشالله جلسه آینده رو بشنوید خیلی خیلی ابزار دم دستتون خواهد بود که بتونید کارهایی انجام بدید و به این سؤال جواب می‌دیم حالا مکانیکی ها که لزوماً با عکس روبرو نیستیم آیا این به درد ما میخوره یا نه انشالله جلسه آینده پاسخ این سوالا رو خدمتتون میدم خیلی ممنون بابت همراهی‌تون خوش و خرم باشید انشاالله خدا یار و نگهدارتون باشه تمدید محمد تمدید کردم تا جمعه پیرو درخواست بچه ها و اگر امیدوارم کافی باشه چون بیشتر از این جاش نیست چون می‌خوام سه شنبه نهایتاً آخر هفته تمرین سری دوتون هم بهتون بدم دیگه انشالله تو حوزه cn خوش قرآن باشید خیلی ممنون بابت حضور تشریف فرم

ایشالا که مطالب مفیدیو یاد گرفته باشید خدانگهدار

E:\courses\LangChain Project\main root\data\SCR_Session11_transcript_part1.txt

به نام خدا دوستان عزیز و ارجمند عرض سلام و ادب و احترام خیلی ممنون بابت تشریف فرماییتون در خدمتتون هستیم با ادامه درس رباتیک اجتماعی شناختی امروز اگه خدا بخواد جلسه آخر مبحث سی ان ان خیلی کار داریم یعنی امیدوارم برسم فقط ایده‌های خیلی زیادی دارم که انشالله برسم بگم و دیگه انشالله کامل نتورک ها رو ببندیم نه آقای مالکی جلسه نیست منتظر ایمیل من باشید ما انشالله هفته آینده جلسه رو جلسه آزمایشگاه رو شروع خواهیم کرد خب بچه ها اگر فرض رو بر این بذاریم که انشالله بعد از عید فطر حضوری بشود ما برای حضوری شدنتون هم یکی دو تا کارگاه خوب در نظر گرفتیم که به صورت عملی با یه سری از موارد مهم در حوزه رباتیک اجتماعی و کلاً رباتیک آشنا بشید اما این منوط به اینه که انشالله دانشگاه باز بشود خب بریم بدون فوت وقت سر کارمونو ببینیم که چه مطالبی باقی مونده که بخواهیم اشاره بکنیم

اجازه بفرمایید من با دیوایس دیگه‌ای هم وصل باشم که بتونم سوالات احتمالیتون رو ببینم و بعدش هم درس شروع خدمت شما عارضم که ما جلسه گذشته اینجا فایل رو باز بکنم جلسه گذشته در مورد شبکه های معروف صحبت کردیم با یه سری تاریخچه گفتیم که معماری معروف شبکه های سیاسی اند و بعدشم می‌خوایم امروز یه نتیجه گیری پایانی بکنیم که خب حالا اگه ما بخوایم یه شبکه بزنیم بهترین اینه که چیکار بکنیم خب خدمتتون عارضم که چند چهره برجسته رو معرفی کردیم یان لیکان بود که شبکه لینت پایه گذاری کرد هینتون بود که تیمش ریلو رو معرفی کرد ۲۰۱۲ و ایشون

یکی از نویسندگان کتاب دیپ لرنینگ ام آی تی پرس سال ۲۰۱۶ بود و اینا خب جایزه تورینگاردو گرفتن ما اومدیم معماری‌ها رایج شبکه‌های عصبی رو معرفی کردیم خدمتتون با پدرخوانده همه اینا شروع کردیم به نام لینکس که گفتیم یانلیکان متولد فرانسه ۱۹۶۰ که یکی از حالا تو فیسبوک هم کار می‌کنه این ایده رو زده بود که خوب شبکه های عصبی و شبکه آورد معرفی کرد حل کردن و این ایده رو زد که خوب بیایم چیز بکنیم دیگه فیچرهای لوکال هم تو شبکه های عصبی نگاه بکنیم و ولی خوب شبکه اش خیلی هم عمیق نبود دو لایه کلاً کانولوشن با دو لایه پولینگ پشت سر هم بود و بعدش سه لایه دس و اینجوری میرفت برای شناسایی ارقام یا اعداد ازش استفاده می‌کرد و این پایه‌گذار در واقع تولد و

جدی شبکه سال ۲۰۱۲ توی مسابقه‌ای که روی دسته‌بندی دادگان ایمیج نت انجام می‌شد و تونست با اختلاف ۱۰ درصد نسبت به سال قبلش برنده بشه ۱۰ درصد خطای کمتری داشته باشه اومد همون شبکه لینت گرفت این دفعه عمیق ترش کرد تعداد کانولوشنش بیشتر کرد البته محدودیت های داشت به فرم های که الان شما پیاده میکنید نیست مجبور شد رو دو تا جی پی یو ران کنه ولی در نهایت کارا رو درآورد و تونست با معرفی تابعلو و به کارگیری شبکه عمیق تر از لینت به دقت بهتری برسه خب سال بعدش زد اف نت اومد که از گروه خودشون بود فقط اومدن تعداد فیلترها رو بیشتر کردن فقط و ابعاد فیلتر در واقع لایه اول الکس نت که ۱۱ در ۱۱ بود و هفت تغییر داد ولی بازم دید که با این اوصاف میتونه چند درصد دیگه دقت و بهتر بکنه سال بعدش با یه ویژگی مشترک خب

خدمتتون عارضم که چیز گوگل نت اومدن اینا جفتشون تقریبا توی اردر خطا داشتند ولی نگاه‌هاشون متفاوت بود نت فقط اومد ۳ در ۳ استفاده کرد گفت نیازی نیست برخلاف الکس نت که مثلاً ۱۱ در ۱۱ یا بعدش ۵ در ۵ می‌زد من می‌خوام از اونا استفاده کنم و تلاش می‌کنم سه در سه‌ها ولی با تعداد لایه‌های بیشتری استفاده کنم و حالا تعداد پارامترهاشو اینا رو بررسی کردیم مثلا گفتیم فعلیش حول و حوش خدمت خدمتتون عارضم که ۱۳۸ میلیون پارامتر داره و این درجات آزادی بسیار زیادیه که خب به راحتی آدما نمی‌تونن تنظیمش کنن و به صورت موازی گروه تو گوگل پیشنهاد ماژول های اینسپشن و شبکه های گوگل نت دادم که از این ماژول به صورت پلکانی استفاده می‌کرد این ماژول ویژگی که داشت این بود که به صورت همزمان میرفت از چند نوع فیلتر با سایزهای مختلف استفاده می‌کرد فقط برای اینکه اینا رو بتونه هم سایز کنه با همدیگه بچسبونه در ضمن حجم محاسباتش مناسب باشه کلید واژه

یه کسانی بودند به نام فیلترهای یک در یک فیلترهای یک در یک فیلترهایی هستند که کلا طول و عرضشون یکه عمق ولی دارن یعنی اگه عکستون لایه اولش رنگه مجبوره در واقع یک در یک در سه باشه اگر رفتید یه جایی که مثلاً ۲۵۶ تا عمق دارید اونم باید یک در یک در ۲۵۶ باشد به بیان چیکار میکنه میاد یه مجموعه در واقع جمع وزن داری از تمامی پیکسل‌های معادل لایه‌های مختلف رو میگیره با همدیگه جمع میکنه و معادل یه پیکسل می‌ذاره تو عکس نهایی مثلا میگه کل اینا رو به من بدید من یه عکسه با اون موقع یک به شما میدم تحویل مثلا عکساتون مثلاً ۱۰۰ در ۲۵۶ باشن هر دونه هر یه دونه یک در یک فیلتر چیکار میکنه یه دونه ۱۰۰ در یک به شما میده تحویل حالا اگه یکی از وزن این وسط وسط تا مثلاً صفر در اومد یا صفر شما گذاشتید مثل اینکه چیکار کرده این پیش فرضش بر این بوده که اون لایه تو اون عمقی که هستید عکس خیلی مهم نیست من نمیخوام باشه یا اگر ضریب همه یکی شد یعنی چی همه تصویرشون یکسانه و خب

یکی از راه‌هایی بود که ما همین چیز عکس‌های رنگی و خاکستری می‌کردیم دیگه ها یه ضریبی از قرمز برای ضریبی از آبی به علاوه ضریبی از سبز مثلاً در مجموع چیو میده یه عکس خاکستری به شما میده خب خدمتتون عارضم برای اینکه پیاده سازی واقعی بکنه گفتیم یک در یک استفاده کرد کمی توضیح دادیم در موردش و عرض کردم فقط برای اینکه مرور بکنیم مطمئن باشم که اینو متوجه شدید بچه‌ها کانولوشن یک در یک عمق دارند یعنی اینو یادمون نره ها یعنی اگه یه عکس مثلاً ۱۰۰ در ۲۵۶ بدیم بهش ورودی حالا یا ورودی یکی از تو یکی از لایه ها با همچین عکسی مواجه شده باشیم یک فیلتر یک در یک درسته سایزش یک در یکه ولی چی کل عمقو پوشش میدهد ها و کل عمق به همون اندازه پوشش میده پس مثلاً اگه عمق ۲۵۶ تا باشه اینم ۲۵۶ تا درایه دارد و میره میگه اولین عدد ضرب در چیز خونه اول عکس دومی در دومی و و و یه جمع وزن داری از اینا رو

یه عکس به شما میده تحویل صد در صد در یک خب حالا اگه شما یه دونه دیگه فیلتر یک در یک با ۲۵۶ تا درایه دیگه بزنید یه ۱۰۰% در یکی دیگه میده و اینجوری حالا میتونید چیکار کنید عمق بدید به عکس لایه بعدیتون و میتونید از لحاظ محاسباتی هم چکش کنید که چقدر میتونه مفید باشه بهشون میگن باتلنک یا گلوگاه و خب این کارا رو براتون انجام میده یکی از ویژگی های خوبش اینه که از لحاظ طولی و عرضی بدون اینکه پودینگ پولینگ و پدینگ و فلان و است چیزی بخواید بزنید یعنی با یک اون سایز خروجیتون رو با چی با سایز عکس اول کاملاً یکسان میده بیرون و اینا میتونن همه در واقع خبرهای مهمی باشه خب خدمت شما عارضم که بریم ادامه بدیم ماجرا رو ما اینم گفتیم و گفتیم به دقت های خوبی رسید فقط یه سری شرط ها و اینا مطرح شد که شبکه پرس شبکه های گوگل نت که شامل ماژول اینسپشن بودن یه دفعه از اول نمی‌رفتن تا آخر بعد

فقط یه دونه در واقع لایه نهایی یا لاست داشته باشن لاسو از اونجا حساب کنن برای اینکه گرادیان لاس به این اولیام برسه و وزن‌های اینام بشه آپدیت کرد که چگونگیش صحبت می‌کنیم مجبور شد اینجوری فکر کردن که خوب تو یه سری لایه‌های میانی هم بیان یه سری خروجی بگیرن و اینجاها هم در واقع لاس رو حساب بکنیم وقتی لاس رو میگیم مثلا میگفت اینقدر برابر لاس اینجا به علاوه اینقدر برابر لاس اینجا برابر لاس این حالا از این برو رند به رند تمام دبلیو ها رو بگیر و بیا عقب و دیگه حداقل خیالمون راحت تر بود اگه از اینم چیزی به این اول نرسه ولی شانس وجود داره که از این لااقل برسه به این دبلیو آپدیت بشن و خب این ماجرایی که بود در ضمن یکی از اولین شبکه‌هایی بود که از مالتی برنچینگ استفاده کرد رو چند چند شاخهش کرد یعنی یه جا که میوم چند شاخه میشد داستان اما در مورد پیاده سازی این رو هم اگه برسیم امروز می‌خوایم تو گوگل کلب برای شما صحبت کنیم چجوری میتونیم ما یه شبکه چند شاخه بسازیم حالا شبکه دلخواه من درآوردی بچه‌ها یادمون باشه اینجور شبکه‌ها رو تا تست نکنید نمیتون

بفهمید چه نتیجه‌ای میدن یعنی رو کاغذ نمیشه فهمید که آقا من حالا این یک در یکه رو چند تا باید بزارم قبل سه در سه بزارم بعدش بزارم چرا اینجا اول پولینگ کرده بعد یک در یک گذاشته اینا چیزایی بوده که باید یعنی یه گروهی که دسترسی به منابع به خصوص سخت افزاری مناسبی هم داشتن از شرکت‌های بزرگ نظیر گوگل نظیر فیسبوک الی آخر میومدن اینا رو امتحان می‌کردن و اینا چیزایی نبوده که آدما عادی بتونن به راحتی حالت های مختلف رو در بیارن و طبیعتاً بهترین حالتشو گزارش می‌کردن که حالا تو رزنت بهتون یه نمونه هایش اشاره میکنم و اما یه سال بعدش یه اتفاق عجیب غریب افتاد یه تحول به وجود اومد شبکه‌های قبلی که حالا ویژگی مشترک و گوگل نت این بود که نسبت به شبکه های قبل ترشون یه دفعه تعداد لایه‌هاشونو بیشتر کرده بودن اونا قبلی هشت بودن اینا تونسته بودن به ۲۰ نزدیک بشن شبکه بعدی اومد خودش از ۱۰۰ هم بالاتر برد شبکه بود به نام رزنت و باید ببینیم

چیکار کرد و تازه بعدش که روش زده شد به دقتهای فوق عجیبی رسید که نه تنها با انسان برابر می‌کرد بلکه از انسان بعضی جاهام عبور می‌کرد خب شبکه ایمیجمنت هزار تا عکس یعنی هزار تا دسته داره و شما باید یه عکس که بهتون میدن بگید مال کدوم دسته است البته مطمئن نیستم که تاپ وان ارور یا تاپ فایو ارور یعنی اینکه اگه تاپ وان ارور باشه نگاه کردن که ببینم آیا واقعا درست گفت یا نگفت تاپ فایر اینکه این شانس رو بهش میده میگه پنج تا حدس بزن و من نگاه می‌کنم ببینم تو این حدس ها هست یا نه ممکن هم اون باشه ولی همچین همسون نیست آدما بالاخره چیز میکن آدم ها هم اشتباهاتی دارند به خصوص حالا عکس های که میتونن خیلی خیلی به هم شبیه باشن دیگه گونه خاصی مثلاً به هم شبیه باشن باید ببینیم که حالا تو دادگانی که شما بررسی میکنید چیه مثلا فرض کنید اگر ببر و پلنگ و اینا همه باشن یه دفعه ممکنه خود آدمما اینجا اشتباه کنن یا یا عکس اگه تار باشه کوچیک باشه اینور اونور باشه اینا میتونن

ماجرا باشن و چالش به وجود بیارن و یه حقه‌ای زدن که تونستن تعداد لایه‌هاشونو بیشتر کنند اما قبل از اینکه بگیم چه جوری تونستن یک چالش مطرح می‌کنیم یه مقاله سال ۲۰۱۵ اومد یه همچین عکسی رو زد بچه‌ها به نمودار سمت راست نگاه کنید بهم کمک کنید طرف اومده بود یه شبکه رو با همون شبکه‌های اسمشو می‌ذاره شبکه‌های پلین همون شبکه های مثل الکس نت وی جی جی اینایی که یهسره میرن جلو و هیچ فیدبکی جایی ندارن خب مثلاً شبیه این همین که کانولوشن بزنید و و و و پلکانی برید جلو در نظر بگیرید اومدن با ۲۲ لایه یه چیزیو تست کرده بودن خب خدمتتون عارضم که با ۲۰ لایه تست کرده بودند تست ارورشون حالا هرچی پایین تر بهتر دیگه این شده بود با ۵۶ لایه زده بودن بالاتر شده بود خب من دارم ضبط میکنم خانم احمدی فقط امیدوارم که چیز باشه یعنی مشکلی بر نخوریم فکر میکنم ضبط زدم

خدمت شما کسی ضبط نکرده تا الان نه کاش اصلا حواسم نبود نه چرا داره ضبط میشه دیگه چرا اصلاً حواسم این داره میره جلو یه لحظه فکر کردم چون علامت مربع عرض می‌کردم خدمتتون بچه‌ها به نظرتون چرا ۵۶ از ۲۰ لایه شد به نظر چی به ذهنتون میخوره چرا تو ۲۰ لایه خوب عمل کردید تو تست هاتون ۲۰ لایه‌تون داره بهتر از ۵۶ لایه‌تون عمل میکنه چه اتفاقی افتاده به نظرتون رامتین نوشته که بچه‌ها دوستان حدس اولیه درستی میزنند اینکه حدس میزنن اورفیت کردیم به نظر منطقی بود اما اونجا چالش به وجود میومد که به عکس سمت چپ نگاه کنید عکس سمت چپش رو ترینینگشه ترینینگ ۲۰ لایه هم باز از ۵۶ لایه بهتر عمل کرده دیگه اینجا نمیشد حرفی از اور فیت زد ها

عمومی دیگه ته تهش در بدترین حالت مثل ۲۰ لایه عمل کنه ولی نکرده بوده ها و اینجا حالا انواع اتفاقات دیگه‌ای می‌تونسته افتاده باشه مهمترین چالشی که وجود داشت مسئله اپتمیزیشن بود و اینکه ما نمی‌تونیم شبکه‌ها رو وزن هاشو درست به روز کنیم و همون داستان گرادیان از بالا اومدن که توی ۵۶ لایه وقتی میخواد بیاد دیگه به این اولی نمی‌رسیده و سر راهش حالا یا اشباع میشده صفر میشده یه جوری بوده که چی عرض به خدمت شما دبلیو ها نمیتونستن خودشون رو به روز کنن و این سبب شده که این چالش به وجود بیاد و حالا سوال این بوده که باید چیکار کرد ها باید چیکار کرد آیا مثلاً چه میدونم لایه لایه بریم شبکه کار ترین کنیم و و و انواع اتفاقاتی که افتاد اما یکی اومد یه ایده‌ای زد و این ایده بسیار کارها شد و تونست در واقع تحول به وجود بیاره تا

چند سال این اتفاق افتاد تا سال ۲۰۱۷ اینا یه جورایی برنده‌های بی‌چون و چرا بودن توی تمام مسابقات مختلف تو شاخه‌های مختلف این دیپ لرنینگ و اونم ماجرایی بود به نام رزنت رزنت حرفش این بود می‌گفت اگه این شبکه‌هایی که عادی میرن جلو اسمشو شبکه‌های پلین بذاریم میگه من میام چیکار می‌کنم از هر از گاهی یه سری چی در واقع اون از اتفاقاتی که قبل مثلاً یک یا دو لایه کامل افتاده میان عین با خروجی دولای کان بعدش جمع میزنم یعنی چی یعنی اگر اینجا من به ایکس رسیده باشم ها و سر رام دو تا کانولوشن وجود داره که توراش چیزی زده میشه خدمتتون عارضم که خروجی اینو نگیرم فقط این خروجی این دو تا کاموا علاوه بر اینکه این دو تا کامولوشن رو می‌گیرم با خود ایکس که اینجا بوده چیکار کنم جمع جبری بزنم المنت وایز جمع بزنم یعنی اگه ماتریس ۱۰۰ درصده بیام چیکار کنم تمام درای این ۱۰۰

درصد این ایکس چیکار کنم جمع بزنم اما چه اتفاق جالبی می‌تونه با این با این بیفته بچه‌ها به این بلاکه به این بلاکی که دو تا کانولوشن داره یه دونه مسیر فوروارد ایکس خودش بدون هیچ کامولوژنی سر راهش داره بهش میگن رزیدوال بلاک یا بلاک بلوک باقی مانده که در کل با مجموعه به هم چسبونده‌ای از اینا شبکه اصلی به وجود اومد که بهش می‌گفتن شبکه رزنت خب که تونست بره تا ۱۵۰ و خورده‌ای لایه و الی آخر و این اتفاق افتاد اما این اتفاق چه مزیت مهمی داشت مهمترین مزیتی که داشت به نظر میومد رو کاغذ اینه خب شبکه های قبلی وقتی می‌رفتن جلو تا می‌رسیدن آخر وقتی که بعدش می‌خواستن بکشن کنن و برگردن عقب دیگه به این لایه های خیلی پایین چیزی نمی‌رسید ها و به قولی میشد وش گریدت اتفاق می‌افتاد یا گرادیان ها به صفر میل می‌کردن و این وزن های پایین نمیتونستن خودشون آپدیت کنن

بهتر از ۵۰ لایه داره عمل می‌کنه اما اتفاقی که الان افتاد این بود گفت آقا بیا هر از گاهی این ایکس رو اینجوری ببر تا اون لایه‌های انتهایی ببره چه اتفاق جذابی میفته زمانی که می‌خواید بک پراپریشن اتفاق بیفته که امروز می‌خوایم در موردش صحبت کنیم نه تنها پرو شدن ارورها از لاین بنفش اتفاق میفته که لاین اصلی باشه بلکه یک بار از لاین سبز اتفاق میفته یه بار دیگه در کنارش یعنی همه اینا با هم جمع میشن از این اتفاق میفته و در کل چی در بدترین و بدترین حالت یه بارم چی از این لاین سبزه اتفاق میفته که خودشو در جا میرسونه آخر خوبیش اینه که مطمئنیم به این لایه پایینی ها هم گرادیان میرسه چرا چون سر راه این چی هیچ بلاکی نیست و طبیعتاً داره با یه ایکس جمع میشه و همیشه یه مشتق یک و یه جورایی داره حالا چرا میگم یه جورایی چون دقیق دقیق نیست فقط شماتیک خدمتتون گفتم این حسن رو داشت و تونست یه دفعه

ماجرا را رفع رجوع بکنه بلاک‌های رزنت حالا بریم ببینیم اینا در واقع چیکار کردن خدمتتون عارضم که اگر خروجی این قبلاً دو تا بلاک کامل اسمشو اچ میذاشتیم این دفعه برای ما h هستش چی اف ایکس به علاوه اکس یا اف که خروجی کام باشه چیه h منهای اکسه یعنی یه جورایی فکر میکنم بخاطر اینم به این میگن همون یا باقی مانده به این اف و احتمالا در واقع از اینجا نشأت شده نام گرفته البته حالا دقیقا که گفتم نیست چون تو فرم اولی ش اومدن بعد از اینکه ایکس با این خروجی دو تا کاموا که f باشه جمع میزدن اسمش بشه h از یه رلو هم میگذروندن بعد می‌بردن خب ایکس خالص و مخلص نمی‌رفته جلو یه رلوی هم سوسکی روش زده می‌شده و بالاخره یه جاهایش هم سفت می‌شده بچه‌ها فرم دقیق شبکه هاش که همچین چیزاییه خب فقط یه چیزی رو به من بگید اینجا خودتون بهم کمک کنید من قراره اینجا اول عادی میاد جلو با کامپولوشن های

عکسشو شیرین می‌کنه تا خیلی هم سایزش با ۲۲۴ میاد پولینگ میزنه ۱۱۲ میشه بعد یه پولینگ دیگه میشه ۵۶ حالا تازه شروع میکنه با ۵۶ ۵۶ میره چی میره جلو تا اینو مسیر ایکس فیت فوروارد بهش بده بچه‌ها یه محدودیتی که من دارم چیه بهم بگید این دو تا خروجی که تو کانولوشن ها میگیرم در حالت عادی ابعادش چند در چند اگه این ۵۶ باشه کوچکتره بزرگتره یا هم سایزه دو لایه کانولوشن بزنم برم جلو چی می‌شه داده‌ها کوچیک‌تر می‌شدن ها در حالی که وقتی می‌خواید ایکس رو باهاش جمع بزنید یعنی المنت وایز میخوید جمع بزنید باید ایکس با این خروشن کاملا باید هم سایز می‌بودن یعنی طول عرض عمقشون باید یکی میبود بخاطر همین اگه لازم میشد اینجا از پدینگ استفاده می‌کردن و سعی میکردن هر دو تا دوتایی که میرن چیکار کنن یعنی

رنگ بنفشن اینا همه هم سایزن یعنی تا اینجا همه ۵۶ در ۵۶ داره میره جلو بعد اینجا دیگه خط چین کشیده فکر می‌کنم استفاده نکرده رنگا سبز شدن اومده یه پولینگ زده تقسیم بر دو شده ۲۸ در چند بار با ۲۸ در ۲۸ رفته جلو خروجی کاموا رو کاری کرده همیشه ۲۸ در ۲۸ بمانند بعد دوباره قرمز شدن رفتن نصف شدن شدن ۱۴ تا و الی آخر رفته جلو تا در نهایت رسیده به چی به لایه آخرش بچه‌ها خیلی هم فول کانکتد نذاشته یعنی لایه فولی آنچنانی هم نداره حالا نمیدونم یه دونه داره یا دو سه تایی داره این مثلا یه دونه بیشتر نذاشته عکسی که من اینجا دارم یعنی یه پولینگ آخر داره یه فولی اصلا یه فولی هزار تایی بعد سافت مکس یعنی همون درجا بره چیز رو به من بده بهم بگه که بالاخره چی بود سگ بود گربه بود گل بود فلان فلان و این از اون هزار تا عکس اینا رو به من بده خب خدمتتون عارضم که ویژگی همون بارزی که گفتم همین بود که ایکس ال به علاوه یک اگر ما فرضش کنیم میشه ایکس لایه قبل به علاوه اف که روی ایکس لایه قبل انجام شده ایکس

فلان و در نهایت x لایه نهایی اون چیزی که در نهایت تو لایه آخر پیدا میکنه یه ایکس ال به علاوه سیگمایی از اف ایکس ها در لایه‌های مختلف و ما خیالمون راحته وقتی مشتق حالا لاس نسبت به ایکس ال های لایه های پایینی یا w لایه پایینی هم میگیریم بازم خیالمون راحته که این حداقل چی یک رو تو خودش دارد ها ضربدر حالا رند ای به رند ایکس نهایی به علاوه یه سری چیزهایی که حالا ممکنه اینا به سمت صفر میل کنند هر کدومش حتی تک تک صفر شده باشن ولی خیالمون راحته که این شانس اینکه دبلیو ها زنده بمونند و بتونن آپدیت بشن بیشتره و این اتفاق سبب شد که رزنت بتونه چیکار کنه تا تا هرچی دلتون میخواد بتونه تعداد داده هاشو ببره بالا البته اینایی که گفتم بیشتر شماتیک بود اجراش یه سری ماجراها داشت خدمتتون عارضم که مثلا رزش فقط کانولوشن سه در سه گذاشته بود بعد

چیز می‌کرد هر از گاهی اگر جایی استراید ۲ میزد مجبور بود که پدینگم بزاره تا سایز یه جایی برابر باشه و بعد هر از گاهی نصفش میکرد خدمتتون عارضم که یه سری کانولوشن تو اول داشت که سایز عکس کلین کنه کوچیک بشه و در ضمن اف سی لیر فول کانکتد خاصی نداشت درجا میداد به اون هزارتا و فول کانکتد های که میتونستن تعداد پارامترها رو به شدت زیاد کنن و حذف کرده بود حالا هی دیگه روش کار کردن گفتن خب اگه لازم باشه نمیدونم تو راش مثلا کاملشن یک در یک بزنیم بعد سه در سه بعد یک در یک و الی آخر اینا بتونیم هی تنظیمات را انجام بدیم هی روش کار شد و کار شد و کار شد و موارد مختلفی استفاده شد اینا رو به راحتی ما استفاده میکنیم یکی در مورد اینشیالایزشن وزن است من قبلا این کلمه زیوی رو به کار برده بودم اونایی که بع تابع ریلو استفاده کردن روی هم یه چیز زدن یه در واقع مودیفیکیشن زدن اوضاع بهتر هم شد چون ریلو نصف محورهای مختصات رو نگه می‌داره اسمشو صفر میکرد دیگه بعد مجبور شدن

قبلا کار میکردم یه تغییراتی بدن و در کل با این پارامترها رفت جلو و تونست به شبکه‌های وری وری دیپ برسه ها دیگه واقعا دیپ بودن مثلاً روی سیفار ۱۲۰۰ تا لایه زده یعنی شوخی نیست خب و اینجوری رفته و در کل برده جلو و واقعاً حالا دیگه رسید یعنی اگر سمت چپیه پلی نت باشن یعنی اون شبکه‌های قدیمی باشن که اون فیت فوروارد رو نداشت و می‌دیدی لایه ۵۶ تا داره بدتر از عمل میکنه بعد از این اتفاق حالا دیگه لایه ۵۶ بهتر از ۲۰ عمل کرد ۱۱۰ ممکنه فرق زیادی با ۵۶ نداشته باشه ولی حداقل بدتر نیست یا مثلاً روی ایمیج نت هم باز همین اتفاق افتاد ببینم یه سوالی هست و بعدش بیایم چیکار کنیم ادامه بدیم ماجرا آرمین بفرمایید در خدمتتون ببخشید ما گفتیم ایکس و اف ایکس بعدشون باید یکی باشه دقیقا باید یکی باشن

عمقشونم باید یکی باشه دیگه درسته محدودیتی واسه ما میاره دیگه چون تعداد کم میشه یعنی مثلا ایکسمون اگر صد درصد در ۲۰ باشه مجبوری یه جوری تنظیم بکنی یا مثلا فرض کنید که نمیدونم اگه مثلا مکس زدی چیز میگم اگه مثلا استرایت زدی مجبوری پدینگ بزاری درسته یا از یک در یک استفاده کنی ولی خوب این که هی ایکس باکس به صورت خاص خالص میومده بالا این شانس رو می‌داده که بعدا توی بکپشن چیز هم آپدیت بشن وزننا خیلی ممنون سلامت باشید خب خدمت شما عارضم بچه ها ادامه بدیم و این اینجا بود که دیگه خب خیلی دقتشون بالا رفت دیگه این مسابقه هم تمام شد سال ۲۰۱۶ ۱۷ و

بازم رو اون کار کردن یعنی یکی دو سال دیگه چیز جدیدی نیومد رو رزنت کار کردن آقا یه عده کار کردن گفتن ببین ما برای چی مثلاً اف تا ۳ در ۳ بزنیم ولی ۱۵۰ تا عمق بدیم بیا تعداد فیلترها رو بیشتر کنیم شاید کار کرد مثلاً سه درسه‌هاشو به جای اینکه ۱۰۰ تا باشه ۳۰۰ تاش کنم ها سه برابرش کنم حالا چی میشه یه عده کار کردن دیدن آره بابا یه سری از این تغییر متغیرها به جایی که عمق زیاد کنن مثلاً عرض رو زیاد بکنن دیدن که می‌تونن با ۵۰ لایه مثلاً بازم به همون دقت برسن بعضیا اومدن شبیه دراپ اوت گفتن که آقا هر از گاهی برای اینکه شبکه هم ربات بشه هم چیز رگولاریزیشن توش اتفاق بیفته و فلان هر از گاهی اینا رو خاموش کنیم یعنی به صورت رندوم بعضی از این بلاک‌ها رزنت وسط راه خاموش کنیم و انگار وجود ندارن تو فرایند باز دیدن نتیجه میتونه بهتر شه یه عده گفتن آقا برای چی حالا بیایم از ایده تلفیقی اینزیجوال و چیز استفاده کنیم شبیه مالتی شدن برنچ شدن این گوگل نت استفاده کنیم و چند لایه

جلو حالا با فیلترهای یکسان یا متفاوت بعد یه دونه از اینا بره یه عده گفتن آقا اینجا برای چی بعدش رلو بزنیم ها یعنی قبل از اینکه اینجا بره تو این اف ایکس ایکس بخواد باشه رلوتو بزن بعد ایکس بیاد با اون رلو خورده کانولوشن بعدی جمع بشه که باز دیدن نتیجه بهتر شد و می‌خوام بگم هی رو ایناش کار کردم و باز دیدن خب خیلی تو حوزه‌های ایمیج به چیزهای خیلی خیلی دقیق و بهتری هم رسیدن یه عده هم رفتن بعدش روی اینا کار کردن که خب نتورک های افشنت تر و کاراتر و بیارن به خصوص اینکه رو گوشی های تلفن همراه بتونه کار بکنه موبایل نت‌ها شروع به ظهور کردن روشون باز کارهای مختلفی شد شاید این به ذهنتون خورده باشه قبلا یه اشاره هم کرده باشم یکی از ایده های خام این بوده حالا من خامشو میگم دیگه ورژن هاش روش نمیگم اینکه وقتی یه عکس داری ما یادتونه یه فیلتر مثلاً اف در اف میزدیم با عمق چی می‌زدیم مثلاً دی می‌زدیم که کل عم بپوشونه الان این گفت که نه بیا ببین اینا رو که مثلاً ۱۰۰ تا عمق داره رو به صد تا عکس

با عمق یک نگاه کن بهشون یعنی وقتی عکس اولی رو می‌بینی اصلاً به دومی و سومی کاری نداشته باش یه سری فیلتر بزن رو اینا تو با عمق یک اوکی تا یه عکس‌هایی با عمق یک به وجود بیاد بعد اینا رو بزن تنگ هم بعد حالا یه مشتی کانولوشن یک در یک بزن خب تعداد پارامترها کم می‌شد دقت خب طبیعتاً خوبی قبلاً نبود ولی باز همچنان اوکی بود و بعدش حالا ورژن های دیگه روش زدن که باز بهتر و بهتر شد به این میگن پوینت وایژن و با تلفیق اینا حالا موبایل نت ها به وجود اومدن و بعدش هم در واقع از لحاظ کامپتیشنالی و محاسباتی بسیار افشنت بودن اما همینجا بچه‌ها می‌خوام این بحث چیز رو نگه دارم من فقط سه چهار دقیقه عقبم از برنامهم باید سه تا ۳۰ دقیقه کردم که باید اینا رو جمعش کنم اینو شما به من تند تند جواب بدید ما بعدا پاک نویس میکنم براتون ما یه سیر تاریخی از شبکه‌های عصبی پیچشی دیدیم اگر شما بخواهید

شبکه‌ها و معماری‌های خودتونو برای کارهای خودتون طراحی کنید چه پیشنهاداتی دارید یعنی دوست دارید شبکه‌تون فرض هم بکنید هیچ محدودیت یک سخت افزاری ندارید دو اینه که سوادشم دارید یعنی اینکه بلدید مثلا مالتی برنچ هم تعریف بکنید و الی آخر شما باشید چه حقه‌هایی می‌زنید چه مواردی رو در نظر می‌گیرید برام بنویسید چه چیزایی به نظرتون چه درس‌هایی گرفتیم لینت و الکس نت و گوگل نت و خدمتتون عارضم دیدیم چه چیزهایی به ذهنتون میخوره برام بنویسید و ایده‌ای داره ها منظور که مثلاً شما یه شبکه دست ساز میخوید طراحی بکنید برای کار خودتون اصلاً همین تمرین دومتون اینه نیم سری دومتون توش اینو داره همین چیز بود دیتا ست سی کی پلاس که دارید عکس ها رو میبینید خنده و شادی میخوید یه شبکه روش بزنید با سی ان ان حالا این دفعه چه پیشنهادی دارید خب

عجیب غریب زدن یه دونه ایکس خالص و مخلص بره بالا همین که چند لایه بکنی چند بار مسیرهای کوتاه برای گرادیان به وجود بیاری که بتونه ببینه این اوکیه پس این یک راه دیگه چی در مورد سایز فیلترها بچه‌ها چیکار می‌کنید فیلترهاتونو با چه سایزی میندازید درس‌هایی که از این گرفتیم چی بود احتمالاً با فیلترهای کوچیک ولی با تعداد لایه‌های زیاد ما بتونیم همون کارهای فیلترهای بزرگ هم بکنیم باریکلا آرمین و خب طبیعتاً اگه بتونید با همون سه در سه میرید جلو الی آخر بچه‌ها خدمتتون یه تقلب برسونم شبکه لینت دست کم نگیرید همون که دو تا کام داشت دو لایه فول کانکتد داشت ما فقط دو سه تا از بچه‌هامون با این شبکه دفاع

تصویر نبوده با یه حقه‌ای که بهتون میگم آنالیز حرکت داشتن لینتو دست کم نگیرید خیلی شما نیازی ندارید الکی وارد رزنت و فلان اینا بشید مگر اینکه مجبور باشید خب و سایز چیزایی که تا الان بهش رسیده باشید باید اینا باشه یکی اینکه سایز فیلتر هر چه کوچکتر بهتر احتمالا اگر بتونید مسیرهای خوب گرادیانی به وجود بیارید هرچی عمق لایه بیشتر بهتر مالتی برنچینگ استفاده بکنید چند شاخه بشید به نظر میاد ایده بدی نباشه و اینا مواردی که میشه توی شبکه‌ها در نظرش گرفت و بردش جلو اما یه مسئله دیگه که وجود میاد و خالی از لطف نیست معرفی کردنش اسمش هست ترنسفر لرنینگ خب یا بهش میگیم یادگیری انتقالی خب داستان اینه که فرض کنید که شما شبکه رزنت رو یکی خودشو تیکه پاره کرده رفته یه شبکه عمیق نمی‌دونم ۱۰۰ ۱۵۰ لایه زده و اومده هزار تا عکس رو دسته بندی کرده خب اینم در نظر بگیرید که مثلاً وقتی شما می‌خواید یه عکس دسته بندی کنید چه عکس گربه باشه چه

E:\courses\LangChain Project\main root\data\SCR_Session11_transcript_part2.txt

چه انسان باشه چه در و پنجره باشه لایه‌های اول چین خط باید در بیان لایه‌های دوم باید چیه یه منحنی‌هایی در بیاد یا منحنی‌های رنگی خطای رنگی و بعدش حالا بره لایه‌های بعدیش به چشم گربه دم گربه گوش انسان مثلاً لولای پنجره و الی آخر برسه ها و این ایده مطرح شد آیا میشه از یافته‌های اینا استفاده کرد یا نه خب مثلاً فرض کنید که یه برهه‌ای این بود که بیان حالا کمک پزشکان چیز حوزه‌های مثلاً رادیو لوژی و تو رادیوگرافی ها و اینا کمک کنن مثلاً سرطان سینه رو بهتر بشناسن با یه سری عکس ها و ماشین بیاد کمک کنه توی عکس بهش بدی بگه که طرف تومور داره یا نداره ولی آخر ها بحثی مطرح شد به نام ترنسفر لرنینگ که آقا چجوری میشه از این یافته‌ها استفاده کرد آقا ما در مورد سگ و گربه شاید هر کدوم هزاران عکس داشته باشیم تو گوگل بگردیم ولی در مورد شبکه های رادیوگرافی چی آیا داریم این تعداد یه شانس گفتن مطرح میشه و اون اینه که بیاید از وزن های شبکه های

آماده قبلی استفاده بکنید از یه لایه به قبلشونو فریز کنید یعنی نذارید تو بک پراپ اپلیکیشن تغییر کنند ها ولی از یه لایه به بعدشونو بر اساس اینکه چند تا ترینینگ دیتا دارید اجازه بدید برگرده و لایه‌هاشو تنظیم بکنه برای کار شما مثلاً فرض کنید تو مسابقه این رزته این مسابقه چیز رو ایمیج نت لایه آخرش هزار تا عکس بوده شما فرض کنید الان سه تا کتگوری دارید خب طبیعتاً ما هزار تا باید پاک کنید یه سه تایی بذارید یه لایه قبلش مثلاً یه فولی مثلاً ۴۰۰۰ تایی زده شما ممکنه هزار تایی بزنید یا نه ۱۰۰۰۰ تایی بزنید ولی مثلاً به فرض کنید کانولوشنش هیچ دستی نزنید بگید آقا هرچی داری پیدا می‌کنی تو گربه و سگ و در و پنجره و فلان احتمال داره به درد منم بخوره توی حوزه رادیوگرافی و این ایده‌ای بود به نام ترنسفر لرنینگ که خب سبب میشد استفاده بکنن ملت فرض کنید که رو شبکه های مثلاً پلن چیز شبکه های پلینی که قبلاً داشتیم مثلاً استفاده بکنن مثلاً لایه‌های فولیش بردارن از اول

یا فقط لایه آخرشو فقط از اول ترین کنن ولی به بقیه نارنجی‌ها وزناش مثلاً دستی نزنند فریزش کنن ها و این کار به راحتی توی کراس انجام میشه دستورشم اینه که لیر. ترینبل رو میکنید فالس همین اگه برای یه لیر ترینبلشو بزارید فالس یعنی دیگه وزنش توی بکشن آپدیت نمیشن و فریز می‌مونن همون چیزی که اول بوده و حالا شما میتونید از وزن های شبکه های معروف استفاده کنید که اونا هم باز تو خود همون کراس و اینا موجوده یعنی vنت مثلاً از نوع ۱۶ و ۱۹ رو گذاشته و شما دلتون میخواد میتونید لود کنید و مثلاً بگید آقا ۱۵ لایه اول ۱۶ لایه اول شما لازم دارم مثلاً سه لایه آخرشو فلان کن برام و خب اینا چیزایی که هستش ولی آیا ترنسفر لرنینگ همیشه کار میکنه یا نه ببین ماجرا داره دقیقاً نه اینجوری نیست اگر شما خوب داده های کمی داشته باشید ولی دیتا ستتون سیملار باشن میتونه به کار بیاد اگر خدمتتون عارضم که دیتا ستتون

چیز داشته باشه شما خیلی دیتا داشته باشید دیتا ستتونم زیاد باشه باز احتمالاً شبکه‌های بیشتری و فاینتیون کنید و اصلاح بکنید یعنی به جای اینکه این سه تا رو بیارید مثلاً یه پنج شش تا اضافه‌تر هم بیاید چیز آپدیت کنید باز شانستون بد نیست اگر شما داده‌های خیلی زیادی تو تست داشته باشید دیتا ستتون هم شبیه باشه خیلی ترنسفر لرنینگ شانسش زیاده ولی اگر شما دیتا ستتون خیلی متفاوت باشه از اونور هم تعداد داده های کمی داشته باشید لزوماً موفق نخواهید بود و لزوماً ترنسفر لرنینگ برای شما کار نمیکنه ما یه کد ترانسفر لرنینگ آماده کردیم انشالله بهتون میگیم مسئله بعدی که می‌خواستم بهتون اشاره کنم اینه این شاید اسلاید مهمی باشه یک اسلاید ولی خیلی مهمه مثلاً اینکه ما مهندسی مکانیک آره به لحاظ خط و منحنی احسان لایه اول مثلاً فرض می‌کنه خطا و منحنی های مث خط زاویه ۴۵ درجه در میاره شما هر عکسی رو از هر جنسی بخوای مثلاً چیز کنی رادیو

لایه اولش می‌تونه چیز باشه چیز مهمی باشه یعنی اگه اگه می‌خواستی خودت خیلی داده می‌داشتی ولی آره دیگه از یه جایی به بعد یه دفعه می‌بینی چیزای عجیب غریبی داره در میاره که دیگه خاص خودشه مثلاً اینکه چند لایه بری جلو به اینکه شکل‌های هندسی برسه مثلاً اون شبکه نماد این باشه که داره دایره رو شناسایی می‌کنه داره مثلاً فضاهای پررنگو از کمرنگ جدا می‌کنه لاخ اینو قبول داری که میتونه مثلا مفید باشد حداقل رو کاغذ امتحانش ضرر نداره دیگه به این اتفاق میگن ترنسفر لرنینگ که ممکنه تو کاراتون حالا استفاده بکنید ما ازتون ممکنه بخواهیم نمیدونم اینو قانع میشیم به نظرت که بتونه حداقل لایه‌های اولش کارا باشه آها تا کجا به دردمون میخوره خب خیلی که نمیشه فهمید چون کلا خیلی همه چیش غیر خطیه و باید یکی یکی امتحان کرد ولی اولین کارهایی که مثلاً تو شبکه های وی جی نت و اینا میکن که فول کانکتدشو برمی‌دارن جاش یه چیز دیگه میذارن به کانولوشنش دست نمیزن

دادگانتون زیاد باشه شما این کارو می‌تونید بکنید مثلاً تو پایان نامه‌هاتون فرض کنید که شما قراره تو حوزه مثلاً زبان فارسی علایم زبان اشاره فارسی یه کاری بکنید خب شما باید مگه چند تا داده دارید چند تا میتونید جمع بکنید مثلاً ایمیل یک میلیون و ۲۰۰ هزار تا عکس داشت شما چند تا میتونید داده جمع بکنید و خب می‌بینید که برید امتحان بکنید شاید جواب داد دیگه یه همچین چیزی خدمت شما عارضم بچه‌ها یکی از اسلایدهای مهم ما اینجاست ما به عنوان مهندسین مکانیک ما لزوماً کار پردازش تصویر نمی‌کنیم ها اگه اصلا من نخوام رباتیک کار کنم حالت چهره آدما رو بشناسم یا بدونم ممد تو تصویره یا نیست یا انسان تو تصویره یا نیست آیا این چیزایی که طاهری تا الان گفتی به دردمون می‌خوره یا نه بسیار میتونه به درد بخوره شبکه‌های cnn میتونن تو حوزه تایم سریز یا سری‌های زمانی به کار بیان آقا ما سریال زمانی داریم تا دلتون بخواد حرکت‌هایی که ما انجام میدیم ها ایکس ها وای ها زدهای

مفاصل مختلف بدن یا زوایای در واقع لینک‌های مختلف بدن اینا یه سری زمانین دیگه در هر زمانی وقتی یه حرکتی رخ می‌ده اینا دیگه داده‌ای دارن ها شما یه حقه می‌تونید بزنید من اسمشو فعلاً گذاشتم استیت ایمیج تکنیک یا تکنیک چه میدونم حالت تصویر ولی شما می‌تونید اسمای دیگه‌ای هم تو مقالات و کتاب‌ها ازش ببینید و اون اینه که کل حرکتتون رو بردارید به یه عکس تبدیل کنید چجوری مثلاً فرض کنید یه حرکت دارید که دست راست و چپتونو پاتون مثلاً توی ۳۰ تو ۶۰ ثانیه توی یا تو ۶۰ تا فریم یه حرکتی کرده محور افقیتون رو بذارید زمان محور قائمتونو بذارید در واقع اون درجه آزادی که داشتید حالا ایکس وایz بدن بوده یا زوایا بودن و الی آخر و نرمالایزش بکنید و اینا رو یه عددش بکنید یه ماتریس عددی میشه اینو چیز کنید به عکس تبدیلش کنید حالا بین صفر تا یک یا صفر تا ۲۵۵ درش بیارید یه عکس طیف خاکستری میشه این عکس نمادی از اون حرکته ها و حالا میتونید مثلاً وقتی که حالا

در واقع خطابم شاید اولین کس بین همه شما به پارسا ریاضی که تو کاراش بتونه به کارش بیاد خدمت شما عرض کنم وقتی یه حرکت یه آدمو حالا چه سالم چه غیر سالم آنالیز بکنید بعداً بگید که این چیکار کرد مثلاً داشت راه میرفت میرفت می‌دوید مثلاً نشسته بود می‌خندید الی آخر شما داده های زمانی معادلشو در میارید و یه عکس رسم می‌کنید مثلاً فرض کنید ۱۰ تا ۱۰۰ تا از این حرکت‌ها دارید مثلاً ۲۰ نفر رو گفتید راه برن و این داده‌ها رو می‌گیرید ها که عرض به حضور شما به یک عکس تبدیلش کنید آرمین چه چیزی حذف بشه آره داری یه اشاره‌هایی می‌کنی این سبب میشه که اگه همه عکساتو تو ۶۰ فریم بذاری مفاهیم نظیر سرعت و شتاب و از دست بدیم ولی میتونی چیکار کنی باز دوباره در قالب سطرهای بالا سرش سرعت و شتاب هم اضافه کنید یعنیست عکس با ابعاد بزرگتر باشه و این دفعه حالا یه عکس غنی تر و جوندارتر داری که ما حالا این عکسی که از یکی از مقالات خودمون مستخر شده مثلاً به بچه‌ها به آدم‌ها می‌گفتیم

علائم زبان اشاره فارسی و اجرا بکنن تو صفحه دستشون این حرکتو می‌کرد مثلاً یه حرکتی میخواست بره به ۱۰ نفر مختلف ۲۰ نفر مختلف نفری ۵ بار ۱۰ بار گفتیم این کارو بکن از هر کدوم از حرکت‌ها یه عکس در آوردیم خب این عکس‌ها خب تعدادشون به اون اندازه نبودن دیگه به اندازه نت و فلان و اینا نبودن دادیم به یه شبکه شبه لینت یعنی دو لایه کانولوشن دو لایه فول کانکتد بسیار با دقت خوبی بالای ۹۰ درصد تونست چیز کنه دسته بندی کنه بگه این مثلاً علائم علامت آبی رو اجرا کرد اون یکی گفت مثلا بیا اوکی حرکت حرکت زمانی بودا یا من رو بچه‌های طیف اوتیسم اجراش کردم این که مثلا توی یه سری حرکت های خاص بچه‌های طیف اوتیس به بچه‌های سالم اجرا می‌کردن ما از هر کدوم از حرکت‌ها یه عکس در میوردیم و اون عکسه حتی اگر انسان نتونه به راحتی توش الگو دربیاره کامپیوترها با این نتورک ها و اینا شاید بتونن در بیارن برای اینکه آگمنتش هم بکنیم دادگاهمونو زیاد کنیم و غنی ترش کنیم مثلاً به این می‌گفتیم آقا اگر یه عکسی یه حرکتی ۸۰ درصد اول خودش

خودش بود یعنی ۸۰ درصد اولش خودش بود ولی ۲۰ درصد پایانیش یه اتفاقی افتاده بود مثلاً داده‌ای حذف شده بود فلان همچنان خودشه دیگه ها بازم بگو یعنی مثلاً شما از جلوی چشمتون یه لحظه دست رد بشه براتون چیز اختلالی به وجود نمیاد اگه یه جسمی داشتید می‌دیدید حرکت می‌کنه آیا چند فریمش از دست بدید بازم میتونید بگید این حرکته کاری که کردیم نویز انداختیم روش سر و تهشو بریدیم وسطش یه چیزهای عجیب غریبی انداختیم مثلاً چند فریم و میخواستیم شبکه ربات بشه و در کل این دیتا ست غنی تر شده رو دادیم و اتفاقاً کار کرده با همین شبکه های سی ان ان و البته از جنس لینت همون دو تا کانولوشن داشت دو تا فول کانکتد کار درآورد خدمتتون عارضم که مسئله بعدی که می‌خوام بهش اشاره کنم یه مقدار زمان تنگه حالا انشالله که برسم در مورد اینکه سی ان ان ها چه ترین میشن دستور خاصی ندارند محمد دستور خاصی یعنی چی نمیدونم یعنی چیکار کنیم اینکه چجوری ایمیجش بسازیم مطلب اینا رو کامل آماده داره که ما یه ماتریس ورودی میدی نرمالایز بکن بده ایمیجش

تو پایتونم خودت دستی می‌تونی بنویسی احتمالاً هم داره همینجوری مگه عکس چیه مثلاً عکس گفتیم برای کامپیوتر ماتریسه دیگه شما به جای این حرکت‌ها می‌تونید سیگنال‌های حیاتی بدن رو بدید سیگنال‌های ای جی بدید ای ام جی بدید ای سی جی بدید ولی آخر و ملت دارن از اینا استفاده می‌کنن تو کاراشون و امیدوارم توی پایان نامهتون انشالله به دردتون بخوره شاید براتون سوال شده باشه ما جلسه قبلی یاد گرفتیم اسم آها اسم خاصی داشته باشن ما بهشون میگیم استیت تکنیک ولی اینکه با چه دستور آماده میشه این کار کرد الان خاطرم نیست تو مطلب زدم که یه برد ماتریس می‌دادم ورودی ایمیجش میکرد بهم تحویل میداد یعنی در واقع چیز کن مثلا فرض کن اصلاً ماتریس با ماتریس برو جلو نمی‌خواد ایمیج کن وقتی میخوای پلاتش کنی مثلا از دستور چه میدونم کانتور اف اینا استفاده کنیم باز فکر کنم بتونه برات دربیاره ولی داره دستورایی داره حالا یادآوری بکنیم ایمیل بزنی نگاه میکنم بهت میگم که چه دستور آماده این کارا رو می‌کنه یعنی به شکل عکس

خدمت شما عارضم که چگونه این شبکات ترین می‌شود چگونه این w آپدیت میشن ما تو شبکه‌های mlp یاد گرفتیم که وقتی لایه آخر هستیم هی برگردیم عقب تا برسیم به اولین لایه و همه رو آپدیت کنیم اما سوال اینه ما توی روش بک پروپاگریشن که اینجا می‌خوایم ازش استفاده کنیم باید می‌رفتیم مشتق لاسو نسبت به تمام وزن‌ها و تمام بایاس‌های کل لایه‌های شبکه به دست می‌آوردیم یعنی رند لاس یا رند بع کاسپشن که جمع لاس ها بود نسبت به تمامی وزن ها پیدا میکردیم ها و در کل بعدش بتونیم با یه الگوریتم ساده ترینش دیسنت بود چیکار کنیم آپدیت کنیم مثلا بگیم w قبلی میشه جدید میشه قبلی منهای تا برابر رند لاس یا رند کاست فانکشن به رند اون دبلیو که شما پیداش کردید خب پس این چالشی که ما بتونیم بیایم پیدا کنیم توی شبکه های کانولوشن این چیزایی که w حساب میشن همون پارامترهای فیلترران که اون باید بره پیدا کنه که چه فیلتری مناسبه شما بهش گفتید مثلا

عمق ۱۲۰ می‌خوام ولی اینکه این ۵ در ۵ ضربدر ۱۲۰ تا یه دونه بایسته رو چند باید بزاره حالا تازه ۱۰۰ تا ممکنه از اینا بخواید بزارید یعنی ۱۰۰ تا از این خونه‌ها رو باید بره یاد بگیره شبکه‌ها دیدید دیگه بعضا پارامتراشون به چند صد میلیون می‌رسید خب برای اینکه کانولوشن برای اینکه بکشن بزنیم مجبوریم که در واقع یه مقدار روابط باز کنیم و بیشتر سر در بیاریم فقط یه چیزیو شما دوستان چیز میکنید یا تایید میکنید یا نه من با توجه به دانشی که از در واقع چیز دارم بخش قبلی دارم زیر فصل قبلی دارم میدونم که تا اینجا تا ته فول کانکت رو بلدم بک پرو در بیارم اینو تایید میکنید یا نه یعنی من از خروجی که بیام جلو و پروپشن بزنم میتونم یکی یکی اینا رو دربیم اونو قبول دارید یا ندارید با اون دانشی که از قبل داشتید این چیز خاصی که نداره دیگه شما خروجی رو دارید یعنی رفتید جلو رفتید جلو یه خروجی داده بعد بک پرو میکنید

تاچی تو برگردید به لایه آخرین لایه‌ای که حالا فولی شده و فلتن بوده اوکی فلتن هم ما فرض رو بر این داریم که میدونیم چه جوری فلتن شده یعنی مثلاً ردیف اول کجا رفته و فلان پس اینم داریم که آخرین لایه فلتنو من بلدم به یه مکعب مستطیل تبدیلش کنم اینم قبول دارید تا اینجا یا نه قبوله چون من مکعب مستطیل آخریه رو یکی قبل فلته رو من خودم میدونم چجوری بازش کردم حالا می‌بندمش دیگه هر جور راحت باشه می‌تونم ببندمش الان فقط چالش اینه چگونه برگردم رو شبکه‌های کانولوشن نیم اجستمنت و آپدیت ها را انجام بدم و یه پله بالاترش حالا بع میگم رو مکس پولینگ و کلا رو پولینگ ها بشه این کارا رو انجام داد پس سوال اینه چگونه می‌توان برای لایه‌های پیچش نمونه برداری انتشار به عقب رو پیاده‌سازی کرد خب بچه‌ها اینجا با من باشید دقت کنید من یه مقدار باید سریع صحبت کنم تا برسیم به کارهای دیگمون خب فرض کنید یه لایه کانولوشن زدید خب یه لایه

عادی اینجوریه فرض کنید اصلاً چیزی هم ندارید پولینگم ندارید یه ورودی حالا سه بعدی می‌گرفت ایکس در وای در یه عمقی با یه تعداد فیلتر ها کانولوکشون میکرد و چی میداد و یه شبکه یه عکس با عمق حالا بیشتر معمولاً و چیز طول ابعاد کمتری میداد خب و بعدش میگفتیم رو این رلو بزنید درسته یا یه اکتیویشن فانکشن بزنید اولاً قبول دارید که این ریلو درسته با این که روش ریلو زدیم هم سایزن دیگه دقیقاً هم سایز هم قبوله مگه اسم اینو بذارم آی لایه الم به سبک قبلاًم یعنی خروجی لایه الوم هم اینه و اسم اینو بذارم زد لایه یعنی قبل از اعمال اکتیویشن فانکشن ریلو به این هم میتونم بگم آی لایه ال منهای یک اوکی و اینم همون فیلتررام همون دب حاوی wو منن و بایاس های من

که اینا تو لایه ال منهای یکمند و باید چیکار کنم اینا رو برم پیداشون کنم و به دستشون بیارم مشتق یعنی یه مقدار اولیه دارم مشتق لاس نسبت به اینا پیدا بکنم آپدیتشون بکنم بعد تازه یه پله برم عقب تر برای لایه قبلی هم این کارو بکنم و برم انقدی عقب که چی برسم به لایه اول خب حالا با این اوصاف بریم سر کارمون ببینیم چه تمهیداتی باید بیندیشیم چیزی که واضحه اگر شما رند در واقع حالا لاس رو به رند تک تک چیزا داشته باشید ما یادمونه دیگه لاست تا چی میشد تمام دبلیو بایاس ها میشد ما میتونستیم دستی تو سایه براش رند لاس به رند اکتیو خروجی اکتیویشن فانکشن ها اعمال کنیم که رند به رند آ بود یا رند به رند زدشون بود ها یادتونه اینا رو استفاده می‌کردیم تو فصل قبل یا الان تو تمریناتون شما دارید استفاده می‌کنید دیگه خب اوکی من برای اینکه بیام عقب و به این مثلاً رند به رند این دبلیوها برسم پله پله میام میگم رند لاس به رند فول کانکت

فولی کانکت قبلی به قبل‌ترش حالا رسیدن به اینکه رند لاس خب به چیست به این رند حالا آخرین لایه فولی که بود فلتن شده بود بعد مستطیلش کرده بودم خب من اینو ادعا می‌کنم دارم چرا دارمش بچه‌ها من رند لاس به رند فلتنو دارم من الان ادعا می‌کنم رند لاس به رند آخرین خروجی کانولوشنمو دارم چرا دارم برام بنویسید سوالمو نمی‌دونم گرفتین چون خودمون آفرین آرمین خودمون فلتن کردیم برعکسش هم بلدیم تمام شد فلت شده رو داریم من میدونم جای هر کدوم کجا بوده پس رند لاس به رند این آی آخریه رو دارم حالا چجوری میتونم برگردم یکی یکی برم عقب و رند لاست تو راش نسبت به رند دبلیوهای کامپولوشن رو پیدا بکنم اولین پله‌ای که داره اینه که این در واقع فلتن همون آخریه

کردیم از یه اکتیویشن فانککشنی گذشته بود یعنی از یه زدی به این رسیده بود ها پس طبیعتاً وقتی که میدونم آ بشه اف زد برای تک تک درایه‌هاش پس آپرایم میشه افرایم زد ها یعنی رند لاس به رند زد میشه رند آ به رند لاست که تک تک دارم ها زرد چی در رنده عرض به خدمت شما لاس رند a به رند زد که همون افرایم خودمون باشه پس تا اینجا اتفاق سختی نیفتاد ها اینه که شما برای اینکه از لایه خروجی یا اکتیویشن فانکشن به لایه ورودیش برسید تنها کاری که می‌کنه اینه که تک تک خونه ها رو در چی مشتق اون خونه ضرب می‌کنید خب حالا اگر رلو استفاده کنید بچه‌ها مشتقتون چنده یا چنده رلوی تابع بود که تا قبل صفر صفر بود بعد صفر و یک تمام شد خیلی پس راحته کلاً

زد منفی بود مشتق صفره اگه زد مثبت بود مشتق یکه پس این فرمول خیلی راحت میشه ها فقط یه اتفاق می‌افته اگه مثلاً اینجا ورودیمون قبل از اینکه اکتیویشن بزنیم منفی بود بعد اینجا مثلاً رلو زده بودیم الان رلو نزده‌ها خب صفر میشد اتفاقی که میفته تو بک پروپاگریشن چه اتفاقی می‌افتاد درایه متناظر رند لاس به رند زد تو اون نقطه چند میشد بچه ها صفر میشد یعنی دیگه از اونجا به قبل کسانی که به این وابسته بودن دیگه از نوعشون آپدیت نمیشد دیگه ها چون هی راندا حالا داره در یه چیزایی ضرب میشه ولی همچنان بغلیی‌هاشون شانس دارن که چیز تزریق بکنن و اوکیه خب نه این باعث قدرتش اتفاق نمی‌شه آرمین چون انقدر شما تعداد داده‌هاتون زیاده خب و توی در واقع هیپاک های مختلفی هم میبینید انواع اتفاقا براش میفته همیشه نمیشه که این منفی بشه و انواع اتفاقا می‌افته دیگه نهایت

تمام تمام داده‌ها این یکی همیشه داره منفی میشه اصلاً انگار یه جورایی به درد نمی‌خورده دیگه و این سبب می‌شده که این شبکه کلاً تو تمام داده‌ها ببینه این نقطه اصلاً به درد نمی‌خوره بچه‌ها اینجا می‌بینید که در واقع زد یا آ ۴ تا در واقع آرگمان دارند ال یعنی لایه من ام یعنی عمق چندشون ایکس و وای هم یعنی چی در واقع طول و عرضشون چنده پس شما به ازای تمام لایه های ال به ازای تمام ام ها به راحتی می‌تونید اگه رند آ رو داشته باشید رند لاس به رند آ رو داشته باشید رند لاس به رند زد رو داشته باشن اوکی پس من از یه لایه قبلم زدش اومدم پیدا کردم حالا چالش شروع میشه رند لاس به رند زد و دارم خب میدونم زد چجوری به دست اومده از آی لایه قبلی به دست اومده در چی در کانولوشن شدن با یه سری فیلترها و اینجا باید برم رند لاس به رند اون فیلترها رو پیدا بکنم خب خیلی نمیخواستم دیگه فرصت نمی‌کنم ازتون سوال

تند تند میرم خب مبدا مختصات ایکس و وای از بالا عموما صفرن از بالا شروع میشن صفرن ولی کلاً چیزی که ما داریم میگیم به ذات ربطی نداره این بالای بالا رو صفر و صفر می‌گیرن میرن جلو و هرچی میان پایین تر در واقع چیزها بیشتر میشه وایا مثلاً بیشتر می‌شه هرچی می‌ریم جلوتر چیز خدمت ببخشید هرچی میریم جلوتر یعنی ستون ها برای وای بذارید سطرها رو برای x بذارید منظورم این بود اوکیه از صفر و صفر شروع میشن تا میان تا آخر ولی خیلی چیز مهمی نیست بعضی هاتون نوتیشن‌هاشون وقتی می‌خوان فرمول محاسبه کنن وسطشو صفر می‌ذارن می‌گن از منفی فلان تا مثبت فلان فیلتر رفته جلو و فلان حالا اینا کاری نداریم چون بعضیش خیلی میتونه پیچیده باشه اما اتفاق بدی که میفته که فرمول های قبلی دیگه برای ما کار نمی‌کنن و یه دفعه میبینید ظاهرش یه چیز چالشی میشه اینه بیان سادش اینه وقتی به شما میگن مشتق این چیکار کردم وقتی به شما میگن مشتق این عبارت نسبت به ایکس بگیر

ها بگم که وای مساوی با دو ایکس به علاوه ۵ بعلاوه تی بعلاوه زد مثلاً اینا فرض کن پارامتر مستقله خب به علاوه سه ایکس ها وقتی مشتقشو نسبت به ایکس میگیرید بچه‌ها حاصلش چند میشه برای شما میشه ۵ ماجرا اینه که نه فقط دو ایکس باید ببینید نه فقط سه ایکس رو باید ببینید و بعد جفتشو باید با هم ببینیم مردانه عقل اتفاقی که الان میفته اینه که این چالش برای ما به وجود میاره اینه که بعضی از خونه ها چندین بار توسط افراد دیگه دیده میشن ها و اونجا هی دارن اثر خودشونو می‌ذارن و شما باید اثر تک تک ببینید و جمع این اثرها رو بذارید برای آپدیت شدن ها پس این چالش ماست خب در ضمن یادمون باشه که تمامی این در واقع چیز به

حالا آ ال منهای یکا یعنی خروجی لایه قبلا تو تمام عمق‌های زد ورود می‌کنند ها تو تمام عمق‌های ضد ورود می‌کنند و چیزو میدن یعنی در فیلترها که ضرب میشن به شما چیو میدن به شما زد بعدی رو میدن و خب اینا ماجراهای جدی که وجود دارد خیلی سرتون درد نیارم درجا برم سر اصل ماجرا اجازه بدید مسئله رو خیلی خیلی ساده‌اش کنیم و ما می‌دونیم که می‌خوایم از چنین رول یا قواعد زنجیره قانون زنجیره استفاده کنیم این دفعه برای ما عادی می‌دونیم اگر یه ورودی داشته باشیم به نام ایکس و یه وای و یه تابعی مثل f روشون اعمال بشه خروجی زد بگیره چجوری میتونیم رند بع یه لاسی داشته باشیم رند ال به رند زد رو داشته باشیم چجوری میتونیم رند l به رند ایکس به رند ال به رند وای رو پیدا بکنیم میگه اوکی اگه شما بتونید رند زد رو به رند ایکس به رند زد رو به رند وای پیدا کنیم با ضرب کردن این دوتا طبق قواعد زنجیره چیکار میشه کرد میشه رند ال نسبت به دوتاش پیدا کرد میگه حالا اجازه بدید

ایکسم باشه ایمیجم یا اینپوت لایه الوم وای هم باشه فیلترهای لایه یا فیلتر لایه و اف هم باشه کانولوشن اینا یعنی فرایند عجیب غریب و پیچیده حالا ما مشتق این که میتونه ماجرا بشه دیگه رند زد به رند ایکس رند زد به رند وای ها رو باید الان بریم یه جورایی استخراج کنیم پس اینجا هم اینجوریه که اگه لاس بیاد تا اینجاشو داشته باشم من چه‌جوری می‌تونم رندل به رند ایکس رو پیدا کنم فقط کافیه که چی رند ال به رند در واقع زد رو که دارم در رند زد به ایکس یا ضرب کنم تا اونو بهم بده خب حالا خدمت شما عارضم که ما اجازه بدید تعریف بکنیم ساده ترین چیزی که میتونیم ورودی مونو سه در سه در یک بگیرم با عمق یک میخوام در ساده ترین حالت خدمتتون بگم بچه‌ها به این سادگی یعنی ساده تر از این دیگه پیدا نکردم و هر منبع دیگه مراجعه بکنید ممکنه شما رو بسیار بپیچونه به انواع در واقع چیزهای تو در تو سری های تو در تو گیج بشید با این لطفاً دقت کنید

می‌بینید که کار سختی نیست فرض کنید که اینپوت اکسو دارید فیلتر اف هم دارید خب کانولوشن اینو اینجوری تعریف کردیم که اف رو بگیرید روی سر بدید دات بکنید با همدیگه جمع بزنید نهایتا با یه بایاس هم جمع بزنید من خودم با یه بایس هم جمع زدم که دقیق‌تر بشه اوکیه پس این کارو بکنیم یه قرارداد بچه ها اگر من نوشتم کانولوشن یه چیزی و یه چیز دیگه ای قراردادمون این باشه که دومی قراره رو اولی بلغزه ها یعنی اولی ثابت دومی لغزنده باشه اوکی و سه در سه ورودی بدم دو در دو فیلتر بدم دو در دو به خروجی میده با استرایگ یک که این چیز سختی نیست و در ضمن o یک یک او یک دو یک و o22 که خروجی‌هام باشن بر حسب ایکس یک یک ایکس یک دو و الی آخر و اف11 دو الی آخر پیدا میشن با یه سری ضرایب خطی که اینجا نشون داده شده خب حالا فرض کنید این ا من همون خروجیم خب که من کانولوشن شده قبل از اینکه وارد ریلو بشه که من اسمشو زد گذاشتم و این در واقع f فیلترهای منن و

پایینی ایکسم ایمیج‌های در واقع از رلو گذشته لایه قبل منن ها این دوتا ایکس برای ورودی‌ان او بهم خروجی میده بچه‌ها من ادعا می‌کنم برای آپدیت وزن‌ها به رند l به رند اف و رند ال به رند ایکس احتیاج دارم رند ال به رند اف که واضحه مگه اف فیلترهای ما نبودن مگه همون نبود که درایه‌هاش همون دبلیو اند ها خب این منطقیه که رند l به رند اف رو پیدا بکنم تا من بتونم دبلیو اون لایه آپدیت کنم اما چرا به رند ایکس میخوام ها به نظرتون این چیز اضافه ایه واقعا بهش نیاز دارم رند لاس من نه تنها نسبت به رند فیلترها باید برم پیدا بکنم تو محاسباتم بلکه ادعا می‌کنیم نسبت به ورودی ها باید پیدا کنم یعنی چی یعنی اگر یکی از درایه‌های عکس ورودی یه کوچولو تغییر می‌کرد چه تاثیری رو لاس من میذاشت چرا من به این احتیاج دارم فکر می‌کنید

تو این عکسام سوسکی گویاستا داره براتون میگه یکی یه چیزی بنویسه که منو ادامه بده بچه‌ها به خاطر این احتیاج داریم که این ایکسه تازه برای این ورودی بود خروجی لایه قبله یعنی شما که این الگوریتم می‌خواید چیز کنید انجام بدید حالا این ایکسه آی لای قبله که بعد دوباره باید یه پله برید عقب تر زدشو پیدا کنید باز دوباره برید چی رنده دبلیوهاشو پیدا کنید ها یعنی اگه لایه قبلش وجود نداشت بله دیگه نیازی نبود رند به رند ایکس رو پیدا کنیم ولی الان که من میخوام برم قبلش چاره‌ای ندارم من باید برم رندلاس رو به رند آی لایه المنای یکم پیدا کنم آقای ال منهای یکم چیه همین که اینجا الان ما اسمشو چیز گذاشتیم ایکس گذاشتیم دیگه اینو قبول دارید لااقل یکی بنویسه اینو تایید میکنه که من ادامه بدم

رند ال به رند اف اگه پیداش کردید چه جوری میرید وزنتونو آپدیت می‌کنید واضح وزن قبلی رو دارید منهایتا برابر رندل به رند اف میکنید وزنش آپدیت میشن اما رندل به رند ایکس‌ها رو میرن تو لایه‌های قبلیش و تا هر رند از رند ال به رند ایکس من بتونم رند ال به رند اف های لایه قبل رو پیدا کنم خب چجوری میتونم رند l به رند اف رو پیدا کنم اول گام اول این ساده تره برای رند اف رو پیدا بکنم اول میام او را باز میکنم او چجوری اند او خودش یه ماتریسه f یه ماتریسه رند ال به رند اف یعنی باید نسبت برای تک تک در واقع اف آی جی ها شما برید چیکار کنید رند بگیرید و در ضمن اگه لازم شد با همدیگه جمع بزنیم اون داستان دو ایکس به علاوه سه ایکس است بچه ها ا یک یک فرمولش بود ایکس یک یک f ۱ ۱ ۲ ۱ فلان این چیز سختی نبود دیگه کانولوشن دو در دو انداخته بودم روش و اینا رو

آخر پیدا میشه رند او یک یک به رند اف ۱ ۱ چه جوری بدست میاد بچه‌ها برای اینکه رند اف پیدا کنم اول رنده او را به رند اف پیدا می‌کنم رند o داشتم از قبل لایه خروجی حالا لایه چیزمون جلومو داشتم و اینا رو چین رول بزنم در میاد خب رند o۱ ۱ به رند اف یک یک میشه ایکس یک یک رند او یک یک به رند اف یک دو میشه ایکس یک دو و الی آخر ولی شما نباید اینجا راضی بشید شما توی در واقع او یک دو یک و فلان هم باز ممکنه چی ببینید چیزهای تکراری ببینید ها یعنی اف یک یک دو الی آخر ظاهر بشن او و اف ماتریس اند تعریف میکنیم رند او به رند اف پارشال تی وای ماتریس او نسبت به تک تک ده های ماتریس اف و اینجوری نمایشش میدیم ها میگیم رند ال به رند اف آی یا

الی آخر میشه رند ال به رند تک تک اوها در رند او به تک تک به اون اف مد نظرمون ها چرا چون او یک یک می‌تونه رند به رند f۱۱ داشته باشه o۱۲ هم ممکنه داشته باشه و پس من وقتی رند ال به رند پیدا میکنم همون دو ایکس به علاوه سه ایکس است که این دو جا خودشون نشون داده و من جفتشو باید ببینم و جفتشو لحاظ بکنم بچه‌ها من اینو باز کردم براتون رند ال به رند اف یک یک در حالت کلی چهار تا چیز داره تو این شکل ما رند ال به رند o1 در رند o1 به علاوه رند o12 به رند اف یک یعنی چی یعنی رند لاس رو نسبت به تک تک ده های او که همون خروجی باشه من با آ نشونش میدادم گرفتم ماتریس دو در دو و الی آخر این چهار تا رو با هم جمع زدم تا اینجاشو بچه‌ها قبول دارید یا نه یعنی اینکه جمع بشه رو قبول دارید که رند ال به رند اف یک یک رو میخوام پیدا کنم فقط نباید برم از او یک یک او یک دو اینا رو برم ها مجموعه

E:\courses\LangChain Project\main root\data\SCR_Session11_transcript_part3.txt

اینا رو باید برم اینو قبول دارید عالی خب حالا به جاش عدد میزارم رند o۱ به رند اف یک رفتم حسابش کردم شد ایکس یک یک رند او یک یک به رند f۱۲ میشه ایکس ۱ ۲ الی آخر برم بزارم جاش یه همچین چیزی میشه و رند ال به رند اف ها که درایه‌هاش داره تعیین میشه میشن یه مشتی رند ال به رند اوهای مختلف در ایکس آی جی های مختلف من حقیقت بخواید خیلی انتظارتون ندارم انتظار ندارم که با دیدن این الگویی در بیارید فقط همینقدر بهتون نوید میدم که این عبارت کلا میشه به شکل کانولوشن نوشت شبیه همون اتفاقی که ما تو فوروارد می‌رفتیم جلو یعنی من بیام یه چیزی رو روی یه چیز دیگه سر بدم و حاصلش این قرم رو به شما بده ها و اونم چیزی نیست جز اینکه بیاید ایکس و با رند ال به رند اوها کانولوشن کنید و چی بهتون میده رنده ال به رند اف ها بهتون

شما قبلا چیکار میکردید شما قبلا مثلا فرض کنید این تیکشو باز براتون مثال عددی برم واضح‌تر فکر می‌کنم در بیارید شما قبلا فرض کنید که یه عکس هفت در هفت در یک داشتید فیلتر سه در سه در یک مینداختید خروجیتون بچه‌ها چند می‌شد خروجیتون چند میشد ۷ منهای ۳ تقسیم بر یک میشد چهار با یک جمع میشد ۵ در ۵ در یک قبوله انشالله که قبوله حالا میگه چیکار کن حالا میگه یه ماتریس پیدا کردی که هم سایز اینه ولی فقط به جای اینکه درایاش خود بودا باشن رند ال به رند اوت پوتان ها رند ال به رند او یک یک رند او یک دو تا رند o یک پنج ته تهش رنده ال به رنده او پنج پنج اوکی حالا ما الان محاسبه کردیم ادعا کردیم که اگر عکس رو کاملوت کنید با این ماتریسه که اسمشو میزارم رند ال به رند o

من به ماتریسی می‌رسم که هستش رند ال به رند افها اولین چیزی که باید چک کنم سایزش ببینم می‌خوره یا نه بچه‌ها هفت در هفت رو با ۵ در ۵ کانولوشن کنید با استراید یک چند میده بهتون خروجی میده ۷ منهای ۵ تقسیم بر ۱ میشه ۲ با یک جمع میشه ۳ چند شد خروجی چند در چند شد برام بنویسید شد سه درسه این سه درس شدن نشون داره میده که من ببخشید آره که بتونم ننداختم یعنی فیلتررام سه در سه بودن الان این مسیر کانولوشن خود عکس خود خروجی لایه الوم بعد از گذشتن از رلوش و مشتق رند ال به رند oهایی که داشته از بالا میومده چی به شما میده رند ال به رند اف های لایه قبلی رو بهتون میده اوکی شد پس من رند ال به رند اف یک یک رو دارم اف یک یک قبلی رو

منهای اتا برابر این می‌کنم وزن آپدیت می‌کنم و الی آخر تونستم وزن‌های لایه علمو آپدیت کنم اگه دلم بخواد اوکیه اما داستانی که رند l به رند ایکس رو چجوری پیدا می‌کنید و چه جوری فرمولش می‌کنید پیدا کردنش کار سختی نیست او یک یک مگه نبود x ۱+ فلان فلان قبلا سری قبلی من نسبت به f1 مشتق گرفتم این دفعه نسبت مشتق بگیرم رند او یک یک به رند ایکس یک میشه و الی آخر در ضمن مثل قبلی ایکس هم این دفعه ماتریسه و اگر بخوام ایکس حساب بکنم به تک تک ایکس ها باید چیکار کنم باید نگاه کنم که اوهای مختلف میتونن به یک ایکس وابسته باشن پس باید بیام رند ال به رند اوهای مختلف رو در رند اون او به رند اون ایکس مد نظرم ضرب کنم و همه رو با همدیگه جمع بکنم خب این کار کردم اومدم رند ال به رند ایکس یک یک رو پیدا کردم که شده رند ال به رند o یک یک در رند o یک یک به رند چی ایکس یک یک بچه تنها کسی که ایکس یک یک رو میبینه تو مسیر فوارد کیه

تنها کسی که ایکس یک یکو می‌بینه تو مسیر فوروارد کیه فکر می‌کنم یه دیلی اف ۱۱ فقط همین رونده ال به رند ایکس یک یک فقط شده رند ال به رند o۱۱ در چی رند o۱ به رند ایکس ۱ f باشه یعنی فیل درایه دیگه فیلتر نیومده ولی رند ایکس اینجوری نیست میتونه دو تا از المان فیلتر رو تو خودش بیاره و بعضی هاشون میتونن چهار تاشو بیارن یعنی فیلتر وسطا که میفته رو همه میفته ها و چهار تا درایه داره بچه‌ها اینو چیکارش کنیم نوشتم باور داشته باشید یا نداشته باشید حتی اینم میشه به شکل کانولوشن نشونش داد ولی یه ملاحظه داره اینم میشه اپراتور کامولوشن روش سوار کرد اما چجوری اولین کاری که بکنید اینه که فیلترتون رو ۱۸۰ درجه بچرخونید

نسبت به ایکس و بعدش نسبت به وای تقارنش کنید یا نسبت به قطر اصلی متقارنش کنید ها فیلیپش کنید اوکی دو تا فیلیپ یه نسبت به ایکس نسبت به وای به این میگیم روتیت شده فیلتر ۱۸۰ درجه‌ای حالا اگه این فیلتره رو بیایم فولولوشن بکنیم با چی رند ال به رند اوها می‌تونیم به رند ال به رند ایکس ها برسیم چه جوری چه جوری باید بیاید تعریف بکنم بعدش بیام ادامه بدم بچه‌ها ما سه نوع کانولوشن معروف داریم کانولوشن اصلی که ما تعریف می‌کردیم بهش می‌گفتیم ولید توی کدهای کراس هم ولید رو که می‌نوشتید یا بعضا نمی نوشتید خودش دیفالت ولید بود این بود که گوش بالا سمت چپ فیلترتو بذار رو اولین خونه چی عکس من و برو سرش بده برو جلو به این میگن پدینگ ولید اوکیه یه پدینگ دیگه داریم به نام پدینگ سیم اون وقتیه که چی که خروجیتون میخوید با

باید کاری کنیم که عکس درایه وسط فیلتر بیفته روی عکس گوش بالا سمت چپ ها و مجبور میشی یه لایه‌هایی که این بیرون افتاده چیکار کنی چی بچه‌ها بذاریم تو این عکس اصلی‌مون صفر بذاریم باریکلا خب تا این اتفاق بیفته به این میگن پدینگ باز دوباره توی کراس ممکنه ببینید وقتی پدینگ بزنید ما یه چیز دیگه داریم به نام فول پدینگ فول پدینگ حرفش اینه میگه اولین درایه از فیلتر که میخوای شروع بکنی درایه پایین سمت راست فیلترتو بنداز رو درایه بالا سمت چپ عکس با این برو جلو و تعداد پدیدینگات باید بیشتر باشه به این اتفاق میگن فول پدینگ خب حالا چگونه می‌توان در واقع رند ال به رند اکس رو پیدا کرد میگه اگر بیاید فیلترتون رو ۱۸۰ درجه بچرخونید ثابت

چیزو این یارو رند ال به رند اوها رو فول پد کنید از پایین سمت راست شروع بکنید بیاید جلو برعکس عادی خودمون برید ما قبلاً از بالا شروع می‌کردیم می‌رفتیم راست بعد میومدیم پایین اینجا بچه‌ها این عکس رو ببینید تا گفتم ببینیدش اینی که الان اینجاست اف یک در رند ال به رند o11 فلان شد بعد میره بعدی بعد میره یکی بعدی بعد میره اینجا بعد میره اینجا و بعد میره اینجا و حاصل اینشن رند ال به رند ایکس آی جی های مختلف داره بهم میده نه تا درایه باید اینجا بهم بده از رند ال به رند ایکس یک یک شروع میکنه تا میره این اتفاق رو رقم میزنه خب به این بچه ها میگن اپراتور فول کامپولوشن پس فول کامپولوشن اگه میخوید اجرا بکنید تا رند ال به رند ایکس آی ها براتون در بیاد چیزی که مد نظرمون بود میگه که فولکولوشن بزن روی چی فیلترتو ۱۸۰ درجه بچرخون فیکسش کن رند ال به رند o رو که داشتی از قبل

خروجی لایه آخرهای قبلی بوده و داشتیش اینو چیکار کن فول کامپوت کن از پایین از شروع بکن برو به چپ و بیا بالا خب ممکنه این سوال پیش بیاد آقا ما عادت نداریم اینوری بریم ما همیشه دوست داشتیم از بالا شروع بکنیم بریم سمت راست میگه اینم ایرادی نداره حقه داره این دو تا معادل همدیگن میگه بیا به جای اینکه اینو رو اون سر بدی از پایین سمت راست به چپ بیا این یکی رو پد بکن به اندازه کافی سفت بشه اضافه کن فیکسش بکن فیلتر ۱۸۰ درجه رو عادی خودمون سر بده به ببر جلو و چیزی که بهش می‌رسیم چیه همون رند و رند اکس ها را به ما خواهد داد خب خیلی تلاش کردم به زبان ساده بگم چون اگر اینو متوجهش نشین یعنی برید تو کتاب های اصلیش اونا در جا برای ام در ان در اف یعنی اف در اف در ام نوشتن بسیار چیز وحشیانه و اصلا نمیشه دنبالش کرد خب یه مثال ساده می‌زنیم با

پس در نهایت اتفاق فوق جذابی که افتاد این شد که ما رند ال و رند و رند ال به رند ایکس‌ها رو توی کانولوشن‌ها تو لایه کانولوشن تونستیم بدست بیاریم و در ضمن تونستیم جفتشم با کانولوشن نشون بدیم خیلی جذاب شد برای رندل به رند اف که آسون‌تر بود گفتیم اینپوت رو در رند ال به راند او کاملوشن عادی خودمون کن برای رند ال به رند ایکس گفتیم نه یا بیا ۱۸۰ درجه فیلتر رو ثابت کن به رند ال به رند او در واقع چیز های عادی اضافه کن از پایین سمت راست دورش بده یا بالعکسش اینو بیار اینور ثابتش کن اونو از بالا سمت چپ به سمت راست دور بده و برو و اینا جفتش یک خروجی خواهند داشت و اینجوری من میتونم رندل به رند اف رو پیدا کنم و رند بهکس رندل به رند اکس رو که دارم تازه مثل اینه که چی حالا اومدم رند ال به رند آی لایه جلویی رو دارم یه دونه با اون ریلو میتونم رند ال به رند زد قبلیش پیدا کنم و دوباره با همین مراحلی که اینجا گفتم چیکار کنم برم رند ال

دبلیوها و روند آ لایه قبلیشو پیدا کنم و این چرخه رو ادامه بدم تا ته تهش برسم به چی برسم به لایه اول اولم تازه اینو فعلاً مادامی که پولینگم نداشته باشد خب خدمتتون عارضم این فرم بازشدشه من توی حالت معادل ماتریس فیلتر ترانهاده میشه فیلتر بله ترانهاده میشه خانم احمدی یعنی بازم ۱۸۰ درجه هستش خب بازم ۱۸۰ درجه هستش ولی این دفعه باید رنده اوتون که مثلاً دو در دو بودو به اندازه کافی پدش بکنید ها مثلا اینجا یک لایه صفر باید به اطرافش اضافه بکنید که بعد که این اتفاق چی میفته سه در سه بهتون خروجی بده حله آها این بچه‌ها فرم حالا ماتریسیشه شما میدونم نمیرید cnn خودتون کد بزنید ولی اگه می‌خواستید کد بزنید باید بدونید که رند لاس به رند آی لای قبل خب میشه سه تا سری داره یه سری دارید روی

خوب خدمتتون عارضم که دو تا سری هم دارید روی ایکس پرایم وای پرایم what یعنی رو عکس باید برید جلو خدمتتون عارضم که حالا مولفه‌های چیز دبلیو رو با پرایم نشون داده عکس‌ها رو با ایکس و وای نشون داده و در رند لاس به رند زد لایه بعدی باید ضرب بکنید که رند لاس و رند آی لایه قبل به دست بیاد یعنی همون کاری که من گفتم حالا تو فرم پیچیده ترش من الان تو فرم ساده عکس سه در سه و فیلتر دو در یک گفتم این فرم کلیشه اگه خواستید خودتون فکر کنید همین کار اینجا میکنن میگه آقا برای اینکه همون از پایین سمت نمیدونم چپ نخوام بیام از راست بیام به چپ میگه بیا یه دبلیو حد تعریف بکن که فیلیپ شده اون باشه بعد شیفت های لازم رو بده و فرمولاتو عوض بکن به اینکه کانولوشن عادی خودمون باشه و این کاریه که انجام میده یه چیز دیگه هم میگم حالا برسیم حداقل چیزشو بگم مثالش بزنم چون مثال عددیشو نگم احتمال داره کامل متوجه نشده باشید

خدمت شما عرض کنم ماکس پولین حالا چطوره یعنی تو ماکس پولینگ تو فورواردشو راحت می‌رفتیم بکواردشو چجوری میایم ها چه جوری باید آپدیت کنیم w قبلاً گفتیم مثلاً چه می‌دونم الان فرض کنید یه سه درسه دارم فیچر مپم یه پولینگ دو در دو با چیز یک دارم استراید یک دارم یعنی هر از گاهی اورلپ هم میکنن الان بین اینا ماکسیمم میگیره میشه سه دهم بعد میره بین این چهار تا ماکسیمم میگیره میشه یه دهم بعد نیم بعد دوباره نیم ها خب حالا فرض کنید که تو فرایند بک پروپشن اومدیم خب خروجی مکس پولگه که حالا مثلاً ورودی یکی از عکس لایه کانولوشن بوده ما تونستیم رند لاس به رند اون زددای معادلشو پیدا کنیم مثلاً اینجا شده ۲۵ ۳۵ فلان فلان چجوری برم رو شبکه تو در واقع فیچر مپ قبل از مکث شده انتشار بدم اون خطا رو که حالا بعدش بتونم برم عقب رو کانولوشن های قبلی این کار بکنم کاری که بچه‌ها می‌کنه مکس پولینگ ویژگیش اینه میگه ببین شما تو فرایند فورواردتون باید سیو بزنید اسم خونه ای که

عکس شده رو و فقط الان اینجوری بهتون بگم الان تو این دو در دو من می‌دونم سه دهم تغییر کرده تغییرات کوچک منفی دو دهم و منفی شش دهم آیا رولاست تاثیری دارد یعنی یه سوسکی اینا کوچولو پایین بالا بشن آیا رولست تاثیر دارد جواب خیر پس اینا اصلاً انتشکیشن رو نمی‌بینند کلا صفر میشن و کل این ۲۵ هزار میاد تو این یعنی این مکسینگ پس دیدید خیلی ثابته ساده است همون هرچی اینجا بوده بدون هیچ تغییری میاد اینجا ها و حالا میره حالا دیگه دوباره حالا یه لایه است که باز اگه لازم شد کانولوشن میزنید دو تا کانولوشن که برید اون چیزهای قبلی رو راند قبلی رو پیدا کنید و برید عقب‌تر بچه‌ها اینجا یه اتفاق جالب افتاد من عمداً یه مثال براتون آوردم اینجا عمداً ماکس پولینگش اور اورلپ داشت خب اینجا هم زمانی که اینجا می‌رفت نیمه برنده شد هم زمانی که اینجا بود نیمه برنده شد کاری که شما

هم منفی ۳۰۰ هزارم باید اینجا پروپاگت کنید هم ۹۱ هزار یعنی ۱۳ هزار می کنید ۹۱ هزار برای کی میرسه دوباره میره تو این چهار تا آخر نگاه می‌کنید باز به این رسید و جمع اینا رو لحاظ می‌کنید ها پس اینم توی پولینگ‌هایی که اورلپ دارند ممکنه که چند تا از اینا با همدیگه جمع بشن خب یه سوال بپرسم اینو شما جواب بدیدج پولینگ اگه بود به نظرتون من باید پروپاگیت رو چجوری انجام می‌دادم یعنی اگر من به جای مکسولینگ ابرش پول داشتمج اینا رو بگیر برو بعدی حالا پولی چیزش چجوری میشد اینور چه میشد شما بودید چیکار می‌کردید به فرمولش نگاه کنید خیلی ساده است فرمول این سه دهم چجوری به دست میاد میشه این بعلاوه این بعلاوه این بعلاوه این تقسیم بر چهار درسته باید تقسیم بر چهار می‌کردیم باریکلا آرمین به همه میدادیم به همه می‌دادیم پس این ۲۵۰۰۰ رو تقسیم بر چهار میکردی و همه می‌دادی چرا تقسیم بر چهار کردی تقسیم بر

سایز فیلتر در فیلتر دیگه ها یعنی اگه مثلاً سه در سه بود باید تقسیم بر ۹ میکردی و تقسیم به همه میدادی به هر چهار تاش بعد دوباره اینم به هر چهار تاش و خب بعضیا چند تا عدد داشتن اونا رو باید با هم جمع میزدید خیلی ممنون از همراهیت و در نهایت بکشن انجام می‌شد و این کل ماجراست بچه‌ها اینجا پیشنهاد بهتون میدم اگه خواستید به این نگاه کنید و به این و خیلی جالبه این به زبان ساده توی cnn برخلاف ظاهرش که باید خیلی باشه اصلاً وجود نداره به راحتی تو اینترنت و من به سختی تازه امروز صبح یه ویدیو از آقای هندی پیدا کردم که این در واقع حرفا رو سعی می‌کرد به زبان ساده بزنه و من خودم اومدم با این ساده ترین وضعیت ها براتون درآوردم اگرچه کدهای حالت‌های دیگش هم براتون زدم خدمتتون عارضم که من اینم بگم حالا ببینیم دیگه چقدر میرسیم متاسفانه اون چیزایی که میخواستم همش اجرا نمیشه و خیلی حیفم اومد که چند دقیقه‌ای از دست می‌دم شاید براتون آفلاین ویدیو ضبط کنم که دیگه جلسه بعدی کلاً مستقیم بریم سر بچه‌ها این شبکه رو در نظر بگیرید

نمی‌دونم بستمش یا نه اینجا یه فایل سیو کرد خدمت شما عارضم که فرض کنید یه عکس ۳ در سه دارم یه فیلتر دو در دو یه بایاس تکی فعلاً حالا بایاسش صفر می‌گیرم یه شبکه ساده من‌درآوردی دارم می‌خوام یه دور بکشن بهتون نشون بدم فرض کنید این دوتا رو با هم کانولوشن میکنم یه خروجی دو در دو بهم میده اکتیویشن فشن ریلو میزنم باز دو در دو بهم میده مکس پولینگ دو در دو میزنم یک* یک بهم میده روش سیگنال میزنم میده مثلا فرض کنید صورت سوال این بوده آقای علیرضا طاهری آدم خوشتیپیه یا نه خب خدمت شما عارضم که فرض کنید که درایه‌ها اینه یک دهم دو دهم سه دهم چهار دهم پنج دهم شش هفت هشت نه دهم درایه عکسه بوده مثلاً این عکس من بوده حالا خب خدمتتون عارضم که مثلاً فرض کنید درایو فیلترتون هم دو صفر یک یک بوده خب ما برای اینکه این کارو بکنید چیکار می‌کنید باید روش کانولوشن بکنید دو تا یه دهم میشه دو دهم اینکه صفره

دو دهم میشه چقدر درست گفتم دیگه یک و یک دهم آره خب بعد همین کارو انجام می‌دید مثلاً برای بعدی میگید دو تا دو دهم میشه چهار دهم با یک و یک دهم میشه یک و نیم به نظر با این عددایی که انتخاب کردیم آخریه برنده است هشت و نه ۱۷ ۱۷ و ۱۰ ۲۷ ۲.۷ اینجام یه چیزی می‌شه اوکی هم که بزنم چی میشه چون هیچکدوم منفی ندارم خودشون میان بیرون درسته قبول بچه‌ها شما می‌نویسید قبوله من خوشحال بشم گوش می‌دید خب و مکسولینگ هم که بزنم ۲.۷ میاد بیرون بر فرض کنید سیگ میزنم سیگما این عدددم مثلاً فرض کنید که ۹۹ ص میشه خب جواب این بوده که آقا این شبکه که حالا رفته جلو تخمین زده که آقا علیرضا طاهری رو آدم خوشتیپیه بعد مثلاً جواب می‌ده که نه نیست خب و وای واقعی اینه که نیست خدمت شما عارضم که میگه حالا اینو چجوری باید

بکنیم تا یارو بشه وزنه درست بشن بره به سمت اینکه چرا انقدر زیاد گفتی مرد حسابی ۹۹ درصد گفتی فلانی خوشتیپه نه نیست باید صفر می‌شد عددش خب باید اینا اصلاح بشه اوکی فرض کنید که مثل قبلاً بگیریم وای منهای وای حد به توان دو رو بگیریم مثلاً کاست فانکشن خب لاس این داده میشه چی دو تا وای حد حالا کاری نداریم خیلی این تیکه‌هاش کاری ندارم اینجا مثلاً صفر منهای ۹۹ منهای صفر مثلاً دو ضرب در این رندده لاس به رند چیز برام بدست میاد درسته وای هت برام بدست میاد کیه خب که این معادله آی لایه آخر آخر باشه برای اینکه از این برگردید عقب و رند لاس رو به رند ورودی این بگیرید یعنی این الان رند لاس به رند این الان یه خونه معادل این الان یه عدد دارم پیدا شد شد چی دو تا منفی نمی‌دونم نود فرض کنید حالا باید عددشو پیدا بکنیم برای اینکه اینو پیدا بکنم بچه‌ها چی می‌شه

یعنی رند لاسو به رند زده پیدا بکنم زدی که بعدش سیگمای زدیم شد فلان باید چیکار کنم اینو بلدید در چی ضرب کنم این قبلی رو الان اینجوری بوده این زد بوده اف زد روش زده شده آبم داده در مشتق این تابع سیگمو باید ضرب کنم عالی مشتق تابع سیگموید هست مقدار زدش در چیز مقدار سیمش یعنی در یک منهای افش یعنی چیزی که اینجا هست و خودش در یک ضرب میکنید در اون عدد قبلی هم ضرب بکنید چی پیدا می‌کنید رند لاس به رند زد رو پیدا می‌کنید اوکی حالا این عدد شد فرض کنیم حالا فرض میکنیم عدد شده مثبت نیم خب مثبت نیم شده میخوید برگردید ماکس پولینگ رو رند به رنداشو اصلاح بکنید باید چیکار کنم الان بچه ها نیم تقسیم خود نیمو میدم به این ماکس پولینگ بوده دیگه درسته

رونوندای چیزو به این صفر میدم قبوله رفقا قبوله پس راندای اینجا الان رسیدن به رند ال به رند لایه مکس پولینگ چی بنویسم مکس پولینگ خب سه تاش صفر یکیش نیمه اوکیه خدمت شما عارضم که خب حالا اینجا اکتیویشن زده شده بوده اینجا اون بوده پیدا کنم چیکار میکنم برای اینکه رنده درایه‌های ضد این پیدا کنم برام بنویسید اینا همه مثبت بودن و از ریلو گذشتن یعنی مشتقشون چند بوده رند ال به رند زده میشد چی میشد رند ال به رند آ در رند آ به رند زد دیگه رند زد میشد مشتقش که رلو میشد یا یک یا صفر چون اینا همه مثبت بودن همه مشتقاشون یکه پس

تا اینجا و چی و اینجا نیمو می‌بینه حالا می‌رسم به چی به لایه‌ای که یه عکس ورودی داره یه فیلتر فلان داره خب یه بار چیز بود دیگه این رند همون حالا به رند او است که اونجا داشتیمش یه بار کانولوشن می‌کنم با ایکس یعنی اینو سر میدم رو ایکس تا رند اف به رند چیز پیدا بشه رند l به رند f پیدا بشه و فیلتررامو بتونم آپدیت کنم بگم دو منهای تا برابر حالا درای که بعد از اینکه اینو کامپ کردیمولوشن کردیم رو این بدست بیاد برامون خب چهار حالت مختلف و یه بارم اگر لایه قبلی وجود داشته باشد باید چیکار کنید رند ال به رند اکس هم پیدا بکنید که بعدش حالا برید لایه قبلی رو پیدا بکنید بچه‌ها تونستم بگم یا نه چون خیلی تلاش کردم که بتونم به زبان ساده بگم و شما اینجوری هی باید وزنتون آپدیت کنید برید تا آخر و در نهایت تمامی تمام وزننا رو آپدیت کنید

یه جا خوندم که تو اینجور وقتا میشه همین لحظه وزن افو آپدیت کرد بعد رفت عقب‌تر می‌گفت برای اینکه دیگه خیلی حافظه نخواید بگیرید مثلاً ۱۳۰ میلیون تا رند به رند هی بخواید سیو بکنید بعد دوباره یه دور برید و دوباره فعلاً همینجا می‌تونید رند به رند اف رو پیدا کردید اف رو آپدیت بکنید بعد برید حالا لایه قبلیش هم پیدا کنید خب آرمین باید یه مقدار نگاش بکنی آره دیگه درایه است باریکلا اینجا اینجوری بوده که این درایه رو زده اینو داده پس وقتی که می‌خواید مشتق اینو پیدا کنید می‌گفت مشتق رند آ به رند درایه متناظرش در چی در افرین زد ها رند زد و اینجا چون زد مثبت بود رندش یک شد پس همون خودش بک پرو شد درسته حالا اینجا اگه غیر صفر یه چیز دیگه بود این اتفاق می‌افتاد عالی و این این کارو می‌کنید این تازه میشه رند out بعدش حالا باید برید جزوه رو نگاه کنید

چه جوری می‌تونم از خروج داشتن خروجی و داشتن ورودی چیکار کنم رند ال به رند فیلترها رو پیدا کنم و الی آخر و این اتفاقی که چی من این اتفاقی که سبب میشه شما بتونید بک پروفگریشن رو انجام بدید بچه‌ها من کلاس رو به پایان می‌رسونم یه ویدیو بعداً براتون ضبط میکنم در مورد پیاده سازی ترنسفر لرنینگ و اینا توی چیزه توی کراسه چند تا کد بهتون نشون میدیم یه سری بیس کد هم براتون گذاشتم فقط جهت اطلاعات اگه خودتون خواستید سی ان ان فوروارد رو بنویسید با چند تا فورد منطقی وکتورایزش می‌کنن و اینا ولی یه همچین راهی داره مکس پولینگ بخواید بنویسید تو لایه ال این یک نیست لایه یه همچین کاری می‌تونید بکنید بکوارد لیر ال رو میتونید اینجوری بنویسید و همینطور فرم های چیز حالا وکتور نوتیشن برای یه لایه ال هم میتونید این کار بکنید همون که گفتیم دبلیو رو چیز کنید روتیت کنید یه بار فیلیفت آپ بکنید و الی آخر و این کار

بزنید همینطور مشتق تو حوزه مکس پولین چه جوری برمی‌گرده اینا این همون جایی مثلاً به علاوه مساوی برای این بود که یادتونه گفتم شاید اورلپ کنن چند تا داده باشه یعنی یه چیزی حساب میشه بعد ممکنه بازم دوباره یه چیزی حساب بشه تو همون درایه متناظر ریخته بشه و این اتفاقاتی که ما تو فصل کانولو نتورک تونستیم رقم بزنیم بچه‌ها من یه ویدیو براتون ضبط میکنم در مورد نحوه پیاده سازی چیز در مورد نحوه پیاده سازی ترنسفر لرنینگ توی کراس پایتون و یه سری چیزهای دیگه و یه سری توضیحات روی کراس و همینطور ما بالاخره بچه ها ربات آپ تونست یاد بگیره که عدد سه رو ببینه واقعا بگه سه هست یا نیست که اگر فرصت دارید جسارت نمی‌کنم یک دقیقه با یکی دو سه دقیقه با هم همراه باشید اینو بهتون نشون میدم یه کد در اختیارتون قرار میدم خدمتتون عارضم که من یه کد زدم الان که بهتون میدم و میتونید الگو هم بگیرید ازش این کد اینجوریه که

از دوربین لپ تاپم استفاده می‌کنه شما می‌تونید استفاده کنید داده بهتون میده و بعد از اینکه داده بهتون داد می‌تونید بگید که یه عدد بهش نشون بدید بگید این عدده چنده اینکه بگه عددش چنده هم چیکار می‌کنه تو خدمتتون عارضم یارو نشون میده توی به اصطلاح یه باکسی اینجا تعیین کردیم گفتیم فقط اونجا رو نگاه کن اینجا مثلاً عددای مختلفی نوشتم حالا چون پشت سرم نور بود من مجبور بودم اول بکشم ببینید اینجا من اینو نشونش بدم چند داره می‌شناسه این عدد نوشته بالا سبزه الان پنج رو نوشته دقیق نیست دیگه خب اجازه بدید کلشو با سفید بپوشونم الان صفر شد درسته خب حالا اینو بیارمش پایین یه مقدار بهتر هم میشه بعضاً این نور پشت پنجره نباشه اگه چیزای اضافهشو بردارم یه ویژگی بد شبکه های عصبی هم اینه که چون بهش گفتم صفر تا نه خروجی داره بالاخره وقتی یه ورودی بهش یه

بخوابونم ببینم بیشتر بهتر میشه یا نه امیدوارم بهتر شه الان صفر شناخت درسته خب اینو الان چند شناخت یک شناخت یه لحظه یک لحظه الان یکه شد ۲ شد ۱ کجا ببینید اینه این باید اینجا بالای مستطیل سبزه نگاه کنید چند چه عددی شناخته و این فرض کنید ربات پیاده کردید یا رو لپ‌هاتون خدمتتون عارضم دو رو بهش نشون بدم دو رو شناخت سه رو بهش نشون بدم سه رو شناخت بچه‌ها این برای این بود که بهتون نشون بدم که شما این کدهایی که تو پایتون زدید و با یه خیلی چند خط ساده کد ام نیست چیز اوپن سی میتونید رو لپ هاتون پیاده کنید می‌تونید فرض بکنید که به راحتی هم میشه این رو ربات پیاده کرد و بعداً رو ربات‌ها اینو اجرا بکنید بچه‌ها خیلی

ممنون که همراه بودید من شرمنده‌ام که یکی دو دقیقه وقتتونم از چهار و نیم بیشتر گرفتم کم کم دارم گستاخ و گستاخ تر میشم من این کد رو بهتون میدم حتما تلاش بکنید رو کامپیوتراتون اجرا بکنید حتما تلاش بکنید که ربات ترش بکنید و توی اون ویدئو اضافه که براتون ضبط می‌کنم در مورد اون جاهایی که شما ممکنه بخواید تغییراتی بدید صحبت خواهم کرد بچه‌ها اگه سوالی هست در خدمتتون هستم اگر نیست انشالله خوش و خرم باشید انشالله ما جلسه آینده میریم سر شبکه های رنت و آر ان ها و استریم ها رو صحبت خواهیم کرد خوش و خرم باشید انشالله خیلی ممنون بابت همراهیتون انشاالله که مطالب گفته شده مفید فایده‌تون باشه خدا نگهدار

E:\courses\LangChain Project\main root\data\SCR_Session12_transcript_part1.txt

به نام خدا دوستان عزیز و ارجمند درس رباتیک اجتماعی شناختی عرض سلام و ادب و احترام خیلی ممنون بابت حضور تشریف فرماییتون در خدمتتون هستیم با ادامه درسمون من جلسه قبل گفتم خدمتتون که ما این جلسه شروع میکنیم سر یه سری ماجراها با خودم فکر کردم یه سری موارد از سی ان ان هست که میشه مرور کرد و بعد از اینکه امروز اینا رو گفت انشالله جلسه آینده شروع کرد به عبارتی این بزرگترا میگن دیگه همه دعاها به آمینشه و حیف که تا اینجا اومدیم این موارد هم شفاف بهتون نگیم تا شما حس قدرت بیشتری پیدا کنید قبل از شروع درس هم یه خسته نباشید اساسی و خدا قوت جانانه دارم خدمت دوستان گرامی من خیلی از خوشحالم که زحمت کشیدید در عین البته غر زدنناتون که بالاخره با پایتون آشنایی نداشتید و اینا عمدتتون تمرین سری اول و بارگذاری کردید بعضیاتون هم خیلی خوب واریانت های مختلف رو بررسی کرده بودید و وقت گذاشته بودید و خیلی خیلی خبر خوشحال

واقعا ازتون متشکرم و امیدوارم که مطالبی که تا این لحظه مرور کردید انشالله سر موقع خودش به خوبی به خصوص توی پژوهش‌ها و پایان نامه‌هاتون به کارتون بیاد و آماده بشید انشالله برای تمرین سری دوم من حالا امیدوارم مشغله‌های اجرایی اگه اجازه بده سعی کنم تا سه شنبه بارگذاری بکنم ۱۰ روز حالا نهایتاً دو هفته هم براش وقت می‌ذاریم که برید از تمرین حل کنید و این دفعه احتمالاً دستتون هم بیشتر راه افتاده و یه سری دیگه در واقع چالش های بنیادی هم ندارید که مثلاً چجوری اوپن سی صدا بزنید عکس ها رو مثلا سایزش تغییر بدین کارهایی که الان یه بار انجامش دادید و دفعه بعدی علیصول باید سریعتر انجام بشه و ما البته تو این فاصله شروع میکنیم به تدریس کردن و خب باید مجدداً تمرین اونو خواهیم داد اما امروز میخویم چیکار کنیم امروز یه نگاه های داریم نگاه کاملا

امروز و امیدوارم حالا متناسب با ذائقه‌تون باشد در مورد دو سه تا چیز می‌خوایم کد با همدیگه تو گوگل کولبران کنیم که من کداشو بعضاً توی cw براتون امروز بارگذاری کردم و همینطور یه توضیحات تکمیلی و جمعی هم در مورد حالا کاربردهای ویژنی استفاده از شبکه‌های cnn می‌خوایم صحبت کنیم و در مورد شبکه‌هایی که مالتی برنچ میشن شاخه شاخه میشن میتونن چند تا لاس داشته باشند نحوه پیاده سازی ش توی کراس صحبت کنیم که خب اینم پیرو در واقع درخواست پارسا ریاضی عزیز بود اون زمانی که گفت آیا میگید یا نه با خودم فکر کردم دیدم الان بهترین وقتشه و این جایی که شما رو خیلی قدرتمند تر میکنه خب بریم پس با این حساب شروع بکنیم اولین آیتمی که میخویم بچه ها در موردش صحبت بکنیم یه کد در واقع با عنوان ترانسفر لرنینگ اگر یادتون باشه ما گفتیم چیزی وجود داره به نام یادگیری انتقالی و

توی اون حرف حسابش اینه که اگر شما یه شبکه‌ای رو از قبل داشته باشید برای شناسایی مثلاً یه سری اجسام استفاده کرده باشید آیا میشه از بخش‌هایی از اون شبکه همچنان استفاده کرد نخوایم سنگ چرخ از اول اختراع کنیم و یه جورایی توی مسئله جدیدی به کارش ببریم مثلاً فرض کنید که شما در مورد سگ گربه درختان مختلف خورشید و ماه و فلان و اینا یه شبکه ترین کردید که به خوبی داره اینا رو میشناسه و یه عکس رادیولوژی بچه‌ها سلام مجدد من سامانه منو انداخت بیرون نمیدونم امروز چند بار این کار کرده شاید خاطر شلوغشه یا استیبل نیست الان تصویر هست و صدای بنده رو دارید بسیار عالی اگر خدمتتون ما توی ترنسفر لرنینگ یه یادگیری انتقالی هدفمون این بود آیا

می‌شود از در واقع دسترنج دیگران در گذشته استفاده کنیم و یک شبکه وجود داشته قبلا اومده بوده یه سری اشیا رو با دقت خیلی خوبی برامون دسته بندی می‌کرده ما یه مسئله جدیدی براش طرح کنیم مثلاً فرض کنید می‌خوایم ببینیم که تو عکس رادیولوژی شکستگی استخوان وجود داره یا نه تومور وجود داره یا نه اگه هست جاش کجاست و فلان آیا میشه از اون استفاده کرد یا نه ترنسفر لرنینگ حرفش اینه که آره احتمال داره بتونید و در واقع شاخصش هم اینه که بیاید چیکار کنید بیاید توی شبکه های از پیش تعیین شده معمولی مثلا مثل رز یا که با دقت های خیلی خیلی خوبی روی شبکه رو دیتا ست شده بودند بیاید حالا نرم افزارهایی که من جمله کراس مثلاً لایبری های که اینا رو آماده دارن و بردارید لود بکنید حالا چند تا لایه شو در واقع بندازید دور یا در واقع اجازه بدید مجدد ریترین یا فاینتیون بشه ولی چند تا لایه شو فریز بکنید یعنی

اجازه ندید وزنش تغییر کند مثلاً لایه‌های اولش مثلاً همون وزن‌هایی که اون درآورده برای سگ و گربه اجازه بدید همون همون بمونه مگه همچین کاری مفیده یا نه پیرو سوال یکی از بچه‌ها من این اسلایده رو اضافه کردم بچه‌ها به این عکس نگاه کنید فرض کنید شما صورت آدمو می‌خواید شناسایی کنید یا ماشینو یا می‌خواید فیل‌ها یا الی آخر یه پله پایین‌ترش اینه که مثلاً برای فیس باید چشم‌ها رو شناسایی کنید بینی گوش و فلان برای ماشین باید احتمالا خدمت شما چرخ‌ها پنجره ها و درها و اینا رو شناسایی کنید و هی بیاید کوچکتر بشکونیدش می‌بینید که لایه اول همشون چی اند یه چیز دارن میگن میگن آقا برو خطای با زاویه ۴۵ منفی ۴۵ ما رنگ های مختلف نمی‌دونم دو تا رنگ مختلف کنار هم اینا رو برام در بیار و بعدش برو و این خودش بیانگری از اینه که اوکی این لایه های اول که معمولاً دارن این کارا رو انجام میدن بذاریم باقی بمونن با همون ضرایب و وزن ها انشالله به کارمون میاد ولی طبیعتاً مثلاً این تا لایه آخرش فرض کنید رفته داشته صورت آدمو شناسایی می‌کرده خب این احتمالاً خود لایه آخر که هیچی بعد ممکنه حتی لازم باشه یکی

لایه آخرشم چیکار کنید بردارید از اول شما تعیین کنید تعدادش عوض بکنید چه اینکه نه کلاً با همون تعداد نرون ولی اجازه بدید در واقع بکشن روش انجام بشه دیتا ستتون رو ورودی بهش بدید ترین کنه و حالا لاسو حساب بکنه برگرده به عقب بک پرو کنه ولی این دفعه نمیاد تا اینجا ما مثلاً فقط سبزها رو یا فقط اون لایه آخر یا دو لایه آخر سبزها رو فقط بک پرو میکنه ولی سایر وزن چیکار میکنه ثابت نگه می‌داره ما به این اتفاق میگیم ترانس اولین کاری که امروز میخویم بکنیم اینه که نشون بدیم چجوری توی در واقع کراس میشه ترانسفر لرنینگ رو اجرا کرد من دو تا کد براتون آوردم یکیشو خودم آماده کردم یکیش زحمت کشیده علی آقای قدمی برام آماده کرده خیلی حرفه ای تر از خود بنده هم نوشته و شک جای شکیلش زیاده میتونید بعداً ازش استفاده کنید نه خود من در واقع ازش یاد گرفتم ازش مجدداً تشکر می‌کنم علی جان خیلی ممنونم ازت خدمت عارضم که خدمت دوستان عارضم که برای اینکه این کار بکنید من اولین کاری که می‌خوام بکنم بهتون نشون

ما توی کراس حالا یه دور دیگه بعد دوباره جامعه بهش نگاه می‌کنیم شبکه‌های وی جی جی ۱۶ اینا وجود دارند شما میتونید هم ساختار هم وزن‌هاشونو لود کنید این کارو می‌کنه توی زیر شاخه اپلیکیشن دات حالا وی جی جی آی چیزهای مختلف داره یکیش ۱۶ می‌نویسید فرام crs.fanmپورت کن وی جی جی ۱۶ بزرگو من از الان به بعد هر وقت میخوام اینو صدا بزنم دیگه می‌نویسم vg ۱۶ و اینجوری میرم جلو خب و این دفعه کنار دیتا ست ام که حالا آقای قدمی تو کدش روش کار کرده من سی فارسی رو این دفعه کار کردم خواستم یکسان هم نباشن سی۰۰ اگه یادتون باشه سیف همونی بود که در واقع نشونتون دادیم یه سری عکس هواپیما بود سگ و گربه بود و فلان ما سیف ده رو نشونتون دادیم ۱۰ تا کلاس داشت سی تا کلاس داره یعنی غنی تر از اون یکیه و اینو دیتا ست رو باید لود کنیم فقط یادتون باشه بالاخره یه اینترنتی ازتون میکشه ها خب این لود کردن این بالاخره بستگی حجمش چقدره برای شما یه خرجی داره خب بقیش دیگه کاری نداره چون

کل کاری که می‌کنید اینه اول مثل سابق در واقع باید ایکس ترینتونو چیز بکنید تعیین بکنید یعنی اول دیتا ستتون رو لود میکنید که من برخلاف ام نیست این دفعه سیفار ۱۰۰ رولود کردم فقط بچه‌ها یادتون باشه این مثلاً بعضی از این دیتا ستا به خصوص وقتی که می‌خواید مثلاً از شبکه های وی جی جی یا چیزهای دیگه استفاده کنید قید می‌ذارن مثلاً میگه آقا عکس ورودیتون نباید مثلاً کوچکتر از ۳۲ در ۳۲ باشه یا حتما ما رنگی باشه شما حقه‌های مختلف می‌تونید بزنید که مثلاً کانال دوم و سوم هم عین خود عکس سیاه و سفیده بسازید تاکستون کاناله بشه خب یعنی گیر بهتون نده و کدش گیر نده این اینجا من اومدم ایکس لود کردم مثل سابق تقسیم ۲۵۵ کردم که مثلاً حالا البته حقیقت بخواید چکش نکرده بودم از داده‌هاش بین صفر تا ۲۵۵ هست یا نه فکر کنم بود تقسیم بر ۲۵۵ هم بکنم که چی بشه که حالا بین صفر تا یک بشه تا اینجاش هیچ فرقی با اون ام نیست سابق نداره در ضمن وای ترین هم

کتگوریکالش کردم اونجا توی امروز اگه یادتون باشه ده تا کلاس داشتم این دفعه ۱۰۰ تا کلاس دارم که باید ببینید کلاس شماره یکش مثلاً چیه دوش چیه الی آخر از خود یارو دیتا ستش استفاده کنید حالا اینجا این کارو میشه کرد من یه مدل تعریف کردم نوشتم وی جی جی مساوی با وی جی جی ۱۶ این اگه سرچش بزنید تو خودش هست که چه چیزایی رو باید لحاظ بکنید خب من قبلاً بهتون گفته بودم که اینایی که مساوی داره رو شما میتونید ننویسید یعنی مثلا در ساده ترین حالت بنویسید وی جی جی پرانتز باز بسته اون میره دیفالت خودشو میگیره ولی مثلا بعضی چیزا باید بهتره بهش بگید مثلاً ما اینپوت شیپ مون بالا تعیین کرده بودیم چند در چند باشه براش اینجا توی ظرفی به نام اینپ ریختم و مثلاً نوشتم از ایمیجنت برو بردار اونایی که روی نت ست کرده بودی اینکلود تاپ حالا فالس و ترو داره برید بخونید که این یعنی چی که اگر فال بزارید یا ترو بزارید اجازه بهتون میده مثلاً اون لایه های فول کانکت آخرش مثلاً باهاش بیان نیان

الی آخر خدمتتون عارضم که یه تنها چیزی که ما برای ترانسفر لرنینگ استفاده می‌کنیم این اصطلاح است شما کلاً توی لیر اگه بنویسید یه چیزی دات trainble مساوی با فالس یعنی دیگه نمی‌ذاره وزن اون شاخه تو بک پروفگریشن چیز بشن ترند بشن ها ولی قبلا که ما هیچی نمی‌نوشتیم ترو بوده یعنی مثلاً هر یه میلیون تا ۱۰۰ میلیون تا پارامتری که تو شبکه بوده همه چی بودن اجازه آپدیت شدن داشتن w برابر رند دبلیو ولی اینجا وقتی شما بنویسید یه چیزی دات ترینبل مساوی فال دیگه اون اجازه نداره حالا اینجا این توضیح رو میدم خدمتتون الان شاید متوجه نشین سه خط چجوری نوشته شده در واقع یه چیزی هم اوت پوت چیز هم تشکیل دادم یعنی خودم در واقع با این تعریفی که کردم اگه اشتباه نکنم فولی کانکتد رو نیاورده خب بعد خودم دستی یه بار آخرین لایه شو فلتن کردم بعد یه دس عادی ۱۲۸ تایی و یه

صد تایی که معادل تعداد کلاس‌هاش باشه با اکتیویشن سافت مک اضافه کردم سافت مکس و چی در کل اومدم دیگه بقیه کارا رو همون کارو کردم اومدم گفتم مدل نشون بده نمی‌دونم لرنینگ ریتم یا اسکجولزمو می‌خوام چه جوری تعریف کنم چه جوری کامپایلش کن و چه جوری فیتش بکن که اینا چیزایی بوده که قبلا داشتید و بارها و بارها استفاده کردید پس چی شد پس کلاً یه لیر دات ترینبل رو اگر فالس کنید دیگه آپدیت نمیشه این کل ماجرا ترانگه حالا من اگه اینا رو ران بزنم خب اون شروع میکنه با یه وزن های اولیه چیکار میکنه اول میاد در واقع اونجا که بهش گفته بودیم لود بکن میاد یه حجمی از شما میگیره و داده ها رو لود میکنه این حتما مراقب باشید که بالاخره فحش ندید بع به ما که مثلاً اینقدر اینترنت هم رفت اینقدر مدیا اینقدر ۱۰۰ مگ چند صد مگ هم رفت کاری که میکنه الان داره لود میکنه لودشو که تمام کرد دیگه چی دیگه حالا میره سمت کارهای بعدیش می‌نویسه

۵۰ هزار تا ترینینگ دیتا داری بقیه‌اش همونه گفتم چیزام بهم بده شبکه‌ها رو برام کشیده خیلی مال خودشه دیگه من کاره‌ای نبودم گفته بوده نمی‌دونم چیز داری ورودیت ۳۲ در ۳۲ در سه است بعد خدمت شما عارضم که کاموای دودی بزن در کل خروجیت میشه ۳۲ در ۳۲ در ۶۴ یعنی ۶۴ تا فیلتر داشتیم فیلترراش هم اگه یادتون باشه وی جی سه در سه بود فقط و خدمتتون عارضم که هی لایه‌های مختلف مختلف مختلف داره اون چند تا اون سه تا آخر هم مال منه دیگه نه چون من اونجا رو نوشته بودم تاپشو فال کن دیگه باهاش فول کانکتدشو نیاورد یه فلتن خودم کردم آخریشون مکس آخریشو من فلت کردم یه دس ۱۲۸ تایی میانی گذاشتم یه دونهس پایانی هم که برای اینکه بگه کدوم کلاسه بچه‌ها اول درصددم چنده درصد تخمین هم بچه ها دو درصده شروعش یک درصد بود احتمال شانس اینجا چنده برام بنویسید من البته با این گوش وصل بشم که بتونم راحت‌تر دیگه بدون جابجایی زیاد ما الان با توجه به

ثبت کلاس داشتیم احتمال شانسش چنده احتمالاً تا الان برام نوشتید یک صدم واقعا وقتی شروع می‌کنه بچه‌ها الان یک صدم شروع می‌کنه آره همون یک درصد تقریباً نه آرمین چرا یک تقسیم دو به توان ۱۰۰ تا گروه داریم همینجوری رندوم هم من میخواستم بگم اینا تو کدوم کلاسن همه رو مثلاً می‌گفتم آقا علی‌الاصول باید یک درصدشون درست در میومد دیگه تخمین الان داره میره بالا حالا داره میره بالا با ترنسفر لرنینگ و فقط این چیزا رو داره تغییر میده دسا رو فقط داره تغییر میده رسیده با هنوز اول تمام نشده تونسته به ۴ برسه ۴ برابر احتمال شانس الان خب و این خوبه حالا داره یعنی به نظر میاد ترنسفر لرنینگ داره یه کارایی میکنه مثل اینکه ها و خب اینو اگه ولش کنید بره ایپاکاتون هم زیاد بکنید هی خودشو میکشونه بالا و بالاتر مثلاً من یه بار زدم همینجوری چند تا هیپاک رفت تونست مثلاً به حول و حوش سی و خورده‌ای ۴۰ درصد رسیده بود دیگه من خودم دستی متوقفش کردم یه

خدمتتون عارضم آقای قدمی برامون نوشتن بعد عرض به حضور شما همون ترانسفر لرنینگ با همین در واقع فضا روی ام نیست اجرا می‌کنید باز ایشون البته میگم که یک کمی پیچیده‌تر حرفه‌ای‌تر یا مثلاً یه جاهایی تابع تعریف کردن اینجا هم همینجوریه باید اول یه سری چیزا رو در واقع چیز کنید ایمپورت کنید بعد باید لودش کنید تو ایکس تست و اینا بریزید اینجا تستش کرده که عکس لود شدن یا نه چند تا نمایش بهمون بده و این ها اینجوری صدا زده مثلا از اون تو کتگوری کال استفاده نکرده یه تابع تعریف کرده بچه دف توی چیز نماد تابع است دیگه فاصله گت فاینال مدل اسم تابع است پرانتز ورودیشن و طبیعتاً آخرش که ریتر کن فلان اینم خروجیشه طبیعتاً می‌دونید دیگه مثل یعنی لزومی نداره من الان ظرفی واقعا

بیس مدل داشته باشم بعداً کتاب رو صدا میزنم اولین چیزی که این گذاشتم مثلاً اینجا نماد بیس معادل می‌شناسه حالا ببینیم بیس مدل چی هست باید چی در چند در چند باشه و فلان فلان اینجا هم ایشون این کارو کرده گفته که فور لیر این بیس مادل دات لیرز فال کن اینم همون کار ترنسفر لرنینگ ایشونه و بقیش فریز میشن بقیه شون حالا فلتن و دراپ اوت و اینا اضافه کردن تهش هم احتمالاً سافت مکس هم اینجا اضافه کردن و در نهایت حالا باقی ماجراها دیگه که چیز بکنید به اصطلاح نمایش بهم بده چی بوده چه شکلی بوده ما قبلاً جلسه قبلی در مورد این اشاره کردیم و مدل فیت هم که بکنه شروع میکنه به رفتن جلو و در نهایت مثلاً نمی‌دونم حالا آخر که اول ۶۷ درصد بوده مثلاً احتمالاً از ۱۰ درصد شروع می‌شده به ۶۷ رسیده آخر هی پاپ که چندم ششم و ۸۶ درصد رسیده پس به نظر میاد چیزه داره یه کارایی هم میکنه حالا ترنسفر لرنینگه داره یه کارایی یه جاهایی به درد میخوره

بعد تو کد ایشون برخلاف یعنی علاوه بر این حالا برید ببینید جای جذابش اینه اینه که وقتی یه عکس بهش بدید بهتون بگه تو کدوم کلاس بود و با در واقع کی برنده شد اگر برنده شد درست برنده شده آبی اگه نه قرمز یعنی مثلا میگه الان احتمال کلاس پنج مثلاً انقدر درصده خب احتمال سایر کلاسایی که پیدا کرده اینقدر درصد خاکستری نمایش‌های جذابی گرافیکی که می‌تونید از اینجا تو این پی برید چیکار کنید استخراج بکنید برای دفعات دیگه ممکنه به کارتون بیاد و مثلاً اینجا ببینید اینو اشتباه شناخته مثلا میخوردم ببین مثلاً این سه بوده خب سه آبی بوده در حالی که این دو شناختتش یعنی مثلاً این تیکشو حواسش نبوده این بالاشو دیده و فکر کرده که مثلاً چه می‌دونم پایین نویزه و دو رو شناخته میگم خیلی نمایش جذاب و قشنگیه اگه دوست داشتین بعداً استفاده بکنید یکی دیگه از ماجرایی که وجود داره با سه خط دستور بچه‌ها شما می‌تونید از حالا

دوستان عزیزی که حالا یاد نرفتن سمتش یا ترسیده بودن ازش اینکه چه جوری میشه رو گوگل درایو فایل داشت قبلا بهتون گفتیم اینجا یه پوشه‌ایه که مثلاً خیلی تمپراریه و کلاً چیز می‌کنه به محض که رانتون تموم شد ببندید دیگه پاک میشه با سه خط دستور شما می‌تونید فایل‌هایی که تو گوگل درایوتون بارگذاری کردید و چیکار کنید به این فولدر اضافه کنید و بعدش فراخوانی کنید این فرام گوگل کلب ایمپورت کن درایو بعد بنویسید درایو دات فلان خدمت خدمتتون عارضم که بعد اینجا این کار که بکنید خب این کار که بکنید یه اولا اخطاریه براتون میاد که آقا من به همه چی دسترسی دارم و فلان میگ ما چیزی برای از دست دادن نداریم دسترسی داشته باش باید با همین اکانتم مثلاً جیمیلم برو دسترسی هم داشته باش الو کن حالا من الو زدم خب این کار که کرد حالا چه اتفاقی میفته تو این بغله یه چیزی اضافه شد به نام درایو

زیر شاخه‌اش مای درایو حالا تو مای درایو دقیقاً اون چیزایی که تو گوگل درایوتون هست هست حالا شما چه جوری میتونید صداش بزنید اینجوری مثلاً میگید که مثلاً کانتنت یعنی بک اسلش کانتنت بک اسلش درایو بک اسلش مای درایو بک اسلش این تا اینجا میشه روت در واقع چی گوگل درایوتون حالا اونجا اگه فولدری دارید فایلی دارید میتونید چیکار کنید صداش بزنید و لودش بکنید و تمام اون کارهای دیگه که ما الان انجام می‌دادیم و چی اینجام انجام بدید اینم پس کدهای ترنسفر لرنینگ که میخواستیم خدمتتون بگیم و حالا این برای این بوده که چه می‌دونم فکر می‌کنم دیتا ستش حالا رو خود گوگل آقای قدمیه دیگه علی در مورد رفته از این کگل فولدر های کت داگش برای خودش دانلود کرده و گذاشته بعد مثلا میخواد یه شبکه بزنه که سگ و گربه رو از همدیگه شناسایی کنه نکنه یا انواع کارهای دیگه که میشه باهاش کرد پس این شد گام اول ترنسفر لرنینگمون امیدوارم تا اینجاش مفید بوده باشه من فایلشو براتون گذاشتم کل در واقع کلید واژه ترانسفر لرنینگ برای ما اینه که اون لیر

فالس کنید و معمولاً لایه‌های ابتدایی این اتفاق براشون میفته اما لایه‌های انتهایی بسته به اینکه شما چقدر دیتا ست دارید چقدر این شبکه که دارید استفاده می‌کنید به اون کاری که شما می‌خواید بکنید میخوره ببینید که چند لایه میشه فریزش کرد چند لایه هم بذارید که فاینتیون بشه و اینو انشالله ما سعی میکنیم آگاهانه و عامدانه تو یکی از تمریناتتون جا بدیم که تو این تمرین سری دوم که یه جا شما مجبور شید از در واقع این ترنسفر لرنینگ استفاده کنید و خیالمون راحت باشه که این یه دور مرور کردیم این شد مطلب اولی که باید خدمتتون بیان می‌کرد خب ماجرای دومی که می‌خوام خدمتتون بگم ماجرای کاربردهای جذاب سی ان ان تو حوزه ویژنه که البته من فقط فتح باب می‌کنم معرفی می‌کنم خب ولی می‌خوام ذهنا رو قلقلک بدم برای کسانی که دوست دارن عمیقاً و شدیدا تو این زمینه کار کنن اینم باز به اسلاید اضافه کردم انشالله براتون بارگذاری می‌کنم اپلیکیشن‌های

کامپیوتر اصل این ماجرا تو قالب درس‌های ۳ واحدی که توی دانشکده کامپیوتر و برق ارائه میشه تو زمینه‌های کامپیوتر ویژن دو بعدی و سه بعدی تئوریاش مطرح میشه ورژن غیر دیپشو میگن که چجوری با دست قدیم انجام می‌شده و احتمالاً ورژن دیپش هم میگن که چجوری از شبکه های سی ان ان استفاده بکنید برای موارد مد نظرتون من بدون اینکه بخوام به در واقع پیشینه ماجرا تو حوزه ویژ اشاره بکنم فقط بهتون میگم اینا چجوری کاربرد دارن چهار مسئله معروف ویژنی خب که به در واقع به خوبی توسط شبکه های سی ان ان حالا باید یه سری متعلقات بهش حل شده این چهار تا مسئله معروف اند البته شاخه‌های دیگه‌ای هم دارن باز حالا یکی یکی اسم میاریم یکی هست مسائل معروف اسمش هست سtic سیگمنتیشن سمنتیک سیمنتیشن حرف حسابش اینه میگه من این عکس رو بهت بدم خب تو فقط به

گربه هست یا نیست برو تک تک پیکسلاشو نگاه کن ببین از چه جنسیه مثلاً فرض کن تو کلاسش این بهش یاد داده شده که من عکس‌های گربه آسمون درخت فلان اینا رو حالا قراره شما ببینی تو این عکسا هست این باید بگه ببین مثلاً پیکسل بالا سمت چپ آسمونه همه رو با آبی نشون داده پیکسل‌های مثلاً صورتی رنگ همه نماد درخت و جنگلن پیکسل‌های زرد رنگ نماد گربه‌ست پیکسل‌های سبز رنگ نماد چمنه ها یعنی در سطح پیکسلی باید تصمیم بگیره برای شما یعنی اگه عکس ۱۰۰ بهش بدید باید ۱۰ هزار تا نقطه رو به شما بگه این جز کدوم کلاسه این مسئله سخت‌تریه خب ولی با c قابل انجام حالا خدمتتون عارضم که اگه کسی دلش خواست میتونه مطالعه بکنه یه سرچ ساده است اگر خواستید بگید من منابعش بهتون میدم و به اصطلاح دانشش دارید سوادشو دارید که این کارو در بیارید فقط یه سری خورده ریز های اضافه داره وگرنه

مسئله دوم که مسئله ساده‌تریه و الان راحت می‌تونم در موردش صحبت بکنم بحث نه تنها کلسیفیکیشن که لوکالیزیشن و لوکالیزیشن به صورت همزمان ماجرا اینه که ما قبلاً وقتی عکس به شما میدادیم میگفتیم گربه است یا سگه فقط شما داشتید اینو چک میکردید که گربه تو عکس هست یا نیست ولی هیچ وقت نمیگفتید کجاش گربه هست ها دورش برای من کادر بیار اگر بخواید علاوه بر اینکه شناسایی بکنه تو این عکس داره گربه میبینه یا نمیبینه و یا سگ میبینه یا هر چیز دیگه‌ای دور اونم کار کادر بیاره بهش میگن مسئله کلاسیفیکیشن به علاوه لوکالیزیشن خب و خدمتتون عارضم که ما مسائلی که بچه‌ها بررسی کردیم مسائل سینگل آبجکت بودن یعنی شما اگه تو عکسی که بهش میدادید یه سگ بود یه گربه با اون چیزایی که ما به شما یاد دادیم انتظار نداشته باشید تو خروجیش هم سگ هم گربه دو تاشو با هم یکی بده بهتون ها خب و ما بپذیرید که ما

کلا داشتیم سینگل آبجکت می‌رفتیم جلو که حالا در مقابل اون مالتی آبجکته یا مالتی پل آبجکتی که مسائل خیلی سخت‌تر و جوندارتری‌اند بابا چیکار کن توی عکس بیش از یک دونه جسم برای من پیدا بکن خب خدمتتون عرضم که مسئله لوکالیزیشن پس گفتیم علاوه بر اینکه میگه این عکس گربه است در ضمن باید بره دور اون گربه هم یه کادر قرمز بیاره تا حد امکان هم باید چی باشه فقط دور گربه باشه نره گل گشاد بکشه آسمون و درخت و اینام بیاره توش خب پس این این مسئله حالا ساده که رویژن خدمتتون توی cn بهتون میگم چجوری حل میشه و امروز هم می‌خوایم پیاده نحوه حالا پیاده سازی خامشو توی کراس بهتون نشون بدم مسئله بعدی که یه مسئله سخت‌تریه نسبت به این یه مسئله جذاب ویژنی هم هستش حالا قبل از اینکه حتی سی بیاد براشون انواع راه حل ها پیشنهاد شد ولی با سی ان ان اینا به خوبی هندل شدن دست مسئله آبجکت دیتکشنه که بیش از در واقع یک جسم رو بتونه برای شما بشناسه

در ضمن اگر از یک کلاس بیشتر از یک جسم بود اونا رو جدا جدا بشناسه یعنی دو تا سگ بود بگه داگ یک داگ ۲ ها و دورشم چیکار کنه کادر براتون بیاره یعنی یه کلاسیفیکیشن لوکالیزیشن حرفه‌ای‌تره الان خب که ما نمی‌خوایم حالا در مورد چگونگی پیاده‌سازی صحبت کنیم ولی بدونید وجود داره نمی‌دونم کسی ویژن پاس کرده یا نه یا داره پاس میکنه در مورد الگوریتم های یولو چیزی شنیدید یا نه در مورد مثلا سی ان ان یا چیزی شنیدید یا نه اگر نشنیدید نگران نباشید اگر هم درس ویژ رو دارید بهتون خواهند گفت و اونجا یاد میگیرید که چی بتونید بیش از یک جسم رو شناسایی کنید نمونه بارز اینم همون در واقع دوربین های موبایل که مثلاً برار از یکی عکس بگیرید دور همه آدما کات میکشه معمولا دور شما هم کات نمیکشه این از اون مسائله که خب اون موبایل داره با پردازشگر خودش اینو حل میکنه حالا یعنی در واقع یا یه شبکه است یا با الگوریتم های یعنی با شبکه های دیپ یا با شبکه های یا با روش های سنتی که

من دارم چیا رو میبینم و یه مسئله خفته تر از اون که دیگه خیلی سخت‌تره اینستنس سیگمنتیشن که نه تنها باید بره سگ و گربه رو شناسایی کنه بلکه در حد پیکسل باید به شما بگه که اینا پیکسل‌های مربوط به سگ اول اینا پیکسل‌های مربوط به سگ دومن ولی این تیکه از درخت کاج که افتاده توش اینا جز سگه نبود آ اینجا توی مستطیل الان همینجوری فقط کلی گفته دیگه تازه اگه بدونیم میتونید تخمین بزنید که احتمالاً میتونسته در واقع مستطیل قرمز یکم بهتر هم حتی بکشه یعنی الان یک از گشاده و می‌تونست کوتاه تر هم بشه و خب اینستنس سیگمنتیشن در واقع ورژن تامین یافته تلفیق آبجکشن و سمنت سیمنتیشن یادمون باشه تو سیون سیمنتیشن اگه دو تا گربه داشته باشیم هر دو رو با زرد نشون میده نمیگه گربه یک گربه دو توی اینستنس سیگمنت سیگمنتیشن این دو تا رو دو تا چیز مجزا می‌بینه خب حالا بخوایم بهش ورود بکنیم بچه‌ها

مسئله کلاسیفیکیشن و لوکالیزیشن گفتیم علاوه بر اینکه باید بگه گربه است بلکه باید بره دورشم کادر بیاره برای اینکه بچه‌ها دورش کادر بیاره علاوه بر اون داستان قبلی که میخواست به گربه است یا نیست ما در ساده‌ترین حالت به چهار تا پارامتر احتیاج داریم این چهار تا پارامتر چیان می‌تونیم ساده‌ترین بیانش استانداردترین بیانش اینو بگیریم بگیم ایکس و وای یه نقطه ای مثل مرکز این مستطیل قرمزه برامون برو پیدا کن wh هم میزان طول و عرض مستطیله یعنی w دوم از ایکس دوم از اونور اونورتر برو اچ دوم هم بالا پایین تر برو و یه مستطیل یکتا برام بکش پس من اگه بتونم این چهار تا شبکه به من بده خروجی یعنی علاوه بر اینکه گربه بود یا نبود اینم بهم بده چی میشه من میتونم علاوه بر اینکه بگم این گربه بود در ضمن جاش هم تعیین کنم ها خب پس طبیعتاً اتفاقی که میفته ما توی مسئله کلسیفیکیشن به علاوه لوکالیزم به هر دو تا احتیاج داریم هم بهم بگید گربه است همین چهار تا رو بهم خروجی بده کاری که میکنن

یکی از راه‌هاش اینه فرض کنید شما همون شبکه الکس نت یا ویج نت یا رزنت و الی آخر رو دارید یادتونه یه جایی بود که آخرین کامولوشنشو فلتن میکردیم ها بعد دو سه تا دنس می‌ذاشتیم که به ما بگه گربه هست یا نیست میگه اینجا دو شاخه‌ش کن مسئله رو میگه یه شاخه همون شاخه قبلی باشه یعنی اون ۴۹۶ تایی که داشتیم بره مثلاً حالا یا به چه میدونم هزارتایی یا وسطش یکی دو تا لایه دنس دیگه داشته باشه بعد به اون هزار تایی بره که اون ۱۰۰۰ تا کلاس با چه احتمالی کدوم اتفاق افتاده مثلاً کت ۹۰ درصد و بقیه چیزا خیلی کمتر پس من تصمیم می‌گیرم که این کته یه شاخه دیگه همین ۴۹۶ تا بره به یه سری شبکه ال پی دیگه و اونجا باندینگ باکس رو به من بگه همون چهار تا مولفه ایکس رو بهم بگه و اینجا چهار تا نیرون خروجی در نهایت داشته باشه بچه‌ها مسئله بالایی از جنس مسئله کلسیفیکیشنه خب مسئله پایینیه تمش رگریشن ها یعنی اینکه

چیکار باید بکنیم برای اینکه این شبکه‌ها رو ترین بکنیم خب رو کاغذ فعلاً بدونیم الان تو کراس هم بهتون نشون میدم برای اینکه رو کاغذ بدونید بچه‌ها اون جایی بود که ما میخواستیم آپدیت کنیم و از یه چیزی به نام لاس داشتیم که حالا کاسنی داشتیم که سیگما رو تمام لاس ها بود این برای گربه یه لاس داریم برای سگه یه لاس دیگه و و چیز که میکردیم حالا بک سایز که میگرفتیم میومدیم همه لاس های اون بچ سایز رو جمع میکردیم میانگین میگرفتیم بعد حالا بعدش آپدیت میکردیم وزن این کار بکنیم بچه ها میگه یه لاس یک بده به این یه لاس دو به این لاس نهایی باشه لاس ۱+لا لاس دو یا یه ضریبی از لاس یک به علاوه ضریبی از لاست دو لاس یک و چی میگیریم مسئله کلاسیکیشن همون چیز میگیرم کراس انتروپی میگیرم کتگوری کراس انتروپی خودم میگیرم اینجا که یارو ریبریشن چیز میگیرم ال دو لاس میگیرم یا همون ام سی خودمون فرض کنید جواب صحیح رو دارم که باید کادرش چی بود اکسپرام ایکس وایh هم اون

لاس نهایی رو تشکیل میدم که حالا بهتون نشون میدم تو کراس چه جوریه کلاس نهایی رو تو برای من اپت کن و میلاد برمی‌گرده و چیکار میکنه تا جایی که شما ترینبل و فالس نکردید میره دبلیو ها رو براتون آپدیت میکنه البته میتونید ترانسفر لرنینگ بزنید مثلا بگید آقا من تا اینجاشو کلا برام فریز کن من فقط میخوام دس های که کتگوریکال و دس های باندینگ باکسمو فقط برام آپدیت کنی چون اونا خوب بودن دیگه اونا سگ و گربه و الاغ و فلان اینا رو خوب شناسایی کرده بودن و این راه تیپیک رو کاغذیه که میشه این کار براش انجام داد و اینم شماتیکشه که لایه تو شبکه دو شاخه می‌کنید با یه مشت دس مثلاً حالا میتونستید اگه دلتون میخواد کانولوشن بزنیدا خب و در کل دو تا لاس می‌گیرید و لاس نهاییتون یه ضریب وزن داری از اینست روی اینا میشه خیلی بحث کرد خب اوکی حالا ضریب وزن داره اینا رو چیکار بکنیم اینا داستان‌هایی دارن خب چون اینا هایپر پارامترهای اند که باز میشه تنظیم بشه ولی این دفعه شما نمی‌تونید تو ولیدیشن ازش استفاده

E:\courses\LangChain Project\main root\data\SCR_Session12_transcript_part2.txt

وابسته است خب یعنی اینکه مثلاً فرض کنید شما مثلا هزار تا داده داشتید ۹۰۰ تاش استفاده کردی هزارشم گذاشتید می‌خواید بین شبکه‌های مختلف مثلاً اینجا چند لایه دنس بزارم بهترینشو بردارید خب اوکی یک بار با لایه اول یک بار معماری اول یک بار با معماری دوم الی آخر میرید و می‌خواید تصمیم بگیرید ولی دیگه اونجا خود اون در واقع ضرایب هم تاثیر دارند و اینو باید یه جور دیگه‌ای آپدیت کنید حالا اگه خواستید سرچ بزنید این مسائل ویژنی اند که بحث شده روشون تو زمینه کلاسیفیکیشن لوکالیزیشن میشه این کار کرد این چون بیانش ساده بود بازش کردم بین اون چهار تا خب میشه چیکارش کرد میشه از اینا برای مسئله پوزیشن استفاده کرد سوال پرسیدن اگر داخل اطلاعات دیتا ست این آها باریکلا محمد خیلی سوال خوبیه ببین من فرضم بر اینکه داخل اطلاعات دیتا ست یا دیتا ست وجود داره که اینا رو دارد که شما باندینگ باکستون رو دارید تعیین می‌کنید ولی اگر هم نداشته باشد حقه‌های ویژنی میزنن خب

امیدوارم اشتباه نگم بهتون اول شما فرض کن یه شبکه تریم کردید مثلاً امیست خودمون در نظر بگیر بگو خب تا من ادامه بدم بدونم داری گوش میدی خب این لیست خودمون در نظر بگیریم فرض کن یه شبکه زدی صفر ۱ تا ۹ رو شناسایی کرده خب حالا یه عکس گنده تری بهت میدن میگن برو نگاه کن ببین توش پنج وجود داره یا نه و کجا وجود داره خب شما میگی من با سایزهای مختلف میرم میگردم یه بار پیکسل ها مثلا ۲۸ در ۲۸ می‌ذارم یه بار ۱۰ در ۱۰ می‌ذارم یه بار صد در صد میذام این دنبال ۵۰ بزرگ بگردم ۵۰ کوچک بگردم خب فرض کن حالا مثلاً ما میدونیم که ۵۰ مثلاً اگر باشن ۱۰ در ۱۰ بیشتر نیستند خب بگو خب خب عرض به خدمت شما اینه که ۱۰ در ۱۰ ها را اول وارد می‌کنم یعنی با یه الگوریتم های که تو اوپن سی اینا آماده است شما هم نمیخواد بزنید اول میکنم ۳۲ در ۳۲ یا ۲۸ در ۲۸ چرا چون چیزه دیگه چون شبکه سی ان ان که من زده بودم

چیکار می‌کرد سی‌ان که من زده بودم ۲۸ در ۲۸ ورودی می‌گرفت دیگه اون ۱۰ در دهه رو شیفت میدم سرش می‌دم مثل کانولوشن رو عکس اصلی اوکی هر بار هر کدوم از اون ۱۰ دره‌ها رو حالا با یه استراید سر میدم اول ۲۸ در ۲۸ می‌کنم میدم به شبکه نیستم نگاه می‌کنه یه احتمالی میده احتمالاً از یه عددی کمتر بود میگم نه عمرا پنج اونجا وجود نداره خب حالا یه اتفاقی اینجا میفته اتفاقی اینجا میفته فرض کنید اینجا بیام ویندوز ژورنال باز کنم شاید بهتر بتونم بیانش کنم فرض کنید عکس اصلی گنده است اینجاش یه پنج نوشته شده خب بعد اینجاش مثلا گل و بلبله فرض کنید که اینجا الان یه گاو بکشم براتون نشون بدم که بلدم گاو بکشم مرتضی معماری حالا برو کلاس نقاشی میتونی اینجوری بکشی یا نه خدمت عارضم که خب فرض کنید که من میدونم پنج در پنجم اگر وجود داشته باشه مثلاً سایزشون ده در ده خب

این ده در ده رو سرش میدم با یه استرایدی میگم برو بگرد برو بگرد هی هر کدوم از این ۱۰ دردها رو اول بکن ۲۸ در ۲۸ بده به شبکه من برو نگاه کن ببینم ۵ هست یا نیست یه احتمالی بهم میده دیگه میگم آقا اصلا از یه عددی کمتر که عمراً باشه یعنی مثلاً زیر ۵۰ ۶۰% اصلاً قبول نکن نویزه یا شانسی اتفاق می‌ره می‌رسه اینجاها حالا اینجا که میرسه یه سری اتفاقات میفته اینجا رو می‌ره می‌بینه مثلاً به شما میگه هفت دهم احتمالاً پنج یک کوچولو بده اینورتر مثلاً اینجا میگه ۸۷ پنجه یه کوچولو میره اونورتر احتمالش کمتر میشه ولی به نظر میاد یه سری جاها اون نزدیکا که داره سر میخوره عددا همه مثلاً از نیم بالاترن اینجا یکی از ساده ترین کارهایی که میشه کرد میگه برو بین اینا ماکس بگیر برو کدومش بیشترین احتمال براش اتفاق افتاد اونو بذار معیار دیگه حالا انشالله که خوب در میاد خب ولی بالاخره چیزه دیگه ما به اصطلاح گران توروس نداشتیم یعنی به قول آقا محمد

دقیق اون باکس‌ها داخل دیتا ست اگه نباشه دیگه این یکی از راه‌های منه خب روش‌هایی که روی پنجره با سایزهای مختلف می‌گردم هم این مسئله چیزو دارن رگریشنو دارن نه اینا دیگه لزوماً این مسئله ندارن ولی اون مسئله رگریشن خب چیزتره دیگه اگر عرض کردم دیتا ستی رو داشته باشید که یارو بکنن به اصطلاح وجود داره اینو جمعش میکنن من خودم امیر نمیدونم دو سال قبل یه برای خودم جهت مطالعه اینا رو خوندم که حالا شما حالا لزوما ۱۰ در ۱۰ نیست باید دنبال ۵۰ بزرگتر هم ممکنه بگردید باز میاد سایز بزرگتر میکنید فلان فلان اینه که بین اینا کدومو بردارید یعنی مثلاً من یه ۱۰ در ده انداختم ۱۵ در ۱۵ هم میندازم بعد اونم یه چیزی بهم میده خب مثلاً می‌بینی که این دفعه پنجه رو داره بهتر پوشش میده خب اونجا هم الگوریتم‌هایی هست که چیز میکنن فکر میکنم

‏aou یه همچین چیزی بود پارامترش که اینو محاسبه میکنن هرچی بالاتر باشه مثلا نماد اینه که بیشتره ولی خیلی ویژنی یعنی من دانش تخصصی الان ندارم ولی بهت بگم بلد نیستم الان صادقانه‌تر عمل کردم ولی کوچولو برای خودم دو سال قبل خوندم و خب دیدم و دیدم که شدنیه ولی فرض بر اینه که اگر شما گرانروس رو خودت بزنی یا بدی یکی بزنه یا دیتا ستی پیدا کنه که داشته باشه شما میدی به اون شبکه و خودش اتومات هندل میکنه حله خب برگردیم سر کارمون خدمت شما عارضم که حالا میشه به اینا شاخ و برگ داد این تیکه‌هاش بچه‌ها خیلی می‌تونه مکانیکی باشه بعد من ندید میگما خب مستند صحبت نمی‌کنم بیشتر دلی دارم صحبت میکنم جایی بچه ها که بچه‌های کامپیوتر ساینس اصلاً توش عمیق نشدن و شما میتونید کار کنید شاید تز ارشدتون اینا باشه شاید توش اینا رو جا بدید خب مثلاً مسئله پوزیستیمیشن نمیدونم ممکنه دیده باشید سنسوری مثل کت

نیستید به شما موقعیت ایکس با زد مفاصلتون مثل آرنج و شونه و مثلاً گردنتون اینا رو میده خب حالا اون که داره از چی استفاده می‌کنه نمی‌دونم از الگوریتم‌های ویژنی عادی به اصطلاح قدیمی می‌تونه باشه سنتی میتونم دیپ باشه ولی یه عده‌ای دوست دارن با ویدیوهای دو بعدی این کارو بکنن خب کاری که می‌کنن اینه که چه میدونم خب هم باز دوباره الگوریتم‌های ویژن کلاسیک وجود داره که اینا رو استخراج کنه همین که شما گرانتروس بهش بدید مثلا عکس نال بیاید بهش بگید اینا جواباست خب تو باید اینو پیدا بکنی بعد چیکار بکنی بعد مثل همین شبکه بره جلو خب مثلا از الکس نت هر کدوم استفاده کنید اون فلتن ۴۹۶ تایی که رسیده بود قبلا مث میرفت به هزار تا وصل میشد که هزار تا عکس می‌خواست پیدا بکنه مثلاً بگه سگ گربه است یا نه اینجا میگه ببین من به تعداد مثلاً ۱۴ تا مثلا نمیدونم مچ دست چپ مچ دست راست آرنج دست چپ آرنج دست راست شونه دست چپ شونه دست راست من این ال دو لاس ها رو تعریف میکنم چون ایکس و وای به من بده خروجی من ایکس و وای

به توان دو می‌رسونم این لاسا رو با همدیگه جمع می‌کنم حالا یا با ضریب وزن داره یا همه رو با همدیگه برابر جمع می‌کنم و یه لث نهایی تشکیل میدم برمیگردم عقب حالا یا اینا رو فریز کردم یا نکردم و چی میره آپدیت میشه وزن و هرچی شما دیتا ست غنی‌تری بهش بدید شما می‌تونید تو مسئله پشن ازش استفاده بکنید که چیکار میکنه که عرض به خدمت شما میتونه چیز بکنه میتونه به اصطلاح وضعیت بدنم بگیره دست بالاست پایین الی آخر و حالا تازه این فتح بابی میشه برای یه پله خفن تر که میشه اکشن ریکنیشن اوکی وضعیت بدن شناسایی کردم میخوام ببینم که این طرف الان آب داشت می‌خورد یا نه راه میرفت یا نه پوزهای بدن رو دارم تو فریم های متوالی می‌بینم باز دوباره اینو به یه شبکه سی ان ان بدم میتونم چی ترینش کنم حالا این یه پیپر الان بهتون نشون میدم تمام بشه بحث ها که این کاررا رو کرده قشنگ یعنی مثلاً پوزش از یک الگوریتم آماده استفاده کرده ولی اکشنشو خودش زده با شبکه های سی ان

ساده و دقت‌های حالا قابل قبولی هم گرفته و یکی از بچه‌های ارشد ما الان داره روش کار می‌کنه مثلاً یه سری حرکت‌های کاراته رو داره میزنه و از خودشم گرفته و فامیلاش خدمتتون عارضم که گفتیم رو خود و فامیلاتم اجرا کن بعد چیز عرض به حضور شما چیز می‌کنه قراره که شبکه cnn بهش بگه که کدوم حرکت بودی یا نمیدونم الان آقای ملایی یا چیز اینجا تشریف دارند یا نه آقای میناگر نمی‌دونم اگه هستید یه بوقی بزنید یه پیام بدید اگر هستید اینا بچه ها اون دارن این کار میکنن که اکشن کار میکن یه سری ویدیو میگیرن و قراره بگن که تو اون ویدیو کدوم اتفاق داره میفته بین این چهار پنج تایی که من میگم مثلاً آب خورد نشست دوید فلان فلان و اینا رو قراره تخمین بزنه اگه یادتون باشه روز اول یه ویدیو بهتون نشون دادم که علائم زبان اشاره رو اجرا می‌کرد مثلاً هلو به زبان اشاره آمریکایی یا آیlov یو یا تنکو و سامانه با همون وب کم خودتون هم بود حالا انشالله به موقعش به شبکه هایستی هم برسیم

که چه جوری با وب کم خودتون تو خونه بشینید در واقع الان یه شبکه‌ای بسازید که الان زبان اشاره رو مثلاً همون ۵ تا ۶ تا ۱۰ تایی که حالا خودتون بتونید دیتا ست بهش بدید ترین کنید براتون شناسایی بکنه ببینید با چه دقتیه ولی آخر سبب بشه که این اتفاقات رقم بخوره می‌خوام بگم خیلی میتونه کاربردی و جذاب باشه برای ما ماجرای بعدی بچه‌ها که ما دیگه اصلا بهش اشاره نمی‌کنیم خیلی تخصصی ویژنه و لازمش اینه که در مورد ریجنت پروپوزال ها بدونید در مورد الگوریتم های کلاسیک کامپیوترژن تو حوزه چیز بدونید مالتی آبجکت دیتکشن بدونید اینه که اوکی شبکه هایی هستند که همین خروجی سی ان ان هم هستند از این در واقع توتال میتونید بردارید برید ببینید اطلاعات بیشتری کسب بکنید که مثلاً عکس بهش میدیم با شبکه های سی ان ان دور آدما کات میکشه میگه که با چه احتمالی چیه مثلاً میگه من با احتمال ۹۹.۸ درصد میگم این یه آدمه ها یا این یه چاقوئه یا مثلاً چه می‌دونم این یک کتاب و الی آخر خب

و خیلی مدل‌های چیزهای جذابی داره نتایج موفقی داره دلتون خواست میتونید سر در بیارید حتی ممکنه شما این شبکه‌ها رو آماده لطف کنید بدون اینکه اصلاً خیلی بخواید سر در بیارید در واقع چه اتفاقی توش افتاده یعنی چه جوری ترین شدنشو کاری نداشته باشید فقط استفاده کنید خب فورواردی یعنی و نهایتاً لایه آخرشو حالا بدید مثلاً چه میدونم ترین کنید برای خودتون بعدش استفاده کنید و انشالله براتون کار بکنه تو تسک های شما و این کارا رو انجام بدید و چیز اینستنسگمنتیشن هم باز همینجوری بوده یعنی اینکه فرض کنید یه عکس بهش داده طرف واقعا با دقت پیکسل گفته این آدم این موتوره خب و خیلی قوی عمل کرده حتی موتور یک و دو رو از همدیگه جدا شناسایی کرده یا آدم های که رو فیل سوارن ولی آخر یه پله خفن‌ترشم رفتن جلوتر این دوستان عزیز که این مقاله رو دادن و چیز هم کردن حتی برای جاهایی که افراد یعنی چیزایی که شناسایی می‌شدن آدم بودن

در حال نشستن در حال ضربه زدن بیسباله و و و اینا با یه دیتا ست غنی و در ضمن با یه شبکه سی ان ان مناسب با تعداد متغیرهای خروجی مثلاً دو تا سه تا برای چیزهای مختلف این کارا رو کرد البته خب راه‌های دیگه‌ای هم مثلاً به ذهن میخوره اینکه اول من یه شبکه بسازم بره انسان رو شناسایی بکنه بعد یه شبکه دیگه جدا بسازم که چی انسان های که شناسایی کرده رو بگه دارن میخندن یا نه شاید ممکنه شما تو تمرین اول این کار کردید که از مثلا دیتا ست های استفاده کردید که چی که یارو بکنن عرض به خدمت شما مثلا الان آشغال که تو عکسون بود پاک کنه فقط بخش انسانش نگه داره حالا چه شبکه های دیپ بوده باشن یعنی بیسشون و یا چه شبکه های چیز بوده باش همون روش های سنتی ماشین ویژ بودهشن که این اول عکستون رو کوچیک بکنید اول عکس رو شناسایی بکنید حالا بعدش بفهمید خوشحاله یا ناراحته این کارا میشه انجام داد خب

بزنید تنگ هم می‌خوام بگم اینا شدنیه ولی اینکه کدوم بهتر اینا دانش تخصصی ندارم باید واقعاً امتحان کنیم تو تسک مورد نظرمون و ببینیم که کدوم کاراتره اینم مسئله دومی بود که می‌خواستم بهش اشاره کنم به بهانه این ورود بکنیم به اینکه چگونه می‌توان چگونه می‌توان شبکه‌های مالتی برنچ زد چه اول ماجرا یعنی وسطای شبکه یه دفعه چند شاخه بشن و چه چی آخر ماجرا چند تا لاس تعریف کنم بچه‌ها کسی یادشه تو جلسه قبلی بین شبکه های که گفتیم کدومش مالتی برنچ بود یه اسمی داشت کسی یادشه یه جایی بود عادی پیش نمیرفت برخلاف شبکه های عادی سیکوئنشال اون که پلکانی رو همدیگه سوار می‌شدن کسی اسم شبکه رو یادشه شبکه اینسپشن یکی از اون شبکه‌هاست که چند شاخه میشه ولی آخرش همه کانکت میشدند حالا شبکه اینسپشن که اونجا شبکه رزنت آرمین باریکلا شبکه رزنت شبکه‌ای بود که چی می‌کرد

کانکشن داشت و اینجوری بود که یه جایی عین اکسه می‌رفت با خروجی لایه کانولوشن جمع می‌شد می‌خوایم الان ببینیم اینو ما چه جوری می‌تونیم تو کراس بسازیم دستی خودمون فقط بیارمش یه مروری بشه برای بچه‌ها قیافشو ببینن حالا باید همچنان بیام بالا اینجاست خدمتتون عارضم که اینجا بود که مثلاً یه x داشتم اول میرفت تو کامولوشن خروجی کانولوشنش با خود خودش جمع جبری درایه به درایه میشد آیا لازم باشه ممکنه ضرب جبری باشه یا هر اتفاق دیگه‌ای که شما اصلاً بخواید مثلاً ضرب ماتریسی بشه و و این شما می‌خواید این شاخه می‌خواد این اتفاق بیفته من دلم میخواد شبکه اینجوری باشه مثلاً بیاد دو شاخه بشه بعد یه شاخه جدید بهش اضافه شه بعد همه برن آخرش به هم برسن دوباره آخرش سه شاخه بشه همچین چیزی می‌خوایم ببینیم همچین چیزی من درآوردی رو چجوری میشه درآورد خب ما بیس کارمون کراس داتo بود این سایت بود و خودش هم کمک می‌گرفتیم و خوشبختانه مثالش

در واقع چیز کار می‌کردیم مدل‌های سیکونشال استفاده می‌کردیم ولی به محضی که این چیزای چند شاخه رو بخواید دیگه نمیشه از سیکوئنشال استفاده کرد و یه مفهومی وجود داره به نام فانکشنال ای پی آی بنویسم کراس فانکشنال ای پی آی example خب که تو خودشه و درجا بریم تو صفحهپلش و البته دیگه برخلاف اونجا که ما می‌نوشتیم سیکوئنشال بعد ادامه میدادیم اینجا چیزی نمی‌نویسیم این تو کدهای من سوسکی وجود داشت این آخری ترانسفر لرنینگ تو این کد آقای قدمی هم بود ولی الان می‌خوایم با همدیگه مرور بکنیم ببین من این شبکه رو می‌خوام دو تا شبکه رو بهتون میگم که یکیش الان کامل نخوندیم فقط آخرش بررسی میکنیم یکیش کلششو می‌بینیم یه شبکه است این مثالالاشه یه شبکه هست اینه که اصلاً با دو شاخه مختلف شروع میکنه بعد این دو شاخه یه شاخص سوم بهشون اضافه میشه بعد کانکت میشن بعد آخرش دو تا لاس بهتون میده و باید بگید چند برابر لاس اولی دومی آخرش میگم چرا

از ماژول‌های ال اس دی ام استفاده کرده فعلاً ما درس ندادیم برای بخش بعدیمونه اول ببینیم شبکه بعدی مثال بعدیش اسمشو گذاشته توی رزنت خب گرافیکشم ببینید اینه گفته آقا اول اینپوت که بهت دادم یکی دو لایه کانولوشن عادی خودم برو انشالله بعد اینجا که رسیدی دو شاخه بشو اول یه شاخه بره یه دو لایه کانولوشن زده بشه اینجا بیاد بعد اون قبلیه بیاد اد بشه یعنی اد منظورم درایه درایه جمع بشه یا مثلاً مالتی بشه یا اصلاً کانکت بشه کانکت یعنی اینو داری قبلی هم داری بزن تنگم یه بردار مثلاً با سایز دو برابر به وجود بیاد خب و بعدش دوباره همین کارو بکنید یعنی اسکیپ کانکشن اینجوری و دو لایه مثلاً از اینا بزن بعدشم چی در واقع بروس و فلان و اینا در نهایت این کار بکن برای اینکه اینو پیاده کنیم بچه‌ها خیلی ساده است را دسته چون اینو ببینید یعنی مدل سامری رو ببینید هم همین ولی کمتر درک می‌کنید هندسه رو حتماً پلات اینم برای خودتون بکشید با این دستور پلات مادل که توی نمونه

قبلی هم بهتون دادم الانم توی کدهای ترانسفر لرنینگ هست اینجام هستش اینجوری تعریف می‌کنن بچه‌ها ببینید یه چیزی تعریف می‌کنه به نام اینپوت خب کراس.mput شیپشو داده اسمم حالا حتی براش گذاشته نذارید گفته img اسمشه یعنی بعدا بیاید پایین اینجا اسمشو لیرشو اسمشو گذاشته img اگه شما نذارید خودش دیفالت میره از این کاندوی نمیدونم فلان فلان برای خودش می‌ذاره خب و اینجا هم اسمشو گذاشته آی ام جی اینپوت لیرم اوکیه بچه این اینپوته فعلاً فقط یه اسمه این الان شعور نداره کراس بفهمه این ورودی ها خب خب چیکار می‌کنیم اینجوری تعریف می‌کنیم چجوری میشه یه لایه بهش اد کرد میگه لیرز دات کان دو دی ۳۲ ۳ اکتیویشن رلو بزن پرانتز بسته پرانتز باز بسته اینپوت این یعنی چی این یعنی اینپوتی که من قبلاً برات تعریف کردم برو به عنوان ورودی بگیر خب اینو

اضافه کن لیرز.com tod ۳۲ تا فیلتر حالا مثلاً سه درسه با اکتیویشن رلو روش بزن اسمشو بزار اکس خب پس طبیعتاً منطق حکم میکنه که این چی باشه لایه دومم باشه درسته اوکیه ایکس الان لایه دوم منه خب چون به این ایکس اون اسمش نیاز نداشته لایه سومم دوباره ریخته تو متغیر ایکس همون کاری که ما میکنیم آی به علاوه یک بریز تو آ خب میگه لیرز دات فلان ایکس رو بزن دوباره بریز تو ایکس نخواسته ظرف جدید تعریف کنه میتونست اسم اینو بزاره ایکس یک اینجا بشه ایکس و اینجا بزار ایکس دو دیگه هم ایکس یک براش باقی میمونه هم ایکس دو براش باقی میمونه بدون تغییر خب بعدش چیکار کن بعد گفته مکس پولگی که رو ایکس زدی اسمشو بزار بلاک یک اوت پوت چرا اینجا اینجا اسمشو دیگه x نذاشته حالا عمدا نذاشت چون نیاز داره بهش و یه اسم مجزا استفاده کرده میتونست x بزاره ها بلاک یک اوت پوت استفاده

کجاست این حالا اینجاست بلاک یک اوت پوت خدمت شما عارضم که اینجاست حالا خب و اینجایی که می‌خواد دو شاخه بشه حالا ببینید چیکار می‌کنه که این دو شاخه رو تعریف کنه دوباره این دو تا رو تعریف میکنه میگه ایکس رو تعریف کن لیرز کامدو دی ۶۴ تا فلان روی کی بزن روی بلاک یک اوت پوت بزن و یه لایه کامل دیگه بزن روش تا اینجا که چیزی نیست ابهامی نیست به نظر میاد سیک داشته میرفت جلو ولی اینجا چی میگه میگه من یه چیزی تعریف کن برام به نام بلاک دو output لیرز دات اد بکن ایکس و بلاک یک اوت پوت رو حالا آخرین ایکس چی بوده ببخشید بچه ها من این بلاک بعد گفتم بلاک اوت اینجا بوده خب ایکس هم اینجا بوده گفته این دو تا رو با همدیگه اد بکن اد هم یعنی چی یعنی یارو دیگه جمع درایه به درایه خب این یه لایه که تو خود

تعریف شده پس بلاک شد چی اد بکن یعنی جمع درایو به درایو بکن ایکس آخر و خروجی لایه کامدو دیه رو ببخشید درست گفته بودما یه لحظه شک کردم ایکس خروجی است من یه بار دیگه بگم بچه‌ها قاطی نکنید این ایکس الان اینه گفته این دوتا رو با همدیگه اد بکن ودم بکنه کانکت نکن یه بار دیگه میگم کانکتینت بچه ها یادتونه چی بود دیگه این دو تا رو میزنه تنگم مثلا یه برد سه در یک داشته باشیم یه دونه پنج* یک داشته باشیم بزنه تنگه هم کانکتش میشه هشت* یک خب ولی جمع اد برای اینه که هیچی مثلاً با دوتاشون باید سه در یک باشن جمع بشن خب اوکی تا اینجا بلاک ساختم بعد دوباره میگه ببین به بلاک دو اوت پوت برو چیز بزن به اصطلاح لیرز کانو تودی بزن بچه‌ها یادتونه من جلسه قبلی اشاره کردم گفتم سه نوع پدینگ داریم پدینگ ولید یعنی هیچ صفری اضافه نکن خب هیچی اصلاً پدینگ ندارم

پدینگ سیم یعنی انقدی صفر اضافه بکن دور تا دور عکست که خروجیش با ورودیش یکسان باشه لازم داریم دیگه من می‌خوام ایکس رو با بلاک جمع بزنم خروجیاشو مجبورم هی چیز بزنم دیگه پدینگای سین بزنم بعد پدینگ فول هم داریم این کراس فکر کنم نداره حالا لایبراری دیگه هستن اینو دارن خدمتتون عرضم باز دوباره میگه ایکس بزن دوباره رو بلاک بریز تو ایکس دوباره خروجی ایکس بزن بریز تو ایکس بلاکس اوت باشه چی حالا عدد ایکس و بلاک تو اوت بود و اینجوریه میتونید ادامه بدید بعدشم که دیگه نمیخواد رزنت بزنه هی دوباره ایکس ایکس گذاشته هی لایر کانولوشن و نمیدونم گلوبالج پولینگ زده و بعد دس زده و زده حالا چجوری صداش میزنید اینا رو تا حالا برای خودتون الکی ساختید اینجوری صداش بزنید این میفهمه میگه آقا کراس دات مدل کن یا اگه مدل اد کرده باشید فقط مینویسید مدل خالی اینپوت و اوت پوت این نگاه میکنه اینپوت چی بوده اوت پوت

چی بوده بعد وسطشم هی دیگه خودش میره نگاه میکنه چه اتفاقایی بینشون افتاده که بعداً می‌خواد بک پاپ بزنه چی بدونه باید چه جوری مشتقه‌ها رو برگردونه و میگه من یه مدلی دارم که ورودیش اینه خروجی اینه که خودت برو نگاه کنی به اینا ببینم یه سری اتفاقا بین اینپوت افتاده حالا اینجا عرض کردم خدمتتون اگر حسن یعنی می‌خواستید قاطی نکنید میتونستید اینا رو ایکس یک ایکس دو اینا هی بزارید که همه اینا رو برای خودتون سیو داشته باشید و الی آخر این تا اینجا میشه یه شبکه عجیب غریبی ساخت که تا الان ندیده بودیم چند شاخه بشه ولی بازم این چیزی که الان دیدید یه دونه لاست داره حالا چجوری میشه چند لاسش کرد باز این کاری نداره خب تا اینجا که کاری تو ذهنتون کاری نداره که من یه اوت پوت یک بسازم یه اوت پوت دو خب اینو تأید می‌کنید یا نه بچه‌ها تأیید می‌کنید بنویسید تأید می‌کنید یه اوت پوت یک بسازید یه اوت پوت دو بسازید خب حالا مثلاً هر کدوم از شاخه های مختلف گرفته شده باید با هم کانکت کنید به کلش بگید اوت کسی تا اینجا مشکلی داره اینم برای وقتاییه که

از چند جای مختلف مثلاً یه چیزی میاد بعد تهش به هم میرسه اوکی آقا این چیزی که گفتم مورد تاییدتونه خب حالا عالی نوشتن بله حالا اینجا چه جوری میشه همچین شبکه‌ای ساخت من کاری به اولش ندارم که آخرش می‌خوام دو تا لاس بهم بده مثلاً یه لاس کراس آنتروپی میخوام یه لاس رگریشن میخوام ولی آخر ولی اگه این کارو بکنید اینجا این کارو می‌کنید می‌نویسید که خدمتتون عارضم که اینپوتشو مثلاً دادید فلان و فلان و فلان میتونستید بیرون هم تعریف بکنید که اینا کانکت بشن اول با نام اینپوتس یا با نام علی بعد اینپوت رو بنویسید علی یا نه اینجا تعریف کنید که کانکتش کنه یعنی درجا نوشتید آقا من یه تایتل اینپوت دارم یه متغیر بادی اینپوت دارم تگز اینپوت دارم اینا رو با همدیگه بچسبون یه لیست ازشون درست کن اینا کل اینپوتای منن اوت پوت های منم چی اند پرایوریتی پرده مثلاً پرایتی پردیکشن مثلا اینکه فرض کنیم سگ گربه است یا نیست یا این

کلمات بعد دیپارتمنت پرده خب دو تا خروجی می‌خواد بهم بده حالا این چه جوری روش لاست تعریف می‌کنم تا اینجا مدل تعریف کردم ولی که روش لاست تعریف کنم اینجوریه می‌نویسید لاس مساوی با کروشه باز بسته یه دونه می‌نویسید لاس اول یه دونه می‌نویسید لاس دوم خب و خدمتتون عارضم که این به ترتیب میره رو به اون ترتیبی که شما گفتید میره چیکار میکنه لاس رو پیاده میکنه در ضمن نوشتید لاسش هم یک و دو دهممه یعنی یک برابر اولی دو دهم لاس دومی رو به عنوان لاس نهایی در نظر بگیر حالا اولی و باینری کراس تراپی زده دومی رو کتگوریکال کراس انتروپی زده و اینا از اون جنس های دو تا سبده بوده مثلاً می‌خواسته ببینه آیا تو این عکس یا تو این نوشته فلان کلمه هست یا نیست بله یا خیر بعدی حالا اگر هست برو نگاه بکن مثلاً چی کدومشه مثلاً پرتقال سیب فلان الی آخر و نحوه های دیگه نوشتن هم

مثلاً می‌تونید بنویسید لاس مصاحبه با کوروش باز بسته داخلش اسمم حتی براش بزارید بعد بنویسید کراس لاس فلان و تو این باز چیزه این یارو آکولاد باز بسته من هیچی ندارم گفتم که روش اشتباه گفتم این ضریب وزن دارشم بذارید و اینجوری هم چیکار کنید تعریف بکنید پس شما میتونید هی ظرف تعیین کنید یعنی ایکس ایکس یک ایکس دو بلاک اوت پوت فلان تهش باید یه مدل براش تعریف کنید بگید ورودیش چیه خروجیش چیه بعد وقتی هم می‌خواید که کامپایلش بکنید باید لاس رو براش تعریف کنید که مثلاً اینجا یه لاست داره عادی خودمه ولی اون رفتم بالاتر تو اون مثال یارو نشونتون دادم زمانی که می‌خواید اینجا لاس رو بزنید مثلاً اینجا برای این مسئله فقط کتپی بوده اون مسئله بالایی که بهتون نشون دادم چی بوده دوگانه بوده و اینم خیلی راحت حالا خیلی راحت که نه ولی منظور با یه مسیر را دست میشه چیکار کرد زد بچه‌ها در مورد این دیگه صحبتی نمی‌کنم ولی با شما حتی شما می‌تونید sرد لیرز داشته باشید مثلاً یه لیری داشته باشید یه جاست یه لیر دیگه پایینه می‌خواید اگه دبلیو این تغییر کرد w دومی هم

چیزی میزنید بعد مثلاً یه شبکه دارید عین خودشو می‌خواید پایین کپی کنید بعد می‌خواید به محضی که یکی از این دو تا یکی از دبلیوهاش آپدیت شد دومی هم مثل این دقیقاً آپدیت لیرز خب و بماند به اینکه ایناشم به شما واگذار می‌کنیم فعلاً که شما لاسین ها رو میتونید تابع خودتون تعریف بکنید یعنی شما بگید لاسم چی باشد و هی برای خودتون فرمول بزارید و تابع تعریف کنید پس اینم به خاطر بسپارید من اینم در قالب یه کد زدم ولی دیگه به نظرم ارزش داره بارگذاری کنم براتون یا نه توی فانکشنال ای پی آی چیز خدمتتون عرضم کراس اگزپل توی رزنت و اگزپل بالاییش در مورد الsmش ببینید به شما کاملاً دید میده که چجوری میتونید یک شبکه داشته باشید هی برای خودش چیز بشه به اصطلاح باز بشه بسته بشه خب یه چند تا شاخه بشه دوباره باز بشه دوباره به همدیگه کانکت بشه یا اد بشه یا مالتیپلای بشه و اینا چیزایی

مورد دومی بود که می‌خواستم خدمتتون بگم مورد سوم پایانی صحبت‌هام که می‌خواستم بگم اون کدی بود که اون روز ران کردیم براتون بارگذاری کردم شاید علاقه داشته باشید رو لپ تاپاتون برید ما همه این ابزارهای دیپ لرنینگ رو داریم بچه ها میگیم که چیکار کنیم خدمتتون عارضم بتونیم در نهایت مثلاً رو ربات‌ها پیاده کنیم دیگه خب بعد فرض کنید که من اون کدی که بهتون دادممو حالا برم توش فعلا یه لحظه کد سیr خب تو این فولدر میدم بچه دستی میارم ببینید من یه همچین فولدر رری رو براتون گذاشتم خب این نیستلا کم شما باید بازش بکنید توش ۱۰ تا ویو صفر تا نه اینو برای بعدا که حالا کامپیوترتون عدد و دید بگه ولی یه مشکلی که برخوردیم تازه متوجه شدم روی لینوکس کار کرد رو ویندوز کار نکرد شما این تیکشو بیخیال شده بود بهتون میگم چجوری بیخیال شید یه چیز دارم در واقع فایلی به

اینیت دات پای دارم خب که این فایلی که شما باید رانش کنید فقط من بازشم می‌کنم بهتون بگم توش داره چی میگذره که شما اگه می‌خواستید تغییر بدید چیکار باید بکنید بچه‌ها تو این شما فایل به شکل خیلی ساده یاد می‌گیرید با یک در واقع وایل ساده داده از ویدئو وب کمتون یا هر وبکمی که به عنوان usb بزنید به کامپیوترتون بخونید که با این چند خط ساده کپی پیست کنید میشه این اتفاق بیفته خب اما این چیکار میکنه ما یه بار اول کد رو ران بکنیم من پایتون رو نصب کردم رو کامپیوترم پسم بهش دادم پایتون هر جا من تو cmd بهت گفتم بشناس اسم فایله هم اینت دات پای تو اون فولد هم هستم پایتون پای بکنم این کار برام میکنه که خب میره یکم فکر میکنه شما ممکنه بار اول بزنید یه سری ارور بهتون بده اگر ارور داد احتمالاً اروره برای اینه که شما یه سری از لای ها رو نصب نکردید دستور پی آی پی فاصله اینستال فاصله اون لایبری که ارور داده بزنید براتون نصبش می‌کنه مثلاً باید به اینترنت هم وصل

مثلا اگه بار اول نصب کنید کراس نداری open cv ندارید مثلاً می‌نویسید pip فاصله اینستال فاصله کراس اینتر میزنید کراس رو میره براتون نصب میکنه بعد یه بار دیگه رام میکنید باز ارور می‌ده می‌بینین این دفعه تنسور فلو ندارید اوپن سی ندارید اونا رو یکی یکی ران بکنید اوکی این میاد بالا خب این کده یه بار دیگه میگم جلسه قبلی هم گفتم چیکار میکنه اول داده از وب کم من داره میگیره یه بخش مستطیل سبز رنگ براش گذاشتم که این دست منه خودم بهش گفتم این مستطیل اد کن حالا کجا بهش گفتم یادتونه تو کدهای اوپن سی آموزشش براتون گذاشته بودم چجوری روی یه عکسی مستطیل رنگی بکشید و بهش گفتم حدستو بگو چه عددی داری میشناسی ما البته یه ناشی بازی هم دروردیم مثلاً نگفتم که یه ترشولد هم بزار مثل الان این عکس داخل چیز رو داره میاره اینجا انداخته خب گفتم برو اولاً چیکارش کن این ببرش توی توی پنجره جدا نشونش بده به نام آر او آی یا ریجن آف اینترست و سیاه و سفیدش کن حتی گری هم نه یعنی با یه دستور میزنم اول از رنگی گ بشه از گری سیاه و

حالا به خاطر نورپردازی‌های محیط ممکنه که درست حسابی نشناسه من اگه مثلاً ببندمش ممکنه شناساییش یکم بهتر بدتر شه و گفتم برو اینو بده این داده‌های اینو ۲۸ در ۲۸ کن بده به شبکه مدلی که توی چیز داده بودم سیو کرده بودید مدل دات اچ فایو رو سیو میکردید توی کدهاتون برو ببین اینو بهش بدید فوروارد چی بهتون میده مثلا ما این عد رو مثلاً بهش می‌دم حالا ببینم میشناسه یا نه خب این الان نورپردازی ما جوریه که شما چیز خوبی نمی‌بینید اگر مثلا من یک بخوابونمش که نور بک گراند بگیره این احتمالاً سه رو بهتر نشون میده بعد سه هم شناس شناخت اون سه که سمت چپ سیاه و سفید دارید میبینید اون عکسی که من بهش گفتم برو کادر سبز رنگ و سیاه و سفید کن اون سه سبزی که بالای کادر سبز رنگم رو عکس اصلی میبینید اون عددی که اون تشخیص داده حالا من میتونم ترشولد بذارم اگه بگم از یه عددی کمتر شد اصلا نان بزار هیچک نیست و پله های

E:\courses\LangChain Project\main root\data\SCR_Session12_transcript_part3.txt

کجای تصویر دورش لوکالایز کن کادر بیار و فلان و اینا که حالا تئوریاشو بهتون گفتیم اما بریم تو کده داره چه اتفاقی میفته این کده بچه‌ها این نمونه باشه جلوتون بعداً خواستید یه بازی ساده است دیگه با وب کم کامپیوترتون لپ تاپتون از این کارا بکنید یه مشتی چیزی باید ایمپورت کنید مهم‌ترینش اوپن سیویه که ما قبلاً بهتون گفته بودیم ایمپورت سی ویتو که باید نصب بکنید رو کامپیوتر خودتون اینا رو دیگه کلپ نکنید چون اگه بخواد ران شه فکر کنم میره رو کامپیوتر ایران میشه که اون برادرون دارید شما ازش استفاده می‌کنید دیگه شما نمیبینید این اگه اون دوربینی داشته باشه میره بهش وصل میشه طبیعتاً اینا رو رو کامپیوتر خودتون بزنید خدمتتون عارضم که این دستور کمرا مساوی با cb2. کپچر پرانتز باز و بسته صفر عموماً میره از چیز داده میگیره میریزه توی چیزی به نام کمرا میره از یاروتون بگید وب کمتون داده میگیره اگه وبک های دیگه زدید شمارش ببرید بالا مثلا وب کم یه وبکم هم یو اس بی زدید مث

این ۲۵۰ بچه‌ها خط ۱۷ رو برای خودتون یه جا نوت برداری کنید خط ۱۷ رو احتمالاً شما باید عوض بکنید اگه لازم شد چون ۲۵۰ این کادر است خب و اگر کوچکتر بزرگترش کنید کادر سبزه کوچکتر بزرگتر میشه یعنی اون ریجن آف اینترستتون دوست دارید مربع چند در چند باشد خب این عدده رو شما بعضاً باید تغییر بدید خط ۱۷ بعد میایم یه سری مارجین گذاشتم که از عکس مربع رو از کجا بکشه تا کجا بالا پایینش اینا رو تعیین کردم و یادتون باشه دستور ر رکتنگل چیز میگرفت دیگه گوشه بالا سمت چپ گوشه پایین سمت راست ایکس و وای رو می‌گرفت و می‌کشید حالا میرسیم بهش خب چگونه داده بگیرم بچه ها ویدیو چیه ویدیو غیر از اینه مگه هی داره یه سری عکس پشت سر هم گرفته میشه مثلاً وید ۳۰ فریم ریت یعنی تو یک ثانیه ۳۰ بار عکس داره پشت سر هم براتون میاد این دستوره برای شما میتونه یکی یکی اون عکس ها رو جدا کنه و ترو تا زمانی که کد

مشکلی بر نخوردی فریم مساوی با کمرا دات رید پرانتز باز بسته بکن این قبلشم بزنید خب اینو می‌ریزه تک تک عکس‌هایی که از هر فریم میاد و می‌ریزه براتون توی متغیر به نام فریم بعد فریمو گفتم ریسایز کن مثلا به اون چیزی که من می‌خوام حالا اگه لازم شد فیلیپش بکن نکن مثلاً چه میدونم یه سری متغیرهاتو ویتسشم بگیر از شیپ این استخراج بکن یه ر رکتنگل برام بکش یادتونه سیv2 رکتنگل روی فریم روی عکس فریم یعنی رو آخرین فریم حالا ممکنه فریم چند بار شما تو این وسطا روش عملیات انجام داده باشید فریم و بیاد لفت و تاپ رایت و باتن یعنی گوشه چپ بالا گوشه راست پایین که بالا براش تعریف کرده بودم عددش چنده یه مستطیل سبز رنگ بکش ۰ ۲۵۵ صفر خدمتتون عارضم که بعد بیا اون کات بکن ریجست و توی تصویر جدید بهم نشون میده اون مربع کوچیک این کجا رفت این یارو این

برای اینکه اینو برام بکشه گفتم برو از فریم این درایه‌هاشو بگیر بریز توی ماتریس roi بعد گری اسکیلش کن اول از رنگی کن بعد در ضمن گریشن باینری چیز میکنه از ترشل باینری استفاده میکنه میگه آقا از یه عددی کمتر بیشتر بودی مثلا خاکستری ها رو حالا سفید ببین یا سیاه ببین من عدد ۱۵۰ رو براش گذاشتم بچه این خط ۳۸ هم باز جایی که شما باید باهاش بازی کنید یعنی بسته به اینکه نورپردازی خونتون چقدره این عدد رو کم و زیادش بکنید ببینید کی خوب میبینه این عکسو خب اگر با ترش باینری این زدید یعنی مثلاً چه میدونم حالا یکیشون اگه یکی اینو داره یکی این نداره یکیشون سفیده رو سفید سیاه رو سیاه میبینه یکی سفیدا رو سیاه سیاه رو سفید میبینه من پیش خودم فکر کردم چون الگوریتم چون ام نیست دیتا ستش اینجوری بود که عددا سفید بودن خب

عددا سفید بودن بک گراند سیاه بود منم این کارو کردم نه شناخت دور خوب منم این کارو کردم اگه اینو نمی‌زدم برعکس می‌شد خب یعنی اینجوری بود که دوئه سیاه نشون داده میشد اطرافش سفید بود و بقیه‌اش دیگه کاری نداره حالا گفتم که اون همون چیزه این چیزی که ریخته بودی توی گری به اصطلاح برو چیکارش کن ری سایزش بکن بعد ریشه اش بکن ۲۸ در ۲۸ش کن بده به شبکه پردیکتش کنه ببینیم چی بهمون میده بعد مکسشو بگیر ماکسیممشو بعد اینو برام پرینت کن یه جا تو اون فکر میکنم همون چیز ترمینال پرینت میکنه بعد اینجا یه چیزی گذاشتیم تو لینوکس کار کرد گفتیم اگه حرف جی رو زدیم عددش هم بگو مثلاً صفرشم اعلام کن یکیش هم اعلام کن ولی این یارو پلی ساونده تو ویندوز کار نکرده نمیدونم باید بگردم فرصت نکردم که چیز معادلی براش پیدا کنم شما جی نزنید هیچی فقط ببینید اون سبزه چی نوشته خدمتتون

که در ضمن لیبل تستیم که گرفتی به استرینگ تبدیلش کن با رنگ مثلاً سبز برو تو فلان جا برام رسمش کن رو شکل اصلی اینجا اینجا که صفره نوشته این خطه مال اونه تمام شد برام نشونش بده و اینو که بزنید نشونتون میده و این هم باید بذارید فکر کنم برای خود اوپن سی وی برای وقتی که از چیز استفاده میکنید آلویندوز و اینا رو باید بزارید که در نهایت چیز دیگه وقتی کد تمام میشه کلا همه رو ببنده حالا برای چی کد چجوری تمام میشه مثلا من اینجا یارو بکنم ببخشید ترمیناله کجاست بچه‌ها کجا رفت شلوغ پلوغه اینجا آها این پایین هم چیزایی دارم بالا هم دارم اینا اینجاست اینجا بیام کلیک کنم کنترل سی بزنم این داره هی چاپ میکنه چی داشته می‌دیدا خب ولی در حالی که مثلاً من باید یه تر

عدد از یه چیزی پایین‌تر بود چیزی نشون نمی‌داد خب کنترل c بزنم تمامه دیگه می‌بند همه چیو و دیگه اینم باشه براتون بارگذاری شده باهاش ور برید شما میتونید انواع بازی‌ها انجام بدید ما یه گام دیگه نزدیک‌تر شدیم به اینکه به ربات بگیم چیکار کن خب و این دفعه بچه‌ها اون آپو بود یادتونه روز اول بهمون گفت که چیز بکن بهش گفتیم بلدی این عدد رو بخونی سه رو بهش نشون دادیم و نتونست بچه این دفعه تونست خب و حالا نمیدونم ووش کجا گذاشتم بچه ها اسمشو گذاشته بودن آپ و باهوش میشود این عدد میشناسی کوچیکی گفت شنیدید یا نه خدمتتون عارضم که بچه ها یه گام دیگه مونده تو واقعیت بخواید شما این رو ربات پیاده کنید که انشالله اگه حضوری شد بهتون یاد

ارتباط از طریق راسه ربات اپریتینگ سیستم که اوکی کدهای پایتونی که زدید و چه جوری رو ربات بیارید بالا و انشالله اگه عمری باشه و خدا بخواد حضوری بشه ما حتماً این تیکشم بهتون یاد میدیم که دیگه پکیجمون یه پکیج کامل باشه که همه اینایی که توی سی ان ان و فلان و اینا یاد گرفتید و چه‌جوری توی واقعیت پیاده کنید خب خدمتتون عارضم بچه‌ها من تمام حرفایی که لازم بودو زدم برای این ماجرا هم اون در واقع پیپر هم حالا از آقای علیزاده خواسته بودم برام ایمیل بکنه که فکر می‌کنم ایمیل کرد اون پیپر رو بهتون نشون بدم پوز استشن و یارو اسمش اکشن ریکاگنیشن خب یکی از پیپر ها این پیپر اکشن ریکاگنیشن خب یعنی از پوزیشن استفاده کرده بعد میگه که من عکسمو که بهش میدم

الگوریتم پوز استیمیشن اون به من به جای این عکست که موقعیت مفاصل بدنمو میده حالا نمی‌دونم چند تاست خب و مثلاً موقعیت گردن شونه‌ها دست چپ راست فلان فلانو میده بعد دو تا پارامتر محاسبه می‌کنه به نام‌های تتا و مگنتیود حالا اینا نمادهایی زاویه مفاصل و بین اعضای بدن و همینطور مثلاً احتمالاً ایکس وای زداشون باشه بعد اینا رو در واقع حساب کتاب های که ازشون انجام داد به فرم ماتریس در میاره ماتریس‌ها رو می‌زنه تنگه هم سه لایه و یه عکس رنگی میشه حالا یه عکس تقلبی یا یه حالا نمی‌دونم چی بهش بگیم استیت ایمیج یا سودیمیج یا عکس فیک ساخته اینو میخواد بده به شبکه cnn شبکه این عکسشو که ساخت میده به شبکه c شبکه‌ش هم نوشته کاموای سه در سه بزن ماکس بزن ریلو بزن و و و وشم فلان فلان ماکس سافت مکس و بهم بگو که حالا این آدم داشته چیکار میکرده وقتی که یه ویدئو براش میومده اول با اون الگوریتمیشن این موقعیت ها در میومده از از هر حرکتی این عکس استخراج میشه این عکس رنگیه که

شبکه ترینش کرده که اینا نشستن اینا راه رفتن اینا آب خوردنه و اینا چیزایی که ما تو مکانیک خیلی می‌تونه به کارمون بیاد هم توی آنالیز حرکت‌های آدم‌ها توی ورزش‌ها تو پارکور توی نمی‌دونم چیز توی بیماری‌ها مثلاً می‌خواید فرق راه رفتن یه آدمی که مبتلا به فلج مغزیه یا مثلاً مبتلا به درباره سالمه رو آنالیز بکنید و الی آخر یعنی اینا حقه‌هایی که می‌شه زد و امیدواریم مطالبی که گفته شد به عنوان اپلیکیشن مفید فایده‌تون بوده باشه من تمام مطالبی که میخواستم بگم رو گفتم خدمتتون آرمین در خدمت خواهم بود برای هرگونه سوالی ارز دیگه باهاتون نیست امروز خیلی ممنون بابت همراهی‌تون خیلی ممنون که زحمت کشیدید تمرین های سری اول ما را انجام دادید و انشالله منتظر تمرین سری دوم باشید که قرار است شبکه های کانولوشن استفاده کنید من عرضی ندارم اگر سوالی دارید در خدمتم اگرنه خوش و خرم باشید عرض سلامتی موفقیت می‌کنم طاعاتتون قبول خدا یار و نگهدار

E:\courses\LangChain Project\main root\data\SCR_Session13_transcript_part1.txt

به نام خدا دوستان عزیز ارجمند درس رباتیک اجتماعی شناختی عرض سلام و ادب و احترام به جلسه خوش یمن سیزدهم خوش آمدید خیلی ممنون بابت حضور تشریف فرماییتون مرسی امیرعلی گفتن که آره یه جور دیگه‌ای بود خیلی ممنونم آره این چیزایی که برای خودم سواله و برای شما هم خوبه سوال باشه که حس کنید عرض به حضور شما چه پاسخ های بهش میدید آره حالا آقای محمودزاده ایمیل کنید و چیز کنیم دیگه ما بریم سر ادامه ماجرای خودمون تو درس خودمون خب خدمت شما عارضم که ما توی جلسات گذشته در مورد شبکه های عصبی ام الپی و کام نتورک ها باهاشون آشنا شدیم و کار کردیم و امیدوارم

جدید خوب یاد گرفته باشید دیدیم که چه ابزارهای خوف و قوی در اختیارمون قرار میگیره اما همچنان می‌خواهیم این مسیر و ماجراجوییمون ادامه بدیم من یکی دو تا انانسمنت بدم خدمتتون یکی اینکه ما برای پروژه درس یه خواهشی ازتون داریم تا ۱۵ش اردیبهشت سعی کنید یه درختی از عنوان موضوعتون رو بهم بگید فقط مطمئن باشم که بچه ها به فکر افتادن ولی اگر نهایی نبود عیب نداره و سعی میکنیم تا ۳۰ اردیبهشت اینا دیگه با همدیگه نهاییش کنیم بچه هایی که الان دانشجوی ارشد یا دکترا هستند حالا میتونن از بخشی از پایان نامه هاشون اگر جا داره و مرتبط برای پروژه درسی ما استفاده کنند اما حتما حتما اجازه استاد محترم راهنماشون رو بگیرند و من پیشنهادم اینه که اگر میخوین تو حوزه تز تز حالا ارشد دکتراتون کار کنید حتما یه ایمیل به بنده بزنید حالا بعد اینکه شفاهی به استادتون مطرح کردید به استاد

محترمتونم سی سی کنید که من مثلاً قراره بخشی از پروژمو در قالب این درس انجام بدم و خب می‌خوام فقط اساتید راهنماتون موافق باشند و مشکلی نداشته باشند این ماجرایی که اول ازتون می‌خوام و ما از این هفته سه شنبه ها ساعت ۴:۳۰ به بعد برای بچه‌ها آزمایشگاه رباتیک اجتماعی شناختی در واقع جلسات گروهی‌مونو ادامه میدیم بچه هایی که تو گروه ما حالا پایان نامه ارشد دکترا انجام میدن یا حتی پروژه کارشناسی دارند کارآموزند و از الان به بعد قراره که تک نفره هر هفته انجام بشه آرمین یه لحظه نوشتید یک نفر قاطی کردم آره پروژه ها تک نفری و خب خدمتتون عارضم که یک هفته ما مقاله خوانی داریم یعنی قبلش یه سری از بچه ها یه سری مقاله تعیین میکن دو سه نفر تو حوزه های رباتیک اجتماعی شناختی بیشتر هم مقالات روز

مثلاً ۲۰۲۰ به بعد عموماً و یک هفته هم ریسرچ پراگرس یا پیشرفته کار بچه‌ها رو خواهیم داشت و خب این هفته هفته مقاله خوانی مونه که حالا در قالب ژورنال کلاب دوستان میان مقالاتشونو ارائه میدن برای مقالات دیگران برای سایر دوستاشون ارائه میدن تا بقیه هم به روز باشن خب با گفتن این اتفاقات اجازه بدید که ما بریم و درس خودمون رو شروع بکنیم اگه موردی هست دغدغه‌ای هست بفرمایید اگر نه که بریم شروع بکنیم من تلاشم میکنم بچه ها در اولین فرصت حالا امروز فردا تمرین سری دومتون بارگذاری کنم یک کار اجرایی بسیار سنگینی از طرف دانشگاه به بنده داده شده که باید تو سه هفته آینده انجامش بدم بخاطر همین کلا تحت شعاع قرار گرفته بخشی از عملکرد و زندگی ما نمیدونم عیب نداره اگه تاخیر علی خورده اونو نگران نباش آپلود اگه

اوکیه اما اگر آپلود نشده برام ایمیل کنید لطفاً ولی اگه آپلود شده شما به تاخیرش کاری نداشته باشید سلامت باشید خب بریم ما سر کارمون بچه‌ها استاتیک امروز کوییز داشتن خب خدمت شما عارضم که ما همچنان توی فصل سوم هستیم اما با یک زیر موضوع جدید به نام ریکنت نورال نتورک ها که با آرن ها اونا رو نامگذاری میکنیم ما قراره تو این فصل مثل فصل قبل اول آشنا بشیم اصلا آرنا چی هستند چه کاربردهایی دارند چه کاربردهای جذابی دارند و حتی کاربردهای فنسی و عجیب غریب و جالب چه جوری ساخته میشن المان های پایه ش چیه معماری های متداول ش چیه شبکه های ال اس تی ام چی هستند و چرا باید بیان جای آرنا سنتی رو بگیرند و در نهایت پایان بخش صحبت‌هامون هم این خواهد بود که چگونه میشه این شبکه ها را ترین

اجرا کرد و خب طبیعتاً هم یه بخش پیاده سازی کد و آشنا شدن با یک مسئله واقعی هم در انتهای این جلسات آرن خواهیم داشت ما چند جلسه‌ای روش هستیم زیر سه جلسه نخواهد بود و انشالله حداکثر هم چهار جلسه و دیگه بسته به اینکه حالا چقدر بتونیم بریم جلو من یه سری چیزا تو ذهنمه اگه برسیم بگیم فوق العاده جذابه ولی نمیدونم چقدر فرصت میکنیم مثل همیشه تشکر میکنم از همه کسانی که حالا سبب شدن یا من این بخش ها را یاد بگیرم یا از نوشته ها و جزوه هاشون استفاده بکنم افرادی که اینجا میتونید ببینید حالا اینجا آقای الکساندر امینی از ام ای تی هم میبینیم من اگر اشتباه نکنم پنجشنبه هفته که میاد دفاع داره دفاع دکتراشه اگه اشتباه نکنم همچین ایمیلی برام اومده چون من یه تو فرو تو سیسیل ام آی تی در واقع عضوم و خب اطلاعیه دفاع و یه سری از ارائه هاش برام

و اینم جالب بود حالا تو زوم و احتمالاً می‌تونید به صورت مجازی شرکت کنید و ببینید فصل گذشته در مورد شبکه‌های کانولوشن صحبت کردیم شبکه‌های بسیار پرطرفدار بسیار پرکاربرد که نه فقط در امور مربوط به تصویر بلکه حتی به صورت در واقع تقلبی طوری توی پردازش ویدئوها هم می‌تونستن به ما کمک کنن کسی ایده‌ای داشت چجوری این کارو می‌کردن من چه میتونستم یه ویدیو رو بدم آنالیز بکنه مثلا بهم بگه که چه میدونم یه آدمی که تو اون فیلم هست داره راه میره میشینه یا آب میخوره الی آخر کسی ایده داره یا یادش موند که چجوری میشد با سی ان ان این کار کرد قراره مثلاً فرض کنید من یک فیلم ۱۰ ثانیه ۲۰ ثانیه خو بدم این فیلم حاوی چی بود یه سری فریم بود باریکلا آقای قدمی فریم ها را تو عمق به همدیگه می‌چسبونیم حالا میتونستیم سیاه و سفیدشون بکنیم

بسته به اینکه اون کاری که ما داریم انجام میدیم خب انقدی دیتا ست داریم یا رنگی بودن توش واقعاً مهمه یا نه با سیاه و سفید کارمون میشه اگه میشد فریم‌ها رو سیاه و سفید می‌کردیم تو عمق به همدیگه این عکس‌ها رو می‌چسبونیم با یه ترتیب توالی خاصی که ما مد نظرمونه مثلاً به ترتیب زمانی هرچی عمق بیشتر میشد یعنی زمان بیشتری داشت میگذشت و اون حالا ورودی رو به شبکه سی ان ان میدادیم تا چی تا کار بره برای ما انجام بده و کلسیفیکیشن رو برای ما انجام بده ولی یه سری حالا ماجرا داره که توی شروع بهش میپردازیم شبکه های ام ال پی خوب بودن سی ان ان ها خیلی خوب بودن ولی یادمون باشه که اینا یه سری محدودیت های جدی داشتند اولین محدودیتشون که تو همین مثالی که من زدم و علی قدمی هم حالا توضیحاتش داد اینه که توی اینپوتشون یه بردار یا حالا ماتریس با ابعاد ثابت می‌گرفتن ها مثلا یه ایمیجی می‌گرفت که ابعادش از قبل تعیین شده بود

شبکه‌ای که شما برای ام نیست فرض کنید ترین کردید فرزند ورودی‌هاش ۲۸ در ۲۸ یا ۳۲ در ۳۲ بود و چاره‌ای ندارید هر عکسی که بخواید بعداً به اون شبکه بدید باید چیکار کنید وارپش کنید و این منظورم اینه که مثلاً یه عکس بکشید تو پاورپوینت از بغل بکشید یا بزرگش کنید یا گوشه‌شو بگیرید بکشید اینقدری کوچیک بزرگش کنید که دقیقاً همون سایز بشه و بعدش بدید به شبکه تو ها پس این یه جور محدودیته تا بعدش بتونیم حالا خروجی رو بگیریم که احتمالاتی بود روی کلاس های مختلف و خوب شبکه های عصبی بازگشتی یا ریک نورال نتورک ها شبکه هایی بودند که شبکه هایی هستند که میتونن چیکار کنن بیان رو سیکوئنس یا دنباله ای از بردارها برای ما کار کنه ها حالا این دنباله یا داده های ترتیبی سیکوئنشالن یا سری های زمانی یا تایم سی فقط جهت

اطلاعتون بگم سریال زمانی معلومه دیگه داده‌هایی که هی تو زمان‌های مختلف اتفاق می‌افتند و اتفاقاً تحولات زمانی اون اتفاقی که ما داریم بررسی می‌کنیم کاملاً برای ما مهمه مثل حرکت مثلاً یک جسم صلح حالا مرکز جرمش حرکت دورانیش الی آخر که در هر لحظه ایکس و وای و تتاش چنده و و و هی بریم جلو داده‌های ترتیبی لزوماً بحث زمان توشون نیست ولی ترتیب توشون مهمه مثلاً یه متن همین همین جمله که اینجا نوشتم شبکه عصبی بازگشتی بچه این کاملا فرق میکنه با اینکه عصبی اول بیاد یا بازگشتی چهارم بیاد و الی آخر یعنی کاملاً ترتیب اینا مهمه ها پس شبکه‌های عصبی ریکنت یا بازگشتی قراره برای ما چیکار کنن سری های زمانی یا داده های ترتیبی و هندل کنن مگه همچین چیزایی خیلی چیزهای مهمی اند بله ما آنالیزهای حرکت‌هامون و خیلی از جاها داده های که از سنسورها می‌گیریم سنسورهای دیجیتال به خصوص داده های گسسته مبتنی

آنالیز بکنیم در نهایت چیکار کنیم یه مدل استخراج بکنیم یادمون باشه که شبکه‌های عصبی قرار بود هرگونه تابعی رو در دنیا برای ما تا هر دقتی که می‌خوایم تقریب بزنند و خب اینا می‌تونن ناشی از خیلی چیزا باشن حالا مثال‌هاشو خدمتتون خب خدمت شما عرض کنم که سیکوئنس هایی که حرف داریم میزنیم یا در واقع داده های ترتیبی یا سری های زمانی هم میتونه تو ورودی اتفاق بیفته یعنی ورودی یک در واقع داده ترتیبی یا سری زمانی باشه میتونه تو خروجی اتفاق بیفته و میتونه تو هر دو اتفاق بیفته و در ضمن میبینیم که شبکه های عصبی ریکنت جوری هستند که دیگه نیازی نیست شما لزوما بخواید چیکار کنید بردارهای با سایز ثابت بهش بدید برخلاف شبکه های چی امlp و cnn شبکه های عصبی بازگشتی یه جورایی حالا همونطور که خواهیم دید توسعه یافته ام ال پی ها هستند ولی

یه سری چیزهای اضافه در دارن یه سری لوپ‌هایی دارن که فیدبک‌هایی از در واقع لایه میانی یا مخفی به خودشونه و برخلاف شبکه‌های عصبی رو به جلو یال‌ها می‌تونن تشکیل دور بدن ما قبلاً گفتیم که شبکه‌های سیکونشال فقط اینجوری بودن که هر لایه به لایه قبلیش فقط یعنی از لایه خروجی لایه قبلی میشد ورودی لایه بعدی و الی آخر این مسیر ادامه پیدا می‌کرد ولی کسی به لایه قبلیش یا به خودش خبری نمی‌داد در حالی که کاملاً اینجا می‌تونه این اتفاق نقض بشه به دلیل داشتن این یال های بازگشتی توی ساختار خودشون یه قدرت حافظه یا به خاطررسپاری به وجود به دست میارن که حالا خواهیم دید اینا رو و سه تا از سوپر معروف ترین اسم هاشون شبکه های آر ان سنتی شبکه های ال اس تی ام و شبکه های جی آر یو هستند که اینها سه تا از سلبریتی های خانواده شبکه های بازگشتی اند هدف اصلی ما حذف به کارگیری شبکه های بازگشتی دو تا ماجراست یا مدل سازی یه سری اتفاق روی داده های ترتیبی متوالی یا داینامیک و

و یا پیش بینی لحظه بد یا لحظات بده به خاطر همین این مدل‌ها می‌تونن براتون مدل‌های تولیدی باشند یعنی می‌تونن بعداً یه چیزایی رو براتون تولید کنند ها حالا بریم ببینیم اپلیکیشن‌هاشون چی‌اند شاید قبل از اینکه بخوایم مثلاً ورود بکنیم یه بار مرور بکنیم ببینیم اینا کجاها کاربرد دارن کجاها شماها دیدید و کجاها شاید اصلا بهش فکر نکرده باشید تشخیص گفتار از سیگنال گفتار اینه که وقتی من دارم حرف میزنم یه سامانه خودکار رباتیک بیاد چیکار کنه صحبت های منو به نوشتهار تبدیل کنه ها یا حتی یک سری کارهای دیگه هم ازش بکنه آنالیزهای حرکت باز شناخت کنش اکشن ریکشن یا دنبال کردن اشیا از تصاویر پشت سر هم توی ویدئوها اینا کارهای چی میتونه جزء تسک های شبکه عصبی بازگشتی باشه چرا چون ویدئو یه مجموعه از داده های پشت سر هم و خب این اتفاق میخوره میفته که شما میتونید یه سری حرکت و در واقع چیکار

آنالیز بکنید و دنبال کنید کلاسیفای کنید و الی آخر یا دقتشو بگید چقدر داره خوب اجرا میشه ترجمه یک متن از یک زبان به زبان دیگه کاری که گوگل ترنسلیت داره می‌کنه مبتنی بر شبکه‌های چیه یعنی شما یه متن از انگلیسی میدید فارسی براتون می‌کنه فارسی می‌دید فرانسوی تحویلتون میده و الی آخر تبدیل گفتار به متن تایپ‌های گفتاری یا فرمان‌های صوتی به یه سری سامانه‌ها توی خونه ها مثل الکسا و الی آخر اینا همه میتونن چی جزئی از در واقع شبکه های آرنتشن و اینجوری ترین شده باش و الی آخر یعنی اینکه شما یک گفتار دارید به متن تبدیلش کنید یا بالعکس یه متن رو دارید و یه ربات از رو متن برای شما بخونه مثلاً ما بارها میشه که یه سری دیالوگ یه ربات میدیم و اون باید بتونه از روش برای ما بخونه و مثلاً امروز باید بگه سلام حالا شما چطوره فردا باید یه چیز دیگه بگه تبدیل دست نوشته ها به متون الکترونیکی که شما یه چیز کاغذی نوشتید

بعد یه چیزی اسکنش کنه و اینو کامپیوتریش کنه بچه‌ها کیا موبایل‌هاشون حالا دست بالا بد نیست یا موبایل‌هاشون از اونایی داره بخش‌هایی داره که خدمتتون عارضم وقتی شما یه چیزی رو با مدادش یا با دستش می‌نویسید اون مثلاً به حروف مورد نظر تبدیلش می‌کنه مثلاً اسو بنویسید اون اس چیزو می‌نویسه تایپی رو براتون می‌نویسه حالا کسی هست دست بالا بگیره می‌خوام ببینم اصلاً با این مفهوم ماجرا روبرو بودید یا نه خیلی از موبایللا اینا رو دارن شما مثلاً الو مینویسید ام رو مینویسید و الی آخر این اپ های هستند یا تو خود موبایل که اینو به نوشته ام تبدیل میکنه یعنی شما به جای که اس ام اس رو دکمه دکمه بزنید تایپ کنید میتونید با قلم با قلمتون بنویسید و این کارو بکنید هیچکی نداره بچه‌ها دست بالا اگه تو این گروهمون هستید خب خب آرمین مثل که باز داره حالا این چیز خیلی متداولی بچه ها این عکس دقت کنید به این عکسه دقت کنید این عکس وسطی که

این از اون در واقع نوع اپ‌ها هستش که شما میتونید یا نوشته یا حتی فرمولاسیون‌های ریاضی بنویسید و اون برای شما تایپش کنه خب و این کارهایی که ما با دست خیلی راحت انتگرال‌ها رو انجام میدیم اما به محض که به تایپش میرسه کلی اذیت میشیم خدمتتون عارضم دیگه چه کاربردهایی داره شهر نویسی عکس یعنی یه عکسو من به شما بدم شما بگید تو اون عکس چه اتفاقی افتاده مثلاً چی نمی‌دونم هواپیمایی در حال حرکت به سمت مثلاً شرق است نمیدونم خورشید در حال تابیده است و الی آخر و یا یه پله خفن‌تر گزارش فوتبال مثلاً فرض کنید که شما میخوید یه ربات ترین کنید که برای شما یه فوتبال رو گزارش کنه ها فیلم ربات فیلم فوتبال رو قراره ببینه و اینا رو به شما بده آره آقای حسین نژاد بله ویندوز اینا رو داره تایید و تشخیص هویت افراد از روی صدا و یا نحوه امضاشون مثلاً فرض کنید که صدای یه نفر رو بشناسید

این کی بود یا تایید کنید که فلانی بود یا نبود و یا حتی دینامیک امضاشو ببینید یعنی نه فقط لحظه آخر امضاشو ببینید از لحظه‌ای که شروع می‌کنه امضا کردن تا آخرشو ببینید و بگید این امضا امضای اون بنده خدا هست یا نیست اینا همه می‌تونن کاربردهای شبکه‌های یا بازگشتی باشن تشخیص موضوع متن از واژه‌های موجود در اون متن یا دسته‌بندی اخبار مثلاً فرض کنید که یه سری اخبار دارید بعد می‌خواید بدید ماشین اتومات اینا رو براتون سیاسی فرهنگی هنری ورزشی چیکار کنه لیبل بزنه پیش‌بینی کلاً نرخ ارز طلا شاخص سهام بر حسب زمان که شما اتفاقات چند روز اخیر رو دارید یا چند ماه اخیر یا حتی چند سال اخیر و چی میخوید فردا و فرداهای دیگر رو پیش بینی بکنید پیش‌بینی بارش بارون تو روزهای متوالی پیش‌بینی مقدار مصرف آب و و و و اینا همه اتفاقاتی که میشه با شبکه آرنت بررسی ش کرد چند تا مثال با هم ببینیم یکی از جذاب‌ترین مثال‌ها

ما مکانیکی‌ها حوزه بازشناخت کنش یا اکشن ریکاگنیشن که ما دوست داریم اتفاقاتو چیکار کنیم شناسایی کنیم که به صورت دینامیک دارن اتفاق می‌افتد مثلاً فرض کنید شما شبکه‌ای دارید که حالا یا با تلفیق آرنا چیکار می‌کنه میاد به شما میگه که مثلاً فلان بازیکن حالا والیبال در حال چه کاریه این در حال پریدن اون در حال نشستن در حال پاس دادن و الی آخر این چیزایی که با شبکه آر شدنیه یا اینکه یه متن رو ببینه ماشین بگه در مورد فوتبال بود یا بسکتبال بود یا حالا هر چیز دیگه لیبل بده یا اینکه مثلاً شما یه خریدی کردید از دیجی کالا شروع کردید توصیف نوشتن اینکه ماشین بیاد خوب یا بد یا حالا بی نظر و در واقع شناسایی بکنه مثلاً نوشته این خرید لپتاپ کردم فوق العاده است ماشین باید بگه اوکی مثلا یک من این مثلاً لپ تاپ رو پنج ماه دارم فلان فلان و الی آخر مثلاً یه سری چیز از همه نظر عالی با کیفیت فلان این باز دوباره باید بهش بگه این عالیه یک بعد یه جایی مث میگه نه مشکلاتش کارت گرافیکشه میگه نه

ولی آخر و در کل بتونه چیکار کنه دسته‌بندی کنه ها و اینجا حالا داده‌های ترتیبی شما همین چیزان متنی که اینجا می‌بینید و در ضمن می‌بینید که اصلاً هم تعدادشون با همدیگه یکی نیست یعنی یکی دو کلمه فقط نوشته یکی چی پنج کلمه یکی ده‌ها کلمه و شبکه عصبی شما باید بتونه این کارو در بیاره اما اپلیکیشن عجیب غریب تر و فانتزی‌تر اونا کارایی بوده که کارپتی انجام داده و مثلاً فرض کنید که یه شبکه ترند کرده که بتونه یه متن فیک ویکی پدیا بسازه یعنی صد مگ مثلا داده های ویکی پدیا رو بهش داده شبکه ترین شده و بعدش تونستی متن فیک جنریت کنه ها یا فرض کنید که فکر میکنم شنیده باشید توی اخبار که مثلا اوپن ای آی بود اگر اشتباه نکنم متنی رو تولید کرده بود که مثلاً گاردین اینو چاپ کرده بود و با وجود که متن فیک بوده خدمتتون عارضم که باز یکی از کارهای دیگه که کرده اینه که متن های لت

چیز بسازه فیک بسازه بعد مثلاً لتکس خیلی شبیه پایان نامه یا مقاله است لم‌های ریاضی تو شماره داره الگو داره حتی فونت‌هاش رعایت شده و اینا کاملاً متن‌های فیکن و لزوماً معنا ندارد و چیزای دیگه‌ای هم هستن حالا باز سعی می‌کنم جلسه آینده بعضیاشو براتون بیارم و فقط اینو بدونید که همه این شبکه ها از یه سری در واقع شبکه های همه خروجی های که دیدید یا مثال های که دیدید از یه سری شبکه های عصبی ریکنت تشکیل شده که ما با اسم آر ان ها اونا رو صدا میزنیم پس به نظر میاد آر ها باید مدل های جذابی رو برای سری های زمانی تو حوزه های پردیکشن یا تخمین اونا کلسیفیکیشن طبقه بندی اونا یا سیکوئنس پردیکشن و الی آخر برای ما چیکار کنند به وجود بیارن در ضمن بعضی از کارهایی که ام ال پی ها نمیتونن انجام بدن به راحتی و اینا راحت تر براشون انجام

به خصوص جایی که ام الپیا همین قدر دانش داریم که ورودی‌هایی که می‌گیرند سایزهای فیکس و ثابتی اما آرنا لزوما این اتفاق براشون نمی‌افته واریانت‌های آرنا چیزهای جذاب و جالب این عکس رو نگاه کنید دوست دارم بهم کمک کنید چند نوع واریانت مختلف من از آرن براتون گذاشتم که میتونه این اتفاق بیفته فقط یه سری ماجرا داره خدمتتون عارضم یه سری مستطیل می‌بینید که با یه سری فلش به هم وصلن مستطیل های سبز قرمز سبز و آبی بچه ها مستطیل ها برخف اون چیزایی که توی ام ال پی یا سی ان ان دیدید ینرون نیستند اینا حاوی چند نیرونن اینا کلی گردلی نرون توشونه اوکی یه بردار می‌تونن باشن یه وکتورن اوکی پس هر مستطیل از الان به بعد توی نماد مجموعه ای از نیرون هاست و نه یه دونه نیرون خب فلش ها هم که میبینید برخلاف اون قبلی که فقط یه دبلیو تک عدد روش سوار می‌شد مثلاً یه نیرون بود بعد روی فلش می‌ نوشتیم w

واریانتی داریم به نام وان تو منی شما یه چیز بهش میدید تحویل اما چند تا چیز ازش خروجی می‌گیرید مثلاً یه سیکوئنس می‌گیرید می‌تونید برام مثال بزنید مثل چی برام بنویسید کجایی که ما یه چیز بهش میدیم اما اون وقتی میخواد خروجی بده یه سیکوئنس به من میده تحویل یعنی ورودی لزوماً سیکوئنس نیست اما خروجی باید باشه کجا بچه‌ها این اتفاق افتاد تو مثال اسلاید قبلیم گفتما کمک بگیرید بهم بگید اخبار اخبار چیکار کنه را برعکس ها اخبار دسته بندی کنه کپشن نوشتن باریکلا خانم یارنده کپشن نوشتن برای عکس شما یه عکس که بهش بدید اون بخواد توضیح بده براتون بله در این عکس چهار تا ربات میبینم دو تا مثلاً فلان می‌بینم و الی آخر شما یه عکس می‌دید اون برای شما سیکوئنس میده منی تو وان شما یه مجموعه بهش میدید یه خروجی ازش می‌گیرید مثل کدوم رامتین اینی که بگه فوتبا یا والیبال حالا اینی که شما

یه متن بهش میدید نوشته که دیروز در بازی بین پرسپولیس و استقلال فلانی کارت قرمز گرفت و فلان فلان اون باید بره پیدا بکنه با یه سری کلید واژه‌ها یه الگویی و در نهایت به شما بگه فوتبال شما دارید فوتبال می‌بینید خب و چیزای جذاب دیگه‌ای داریم به نام منی تو منی‌ها که خودش حالت‌های مختلف دارن منی تو منی‌هایی داریم که شما اجازه دارید کل داده ورودی رو ببینید بعدش شروع کنید خروجیاتونو تولید کردن کسی ایده داره برای این یا نه یعنی یه الگوی ورودی بدید قشنگ سیکوئنس بدید بعد ولی اجازه دارید تا آخرش هم ببینید بعد شروع کنید یکی یکی باریکلا مرسی فرشاد ترجمه متن همون کاری که گوگل ترنس میکنه وایمیسته شما کل متن رو بهش بدید اون تازه شروع میکنه چیکار کردن برای شما خروجی تولید کردن و در ضمن هیچ دلیلی نداره تعداد ورودی ها و تعداد خروجی ها با هم یکی باشه به خصوص تو ترجمه متننا دیدید دیگه ممکنه مثلاً یه چیزتون سه کلمه باشه تو متن تو زبان اول تو زبان ثانویتون پنج کلمه‌ای بشه یا بالعکس

یه سری منی تو منی‌هایی داریم که به محضی که یه ورودی بهش میدی اون یه خروجی تولید می‌کنه و بعضاً اتفاق می‌افته که چی حالا این خروجی رو شاید به ورودی بعدی خودش بده یا نه اینکه هر نیرون بالاخره هر لایه میان یه خروجی برای شما تولید می‌کنه بچه‌ها برای این ایده دارید کی اتفاق میفته نوشتن متن با قلم آرمین نمیدونم منظورت اینه که حالا اگر اون آره تک کلمه بدیم اونم تکی تولید کنه من چیزایی که مثلاً جذاب‌ترین یعنی واضح ترین مثالش اینه که وقتی یه ویدیو بهش میدید و انتظار دارید تو تک تک فریم ها اون چیکار کنه شما را ارزیابی کنه یادتونه من ام نیست و کد کرده بودم یه کاغذ جلوش میذاشتم اون تو هر فریمی که داشت میدید داشت یه چیزی تولید می‌کرد برای من ها اینا از اوناست و شاید فوق فوق جذاب‌ترینشون که یه مقدار پیچیدگیشون رو زیاد میکنه اما امیدوارم برسم یا

کلشو بگم یا زخمیش کنم اینه که شما یه داده ورودی بهش میدید یه مجموعه سیکونس‌های ورودی اما اون سیکوئنس خروجی تولید می‌کنه ولی نه با یه الگوی مشخص ها و خدمتتون عارضم که ممکنه لازم باشه یه سری جاها نزدیک به هم و یه سری جاها با فاصله انجام بده بچه‌ها کی ایده داره اینجا کی اتفاق میفته و کجا تو واقعیت ما اینو داریم خیلی هم به دردمون مکانیکی میخورن خانم یارندی هم میتونه جداگانه جوابشو بده در مورد کار خودش کی فکر می‌کنید اتفاق میفته خب حالا من وایسادم کسی یه چیزی بنویسه بچه‌ها جاهایی که هستش یکی اکشن ریکشنه ها یا یکی شناسایی حرف یعنی شناسایی کلمات توی جملات وقتی شما حرف میزنید مثلا من یه خط براتون مثلاً ۳۰ ثانیه حرف

سلام خوبی من امروز اومدم کلاس رباتیک اجتماعی شناختی نشستم ها بعد تو این متن من چند تا کلمه به کار بردم لزوماً هیچ کلمه‌ای دو به دو با هم طولش یکسان نبود اگرچه داشتم تو فریم‌های متوالی با دلتا تیهای مساوی داده برداری میکردم مثلا ۴۴ ساده می‌گرفتم ولی تو خروجی این اتفاق نمی‌افته و اون شبکه است و باید بره تشخیص بده که از کجا تا کجا سلام بود از کجا تا کجا چطوری بود ولی آخر یا توی شناسایی حرکت ها و اکشن ها این که وقتی شما مثلا میایید درو باز می‌کنید کیفتون رو میزارید آب میخورید و الی آخر همه اینا چیزایی که تو ویدئو بعضاً باید به صورت هوشمند شناسایی بشه در حالی که چی در کل هیچ طول مساوی نداره و شمایید که باید حالا با دادن داده های خیلی خیلی غنی و ترین کردن شبکه به حد مناسب کاری کنید که نسبت به فیلم های جدید حالا چی باشه بتونه به خوبی واکنش بده یا توی حوزه صوت این کار

که گفتیم به خودتون کمک کردید ممکنه چیزهای دیگه‌ای هم باشه که میتونید خودتون هی مدام از صفحه قبلش اضافه کنید شورتکات ما توی نمایش بهره‌گیری از همین مربع‌هاست برای یک لایه ولی یادمون باشه همونطور که گفتم وقتی لایه ورودی میدید خودش یه وکتوره ها و مثلا فرض کنید که چه میدونم یا نمایش وانهاتی دادید یا یه سری اطلاعات میدید که حالا میخوام در مورد یه مثال خیلی واضح صحبت کنم در موردش که خیلی مکانیکی ها دید دارن نسبت بهش و همینطور لایه های میانی که سبز رنگن اینا باز خودشون بیش از یک نیرون دارند لزوما تعداد نیرون هاشون با این ورودی یکی نیست و لایه های خروجی هم باز میتونه نیرون های مختلفی داشته باشه پس از الان به بعد مستطیل ها رو نمادی از چند نیرون ببینید و طبیعتاً اگر ساختار شبکه یه همچین چیزی به شما داده شد یا همچین چیزی داده شد در واقع این بوده که این مجموعه از نیرون ها به تمام نیرون های لایه بعدی یه جوری وصل بودن ها و شما میتونید

فرض کنید بین هر دو تا مستطیل یعنی بین خروجی یک مستطیل تا ورودی بعدی داره یک ام ال پی اتفاق میفته یه ام ال پی یک لایه ساده یا یه ضرب ماتریسی یعنی اینکه یه بردار داری در یه دبلیو ضرب ماتریسی میشه و یه بردار دیگه با یه طول دیگه به شما میده و این اتفاق داره میفته پس این نمادگذاری ماست مستطیل نماد یک دونه نرون فقط نیست خب خدمت شما عارضم برای چی به این میگن ریکنت نورال نتورک ها ها بیاید یه مثال ساده بزنیم فکر میکنم مثال ساده کلی از اسلاید های منم چیکار کنه پوشش بده و دیگه نخوام یکی یکی روی اسلایدها صحبت بکنم بچه‌ها ما به عنوان کسانی که توی رشتمون درس دینامیک خیلی خیلی مهم بوده و از گذشته باهاش آشنا هستیم فرض کنید که من یه سیستم دینامیکی دارم که یا معادله دیفرانسیلش میدونم و مثل این مسئله که الان احسان امروز بهمون نشون داد فرض کنید که خروجی ها رو تو واقعیت گرفتم یا حلش کردم

یه شبکه عصبی می‌خوام ترند کنم که اونو پوشش بده یا اینکه اصلا اطلاعاتی ندارم مثلاً فرض کنید یه کوادراتور به شما میدن یا یه ربات به شما میدن یا یک خودروی خودران به شما میدن شما هیچی از دینامیکش نمی‌دونید خب هیچ یا حوصله ندارید بدونید و می‌خواید با شبکه عصبی کارو در بیارید چاره چیه خب کاری که هست اینه که شما باید استیت ها و چیزا رو به عنوان اینپوت بهش بدید ما فرمول سیگما f مساوی ام آر یاد خودمون بیاریم برای یک خدمت شما عارضم سیستم مرتبه یک سیستم یک درجه آزادی اینه که شما باید در هر لحظه اف وارد بر سیستم بدونید درسته و به جز این باید دو تا چیز دیگه هم بدونید تا بتونید سیستم رو به صورت یکتا تو زمان بعد بگید استیتش چیه و کجاست اون دوتا چی اون دو تا اطلاعاتی که لازم دارم در کنار این اف تی در هر لحظه که f رو بدونم دو تا چیز دیگه هم باید بدونم تا من به صورت یکتا به شما استیت های سیستممو بگم

E:\courses\LangChain Project\main root\data\SCR_Session13_transcript_part2.txt

توی سیستم یه درجه آزادی شما یه سیستم دینامیکی داری سرعت و مکان اول باریکلا ایکس تی و ایکس دات تی هم باید بدونید یا حالا گسسته بکنیم تو لحظه تی منهای یک باید بدونید اف تیر هم بدونید تا بتونید چی تخمین بزنید حالا اینا رو تو تی بدونید تا تو تی به علاوه یک بتونید چیکار کنید ایکس تی به علاوه یک و وای ایکس دات تی به علاوه یک پیدا بکنید و حالا دوباره برای اینکه بتونید تی به علاوه دو پیدا بکنید لازمه که f تی+ علاوه یک هم بدونید اینجا بچه ها تی حالا میتونه متغیر پیوسته باشه میتونه گسستش کرده باشم توی سیستم های دیجیتال که بسیار هم اتفاق میفته ما اینا برای ما گسستن دیگه داده اول داده دوم الی آخر و هر چند وقت یه بار ما داریم داده میگیریم اوکی اگه پس شما بخواید

یه سیستم دینامیکی که اصلاً ازش هیچی داده‌ای ندارید و فرض کنید یه درجه آزادی مثلاً یه پاندوله ولی پاندوله یه جوریه مثلاً شما فعلاً ازش داده ندارید ولی سنسورهای روش وصل کردید که تتا و شما بده اوکیه یه شبکه عصبی مثلاً چند لایه ام ال پی بخواید آماده بکنید فلان فلان که به شما اون خروجی ها رو بده و مثلاً ایکس لحظه بعد یا تتای لحظه بعد و تتا دات لحظه بعد رو بده خدمت شما عرض کنم چه ورودی باید بهش بدید قطعا یکی از چیزهایی که باید بهش بدید اف نیروی اون لحظه است ها که داره بهش وارد میشه حالا یا گشتاوره و در ضمن در کنار اونا همونطور که دوستان اشاره کردن باید تتای لحظه قبل و تتا دات لحظه قبل هم بدم اوکیه خب این شبکه میره ترین میشه و تتا و تتا دات لحظه بعد براتون تولید میکنه خب حالا شما فرض کنید که میخوید چیکار کنید فرض کنید که میخوید لحظه بعدش دوباره بگیرید

باید این باکس نارنجیه رو عیناً کپی پیست کنید و در ضمن یه اف لحظه جدید دوباره بهش بدید این افه لزوما اف قبلی نیست اف لحظه جدید از این خروجی داشتن رو بدید به همون شبکه هم باید بدید نباید توش در واقع ساختار شبکه دست ببرید و چی دوباره دو تا خروجی بگیرید و این کارو میتونید تا هر زمانی که دلتون میخواد با باکس های نارنجی چی ادامه بدید به این داستان بچه ها میگن رول شده یا باز شده شبکه برای اینکه تو شبکه های ریکان نخوان خیلی جام مصرف کنند و همه دیگه میدونن چیو داریم می‌گیم کل این اتفاق با این نشون میدن میگن چی میگن این زرده ورودی بوده که اکسل لحظه اول بردار ورودی در لحظه اول برای ما مثلاً نیروی اف بود بردار ورودی در لحظه بعدی باید چهه بعد میرفت خدمت شما عرض کنم به لایه میانی میرسید و خروجی تولید می‌کرد که این خروجی مثلاً تتا و تتا دات بود و فلان حالا چجوری بود

ورودی بعدی بشه و الی آخر و این داستان تا ابد می‌تونست ادامه پیدا بکنه و این مربع‌های سبز رنگ وسطی همه یکی‌ان همه فانکشن هیچ فرقی با هم ندارند مثل این چیزی که من اینجا نوشتم کادرهای نارنجیه که اینجان یعنی نمیشه اینجا شبکه عصبیش سه لایه باشه اونجا چهار لایه باشه خب و خدمتتون عارضم که اینو به جای اینکه اینجوری بازش بکنن فرم بستشو بهتون نشون میدن یه همچین کادر فشرده و کوتاهی میکشن بچه‌ها این معادل اینه ها فقط اگه دیدید تو پیپری تو کتاب یه همچین چیزی تو شبکه های عصبی ریکنت براتون کشیدن چی میشه این نمادی از شکل شت کاشه خدمت شما عرض کنم به ایکس مثل سابق میگیم ورودی بچه ها ایکس خودش توی زمان های مختلف یا توی توالی های مختلف ظاهر میشه مثلاً تو حرکت ها تو تی های مختلف توالی ها گفتیم مثلاً تو متن های مختلف کلمه اول کلمه دوم الی آخر ولی معنیش این نیست خودش اسکالر ها مثلا خودش میتونه چند تا باشه مثلاً فرض کنید سیستم پنج درجه آزادی دارید خب بعد مثلاً ۱۰ جاش داره نیرو

۵ درجه آزادی دارید باید مثلاً کلی بعداً چیز کنید دیگه استیتای همون تتا یک تتا دات یک تتا ۲ الی آخر اون ۱۰ تا رم هی فیدبک کنید و اینا همه بردارند خروجی‌ها می‌تونن بردار باشن با هر سایزی ربطی هم می‌تونن به هم نداشته باشن ورودی یه تعداد نرون داشته باشه لایه‌های هیدن یا میانی یا لایه پنهان یه سری لایه خروجی هم یه سری لایه داشته باشه بچه‌ها لایه‌های اچ یا لایه های پنهان رو بهش لایه های حافظه هم میگن و اینجوری که ما داریم میریم جلو امیدواریم نمیگم قسم میخوریم امیدواریم که این دایره این مستطیل سبز رنگه سبز کم رنگه که h مثلاً لحظه فرض کنید هفت باشه چیه عصاره ای از تمامی اتفاقات گذشته نه تنها فقط در لحظه هفتم و ششم که تا لحظه های چی ابتدایی هم تو خودش داشته باشه چرا چون از مثلاً h صفر و

تولید میشه بعد از ایکس دو اچ یک داره h۲ تولید میشه ولی آخر و زمانی که من می‌رسم h۷ رو تولید می‌کنم می‌بینید که توش اچ ۶ ایکس مثلاً هفت ظاهر شده خودش تابعیت از اچ ۵ h۴ و غیره داشته و این نمادی از عصاره سیستم و حافظه سیستم ها این کاریه این فرقیه که چی شبکه‌های عصبی دارند و ام ال پی ها نداشتند یا به عبارتی اگه می‌خواستید بازش کنید مثل یه امl پی بهش نگاه کنید این مدلی بود که چی که لایه‌های هیدن رو خودشون میتونستن فیدبک داشته باشند یعنی لحظه تی به علاوه یکم از داده تی ام خودشون استفاده بکنن علاوه بر اینکه ورودی ها رو میبینن و همینطور خروجی ها رو به خودشون فیدبک کنند و انواع آرایش‌هایی که می‌خواید رو بسازن که حالا ممکنه در مورد شبکه های علم جردن ولی آخر چیزهایی شنیده باشید ما خیلی بهش کاری نداریم خب و میریم درجا همون ورژن نهاییش میگیم تو مثال ما ایکس همون نیرو و اچ همون سرعت زاویه و فلان بله آرمین این میتونه اون باشه مگر اینکه شما به هر دلیلی شبکه تو رو

چیز کرده باشید تعداد لایه‌های میانیشو بیشتر گذاشته باشید ولی اینجا اون مثال داره اگر تعداد درجات آزادی سیستمتون بالاتر شد همه اینا میرن بالاتر مثلاً شما فرض کنید یه پاندول دو درجه آزادی دارید و سه جاش هم دارید نیرو وارد می‌کنید خب شما سه تا نیرو میدید تو ایکس تون سه تا نیرو خواهد داشت تازه ممکنه ایکس و وای و زد هم داشته باشه یعنی ۹ تا مولفه شما بهش بدید از اونور اچ ها میتونه توی بیان تفسیر پذیرش همون مواردی که شما فرمودید باشه پس این میشه اتفاقاتی که تو شبکه‌های ریکارنت قراره برای ما بیفته درسته که ما خیلی هم اتفا تو دینامیک میتونیم باش چیکار داشته باشیم سر کار داشته باشیم یه ربات در واقع نامشخص رو بدن به ما ما بیایم ازش یه اطلاعات رو در بیاریم اما اجازه بدید به از یکی از سایت های ایرانی آموزش شبکه های عصبی استفاده بکنم مثال خیلی شیرین و در واقع ساده ای داشت منم دوست دارم این مثال رو برای شما بزنم و سعی کنیم جا بندازیم فرق شبکه های ام ال پی با ریکنت چیه بچه‌ها به این چیزایی که میگم خوب دقت کنید

اگه الان یاد بگیرید بدن هیچ مشکلی برنمی‌خورید متاسفانه مواردی که یعنی سایت‌هایی که میان آرنا درس میدن بعضاً می‌پرن توش یعنی همون اول حتی به شما ممکنه شفاف نگن این مربع‌هایی که می‌بینید حاوی بیش از یک نرونه و همون اولش شما ممکنه بزنید که این چه جوری ریاضی پشتش پس میشه نوشته شه اما اینجا با من باشید بسیار بسیار ساده است میگه فرض کنید آشپزی دارید خب که قراره برای شما چند نوع غذا درست کنه این آشپز تصمیم می‌گیره بسته به اینکه اون روز بارونی یا آفتابیه پیتزا یا ساندویچ درست کنه یا پیتزا یا مرغ سوخاری درست کنید اوکی خب من این کارو دیگه همینی که فقط روزو ببینه پیتزا درست کنه و اگر امروز آفتابی بود پیتزا البته سوخاری فردا آفتابی بود بازم مرغ سوخاری درست کنه من قبول دارید میتونم اینو با یه شبکه ام ال پی خیلی ساده و یا یه ضرب ماتریسی ساده مدل کنم فقط اینجوریه که خورشیدی و آفتابی و وان هات نشون میدم

نماد آفتابی ۰۱ نماد ابری بعد میگم یه وزنی پیدا بکن یه دبلیو که همون معادل w میانی باشه فرض کن دیگه شبکه ام ال پی یک لایه زدم اینجوریه که الان دو تا نرون ورودی دارم ۰۱.۱۰ نماد یک صفر و صفر یک نماد چیست آفتابی و فلان بودنه خدمتتون عارضم که مثلاً حالا دو یا سه نوع غذا می‌تونم درست بکنم حالا یا چند تا غذا اینم خروجیمه بینشون هم یه سری دبلیو وجود داره دیگه درسته قبول دارید اوت پوت این میشه ww در اینپوتش اینو قبول دارید با ضرب ماتریسی بچه‌ها یکی بنویسه قبوله تا من سریع برگردم سر کار یه سری دبلیو بود دیگه حالا با یه بایسی هم میتونست جمع بشه برای هر نیرون و چیکار کنه و برای شما تمام اینا رو بسازه یعنی wو در بردار ایکس ضرب بشه و به ازای تک تک نیرون ها خروجی بده قبوله مثلا تو این مسئله فرض کنید که خیلی واضح مثلا اگر یک صفر صفر یک صفر صفر از چپ در ورودی ضرب بشه مثلاً ورودیتون

باشه یعنی اینکه باید ۰۱ صفر میشه یعنی پیتزا برام درست کن اگه ۰۱ باشه نمیدونم فلان میشه حالا یعنی این فلانو درست کن اگر چیز باشه خدمت شما عارضم که یه حالت سوم میشه که غذای سوم همیشه صفره هیچ وقت تولید نمیشه مثلاً من دو تا غذا دارم پس بچه‌ها من به جای این اتفاق می‌تونستم یه ام الپی ساده بذارم اوکیه این میشه تعریف ام الپی یه ورودی میدید یه خروجی می‌گیرید هیچ ربطی هم فردا و دیروزش به همدیگه ندارن حالا اجازه بدید مسئله رو یکم سخت‌ترش کنیم مسئله این باشد که غذای امروز رو غذای فردا یه تاثیری بذاره مثلاً اگر امروز پیتزا خوردم فرداش اصلاً پیتزا نخورم یا فرداش حتماً ساندویچ بخورم ها یعنی اینکه اینجا من دارم از چی استفاده می‌کنم از خود غذا یا خروجی شبکه ام الپی قبلیم می‌خوام یه جوری استفاده بکنم و تصمیممو بگیرم و حالا فرض کنید که باز یه دبلیو خواهم داشت و در واقع هر روزی که یه غذایی تولید شد بیارم

یه دبلیو در اون ضرب بکنم و خروجیشو ببینم چه چیزی میشه سه در سه در یک ضرب بشه یه سه در یک میده و بسته به اینکه چی میده من اون غذا رو تولید کنم یک صفر صفر داد ساندویچ ۰۱ صفر داد مثلاً پیتزا یا حالا اینجا مرغ سوخاری مثلا صفر صفر یک داد پیتزا و یه همچین کاری بکنم بچه‌ها این یه شبکه ساده رو ساختم ولی این آر به چی وابسته بود فقط به خروجی های شبکه وابسته بود یعنی اصلاً نگاه نمی‌کرد هوا آفتابیه یا ابریه فقط میگفت آقا امروز چی داشتی فردا تعیین کن فردا چی داشتی پس فردا رو تعیین کن و هی پرد کن یا چی بساز تولید بکن یعنی بتونید ۱۰۰ روز آینده رو هم حتی چیکار کنید پیش بینی کنید و اما اون چیزی که ما تو آرn باهاش روبرو هستیم تلفیقی از این دوتاست فرض کنید بسته به اینکه امروز آفتابی یا ابری باشه و بسته به اینکه دیروز چی خوردم غذای من فرق بکنه ها حالا اینجا داستان متفاوت میشه اتفاقی که میفته تو شبکه‌های آر ان اینه میگه که

اون بخشی که هوا رو به غذا ربط می‌داد مثل مثال شماره یکه که در واقع یه ماتریس ۲ در سه رو از چپ در یه دو در یک ضرب میکرد و سه تا نرون میانی به من میداد اونی که غذارم به غذا ربط می‌داد یعنی اینکه دیروز چی خوردم فردا چی بخورم هم یه ماتریس سه در سه هستش این دوتا رو بیا با همدیگه جمع بزن خب و یه سه در یک تولید بشه از یه اکتیویشن فکشن بگذران و یه سه در یکی تولید شده که حالا اون نماد قضامه یعنی غذای فردای من نه فقط به غذای امروزم بلکه به وضعیت هوای فردا ربط داره ها و این اتفاقی که رقم میخوره حالا سوال خب حالا سوال پس به عبارتی یعنی من در واقع یه ام ال پی یا یه ضرب ماتریسی اینجا داشتم یه پی یا ضرب ماتریسی هم تو بخش هیدنم داشتم حالا اینجا دو تا جداگانه بعد چیکار می‌کنم کانک با همدیگه جمع جبری میکنم

از اکتیویشن فانکشن می‌گذرونم یا نمی‌گذرونم غیر خطی و یه چیز تولید سه گانه دارم من این سه گانه رو فیدبک می‌کنم دفعه دیگه به چی به بخش اچم دیگه ها از این نماد اکسمه که دو تا ورودی داشت ولی وقتی که ضرب میشد تو لایه میانی میرفت وارد میشد تو مستطیل سه تایی میشد یه سه تا هم تو هیدن تو مستطیله داشتم که باز ضرب میشد سه تایی میشد و این سه تا سه تایی ها با همدیگه جمع می‌شدن یه سه تایی خروجی تولید میشد و این چی میشد فیدبک میشد به اچ و تا ابد این داستان ادامه داشت خب حالا سوال به نظرتون بچه‌ها وزن های که این سه تا قرمزه رو به بنفشه و یا این دو تا آبیه رو به سبزه وصل میکنه آیا تو طول زمان تغییر میکن یعنی اینکه من امروز یه غذا ساختم فردا اینو باید تغییر بدم یا نه به نظرتون کدوم اتفاق میفته تغییر میکنه به نظرتون یا نمیکنه تغییر نمیکنه چرا تغییر نمیکنه محمد

میتونی حسی بگی چون آشپزه عوض نشده چون آشپز ثابته ها آشپزی کسیه بوده که داشته این فانکشنه رو تعیین می‌کرده پس شبکه‌های ریکارنت حواستون باشه شبکه‌های ریکارنت یه سری ماژول ام ال پی تکراری و تکرار می‌کنند نه اینکه ماژول قبلیشون با بعدی فرق بکنه‌ها اگه می‌خواست فرق بکنه تعداد پارامترهای شبکه یه دفعه میرفت و شما خیلی داده باید می‌داشتید ها پس شبکه های آر ان قراره یه سری ام ال پی های ساده رو هی کنار خودشون چیکار کنن منتقل بکنن جابجا کنند اما هر کدوم از باکس های آرنت چگونه ساخته میشن اینو میگم بچه ها یه بار یاد بگیرید خواهش می‌کنم ازتون دقت کنید خیلی ساده است ولی اگر بپرید تو کتاب های آرنت بدون این توضیحات یعنی شاید یه مقدار گیجتون بکنه ما الان اولاً نمادین این چیکار کردیم اچ رو اینجا نشون دادیم

خوب و خدمتتون عارضم ایکس و اینجا خب و عرض به حضور شما من نوشتم که توی مستطیلا اینجا ببینید ایکس میره تو اچ هم میره تو اوکی ایکس میره تو اچ میره تو چه جوری میره تو باید در یه سری وزن‌های مناسب ضرب بشن یا چی این دبلیو اینجا ماتریسه و تک عدد نیست ها مثلا اگر ورودی ایکس دی ضرب در یک باشه یعنی یه بردار این مدلی باشه خب من برای اینکه کا تا نرون داشته باشم ناشی از ایکس توی بخش هیدنم باید در یک بردار کا ضرب در دی چیکارش کنم ضربش کنم من اسم اینو میزارم دبلیو ایکس اچ یا دبلیو یک یا شما بگید wx اوکیه هیدن هم برای اینکه بیاد تو در یه دبلیو اچ ضرب کا ضرب در کا

چیکار میکنه زرد میشه باز کاتانرون بده اینجا اون تبدیله هستش ها که اوکی غذایی که داشتم بسته به اینکه چه میدونم غذای دیروزم چی بوده چه الگویی چه وزنی چه فانککشنی اتفاق بیفته تا غذای حالا کاندیدای غذای فردا معلوم بشه و این دوتا چون هم سایزن میرن با همدیگه جمع میشن و یه دونه در واقع چی تولید میشه کا در یکی تولید میشه که دقیقا هم سایز هیدنه ها هم سایز هیدن دفعه قبله و این حالا میشه چی خروجی لحظه بعد یعنی این اگه h صفر بود این میشه اچ یک h صفر از چی به وجود میاد h صفر و ایکس یک با یه سری ضرب ها به وجود میان با همدیگه جمع میشن و ممکنه خودش لینر بیاد بیرون ممکنه هم یه اکتیویشن فانککشنی هم روش اعمال شه پس در ساده ترین حالت آر ان ها اینجوری به دست میاد میگه آقا دبلیو ایکس اچ رو که یه ماتریسه در

بردار ایکس ضرب کن یه ماتریس کا در یک یه بردار کا در یک بهت میده اچ هم که خودش کا در یکه در یه whh k در کای ضرب بکن که باز اینم کا در یک بهت بده این دوتا رو با همدیگه جمع بکن در ضمن حق داری با پایه جمع بکنی حالا این بایاس دو گونه میشه دید من مگه اینجا نیومدم اینو قرمز و بنفشه رو با هم یک ام ال پی ساده گرفتم خب اینجوری بود که بعد از اینکه هر کدوم از ایکس ها حالا بردار ایکس در دبلی ایکس در ده ایکس جمع میشد برای هر کدوم از نیرون ها با یه بایسی جمع میشد یعنی با یه سری بردار بی جمع میشد خب اینم با یه بردار بی پرایم فرض کنیم جمع میشه من بی به علاوه بی پرای ما اسمش گذاشتم بایاس جدید به ازای تک تک این بایاس دارم یعنی اینجا که سه تا نرون دارم سه تا بایاس باید در عادی داشته باشم خب و اینجا یه f اکتیویشن فانکشن غیر خطی روش بزنم اچ یک تولید میشه پس

عبارتی اچ لحظه بعد یه تابع غیرخطی از ایکس همان لحظه و اچ لحظه قبلی و در ساده‌ترین و متداول‌ترین فرمشون اینه که چی این تابع میتونه انواع تابع‌های عجیب غریب باشه می‌تونه اینجا ام ال پی چند لایه باشه ما با یه ام ال پی یه لایه مدلش میکنیم میگیم wxh در ایکس به علاوه whh در h تی منهای یک به علاوه بایاس به تعداد کا در یک شد اینجا کا در یک شد که میشه اینجا بی هم حتماً باید کا در یک باشه و چی به شما یک کا در یک دیگه بده به عنوان h لحظه بعد خب بله احسان باید جمع اینا یعنی حاصل whhx و whh باید چی باشن هم سایز باش ولی لزومی نداره ایکس و

سایز نباشند همین جا براتون نوشتم دیگه مثلاً توی مثال من اگر ایکس دی بعدی باشه کاربردی باشه w مربوط به h k در کا مربعی همیشه ولی دبلیو مربوط به ایکس اچ کاردی تونستم سوالتونو جواب بدم یا نه خب بسیار عالی اینم شد این ماجرا حالا این اف رو چی میزارن اف رو کلا اولین کاندیداهایی که به ذهنمون میخوره سیگنیچ و ریلو من فعلا اینو به خاطر بسپارید بهترین تقریبا بهشون بهتون حالا با یه اسلاید ساده نشون میدم چرا سیگما و ریلو خوب نیستند و یکیشون خیلی زود اشباع میشه یکیشون میره ممکنه به بی نهایت میل کنه و خیلی نباید خوشحال باشید که هرچی هی برید جلو و جلو و جلوتر بخواد تا ابد براتون باهاتون راه بیاد و یکی از مشکلات آرنای ساده این هست پس بچه ها این مثال ساده

برای شما بازش کرد که هر ماژولش به تنهایی چیکار می‌کنه و طبیعتاً دیگه شما می‌تونید چیکار کنید حالا این باکس چندگانشو بسازید که ما گفتیم با این مدلش می‌کنیم بعضیا از این اچ تی به این اچ یه حلقه می‌زنند و در کل ماژول‌های پشت سر همش یه همچین ماجرایی داره که با یه سری ماژول‌های سبز رنگ یکسان آ نشون داده شده بچه‌ها باز تاکید می‌کنم این ام ال پی هایی که بین ایکس لحظه فعلی و h لحظه قبل یه تابع رو میسا که لحظه بعد رو بسازه کاملا یکسانه ها چون آشپزه یکسان بود و اینجا می‌بینید یکسانه این مدلیه این نماد حالا یکی از در واقع سایت های معروفه که بهتون نشون میدم الان همه هم توی در واقع اسلاید سازی هاشون از این عکس استفاده میکن اینجوریه که این دو تا فلش ایکس و اچ میان به هم میرسه بچه ها این نماد کانکته خب یعنی بردارراش به هم بچسبون در فلش یعنی در یه ماتریس دبلیو هم ضرب بکن از تنش بگذرون و بره خروجی و اچ لحظه بعد پیدا بشه بچه‌ها من

تایید میکنید یا نه یه راه به دست آوردن اچ این بود آیا من اجازه دارم یه ورودی بسازم از چی از خدمتتون عارضم که اچ لحظه قبل و چی و ایکس لحظه فعلی زیر هم یعنی یه بردار یک در واقع چیزتر باشند طولانی تر باشند و این دفعه دبلیو ما یه دبلی یک آنی تعریف کنم که این دبلیو خودش دو بخش داره یه بخشه مربوط به در واقع اونجایی که در چیزه ضرب میشه whh اسمشو گذاشتم و یه بخش دبلیو ایکس اچ اگر این بعدش کا در کا باشه این کا در دی به عبارتی در مجموع کا در کا به علاوه دی اینجا هم کا به علاوه دی در یک که اگر اینا ضرب بشن بهم کا در یک رو بده بچه‌ها اینو موافق هستید که من

به جای فرم بالایی از پایین استفاده کنم یعنی hox رو بزنم تنگ هم و ماتریس‌های دبلیو که تو ذهنم بود اینجوری بزنم کنار هم و یه دبلیو گنده‌تری پیدا کنم این باشه دبلیو کلیم قبوله یا نیست و البته با یه بایاس هم جمع بزنم به اندازه کا در یک اینو قبول داری یا ندارید عالی عالی مرسی که قبول دارید پس این داستانیه که اینجوری شبکه میشه کلاً با یه ضرب نشون داد یه شبکه ساده یا سنتی یا تدیشنال اینجوریه که میگه ایکس و کانکت کن بزن تنگ هم توی بردار در یک دبلیو کا در کا به علاوه دی ضرب کن تمامی این w ها رو شما باید بع با ترینینگ پیدا کنید با بک پروپشن که این کا در کا به علاوه دی تا پارامتری که اینجا هست به علاوه این بی تا پارامتر که اینجا هست باید چند باشد که این شبکه خوب کار کنه و بتونه چیکار کنه این کار بله احسان الان نماد اینی که بین ایکس و اچمون یا حالا بین کانکت شده

مثل اینکه یه لایه مخفی داریم اصلا لایه مخفی نداریم نه یعنی درجا از ورودی به خروجی میرسه چون www در ایکس ضرب شده اوکیه اگر نمادت اگر اینو معیار لایه مخفی می‌گیری ولی از این اچ‌ها می‌تونم تا ابد ادامه بدم برم جلو یعنی لحظه مثلاً امروزو پیدا کردم داده فردا رو تخمین بزنم داده فردا رو دارم پس فردا تخمین میزنم ولی آخر وزن‌ها به حالت بالا آرمین تفاوتش اینه دیگه عین این دبلیوh در h رو اینجا باید بنویسی درسته wx در h باید اینجا بنویسی نه یعنی در واقع این ماتریس وزن های که بالا دادم هم سایز نبودن من الان کاری کردم تو یه wلیو جاشون بدم فقط کنار هم چسدمشون سوالتون رو متوجه شدم همین بود عدد وزن همونه دیگه عرض کردم یعنی یعنی اگر شما فرض کنید بالاییه رو بنفشه رو پیدا کردید عدد وزنش مناسب بودن و داره شبکه خوب کار میکنه ترند شده همینایی که اینجا نوشتم باید بیاید اینجا بزنید تنگ هم

فقط اینم بگم خدمتتون با صورتی نشون دادم گذاشتم تو کل فرایند آر ان تو اون لایه h ثابت بله اگر منظور حالا بیام سوالتونو بشنوم آرمین سوالتون بفرمایید ما وقتی که جدا حساب کنیم عدد دبلیو بعد متفاوت باشه و وقتی که کنار هم باشه دیگه چون مثلا داره در ایکس هم ضرب میشه نه دیگه آره آها یعنی منظورتون از اون بابته ببینم یه لحظه فقط ببینم که غلطی چیز که ایجاد نمیکنه درسته میخوام بگم منافات ایجاد میکنه یا نمیکنه شما الان ردیف اولش در بخش اچش ضرب میشه ردیف اول ایکسش هم در بخش ایکس ضرب میشه الان مشکل داره نه درست اشتباه خب خدمت شما عارضم که پس اینو یه دبلیو در یه بردار ساده نشون

پس کلاً تو این نمادگذاری هرجا دو تا فلش به هم رسیدن یعنی بردارها کانکت شدن خب و یعنی دو تا چیز به هم می‌رسن یعنی کانکت شدن یه فلش هم که روشه یعنی در یه دبلیو هم ضرب شدن و بعدش از یه تابعی مثل تنش گذشتن و حالا اینجا که دو شاخه شده یعنی هم به دو جا رفته هم اچ تی رو آورده بیرون شما ببینینش هم فرستاده لایه بعدی که لایه بعدی ببینید آخر این دوتا با هم فرقی ندارن یک فتوکپی از روشون اتفاق افتاده خب خدمت شما عارضم که شبکه های استاندارد آر ان یه همچین شبکه اند همین که تا الان بررسیشون میکردیم بهشون میگن سینگل هیدن که فوق محبوب ترین و متداول ترین معماری های آر ان حساب میشن و در ضمن جهت اطلاعتون ممکنه بپرسید اچ صفر رو من باید داشته باشم یا نه اینم حتی پارامتر شبکه است یعنی علاوه بر اینکه اون دبلیو که داره در کانکت شده اچ لحظه قبل و x لحظه فعلی ضرب میشه با بایاس جمع میشه و در نهایت میره هی خروجی ها رو اگه لازم باشه

براتون می‌سازن خب چیه اچ صفر که لحظه اولم باشه شما میتونید اینشالایزیشن اولیه داشته باشید ولی اینم میتونید پارامتر شبکه بذارید رند کاست به رند المانات درایه‌هاشو حساب بکنید و چی در نهایت اینم حتی آپدیت کنید تا اچ صفر هم خودش به دست بیاید یعنی نیاز نباشه ما بگیم و اینم خبر خوبیه این اتفاقی بود که بچه‌ها رقم خورد همین براتون گفتم با این نماد نشونش میدن ht میشه fw در h تی منهای یک و ایکس تی که حالا این fw رو من در ساده ترین حالت که اف تابع شده اینا درسته و این همون چیزیه که اینجا نوشتم حالا بچه‌ها این خروجیه تازه شد h لحظه بعد بعضی از شبکه‌ها همونطور که دیدید یه خروجی آبی رنگی بالاشون می‌ذارن و اسمشو وای می‌ذارن یعنی چی یعنی خروجی این آر اچ لحظه بعد باشه اچ همون لحظه ما باشه اچ تی باشه برای اینکه بره دوباره از آبیه خروجی بهتون بده باز دوباره در یه وزنی ضرب میشه یادتونه بهتون گفتم هر

نمادی از چیه نمادی از ضرب شدن یه ماتریس یا اعمال یک تابع روشه wh ضرب میشه میرسه به اول مستطیله حالا اینکه بعضیا دوباره اکتیویشن فانکشن هم میزنند که بعد از اینکه تازه خامش حساب شد یه اکتیویشن هم روش حساب بشه مثل اینجا ما تنش زدیم یعنی فقط نیومدیم دبلیو را در کانکت شده اینا ضرب کنیم بعدش یه تنه هم زدیم ها المنت وایز یعنی رو المان به المانش و اونو دادیم به عنوان h تی حساب کردیم خدمتتون عارضم که چی برای اینکه برید گام بعدی دوباره در یه دبلیو های جدیدی ضرب میشه فرض کنید خروجیش همین دیگه خروجی پایان دیگه چیزی به نام اچ نداره تنها ورودیش h تی یه برداره در یه ماتریس دبلیو ضرب میشه اسمشو گذاشتیم دبلی اچ وای یعنی wلیو که اچ وای وصل میکنه حالا یا همین همینجوری نگهش میدارم لیر یا ازش چیکار میکنم ممکنه اکتیویشن فانکشن هم بسته به مسائل خاص هم روش بزنم و اینم ماجرایی که اینجا وجود دارد پس این دوباره این چیزی که تو کتاب ها به

اینجوریه خب وقتی یه باکس براتون می‌کشن و مثلاً یه خروجی اچ تی ازش میارن بیرون این اتفاقا توش افتاده اولاً وقتی یه فلش می‌ذارن اینجا می‌نویسن ایکس و این فلشه یعنی تا اینجا تا سر این نقطه یه wx در ایکس ضرب شده بعد اینور وقتی یه اچ میزارن h صفر و یه فلش چیز دیگه‌ای نمی‌نویسن اینجا یعنی چی یه wh صفر ضرب شده تو این مستطیله نه تنها با همدیگه اینا جمع میشن به محضی که به این نقطه میرسند اکتیویشن فانکشن روشون اعمال شده اوکیه این چیزایی که متاسفانه تو این نماد گذاریشون نمی‌نویسن بعد آدما گیج می‌زنن ها و این نمادی که هست حالا اینجا هم همین اتفاق افتاده این الان تا خارج شده همون اف روش اعمال شده یعنی همون ht که اینجا هست ht اینجا هم هست حالا میخواد فرض کنید بره چیز بالایی بره خروجی بالایی میگه اوکی با یه فلش داری وصل میشی پس تو ورودییت تا اینجا باید

در یه دبلیو جدید حالا اسمشو اچ وای میزارم در اچ تی ضرب شده باشی یه برداری الان اوکیه حالا یا اکتیویشن فانککشنی روش می‌زنی یا نمی‌زنی اگه زد زد نزدم که همون که همین که دارید میبینید خروجیه و حالا بسته به شرایط ما این کارو می‌کنیم مثلاً توی لایه خروجی ما بسیار متداول سافت مکس بزنیم یعنی چی یعنی مثلاً اینجا سه تا عدد میشه خب بعد من به شکل احتمال به اینا نگاه کنم به خصوص تو کلمات مثلا وقتی که مثلاً نوشتم سلام بعد کلمه بعدی میخوام ببینم چیه احتمالا میگه یا من میگم بچه تو گوشیاتون همچین چیزی رو دارید شما فعال کردید یا من فقط روانی‌ام این که در واقع کلمه بعدی رو بشناسه من بیارم خدمتتون عارضم که حالا برای اینکه مرتضی تا آخرین بار که به من انشالله فحش ندادی نه می‌خوام چت شما رو بیارم خدمت شما عارضم بچه‌ها من وقتی که می‌خوام بنویسم اجازه بدید دوربینمو فعال کنم نمیدونم میبینید یا نه من اینو بزرگش کنم یه لحظه

صفحه چیزو بردارم بچه‌ها اینو ببینید چقدر خوب میبینید که الان نوشته سلام فلان چند تا پیشنهاد داده توی این چیزم اینجا سه تا سه تا کلمه پیشنهاد داده حالا کلیات ماجرا رو می‌بینید یا شماها هم فعالش کردید یا نه برای موبایلتون خدمتتون عارضم که اینجوریه که من وقتی میارم اول بهم نوشته سلام به من پیشنهاداش اینه یعنی نوشته حالا بخشیش از روی دیتا ستیه که ترین کردهشیش هم چیزه بخشش هم عرض به خدمت شما خود منم در نظر می‌گیره مثلاً من می‌نویسم سلام بعد پیشنهاد میده آقای دکتر چون من معمولا به همین همکارامون اعضای هی مثلاً پیامک میدن قشنگ یاد گرفته من کلمه بعد سلامم نوشته آقای وشم نوشته دکتر یعنی میگه یا تو نوشتی سلام دکتر یا نوشتی سلام آقای دکتر خب و اینا چیزاییه که داره حالا با شبکه های

E:\courses\LangChain Project\main root\data\SCR_Session13_transcript_part3.txt

مدل و این چیزا ترین شده و الی آخر و نمی‌دونم کدوماتون بچه‌ها از این استفاده می‌کنید مثل من دست بالا آرمین همه استفاده ماشالله پس من نیستم فقط حوصله تایپ ندارم و به اصطلاح کاملا از این استفاده می‌کنم بچه‌ها اینا با شبکه زدن دمتون گرم و بریم ببینیم حالا شبکه خروجیش بچه ها اینجا کمکم کنید خودتون خیلی راحت می‌تونید بگید من گفتم حالا بنا به دلایلی که فعلا خیلی زیاد کاری نداریم ما عموماً تو آرنا ساده از تابع تنش استفاده میکنیم یا تانژانت هیپر بولیک خب تانژانت هیپر بولیک خروجیش بین چند و چنده الان بنویسید آرمین دستت بالاست هنوز سوال داری یا هنوز داری از متن استفاده می‌کنی تنش بچه ها خروجیش بین چند تا چنده بین یک و منفی یک باریکلا خب ببین یک و منفی یک بسته به اینکه ما خروجی وای مون میخویم چه جنسی باشد فقط دیگه از تنه چون نزدم یعنی در دبلیو ضرب میکنم آها صفحه رو

من دوربینمو ببندم ببخشید خب عرض به خدمت شما چی می‌گفتم آره تنش بین منفی ۱ و ۱ میده حالا من وقتی می‌خوام وای رو حساب بکنم دیگه دیگه دوباره تنش نمی‌گیرم چون ممکنه واقعا نیاز داشته باشم خروجیم یه عدد باشه تم رگریشنی باشه و یا اینکه سافت مچ میزنم اگر اینکه بخوام احتمال بدم چه کلمه‌ای ظاهر می‌شه خب مثلاً نوشتم سلام بعد میخواد کلمه بعدی رو احتمال بده ترین شده میره سافت میزنه فرض کنید که تو دیکشنری ۱۰ هزار تا کلمه داره یک بردار ده هزار در یک میسازد به فرم وان هات مثلا میگه اگه اولیش یک بود یعنی سلام اگه دومی یک بود یعنی من اگه سومیش یک بود یعنی آقا حالا یه چیز داره بعد این میره نگاه میکنه یه سافت مکس میزنه احتمال میگیره بعد میگه که اوکی به احتمال مثلاً یک درصد تو کلمه بعد از سلام مثلا ببخشید گوساله رو انتخاب میک مثلا به احتمال ۹۹ درصد

آقایه رو انتخاب می‌کنی خب اینو چیز می‌کنه تاس میندازه و خب با احتمال بالاتری اون کلمه آقا رو بهتون پیشنهاد میده اگرچه هنوز شانس هست که کلمه‌ای که مثلاً ۲۰۲۵ درصد ۳۰% هم احتمال بود اونم بهتون پیشنهاد بده ها تو اون سه تا گزینش ولی به هر حال بیشترین اتفاق برای چی می‌افته من تقریباً یعنی نمی‌دونم مرتضی مثلاً اونایی که دست بالا کردید استفاده میکنید شما چت باکسون رو باز چیز اس ام اس تو رو باز کنید ببینید آیا اون تو سه تا پیشنهادی که بهتون میده میشه سلام نباشه برای من تا الان نشده یعنی تقریباً به قدری سلام برای من زیاده یعنی اینقدر نوشتم نوشتم سلام که این دیگه حتماً یکی از سه انتخابی که به من میده هستش کسی هست که بهش سلام و پیشنهاد نده البته اگه نمیده یه تاکیدی بکنه که آیا موقعی که پیامک میده به بقیه با سلام شروع میکنه یا نه مثلاً سه ج بده مثلاً اینجوری سلام جواب بده و اینا این چیزا نمیدونم حالا استفاده می‌کنید یا نه حالا اگه کسی هست چک بکنه برام بهم بگه بی زحمت

از رفقا من منتظر پیام تو می‌مونم من با سلام پیام میدم ولی سلام تو گزینه‌ها نیست هیچ وقت یعنی تا چت باکس میاری برای من اومد نوشتید که یعنی چی برای من اومد برای من همیشه سلام هست من گزینشو فعال کردم که همیشه این سه تا پیشنهادشو بهم بده مثلاً بعد سلام بچه‌ها مثلاً من یه تکیه کلامی دارم می‌نویسم که مثلا رو به رشدی چیزی کم نیست بعد اینم یاد گرفته موبایللم یعنی دقیقاً تا می‌نویسم سلام یکی از پیشنهادش همیشه روحه بعد رو که بزنم باید بر میده و الی آخر خودش ادامه میده با تب زدن همه رو تایپ میکنم خب خیلی ممنونم از همراهیاتون بچه ها ما میخویم بچه‌ها جا بندازیمما شبکه ساده رو چون من خودم اولین باری که نشستم سر یک کلاسی انقدی مثلاً در واقع چیز گفته شد یعنی سطح بالا گفته شد و این انتظارشون این بود که همه اینا رو بلد باشن من اون لحظه نفهمیدم حتی سایز اچ هم نفهمیدم خب و این بخاطر همین امروز

خیلی خیلی آروم رفتم جلو و این اتفاقاتی که داره روی آرنل رقم میخوره پس گفتیم ما هرجا بخوایم بریم بریم لایه بالاتر مجدداً ممکنه در دبلیوهای دیگه‌ای بخوایم ضرب بکنیم ولی وقتی تو اون لایه بخوایم تو همون عرض حرکت کنیم wلیوهامون همون w های اند که چی اینجا استفاده کردیم و اجازه تغییرشون رو نداریم خب خدمت شما عارضم که بچه‌ها مالتی کار لیر آرنا میشه استفاده شه یعنی شما فرض کنید که یه لایه عادی داشتید مثل کیک های چند طبقه یه لایه دیگه روش بذارید یعنی چی یعنی خروجی این هیدن استیتتون به همراه یک هیدن استیت پرایمی یکی هیدن استیت یک با هیدن استیت پرایم صفر هیدر استیت پرایم یک رو براتون بسازن و وای رو از رو اون بسازید خب اینم شدنیه بچه‌ها دو یا سه لایه از اینا یه شبکه فوق عمیق ها یعنی آر ان ها همینجوریش رو به عمیقن یعنی اینجوری نیست که فکر کنید شما قراره ۱۵ تا از این شبکه های لایه اچ آر رو هم بذارید

کیکاتون دو سه طبقه بیشتر نهایتا نمیشن بعضی از بچه‌های ما تازه با یه طبقه هم کارشون انجام شده نماد اختصارش اینه و دیگه کاری نداره یعنی خروجیش که به جایی که ایکس مستقیم بیاد اینه اما آیا این تنها راهمونه اینم در مورد ریاضی اینم صحبت بکنیم خیلی کار سختی نیست دیگه میگه hi لایه اول میشه تابع اکتیویشن فانکشنتون که معمولاً تنیچه با اون دبلیو های که در ایکس ضرب شدن به علاوه دبلیو های که در h لحظه قبل ضرب شدن بایاس ها اتفاق میفته بعد h لایه بالاتر میشه چی یه تابع اکتیویشن دیگه که باز معمولا تنه چیه لایه خروجی که هیچی نمی‌ذارن اونای دیگه تنه چت میگه یه سری دبلیو های جدید در اچ لایه قبل که به دست آوردید بعلاوه یه سری دبلیو جدیدی در اچ پرایم همون اچ دو یعنی اچ پرایم ما به علاوه بایاس های جدید و در نهایت وای هم میشه چی اکتیویشن فانکشن زدن روی چی دبلیو در اچ های جدید به علاوه بایاس ها و خب اینجوری میشه در نهایت اینو بسازید خدمتتون عارضم که تمام نیرون ها یه بایاس دارند مثلاً اینکه

داره تو لایه اول ۴ تا تو لایه دوم همه اینا هر کدوم یه بایاس دارند خب اینو یادتون نره تو لایه خروجی هم همینطور اف کاها رو تا قبل آخری معمولاً تنش می‌گیرن اینم جهت اطلاعتون اما آیا این تنها شبکه‌هایی که میشه ساخت نه انواع شبکه‌های مندرآوردی می‌تونید بسازید شبکه‌های پیچیده‌تر شبکه‌هایی که اسکیپ کانکشن توشون هست مثل شبکه رزنت بود که یه جایی یه چیزی میپرید میرفت بالایی یعنی می‌خواید بگید آقا من به هیدن استیت لایه اول در واقع چیز دارم میکنم اطلاعات ورودی رو میدم دلم میخواد به هر دلیلی اطلاعات ایکس و مستقیماً به هیدن استیت لایه بعدی هم بدم یعنی چی میشه یعنی این ایکس در یه دبلیو ضرب میشه این اچ در یه w ضرب میشه اون اچ هم در یه دبلیو این سه تایی که ضرب شدن با بایاس ها جمع میشن همه هم هم ابعادن و ازشون اکتیویشن فانکشن میگذره و خروجی بهتون میدن و این میتونه چیکار کنه ادامه پیدا کنه یا شبکه‌های دیگه مثلاً اچ بالاییه رو h مثلاً دو لحظه یک رو به اچ یک لحظه مثلاً دو خبر بدید ها بگید

تو هم خبر داشته باش یعنی تو ورودیت w برابر این هر فلشی یه ماتریس ww برابر اون به علاوه دبلیو برابر فلان و اینجوری تا ابد بار برای من چیکار کن بساز یا انواع شبکه‌های عجیب و مندرآوردی دیگه‌ای که حالا همه اینا رو با هم داشته باشن همه اچ‌ها به همدیگه اطلاعات بدن ایکس ها به همدیگه اطلاعات بدن و یا اینکه یه لایه بره به سه لایه جلوتر فقط خبر بده من دلم میخواد این اتفاق بیفته و این الگو بخواد تا بی نهایت ادامه پیدا بکنه و در ضمن یه سری اچ های در واقع کمکی وجود داشته باشند که یا به اول یا به همه این وصل شن مثلا کی اتفاق میفته تو ایمیج کردن شما زمانی که میخوید یه عکس رو بهش بدید بگید زیرش برام بنویس مثلا فردی در حال شنا کردن است خب این عکس رو اول میدی شبکه های سی ان ان در نهایت میره به یه بردار میرسه مثل ام ال پی آی بود ۴۹۶ تا آخرش فلتن شده بود اینو میدید به عنوان اچ حالا تا به ورودی تمام مثلاً نیرون های هیدن لایه اول و میگید این هم تو ببین کما اینکه میخوای جم تو بسازی مردی در کنار رودخانه نشسته است فلان فلان

برام تولید کنی یا من به ورودی بهت بدم ترینت کنم اکثرم در ضمن کنارت داشته باشی حالا عصاره داشته باش چون به دردت می‌خوره بچه‌ها این کامپیوتر گرافشه تنها چیزی که می‌خوام تاکید کنم اینکه این اف دبلیوهایی که میدید همه از یه دبلیو ساخته می‌شد پس احتمالاً می‌تونید حدس بزنید فرایند بک پروگیشنش میتونه رو اعصاب باشه ها چون وقتی بک پراپ میخوید بکنید اینجوریه که شما اچ صفر رو ایکس یک رو میگیرید در دبلیو ضرب میکنید روش یه f اعمال می‌کنید اچ یک به وجود میاد بعضا از اچ یک میرید وای یک هم میسازید مثلا منی تو من فرض کنید دارید کار میکنید خب بعد اوکی این وای یک باید نگاه کنید با ایده آلتون یکسان نزدیکه یا نه یه لاس براش لاس یک تشکیل بدید بعد از اچ یک و ایکس دو اچ دو رو میسازید فرض کنید از اچ دو هم وای دو رو بسازید با دوباره با چیزش چک میکنید ولی یادمون باشه که تمام این اف دبو تابعی از دبلیو بودن یعنی این w ساده است تو همه اینا داره دیده میشه و وقتی میخوید بک پراپ بکنید که

صحبت می‌کنیم یه دفعه می‌بینید ماجرا میشه و همه اینا نسبت به w لاس دارند و چی و باید دیده بشه و ww در کل بتونه با همدیگه آپلود آپدیت بشه شبکه مرتضی نوشته شبکه‌های گن هم از ساختارها استفاده می‌کنند مرتضی ساده‌ترین گنهایی که دیدم نه بیشتر تماشون شبکه‌های چیز بود خدمتتون عارضم گن های که عکس تولید می‌کردن تمماشون سی ان ای بود ولی گن های که بخوان فیلم تولید کنن یعنی یه فیلم فیک بسازند از شما و دارید مثلا به یکی یه چیزی میگی اینا احتمالاً مجبورن از آر ان هم استفاده بکنن چون کاملاً گذشتهت هم از لحاظ مثلاً هندسه صورتی که ازت ساخته براشون باید مهم باشه پیوستگی حفظ بشه و هم حرکت لب و کلامی که داری میگی من فکر می‌کنم باید بشه اگرچه اینقدی کار نکردم سلامت باشید خدمت شما عارضم که اما آر ان ها گفتیم خوبن ولی رو کاغذ خوب

و خودشون تو ورژن عادیشون یه مشکلاتی دارند که نمیشه به خوبی ازشون استفاده شه و ما مجبوریم بریم سمت در واقعیفیکیشن‌هایی که روشون زده که شبکه‌های باشن انشالله جلسه آینده وصل می‌کنیم دو سه تا اسلاید خدمتتون هستم چرا آرنها چالش دارند میگه فرض کنید شما اکتیویشن فانکشن نمی‌زدید و فقط بود یعنی دبلیو رو در کانکت شده ایکس ضرب میکردید میشد اچ بعدی دوباره این اچ رو در با ایکس بعدی کانکت میکردید دوباره در همون دبلیو ضرب میکردید میشد اچ بعدی و ادامه میدادید اتفاقی که میافتاد این بود که اگر برید حساب بکنید می‌بینید توش ماتریس whh همون ماتریس مربعی با توان k+ یک توش ظاهر میشه که به h مثلاً اول ربط داره حالا اینجا از صفر شروع کرده h اول و منفی یک گرفته و ایکس اول ایکس صفر گرفته خب ایکس لحظه اول من ایکس یک گرفته بودم خب و اینجوری میره با دبلیو به توان کاه های مختلف میره ظاهر میشه حالا اینجا این اتفاق میفته دبلیو یک ماتریس مربعی برای خودش کا تا آیگن وکتور داره اگر آ

اگر آیگن ولیوهاش از یک بزرگترین آیگل ولیوش از یک بیشتر باشد این اچ کا چی میشه این میره به سمت بی نهایت یعنی دیگه شبکه‌تون از دستتون در میره ها و بلوآب می‌کنه و اگرم بزرگ‌ترین آیگن ولیو تون از یک کوچکتر باشد با گذشت زمان چی میشه به سمت صفر میل میکنه و اون اچای جلوتر صرف نظر از اینکه کلا قبلشون چی بوده فقط صفر رو میبینند و حالا ماجراست این که این داستان یک اتفاق جدیده سوال بعدی اینه که خب حالا اگه نالتی بزنیم چی میشه میگه ببین یه مثال ساده زدم فرض کنید اچ یه دونه نیرون داره اصلاً بردار نیست ایکس هم یه دونه عدده ها یعنی این که نوشتن همه جبری اند خب میگه f و یک بار سیک پوینت گذاشتم یک بار تنه گذاشتم یک بار ریلو گذاشتم اتفاقی که میفته اینه که سیک خیلی سریع اشباع میشه یعنی اچش دیگه تغییر نمیکنه ها تنش اشباع میشه

دیرتر اشباع میشه و رلو هم چیز میکنه یا میره به سمت صفر میل میکنه یا میره به سمت بی نهایت بسته به اینکه این wh از یک بیشتر یا از یک کمتره هرچی از یک بیشتر ترتر دور باشه سریع به سمت بی نهایت میره هرچی از یک کمتر تر به سمت صفر باشه سریع به سمت صفر میره اگه نزدیک یک باشه همون حوالی یک ولی بازم به سمت یک به سمت صفر یا بی نهایت میره غش میکنه پس در کل پیشنهاد ما اینه که توی چیز توابع در واقع تو آر ان ها از تنه استفاده بکنید و این سبب میشه که شما حافظتون یه حافظه محدود باشد ها یعنی اوکی تا چند تا در واقع دیتا تایم استپ که میرید جلوچ داره یاد میگیره چیزهای جدید ولی از یه جایی به بعد دیگه میره چی بشه ثابت بشه در در حالی که سیگموت خیلی خیلی سریع چیز میشد ساکن میشد پس در کل استدارد یا تردیشنال آر ان ها روی کاغذ میتونستن تا بی نهایت برن عصاره بکشن و حافظ تو حافظه

همه چیو داشته باشن ما توی حرکت تحلیل دینامیکی سیستم‌های دترمینستیک خوشبختانه فقط به یک لحظه قبل اون احتیاج داریم دیگه درسته ما میگیم که اف این لحظه رو به من بده سرعت لحظه قبل و موقعیت لحظه قبل بهم بدی چیکار می‌کنم من بهت میگم لحظه بعد چنده ولی اگر سیستم جوری بود که باید مثلاً ۳۰ تا استپ قبلاً می‌دید شبکه‌های آر کلاسیک ممکنه خوب کار نکنن احتمالاً خوب کار نمی‌کنن و بیشتر در عمل میرن به سمت اینکهورییزیشن ضعیفی داشته باشن و به خاطر سپاری بدی داشته باشن و ما پیشنهادمون اینه که از تنش استفاده کنید و در ضمن یه اتفاق دیگه هم دارن نه فقط آرنا تمامی شبکه‌های دیپ باهاش مواجه اند که شما تو تمرین سری یکتون برای ما نوشتید و اون اینکه وقتی می‌خواید بک پروگت کنید هرچی تعداد لایه‌تون بیشتر باشه با خطر وش گریدت مواجهید که اینکه گرادیان ها ناپدید بشن و به سمت صفر میل کنند و وزن های لایه اول آپدیت نشن و شما نتونید خوب وزن

آپدیت کنید و حالا این میشه سرآغاز درس جلسه آینده‌مون چگونه می‌توان این مشکل را حل کرد پیشنهاد دادن یک ماژول‌هایی به نام لانک شورت ترموری یا ماژول‌های ال سی ام که بهشون میگن حافظه کوتاه مدت ماندگار که تا حدود خیلی خیلی خوبی این مشکل بی حافظگی شبکه حل می‌کنه تو روش سنتی و توی عمل عموماً بچه‌ها از این استفاده میشه اجازه بدید تا اینجا درس رو نگه داریم براتون آرزو سلامتی و موفقیت بکنیم انشالله ماه رمضون پر خیر و برکتی داشته باشید نزدیک شب های احیا و دیدار ما باشه در با شرط حیات به یکشنبه آینده انشالله و توضیح در مورد شبکه‌های ال اس تی ام خیلی خیلی ممنون که همراه بودید انشالله هر جا که هستید خوش و خرم باشید اگه سوالی هست در خدمتتون هستم وگرنه که شما رو به خدای بزرگ میسپاریم تا جلسه آینده

E:\courses\LangChain Project\main root\data\SCR_Session14_transcript_part1.txt

به نام خدا دوستان عزیز و ارجمند درس رباتیک اجتماعی شناختی عرض سلام و ادب و احترام انشالله هرجا که هستید خوش و خرم باشید در خدمتتون هستیم با ادامه درسمون و ادامه مطالبمون در زمینه شبکه‌های عصبی بازگشتید من یکی دوتا اول دارم اگر شما هم دغدغه و ابهام و سوالی دارید بفرمایید و بعدشم بریم سر ادامه درس خدمتتون عارضم من تمرین سری دوم بارگذاری کردم و خب براش دو هفته هم زمان در نظر گرفتم انشالله تا جمعه این پیش رو نه بعدیش انشالله فرصت خواهید داشت که پاسخ بدید و خب حالا تلاش کردم در واقع اون یکی دو روز احتمالی که ممکنه برای تمدید بخواهید هم لحاظ بکنم بخاطر همین به اصطلاح زحمت بکشید یه جوری تنظیم بکنید برنامه ریزی کنید که انشالله برسید در مورد شبکه های کانولوشننیه

اولش یه سوال فانتزیه گفتیم برید یه کنجکاوی و فضولی بکنید ببینید که عکس‌های در واقع غیر واقعی تولید می‌کرد آیا اگه ازش میانگین بگیریم به یه آدم می‌رسه یا نه و اگه میرسه به چه شخصی میرسه فقط لازمش اینه که این عکس‌ها رو زیادش کنید حالا من نوشتم ۳۰ تا ولی ممکنه اگه بخواید جواب بهتری بگیرید یا پاسخ دقیق‌تری بگیرید تعداد بیشتری بخواد انتخاب بکنید ولی حالا در این حد اذیتتون نمیخوام بکنم که حالا بخواهید به سیف کردن عکس ها بپردازید عمرتون ولی همینجوری می‌خوام یه دور تمرین کنیم که با عکس بتونیم کار کنیم با درایه‌هاش میانگین بگیریم و فلان دوم دو تا سوال اینترنتیه که گفتیم جستجو بکنید چون ممکنه توی کراس دیده باشید یا براتون سوال شده باشه مثلاً ما از استفاده میکیم ولی نحوه پیاده سازی ریاضیش نگفته بودیم یا یه چیزی وجود داره به نام بچ نرمالیزیشن با چیز فرق میکنه با این

مینی بچه‌های خودمون که چند تا هستند یه لایه از توی کراسم موجوده یه عده‌ای تو این استفاده از اینا استفاده می‌کنن کاراشون هم بهتر انجام میشه شاید حتی شما هم برید این کارو بکنید و حتی کاراتونم دقت بالاتری بگیره اینکه خودش چیه به ذات همین مفهومی نمیخوام با جزئیات زیاد و چه جوری میتونه به شبکه کمک کنه با جستجوی ساده اینترنتی به راحتی پیدا می‌کنید احتمال فارسیش نمیگم کمی ولی احتمال انگلیسی پیدا کردنش ۹۹ و خورده ای درصد اینجوری که سرچ بزنید میاد و به همین سوال جواب داده شده بعدا به سوال بعدی گفتیم یه شبکه عصبی حالا مشخص از قبل تعیین شده با هندسه و معماری مشخصی رو در نظر بگیرید برای سیف ده که ده تا عکس داشت پیاده کنید شبیه اون کاری که توی استنفورد شده بود و قبل مصاحبه با برایس که از به صورت گرافیکی اونو دیدیم بعد ترانسفر لرنینگ بزنید برید یه سری از داده

پایگاه داده قوی‌تری نسبت به سیفار ۱۰ برابر اون خروجی داره و این دفعه ۴ تا از چیزاشو مثلاً مثال زدیم براتون خروجیاشو برید برای این چهاررتایی که حالا تو اون ده تا نبوده بخواید از اول ترین کنید و این مدلی کارو انجام بدید خدمتتون عارضم گفتیم تهش هم گفتیم یه شبکه غیر ترتیبی ارائه بدید غیر ترتیبی یعنی سیکوئنشال نباشه دیگه مثلا اینجوری نباشه لایه دوم به اول سوم دوم چسبیده باشه جایی هم شاخک های بزنه بره مثلاً اولی به سومی وصل شده باشه و الی آخر کاملا دلخواه گفتیم بزنید فقط می‌خوام مطمئن باشم که تو این درس یه دور معماری های غیر ترتیبی را تمرین کردید و یاد گرفتید و اینم میشه سوال سوممون و در نهایت برگشتیم به سوال چهار تمرین سریع قبلی گفتیم که به جای ام ال پی ساده با شبکه این دفعه پیچشی یا کانلوشنال برید جلو و این پیاده سازی بکنید و در ضمن در نهایت هم چیکار کنید رو وب کم خودتون هم

بکنید و ببینید وقتی میخندید چقدر خوب متوجه میشه حالا اینجا یه سری حقه‌ها وجود داره که می‌تونه بهتون کمک کنه خب مثلاً فرض کنید که خب اون دیتا ست اون عکس‌هایی که میاد از یه دیستربیوشن دیگه‌ای ممکنه رنگاش یه جور دیگه‌ای باشه و شما مثلاً وقتی که با دوربین خودتون عکس می‌گیرید و اینا نورپردازی متفاوت باشه اینجا بد نیست که یه سری دادگاه هم از در واقع دیتا ست خودتون بیاد فقط دیگه خودتون اگه میخوید تست کنید با خودتون نگیرید مثلاً با افراد خانواده یه سری لبخنددا و ناراحتی ها و ایناشونم می‌تونید بگیرید ضبط کنید یا سیو کنید عکس و اینو بندازید تو ترینینگ هاتون مثلا این کار میتونید بکنید غنی تر میشه دادگانش و احتمال اینکه شما رو بشناسه بالاتره و یا اینکه نه ممکنه با همون اول خوب در بیاد ممکنه انواع حقه های پردازش تصویری بزنید یعنی مثلاً با برید پیدا کنید توپن سیv یکی دو خط مثلاً از یه لایبریش استفاده کنید که فقط بخش چهرهتون رو بشناسه بقیه داده رو بندازه دور و فقط چهره رو آنالیز کنه شانس اینکه در و دیوار توش باشن و بعدش بخواد بگه شما

الی آخر شبکه سبک‌تر بشه مثلاً ورودی‌هاش به جای اینکه مثلاً ۵۰۰ در ۵۰۰ باشن شما بتونید با یه سری ورودی ۵۰ در ۵۰ مثلاً برید جلو ۱۰۰% و خب بتونید عمق شبکه‌تون رو بیشتر کنید اینا همه راه‌هاییه که اصلاً دست شما رو باز گذاشتیم خودتون برید جلو یه جایی برسید که حس و حال خوبی دارید بچه‌ها رفقا صدا هست سلام یه لحظه قطع شدم قبلش که بود درسته قبلشو داشتیم خب خدمتتون عارضم نمی‌دونم سامانه منو قطع کرد حالا شانسی روی موبایل هم متوجه شدم عرض به خدمتتون که چیزی که هستش این یه نکته میخوام خدمتتون بگم و از الان جدیش بگیرید اینه بچه‌ها همچین کاری یعنی سوال چهار این مثلاً تمرین دو سال قبل شما اگه می‌تونستید مثلاً

دقت مثلاً فرزند بالای ۷۰ ۸۰ درصد برسید حتما مقاله می‌شد حالا حداقل کنفرانسو می‌شد خب می‌خوام بگم که خیلی فاصله زیادی ندارید با اینکه بخواید از بعضی از اینا کارهای پژوهشی در بیارید یکی از مثلاً راه‌ها اینه که شما برید نگاه کنید مثلاً دیگران تو فلان دیتا ست مثلاً سیکی پلاس مثلاً به چه دقت‌هایی رسیدن شما بزنید رو دستشون یه معماری ارائه بدید حالا مستدلم بگید که این بهتر از اونا عمل کرده و یا اینکه یه معماری ارائه بدید که جنرال تر نه فقط روی این دیتا ست بلکه روی دیتا ست دیگه خوب کار بکنه چی اینا همه شانس مقاله شدن داره و حداقل کنفرانس بین المللی و بعضی ها هم که ممکنه ایده های عجیب غریب بزنن تو بهینه سازیش یا توی کاربرد و الی آخر یا پیاده سازی های عملی روی ربات روی سامانه واقعیت مجازی یا هر چیزی و بتونن حتی ژورنال هم ازش بدن یا به کارش بگیرن مثلاً فرض کنید یکی از یکی از بچه های ما مثلاً از این در واقع تشخیص حالت چهره رو زده

حالت چهره بچه‌هایی که جلوش بودن هم سعی کرده شناسایی کنه و مثلاً یه دینامیکی از رفتار اونا احساس اونا یا حالت چهره اونا اینه عرض به خدمت شما مثلاً هیومن ربات اینتراکشنش استخراج بکنه و حالا داره آماده میکنه مقالشو سابمیت کنه ببینه منتشر میشه یا نه می‌خوام بگم که این چیزایی که داریم خدمتتون میگیم دیگه خیلی به مرزهای تحقیقاتی نزدیک دارن میشن و البته جزئیاتی دارند که خوشبختانه متاسفانه با فرصتش نداریم بگیم بعضی هاش هم خودم بلد نیستم حالا البته یه چیزایی بیشتری بلدم از این چیزایی که گفتم ولی دیگه فرصتش نیست متاسفانه نمیرسیم بگیم ولی خوشبختانه شما سر در میاری یعنی اینجوری نیست که به ذات جدید باشه همون سختی کار همین ماجرای اینکه اوکی کانولوشن چیه حالا ریکنت چیه اینا رو در بیارید دیگه اون حاشیه ها و نمک فلفللاشو چیکار می‌کنید خودتون یاد خواهید گرفت یه پیشنهاد

ترانسفورمر و اسمشو به خاطر بسپارید اگه فرصت کردید بخونید خوب در واقع روش‌های به روز ترین نسبت به این حالا بعضی از این شبکه‌های قدیمی و البته از همین تکنیک‌ها استفاده می‌کنن یه جایی می‌زنن تنگه مفاهیمی به نام اتنشن و اینا رو توش تعریف میکنن میشه سر درآورد خب دانش کلیشو دارید و این ترنسفورم رو به خاطر بسپارید برای بخش سی ان ان اگه دلتون خواست عمل بکنید یکی دو تا مفهوم جانبی هستش که به کارمون میاد و هم اینجا هم توی فصل سی هم تو فصل آر اینا این مفاهیم هم باز به گوشه ذهنتون بسپارید برای خودتون پس ترنس فورمر برای خودتون میتونید بخونید چیز خوبیه اگه تونستیدتورها در موردشون مطالعه بکنید یا وریشنال اتو ان کدرها خب

حالت‌های مختلف دارن اینا بچه‌ها همه زاییده مثلا چیزن دیگه همین زدن تنگم این تکنیک‌هایی که یاد گرفتید حالا با یه سری مخلفات نمک فلفل‌هایی که از پسش بر میاید به نظر من خودتون بخونید خب که حالا امروز به یکی از این مثلاً نمونه‌های خروجی گن جذاب حالا اشاره می‌کنم و امیدوارم شما هم خوشتون بیاد پس این باشه گوشه ذهنتون الان بعدی آخری هم که میخوام بدم اگه بعدش سوالی هست در خدمتتون خواهم بود اینه که همونطور که جلسه قبل خدمتتون عرض کردم آقای الکساندر امینی یکی از دانشجویان دکترای ام آی تی پنجشنبه گذشته دفاع کرد و خب در واقع بیشتر کارش تو زمینه خودروهای خودران بود ولی از شبکه های سی استفاده کرده بود من پیشنهاد میکنم اگه تونستید و گیر آوردید حالا خودمم گیر آوردم میتونم باهاتون به اشتراک بذارم وید دفاعشو ببینید

ساعته و می‌تونه دید بهتون بده که مرز دانش چیه یعنی کسی که الان چند روزه دفاع کرده فقط ببینید که چه جوری از اون شبکه‌های استفاده کرده و تونسته در سطح ام آی تی در مدرک دکترا بگیره یه ماجرا اینه و خب به اصطلاح بتونید با مفاهیم با چیزهای روزم آشنا بشید عرض به خدمت شما موضوعات روز و ایده بگیرید برای اینکه پایان نامهتون رو اگه تعریف نکردید اگه ایده ندارید تو اون حوزه ها بخواهید چیکار کنید تعریف بکنید و خب اینا مواردی بود که خدمتتون باید عرض میکردم اگه کسی ابهامی داره بفرمایید اگر نه من برم درس رو حالا ادامه بدم شروع که ادامه بدم خب به نظر میاد دغدغه خاصی نیست بریم به نام خدا بگیم و شروع بکنیم خدمتتون عارضم که ما جلسه گذشته در مورد شبکه های ریکنت یا بازگشتی صحبت کردیم حرف حسابمون هم این بود که شبکه های بازگشتی

شبیه ام ال پی هایی هستند که توش می‌تونن در واقع چیز باشن یه سری از داده‌ها به نرون‌های لایه‌های قبلشون داده ارسال بکنند و یا یال‌هاشون بتونن تشکیل دور بدن گفتیم این معادل داره البته بازش بکنیم خیلی برای مدل سازی و پیش بینی داده‌های ترتیبی و سری‌های زمانی مناسبن سری‌های زمانی که مشخصه سیگنال‌هایی هستند که بر حسب زمان اند و برای ما خیلی معنا دارند حرکت ها نمونه های از این دسته هستند اما داده های ترتیبی متوالی که حرفی از زمان توشون نمیاد اما ترتیب توشون مهمه می‌تونن مثل متن باشند و خوب کلمات بعد هم میان اگرچه زمان توشون مطرح نیست اما کاملا ترتیب این مهمه نه تنها برای مدل سازی بلکه برای پیش بینی ازشون استفاده میشه یعنی که بعدی چیه کلمه بعدی حرف بعدی چیه حرکت بعدی چه خواهد بود ها قیمت دلار در روز آینده چه خواهد بود و اینا

در واقع نه تنها برای یک روز بعد بلکه شما تخمین بزنید تا مثلاً ۱۰ روز آینده چه اتفاقی می‌افته ها و اینا ته ندارن دیگه می‌تونن برن پیش‌بینی کنن شاید پیش‌بینی‌شون خوب در بیاد شاید نه بسته به این داره که مدلی که ارائه دادید چقدر دقیق باشه و شما حتی می‌تونید باهاش یه متن رو تولید کنید که توی نمونه‌ها بهش اشاره کردیم کاربردهای خیلی زیادی داشتن برای ما آنالیز حرکت باز شناخت کنش دنبال کردن اشیا از تصاویر ویدئویی میتونست نمونه‌هایی باشه ما بچه های که دارن تو حوزه های سیگنال های گفتار کار میکن ممکنه تشخیص گفتار ترجمه متون تبدیل های گفتار به متن تبدیل دست نوشته شهر نویسی عکس گذاشت فوتبال و و و اینا نمونه هایی باشند که چی براتون مثال زدیم اکشنش گفتیم که یه متن بهتون بدن بگید از کدوم ورزشه رو گفتیم که یه سری کلمه بنویسند و شما بگید که این در کل داشته مثبت نگاه می‌کرده به ماجرا یا منفی یا خنثی بگید یه

گونه دیگشون کاربردشون توی لنگویج مادلینگ یا مدل‌های زبانیه تو مدل‌های زبانی مدلی که یه آرایه یا ترتیبی از کرکترها یا کلماتو بهتون میدن از شما انتظار دارند بعدیشو حدس بزنید ها مثلا مینویسه چه میدونم من در کلاس رباتیک هستم و کار با فلان رو یاد می‌گیرم این فلان چیه ها شما میتونید که اوکی احتمالا کار با ربات ها بوده اگر مثلاً کلاسش فلان بوده این بوده و این چجوری شما این تحلیل رو انجام دادید یا اینکه کلمه مثلاً فرض کنید دارید تایپ می‌کنید تو اس ام اس مثلاً نوشتید سین لام الف اون احتمالا باید حدس بزنه شما می‌خواستید سلام بنویسید و بتونه بهتون کمک کنه که چی میمش براتون بهتون پیشنهاد بده شما اگه کانفرم کنید سریع براتون تایپ شه خب اینج وقت ها مث گفته که یه مثال زده گفته ج این رو اومد تو اتاق مثلاً جان

باز اومد تو بعد دیر شده بود آخر وقت بود جین سیت های تو کی این الان پاسخش چی میشه بچه‌ها به عنوان یک انسان به راحتی شما اینو میفهمید برام بنویسید لطفاً اگه صدامو دارید آره دیگه جان اینو شما می‌فهمید اما چرا این اتفاق میفته چه جوری فهمیدید این وسط وسطا خیلی کلمات دیگه اتفاق افتاد ها و بعضیاشون هم بی ربط بودن یعنی اصلا به کار ما نیومد و شما مجبور بودید به خاطر بسپارید همراهی کنید که چی که تو این متن داره براشون یه اتفاقایی میفته و باید کلمات رو چیکار کنید تخمین بزنید خب اوکی اولین شاید ایده خامی که به ذهن میخورد اینه که برید یک کلمه یا نهایتا دو سه تا کلمه قبل چیز رو ببینید اصطلاح این جای

اگر یه شبکه‌ای می‌خواستید ترین کنید که همیشه با سه تا قبلی که دیده بعدی رو تخمین بزنه به همچین شبکه‌هایی میگن تی دی آر تی دی ان ان یا تایم دیلی نیورال نتورک‌ها که مشابه کانولو نتورک‌ها عمل می‌کنند یعنی یه شابلون مثلاً یه چیز دارن به اصطلاح وزن چهارتایی دارند میندازن اول روی مثلاً مثلاً چهار تا کلمه اول پنجم تخمین میزنن بعد می‌ذارن رو چهار تا کلمه دوم پنجمی بعدی ششمین کلمه کل تخمین میزنن و و اینجوری میان جلو تا برسن به آخر در حالی که خب ماجرای بدی که وجود داره اینه که بعضی وقتا شما به چیزی نیاز دارید که خیلی تو گذشته اتفاق افتاده و به خصوص تو متن این اتفاق میفته یا توی فیلم دیدن فیلم مثلاً نیم ساعت بعد از یه حادثه شما بعضا میتونید فلشبک بزنید به یه اتفاق در حالی که اگه اینو به یه شبکه عصبی عادی یا شبکه کانولوشنال بدید اون نمیتونه براتون درست تخمین بزنه و توی مدل‌های زبانی یا توی آنالیز فیلم ها

یه اتفاقایی رو شما می‌خواید آنالیز بکنید و تفسیر بکنید تو گذشته‌های دور اتفاق می‌افتند شما به یک ابزار جدیدی احتیاج دارید که خب ما توی بیان گفتیم اوکی اسمشو می‌ذاریم ریکارنت نورال نتورک‌ها یا آرنا که می‌خوایم با اون ببریم جلو و خدمت شما عرض کنم که این شبکه که حالا ما اسمشو گذاشتیم باید بتونه به حافظه بسپاره برای مدت زمان طولانی و به موقعش چیکار کنه یادآوریشو انجام بده کاربرد دیگه‌ای که داره و تو این سایت میتونید ببینید کاربرد ساخت موسیقیه کاربردهای فانشه اینکه شما چیز کنید در واقع یه سری حالا موزیکو با شبکه بسازید اما این وبسایتی که اینجا براتون نوشتم میتونید مراجعه بکنید اگه دلتون خواست هم با جزئیات بیشتری بهش نگاه بندازید خدمتتون عارضم که اینجا من بیارمش بالا توضیح داده در مورد اینکه چجوری این کارو کرده مثلاً فرض کنید شما چه میدونم ۱۰ ساعت آهنگ های

ابی و چیز ببخشید شجریان مثلاً دادید به سیستمتون و این مثلاً با یه آرنا مدلش می‌کنه و تلاش می‌کنه حالا اون بسازه یعنی مثلاً ملودی‌های یانی رو بگیره بعد یه ملودی جدید تولید کنه که شما وقتی یکی می‌شنوه این حسو داشته باشه که واقعاً مال اونه خب و خب حالا بهتون میگم اول نمونه‌ای از خروجی هاشو ببینیم بعد در ورودی هاش اینا صحبت می‌کنیم یه مقدار بخشش مال جلسه آینده است جزئیاتشو نمی‌خوام الان بگم خب این در مورد این چیزها صحبت کرده فکر می‌کنم چند تا نمونه گذاشته حالا احتمالا شما صدای منو دارید مثلاً این یکیشو بزنیم ۴ دقیقه مثلاً شروع می‌کنه آهنگ پخش شدن البته اگه پخشش کنه اینترنته حالا نمی‌دونم چرا الان

سایت مراجعه کنید و خب اتفاقی که میفته اینه که این موسیقی که دارید می‌شنوید کاملا چیزه خدمتتون عارضم که تصنعی و ساخته شده و حالا اینکه چقدر حس خوب میده بد میده ولی آخر خیلی چیزا میتونه ربط پیدا کنه اینجوری هم براتون نوشته چجوری ورودی بهش میده مثلاً به جای که بگه نوت فا نوتلاسی فلان فلان فاصله نیم فاصله نمیدونم نوت های چنگ الی آخر و خواسته رعایت بکنه سکوت خواسته رعایت بکنه میتونه کلا انبت کنه توی در واقع یه سری برداره حالا ام در ان چیز ان در یک و متناسب با اون ببره جلو مثلاً در مورد بیتا صحبت کرده که آهنگش چهار و چهار بوده یا چیز دیگه بوده و زمانی که ترین میکرده این کارها رو کرده برید بخونید چجوری در واقع به جای دوره میفا سلاسی اونا رو به یه وکتور در

تبدیل کرده و اونو داده به شبکه‌اش و ترین شده مثلاً اول یه آهنگ داده گفته اوکی مثلاً این خواننده این نوازنده وقتی مثلاً با نوت لا شروع می‌کنه بعداً یه لای دیگه یه لای دیگه بعد یه سول میزنه و فلان فلان فلان بعد حالا کلی آهنگ داره بعد الگوها رو میگیره دینامیکشو می‌بینه مثلاً می‌بینه وقتی سه تا لا زد بعدی چی میاد وقتی دو تا لایه سول زد بعدی رو احتمالاً چی میزنه و بعدش شما می‌تونید ازش بخواید که اوکی من نوت فا رو به عنوان شروع میدم حالا شما برو برام هی بساز مثلاً احتمال بنداز چیز میکنه جدول احتمالاتی در میاره که حالا درس آینده یه کوچولو در موردش صحبت میکنیم و بیشترین احتمال میتونه به عنوان یه نوت برداره تاس بندازه اصطلاحاً و یه الگویی تشکیل بده و این الگو رو شما بشنوید و ببینید که چقدر فکر می‌کنید خوشاینده‌تونه یا نه خدمت شما عارضم که کاربردهای فان دیگه داشت گفتیم طرف رفته بود مثلاً ۱۰۰ مگ ویکی پدیا داده بهش داده بود بعد شروع کرده بود داده ویکی پدیا فیک ساخته بود خب

ادای ویکی پدیا رم درآورده یه جاهایی خدمتتون عارضم که چیز کرده عرض به حضور شما محتوا رو مثلاً توی کروشه جا داده یه جاهایی وب سایت آورده http فلان فلان وجود خارجی ندارند و منبع زده بعضی جاها مرجع زده و خب سعی کرده حداقل چیز کنه ادا رو در بیاره یا مثلاً یه متن فیک لتکس ساخته خدمتتون عرضم دیگه مثلا میشه کد باهاش ساخت کد سی پایتون نمیدونم مطلب الی آخر و براتون کدهای فکر می‌سازه فقط چند تا چیزو لحاظ بکنید مثلا وقتی که توی مطلب ایف می‌نویسیم یا فرم می‌نویسیم حتما باید یه n داشته باشه یا مثلاً تو سی بچه های که کار کردن از این آکولاد باز و بسته ها باید داشته باشه ببین باید انقدی سیستمش بتونه به حافظه بسپاره که به ازای هر آکولادی که باز کرد بعداً باید یه بار معادلشو ببنده ها شاید وسطش خیلی اتفاقا بیفته ولی این سیستم یک

سیستم بیشعور ببخشید کودن مثلاً دوست داشتنیه این اشتباه اشتباه محاسباتی نداره ولی بعضی وقتا کدی که می‌سازه مثلاً می‌بینی پایین متغیر استفاده کرده بالا تعریفش نکرده بالا تعریف کرده پایین استفاده نکرده و به نظر میاد با فرم فعلی همچین شعور پشتش نیست و خب احتمالاً جاهای کار بیشتری داره آره و تقریباً آره دیگه الان که نوشته من اطلاع ندارم چشم چک میکنم ولی احتمالا مبتنی بر یا گن ها یا تلفیقی از اینها زدن که این اتفاق میتونه چیکار کنه رقم بزنه اما یه ماجرای دیگه تولید یه متن فارسی یا شعر فردوسیه که یکی از مقاله های خانم دکتر سلیمانی از دانشکده کامپیوتر خودمونه که بنده از در واقع حالا اسلایداشون استفاده می‌کنم برای ساخت جزواتم و همینطور بالاخره از محضر ایشون درس گرفتم

اول اینو ببینیم بعد یه حاشیه‌ای به ذهنم خورد بدم نیومد اینم اشاره بکنیم خدمتتون عارضم که حالا من فکر می‌کنم فایلشونو اینجا pdfشونو دارم خدمت شما عارضم که ایشون توضیح داده عنوان مقاله اینه تولید متن با رویکرد جمعی مبتنی بر شبکه های مولد مقابله‌ای که خدمتتون عارضم حالا تولید شبکه گند زده یعنی منظورم فقط آرن ساده تنها نیست من یه بار دیگه بیارمش بالا تا این نوشته ها بره خدمتتون عارضم که ببینید این شبکه تهش اومده یه شعر فارسی تولید کرده یعنی آرایه از کلمات تولید کرده فقط لازمش اینه که کلمه اول بهش بدید یا نه کلمه اولش بذارید خودش بگه مثلاً بخونیمش جالبه مثلا سعی کرده فردوسی داده شعرهای فردوسی رو به عنوان ورودی گرفته باش ترین شده حالا اینو ساخته مثلا به

سپاه اندر آمد ز جای که ای نامور شاه را دل ز جای به پیران چنین گفت کی پرخرد که از من بدین داستان بگذرد بدو گفت بهرام کی نامجوی به دل گفت کی در جهان کینه جوی برآمد ز ایوان برآمد ز ایوان شاه آمدند به نزدیک او با سپاه آمدند و اتفاق جالبی که داره می‌افته اینه که بسیار وزن داره رعایت میکنه ولی محتوا را بعضا در کلمات جا میده کنار هم اما خیلی جذاب و هیجان انگیزه که شما بتونید با آرنا و حالا مودیفیکیشن های که روش میشه زد اینا رو بسازید و بعدش رفتن سمت شبکه های گن و اتفاقا توی روشش هم بیان کرده حالا امروز اشاره میکنیم نوشته که مثلاً چجوری از ال اس دی ما استفاده کرده جزئیات روش گفته من دنبال هایی با طول های ممکن از شبکه های بازگشتی یا بازگردنده الستی هم استفاده کردم و فلان فلان که میخویم امروز در موردش صحبت

و ببینید که همچین چیزایی می‌تونه جا بده حالا خدمتتون عارضم که اینو که دیدم همیشه تو ذهنم بود اینم براتون بخونم یه مقدار شیطنت شخصی خودمه شما حتما شعر کنون رزم سهراب و رستم شنود گررها شنیدستی این هم شنو رو شنیدید اون زمانی که حالا ما دانش آموز بودیم یه نفر این شعر هم گفته بود و این کار یه شخصه و یه شعر طنزه و خب اینم شعر جالبیه باشه توی در واقع رکوردامون میتونن در واقع جذاب باشه براتون اگه دلتون خواست چکش کنید من یه بخش هایش براتون میخونم فقط یه مقدار اطلاعاتی داره که شما ممکنه حافظتون یاری نکنه خب مثلاً این که تولکیت زمان ما یکی از ویروس یابا و ویروس کش ها بود همون اولی که کامپیوترها آمده بودند اوایل اواخر آخر دهه ۷۰ اوایل دهه ۸۰ شمسی و بعدش خب به سرعت جایگزین شدن با کلی بالاخره آنتی وایرس دیگه و حالا

اینا رو بشنویم میگه کنون رزم ویروس و رستم شنو دگر ها شنیدستی این هم شنو که اسفندیارش یکی دیسک داد بگفتا به رستم که ای نیکزاد در این دیسک باشد یکی فایل ناب که بگرفتم از سایت افراسیاب چنین گفت رستم به اسفندیار که من گشنمه نون سنگک بیار جوابش چنین داد خندان طرف که من نون سنگک ندارم به کف برو حال کن بدین دیسکان که هم نون و هم آب باشد در آن تن روان شد سوی خانه اش شتابان به دیدار رایانه اش چو آمد به نزدیک مینی تاورش بزد ضربه بر دکمه پاورش دیگر صبر و آرام و طاقت نداشت مرا دیسک را در درایوش گذاشت مگر نگرد نکرد هیچ صبر و نداد هیچ لفت یکی نیست از روی دیسکت گرفت در آن دیسک دیدش یکی فایل بود اینتر آنجا و اجرا نمود کزان یک دمو شد پس از آن عیانبا فیلم موزیک و شرح و بیان

ناگه چنان سیستمش کرد هنگ که رستم در آن مانده مبهوت و منگ چو رستم دگر بار ریست نمود همی کرد هنگ و همان شد که بود تهمتن کلافه شد و داد زد ز بخت بد خویش فریاد زد چو تهمینه فریاد رستم شنود بیامد که لیسانس رایانه بود بدو گفت رستم همه مشکلش و زان دیسک و برنامه خوشگلش چو رستم بدو داد قیچی و ریش یکی دیسک یکی دیسک بوتیبل آورد پیش یکی طولکید اندرش چو کودک گردد پی مادرش الی آخر که بالاخره ویروس رو میکشه و بعدشم حالا از این بیت آخرش نیست میگه به خاک اندر افکند ویروس را تهم تن به رایانه زد بوس را میگه قول میدم که دیگه دیسک از اسفندیار نگیرم و اینم یکی از خلاقیت های یک انسان و بشر بود و طبیعتاً محتوا خوب قابل مقایسه نیست اما همین که

شبکه در واقع بیجان می‌تونه همچین چیز جذابی به وجود بیاره خیلی هیجان انگیزه و اگه دلتون خواست میتونید در این زمینه مراجعه بکنید کلاً به شبکه‌های گن یا شبکه‌های جنریتیو یا مولد هی دلتون خواست تو کاراتون اشاره بکنید شما بچه‌ها ابزارهاشو دارید خب درسته ما کامل نگفتیم ولی یعنی اشاره به شبکه های گند نکردیم ابزار ها را دارید برید بخونید خیلی کار سختی انشالله نخواهد بود براتون و برید یادش بگیرید خب خدمت شما عارضم که اتفاقی که افتاده اینه که شبکه هایی که گفتیم اینا همه با آرنت اتفاق افتادن و انواع شبکه براتون باز کردیم گفتیم که شبکه های وان تو من اند شما یه دنبال یک داده یا یک بردار میدید ولی مجموعه از بردارها یا سیکوئنسی از اونا رو خروجی تحویل میگیرید میتونید چند تا بدید یه دونه بگیرید مثلا یه حرکت انجام بدید طرف بگه آب خورد

حرکت انجام بدید بگه نشست اینجا یه عکس بهش نشون بدید اون براتون تفسیر کنه در این عکس خورشید در حال تابیدن از فلان فلان منی بدید منی بگیرید وقت دارید که کلشو ببینید یا نه باید درجا تولید کنید یا نه اتفاقات دیگه‌ای که حالا جلسه گذشته در موردش صحبت کردیم مثال زدیم خدمتتون عارضم که در مورد این صحبت کردیم که هر مستطیلی که تو شبکه میبینید مجموعه ای از نیرون هاست و لزوماً یک نرون نیست و در ضمن برخلاف قبلی که فلش نماد ضرب یه اسکالر بود یه دبلیو پارامتری در یه نیرون ضرب میشد اینجا مستطیل ها نماد آرایه‌ای از نیرون ها طبیعتاً فلش قرمز نمادی از یک وزن ماتریسیه یعنی یک دبلیو ماتریسی در اون نیرون ها ضرب میشه مثل یه شبکه عصبی یک لایه یا بدون لایه پنهان و ورودی به خروجی داره با یه سری دبلیو وصل می‌کنه و طبیعتاً اگر شما مستطیل های این مدلی دیدید در واقع با یه مجموعه نیرون

طولانی در ارتباطید این باز شده یا آنرول شده شبکه‌های عصبی پیچشی که عرض کردیم خدمتتون خروجی هر لحظه میره ورودی لحظه بد میشه و البته اون لحظه بعد میتونه ورودی‌های دیگه‌ای داشته باشه اون ورودی‌های جدیدشو با ایکس نشون میدیم خروجی که از لحظه قبل میگیره با اچ لحظه قبل نشون میدیم و از روی این وای تولید میشه که راه‌های مختلفی داشت در قالب مثال‌های مختلفی بیانش کردیم چگونه در واقع شبکه کمک کنند به شما که یک آشپز با یک الگوی در واقع غذا درست کردن و چند روز شما پشت سر هم ببینید بتونید مدل کنید که این چیکار داره میکنه و خودتون بتونید دفعه دیگه بسازید ساده ترین مدلی که ارائه دادیم این بود که ایکس و اچ در واقع ایکس و ایکس فعلی و اچ لحظه قبل بیان حالا هر کدوم در wلیوهای مناسبی ضرب شن با هم جمع ش با یه بایاس برای هر نوشون جمع شه یا اینکه یه بیان دیگشون این دوتا کانکشن تنگ هم بچسپن یه بردار بزرگتر تشکیل بدن در یه wلی ضرب

E:\courses\LangChain Project\main root\data\SCR_Session14_transcript_part2.txt

یه جورایی چسبیده شده این دوتا دبلیو اینا به همدیگه بود و با بایاس چند و از تنش بگذرن خروجی تولید کند همین که از تنش می‌گذرن یعنی مقدارشون بین منفی ۱ تا ۱ اسکواش میشه در واقع له میشه تو این فاصله ولی خب صعودی نزولی بودنش تغییر دستخوش دستخوش تغییر نمیشه یعنی اینکه بالاخره اگه کسی داده قبلی از یک ایکس یکی از یه ایکس دو یه جایی بیشتر بوده تن چ اونم از اون بیشتر خواهد شد و دوباره این چرخه ادامه پیدا میکنه این مدل تکراری میره جلو و گفتیم که خوب این ساده ترین مدلی بود که میشد تنش داد ولی هیچ دلیل نداره اون اف فقط تنش باشه و در ضمن بعضی وقتا شما نیرون هاتون خروجیی‌هایی که تولید میکنه همون اچ تنها خروجی که داره و میره بعدی دیگه چیز دیگه نداره بعضی وقتا نه حالا ما سر یه داستانی که جلسه آینده بیشتر هم بحث خواهیم کرد مثلاً مثل همین شبکه جنریتی که میخواد شعر تولید کنه شما کلمه اول رو میدید باید یک کلمه دومی براش تولید کنه دیگه ها باید از این خروجی سبز کمرنگه یه سبز پر رنگی رو تولید کنه بعد تازه این سبز پر

میشه ورودی بعدی با اچ قبلی کانکت میشن میره دوباره کلمه سوم رو تولید می‌کنه و انقدر میره جلو تا شما خسته بشید دیگه ها همین جا بچه‌ها بهم بگید شما موبایل‌هاتونو باز کنید اون عزیزانی که گفتید از این پیشنهادش استفاده می‌کنید اولین چیزی که نوشت مثلاً گفتیم برای خیلیامون سلام بود خب مثلاً بنویسید الان برای شما چه سه تا کلمه‌ای رو داره پیشنهاد میده برای من همون اولش که میدم تو پیامک یا واتساپ و شبکه‌های اجتماعی و اینا سه تا کلمه پیشنهاد میده برای شروع ببینید برای شما چی پیشنهاد میده چند تاتون بنویسید رندوم من ببینم سلام نه من خب این برای مرتضی یکی سلام سال ساعت سلام فرشاد احتمالاً خیلی با سین شروع می‌کنی یا کلاً یعنی یا سلام یا چیزی می‌نویسید آرامتین انگلیسی حالا بوده اوکی این مدلی حالا یکیشو انتخاب بکنید جدی خانم

واقعا سه تا کلمه اولی که پیشنهاد داده اینه که با هم اینو پیشنهاد داده چه باحال خب خدمتتون یه سلامشو بزنید سلامتون همتون انتخاب کنید سه تای بعدی که پیشنهاد میده چیه الان فرض کنید شما اوکی وای اولتون حالا یا تولید شده یا تولید کردید بریم شبکه بعدیش چیه یعنی شما الان سلام به عنوان ورودی بهش دادید آرمین نوشته آرمین شکلکه رو انداخته برات تو بعد سلامت می‌خندی من چه وضعشه موبایل مال شما نیست باید دستتون بگیرم خب خوبین من به آها اوکی مثلا مرتضی تو به نظرم به من خروجی نزدیکتره خب منم همچین چیزایی داره البته بهتون گفتم من سلام که می‌نویسم پیشنهاد بعدیش آقای دکتره خب بعد از سلام من آقای ب مثلا تو مویسی سلام آقای احتمالا آرمین احتمالا زیاد اینجوری مینویسه خب حالا ماجرا اینه که بچه‌ها این ورودی ها دارن میشن خروجی ها دارن میشن ورودی های بعدی ما

و حالا این خروجی ها رو بعداً اگه لازم باشه با یه سری معیار مقایسه می‌کنیم و بعدش لاس رو تشکیل میدیم که پروفشن بزنیم اینا موردی که جلسه بعد روش صحبت خواهیم کرد چگونه این ترین میشن حالا حالا چالش شما اینه که این دبلیو های که در این اچ و ایکس کانکت شده ضرب میشد و یا دبلیو که بعدا تو اچ ضرب میشه از اچ خروجی بخواد وای رو بسازه یعنی الان اچ که ساخته شد که خودش ناشی از کانکت شده یه wلیو در ایکس و اچ بوده از تن اچ میگذشت یه دبلیو شده بود یا اچ شده بود بعد حالا دوباره در یه wلیو جدیدی ضرب میشه به یه وای میرسه مثلاً وایتون سنرونه چهار نرونه ده نرونه هستش یا هزاررونه است مثلاً ممکنه برای موبایلتون اگه مثلاً ۱۰۰ هزار تا کلمه توش باشه یه چیز باشه صد هزار تایی باشه که عددش بین صفر تا یک اند و اون میره چیز میندازه تاس میندازه بین اون احتمالاتی که بالاترن خب طبیعتاً بیشتر

بخاطر همین میشه که مثلا مثلا من و تو فلان بهتون پیشنهاد میده در حالی که مثلاً کلمات دیگه‌ای رو بهتون پیشنهاد نمیده مثلاً آبگرمکنو بهتون پیشنهاد نمیده به عنوان کلمه دوم خب درسته تو دیتا ستش هست ولی خب استفاده نشده تو دیتا ستی که داشته و شما هم بهش دادید داشته می‌شده یا شده بعد سلامش مثلا خوبی بوده حالا خانم گودرزی سلام مامان خوبی بوده ولی آخر احتمالا اینو زیاد استفاده کردید آره خانم ببینم تایید میکنید یا نه کاملا شانسی اتفاق افتاده بسیار عالی خب خدمت شما عارضم که پس ما بعضی وقتا لازمه که در یک w ضرب کنیم حالا اینکه از این یه تابع بگذریم از تنش بگذرانیم از سیگ بگذرانیم یا سافت مکس بزنیم تهش اینا هستش ما معمولا اگه این بلافاصله بعد چیزمون هیدنمون بخوایم خروجی بگیریم معمولا سافت مکس میزنیم خب ولی اگه لایه بالایی داشته باشیم باز اون بخواد بره بالاتر باز تنش میزنیم و اینا صحبت کردیم بچه‌ها من آگاهانه این نمونه را براتون آوردم می‌خوام اول دید داشته

چون خیلی از این نگاه کردم من چهار پنج تا جزوه در واقع آرنا رو نگاه کردم متأسفانه بیان نمی‌کنن این ورودی خروجی هاشون یا هیدنشون چند در چنده گیج می‌کنن آدمو ببین مثلاً فرض کنید یه شبکه این مدل شده که می‌خواسته مثلاً بهش یاد بده کلمه هلو خب مثلاً فرض کنید که کلاً گفته دیتا ست من فرض کنید فقط h ایl و o رو داره پس کلماتمو وقتی می‌خوام کد کنم وان هات کد میکنم یک صفر صفر نماد اچ صفر صفر برای خودش یه جایی ترجمه نوشته که بعدا معادل کنه گفته اوکی این xمه یه h صفری هم دارم حالا شما نمیبینید چنده ایکس در یه wلیو در واقع ایکسh ضرب میشه این wو اندیس ایکسش برای اینه که ایکس رو به اچ میخواد ربط بده خب حالا بعضی ها اچ ایکس مویسن بعضی مویسن خب اوکی این دبلیو میخواد شما را از فضای چهار بعدی برسونه به یه فضای سه بعدی خب پس باید چند در چند باشه باید چهار باید سه

۴ باشه خب که چیکار کنه که شما رو به سه در یک برسونه اوکیه پس این میشه wxh ترانسپوز بعضیا میگن به اون ۳ در ۴ درس به ترانسپوزش اون چیزی که ضررش ضرب میشه خب یه سه تایی می‌سازه یه هیدن هم اینجا داشتیم سه تایی بوده در یه سه در سه ضرب میشه سه تایی میسازه این سه تا با اون سه تا جمع میشن بایاس هاشون هم جمع میشن این ساخته میشه اوکیه این حالا اچ بعدیم فرض کنید خب این h هم در یه دبلیو ضرب میشه به نام wh وای که به شما چی میده یه چهاررتایی میده طبیعتا میتونید بگید که wh وای باید حالا چند در چند باشه که چی باید چهار در سه بوده باشه که در سه در یک ضرب بکنه چهار* یک رو بهتون بده خب حالا من دوست دارم عددای سبزم ماکسیمم بشن یعنی باید دبلیو hx قرمزه دبلیh سبزه و wh وای آبی رو جوری یا تعیین کنم یا تو فرایند ترینینگ حالا بک پروپشن طوری بنداز

که دومیو الان ماکسیمم کنه خب که من بعد اچم می‌خوام ای بیاد دیگه می‌خوام بگم هلو مثلاً یه چیز معناداره تو دیتا ست من حالا ممکنه چیزای دیگه هم بهش یاد بدم با این حروف خوب ولی هلو برای من یه معناداره یعنی میگم بعد اچ شما باید احتمال اینکه ای بیاد و کم نذاری دیگه خب و این باید این ماکسیمم میشد که سافت مکس میگرفتم احتمال این به یک نزدیک میشد در حالی که الان چهار و یک دهم ماکسیمم شده یعنی همین الان نشونتون میده که این دبلیو ترین شده نیستند خب بعد اوکی این ای رو به عنوان ورودی بهش میده صفر یک صفر صفر بهش میده میگه که بعد اچ ای بوده بعد ای باید تو ال برام بسازی و دوباره با همون whh با همون wxh و با همون wh وای یا بدون اینکه به این سه تا دست بزنید باید کاری بکنه که سومی ماکسیمم بشه باز نشده و همینطور الی آخر میره و در نهایت ال چهارم که بهش بدید حرف چهارم باید او براتون تولید کنه حالا شما باید اینو انقدر ترین کنید بزنید تو سر کلشش که دبلی درست بشن حالا اگه فقط با این رفتید جلو فقط

هلو بهتون یاد می‌گیره ولی اگر کلمات دیگه‌ای هم داشته باشید میره چی کلمات دیگر هم یاد می‌گیره یعنی کرکتر کرکتر یاد بدید بعدی رو بهتون میده همین کارو می‌تونید برای کلمه انجام بدید یعنی هلو بگیرید مثلاً h بگیرید ۰ رو بگیرید فلان بهش یاد بدید و الی آخر و تو اشل کلمه ای برید جلو اینم چیزی بود که آگاهانه گذاشتم و بتونم گفتم خروجی لایه آبیه رو بعضا سافت مکس میگیرن خب و بعدش وقتی که میخوان جنت کنن یا پردیکت کنن میتونن ساده ترترینش اینه که بیان ماکسیممش بردارن بگن اوکی برای دومین درایه ماکسیموم اتفاق افتاده دومی درای نماد ای بوده مثلا خب یا الان چهارمین درایه الان فرض کنید wش باید چهارمین درایه نماد نمی‌دونم o بوده پس احتمالاً o رو من تولید می‌کنم یا اینکه تاس بندازه مثلاً بگه درسته من میدونم که این احتمال بیشتر بوده ولی همچنان شانس بدم به بقیه ولی با همون اعتمادی که نوشتم یعنی اگر صد بار تاس میندازم مثلاً به ۸۸ درصد

این برنده بشه ۱۱ درصد اون برنده بشه مثلاً یک درصد اون برنده بشه فلانی برنده نشه خب یه همچین چیزی و خب این به خاطر همینه که شما سه تا خروجی می‌گیرید دیگه بعد سلام‌تون می‌بینید که مثلاً خوبه و فلانم می‌بینید بچه‌ها صدا بده چه جوری من دانشگاه نشستم نمیدونم چرا اینترنت چه جوریه می‌خواید خارج وارد شم یه نفر به من فیدبک بده نوشتن خوبه حالا خب خدمت شما عارضم که گفتیم میتونه لایه های بیشتری هم داشته باشن در مورد صحبت کردیم می‌تونن آرایش پیچیده تری داشته باشن در مورد لاسش صحبت خواهیم کرد اینه که یادمون باشه تمام این fw از یه wلیو دارن می‌گذرند و حالا اینجا داستان پیچیده می‌کنه اینکه بالاخره شما به ازای تک تک این وایا یه برچسبی داشتید تو ترینینگ ستتون و میتونید لاس‌هایی رو تشکیل بدید و لاس کلی رو مثلاً جمع تمام این لاس ها بذارید و حالا بیاید اونو رند لاسبرند w رو که میخوید چیز کنید مینیمایز کنید بعد میبینید که این دبلیو همه جا ظاهر شده و

چند بار تابع یعنی یه چیز ایکس داری هی چند بار جمع شدن و چه جوری میشه مشتقشو پیدا کرد این بمونه برای بعداً اما گفتیم که آیا این همچین شبکه‌هایی که با پیشنهاد دادیم طولانی مدت واقعاً خوب عمل می‌کنند یا نه مثل همون مثال جین و جان که مثلاً گفتیم این اومد تو اتاق اون به این سلام کرد واقعا یادش میمونه یا نه گفتیم آقا فرض کنید مثلاً هیچ تابع غیر خطی نداشتیم اگه تابعتون خطی بود اتفاقی که می‌افتاد این بود که اچ لحظه کامل خب به لحظه یکی قبلش به ایکس لحظه عرض به حضور شما مثلاً کام خیلی سخت رابطه نداره با یه دبلیو فقط ضرب میشه درش تمام میشه ایکس یه لحظه قبلش یعنی یکی قبل از k خب یه wh درش ضرب میشه ایکس در واقع مثلاً k منهای دو میبینید یه wh دیگه بهش ضرب میشه یا حالا hk منهای دو الی آخر خب حالا تو hش عرض کردم ببخشید در یه اچ آی ضرب میشه

نسبت به اچ منهای یک یه دبلیو به توان k+۱ داره اصلاً فرض کنید دبلیو عدد بود اصلا داشتم خب اتفاقی که میفته اینه اگر این دبلیو خیلی بیشتر از یک باشه سریع به بی نهایت میل میکنه و اگه خیلی کمتر از یک باشه خیلی هم نه هشت باشه هفت باشه ۶ باشه سریع به سمت صفر میل میکنه و اتفاقی که میفته اینه که برخلاف میل باطلیمون درسته که شبکه اج های نزدیک به خودش میبینه باید ببینه دیگه ها یعنی h این لحظه یه چنین لحظه سبزه این h رو میتونه تو محاسباتش کامل میاره یکی قبلی هم میاره ولی آیا واقعا اچ آبی رو میبینه یا نه ما دوست داشتیم ببینه دوست داشتیم اون اچ آخر عصاره ای هست همه همه باشه اما تو واقعیت می‌بینین این اتفاق نمی‌افته اگر تابع غیر خطی نمی‌ذاشتید که یا به سمت صفر یا به سمت بی نهایت میل می‌کرد بچه‌ها نمونشو من بهتون بگم این خیلی براتون باید واضح باشه شما تو سیستم های خطی ما اینو داشتیم تو

دینامیکی ما داشتیم مثلاً فرض کنید که ام ایکس مثلا مساوی با صفر اگه داشته باشیم ایکس صفر رو بهش بدیم این معادله جرم فنر دمپره و مادامی که از محدوده خطی فنر و دمپره شما تخطی نکنید با هر سرعت اولیه و مکان اولیه‌ای چی می‌شه بعد از مدتی این اثر ناپدید میشه ها ما اینجا اتفاقیه این معادله جوری بود که این اتفاق براش بیفته که بچه‌ها می‌دونن می‌دونید میشه بچه‌هایی که کنترل خطی پاس کردن بلدید اینو تو فرم استیت اسپیس به فرم x مساوی ایکس بنویسید دیگه ها الان هم همین اتفاق افتاده که بعداً این تو فرم پیوسته بود اگه گسستش میکردید میشد ایکس تی چه تابعی ایکس تی منهای یک داره الان هم بهمون گفتن h تی چه تابعیتی از چی داره حالا ایکس تی و اچ تی منهای یک داره یعنی اینم باز فرم استیت اسپیسه و اتفاقی که اینجا برای ایکس میفتاد و x صفر و ایکس دات صفر وش

لحظات اولیه میفته و میره ناپدید شدن و اگر اینجا شما به جای صفر اف داشتید یا مثلاً اف سینوس امگا ت داشتید حالا عدد ثابتی باشه اف صفر باشه شما میدید که از یه جایی به بعد فقط چی امگا ت به عنوان خروجی ماندگار براتون میمونه و خروجی های حالت چیز کاملا ناپدید شدند و همچین اتفاقی اینجا داره دیده میشه ولی ما اونجا برامون مهم نبود اتفاقاً دوست داشتیم که نباشه ولی اینجا دوست داریم که قدیم باشند گفتیم با اینکه بی نهایت میل نکنه از تنه چی یا کلا هر تابع غیر خطیه محدود کننده باند بگذرانیم میگه اوکی این اتفاق میفته ولی تحت شرایطی می‌بینید که اچ ناشی از h های قدیم دیگه آپدیت نمیشه و اچ های مثلا لحظه دهم با یازدهم با بیستم همه یک اثر رو از اون چی میبینن اولیه میبینند در حالی که اگر از تابع تنش استفاده می‌کردید دیرترشباع میشد و اثرات قدیم ماندگار بود این شانس رو

جمله جان به جین سلام کرد مثلاً همچنان زنده بمونید و بتونید تشخیص بدید در حالی که اگه از سیگموید استفاده می‌کردید یا از رلو استفاده می‌کردید احتمال خیلی خیلی خیلی زیاد نمی‌تونستید چون یا اشباع می‌شد یا به سمت می‌رفت بی‌نهایت می‌کرد یا به سمت صفر میل می‌کرد اصلاً دیگه اطلاعاتی نمونده بود که شما بخواید این تصمیمو بگیرید و گفتیم راهش اینه که بریم به سمت اینکه یک حافظه بلند مدت تو سیستم به وجود بیاریم و راهکار اون ماژول ها و یونیت های هستند به نام لانگ شورت ترم موری یا ال اس تی ام ها که بهشون میتونیم بگیم حافظه کوتاه مدت ماندگار خب اگه بخوام درس جدید رو شروع کنم که الان داره شروع میشه ماجراش اینه که در واقع باکس های آ دیگه به اون سادگی قبل نیستند که یه تنش باشن و ایکس تی و اچ تی منهای یک رو بگیرن و برای شما اچ تی رو بسازن اینا به اسم باکسشو ال اس تی ام گذاشتم یه تابع پیچیده تری به ظاهرش نگاه بکنید یه همچین اتفاقای زرد و صورتی رنگ قراره

گفته که ما می‌خوایم یکی یکی در موردش صحبت بکنیم همین قدر بدونید که شبکه‌های ال اس دی ام با این ساختاری که ارائه شده قادر به یادگیری در واقع چی وابستگی‌های بلند مدت یا لانگ ترم دیپندنسی هم هستش ها و میتونه چیزهای بلند مدت‌تری رو با حافظه خودش بسپاره مثلاً تو مثال تولید کدهای مصنوعی یاد بگیره چند تا آکولاد باز کردید اگه سه تا باز کرده باشید باید این سه رو تو حافظش بسپاره حتی اگر هزار خط شما بینش کد نوشته باشید باید اینو به حافظش بسپاره و بعداً که یکی یکی وسطشون حالا اجازه داره چی از حافظش خارج کنه یا کمترش کنه خب خدمت شما عارضم که به این جمله ساده نگاه کنید من در ایران به دنیا آمدم کم و بیش بلد هستم که چی صحبت کنم جوابش چی میشه بچه ها فارسی صحبت کنم دقیقاً پاسخ همینه اما اتفاقی که میفته اینه که شاید

ما این بود که این آرنا انقری شعور داشت که این وسط مسا یه سبد اضافه بهش می‌دادیم می‌گفتیم آقا چند تا کلمه کلیدی رو نگه دار کاملا کار می‌کنه مثلاً ایران و دنیا رو اگه می‌تونست تو سبدش نگه داره بلد بود که چی حالا فارسی رو بنویسه در حالی که مثلاً ب آمدم کم و بیش اینا اصلا اونقدری مهم نبودن ها و شبکه‌های ال اس تی ام یا کلاً آرنا این مهارت رو باید بهشون بدیم که اینا رو یاد بگیرن ال اس ما بچه‌ها این ظرف بالاییه رو یه جورایی دارند و حالا می‌خوایم بگیم داشت بچه‌ها اینجا نوشتم کاش داشت این برای خودم یادآوری خاط است همون اوایل ازدواجمون رفته بودیم یه خریدی بکنیم با خانم یه وسیله آشپزخونه رو می‌خواستیم خریداری بکنیم کلی تعریفشو داد بعد گفتیم که حالا نقطه ضعفش چیه گفت کاش داشت خب و این کاشتاشه به نظرم کاملاً جاش اینجا بود که تو این شبکه های آرن جاش بدم و بهتون بگم که اینو نداره و ما چیکار باید بکنیم که اینو جا بدیم راستی

جهت اطلاعتون کسی که پیشنهاد داد شبکه ال اس دی موبایل اول خدمتتون عارضم که چند وقت قبل توییت کرده که ۲۵ سال از روزی که من پیپر سابمیت کردم و ریجکت شد میگذره روز اولی که پیپرشو ریجکت می‌کنه در زمینه ال اس تی ام ریجکتش میکنن در حالی که خدمتتون عارضم به نظر میاد از زمان خودش جلوتر بوده و بعدا دنیا رو گرفته خب اما شبکه های ال اس ام چه اند این قیاف شونه یعنی اون به جای اون کانکت کردن اچ قبلی و ایکس جدید و از یه تنش گذروندن و اچ جدید تولید کردن یه همچین چیزی مواجهید براتون امشب وحشت نکنید شما قرار نیست کدهای مربوط به محاسبات پیشرو و انتشار به عقبش را بنویسید که تا خانه‌هاش موجودن ولی خیلی هم چیز سختی نیست براتون بگم حداقل از عملکرد خود سر در میارید قرارداد خدمت شما عارضم که زردا نوشته یه نورال نتورک ساده مث میتونن بدون لایه پنهان باشن ورودی

عملگرهای توی گردالی صورتی رنگ عملگردهای پوینت وایس یا پوینت وایس اپریشن‌ها بچه‌ها این اولین کلید واژه ماست که کمک می‌کنه این کارو بکنیم پوینت وایس اپریشن ها یعنی اگر یک بردار ده در یک با یه بردار ده در یک دیگه بهتون بدن بینش ضرب بذارن یعنی درایه اولش درایه اول اون ضرب کن دومش در دوم اون و یک بردار ده در یک باز برای من به وجود بیاد که اولی در اولی دومی در دومی و نقطه به نقطه معادل در همدیگه ضرب یا با هم جمع شدن این ماجرای مهمه فلش‌ها نماد وکتورن و پس چیز یعنی رو هر فلش خود خروجی های که داره ازش میاد وکتور و در ضمن رو هر فلش دبلیوهای اند که ماتریس اند و اگر دیدید دو تا فلش به هم رسیدن اینا یعنی کانکت شدن یعنی اینجا و اینشه یعنی این در واقع h لحظه قبل و فرض کنید که چی ایکس لحظه بعد اینا کاکت شدن و یک بردار بزرگتر ساختن و

دوشاگی به وجود اومد مثل اینجا کپی شده یعنی اینجا تولید شده یه بار رفته بالا من لازمش داشتم می‌خواستم ببینمش بخونمش یه بارم رفته ماژول بعدی چون بهش احتیاج بوده خب خدمت شما عارضم که حالا یکی یکی می‌خوایم در موردش صحبت کنیم اولین فرق ظاهریش اینه که آر ان ایکس تی و اچ تی منهای یک رو میگیره فقط اچ تی رو تولید میکرد اما ال اس تی ام نه تنها ایکس تی منهای یک رو میگیره بلکه یه چیزی داره به نام سی تی منهای یک بهش میگن سلول حافظه و در ضمن اچ لحظه بعد به ۳۰ لحظه بعد تولید می‌کنه و به بعدی ها میده ولی جهت اطلاعتون ما بیشتر مثل قبلاً با همون اچ کار داریم وقتی می‌خوایم خروجیی‌هامونو بگیریم c کمکی به ما خب یعنی ما سی رو بعدا نمیدیم توی ماژول های طبقه بالاتر اصلاً کاریش نداریم سی حالا خواهید دید سی بچه ها بهش میگن سل استیت و در واقع ایده اصلی پشت ال اس تی ام خب میتونیم بهش بگیم

حافظه بلند مدت بچه‌ها یه خط از ازل تا ابد ها از روز اول شروع میشه تقریبا بدون مانع تا آخر میره ببینید خودش تنهاستا خب خیلی کسی بهش اضافه نشده و این کلید ال اس دی ام‌هاییه که بتونن حافظه‌های بلند مدت داشته باشن یعنی بتونه مثلاً ۳۰ تا کلمه قبلم هنوز به خاطر بسپاره اگر مهم بوده لزوماً به خاطر نمیسپاره اگه مهم بوده رو یاد میگیره به خاطر بسپاره بخاطر این برادرمون خاطر این سیه که اول از یه لایه قبل اومده توی راش آپدیت میشه ولی خیلی ساده آپدیت میشه با یه ضرب پوینت بازی با یه جمع پوینس و یه سی جدید پیدا میشه و میره بعدی حالا در مورد این می‌خوایم صحبت بکنیم خب در کل شبیه یک نوشته چیزه کاموایر عمل میکنه کل خدمت شما عرض کنم که داره تقریباً مسیر جدایی از حلقه رو میره یه مسیر خالص و مخلصی به سمت جلو داره کسی خیلی مزاحم

و میتونه حتی تلاش بکنه که اینفورمیشن رو براتون ببره جلو و میتونه فلو و جریان اینفورمیشن اطلاعات رو چیکار کنه اگه لازم باشه ثابت نگه داره و کلید واژه بعدی ماژول‌های lstm چیزهایی هستند به نام گیت یا دروازه تمام این در واقع مربع‌های زرد رنگی که توشون سیگما نوشته شده که همون سیگموئید خودمون باشن نماد دروازه یا گیتل منظور از دروازه دریچه قابل تنظیم یا پیچ قابل تنظیمیه که به ما امکان کنترل عبور اطلاعات میده یعنی شیر تنظیمی که به من میگه من اجازه دارم این اطلاعات رو رد بکنم یا نه چیز مفیدی نیست بندازش دور ها میزان مفید بودن و نبودنش تعیین میکنه سیگما بچه‌ها خروجیش بین چند تا چند بود تابع سیگموید که رو هر درایه ماتریس هم اعمال تک تک درایه‌هاش روی بردار

بردار اعمال میشه دیگه صدای منو خیلی با تاخیر دارید بین صفر و یک بود مرسی محمد خدمت شما عارضم که صفر و یک یعنی نماد اینه که اگه صفر شد یعنی اون اطلاعات چیز مهمی نیست بندازش دور ولی یک شد یعنی نه مثلا نگهش دار لازمش دارم و الی آخر و این نمادی از اینه خدمت شما عارضم که گیت ها مثل گیت حالا اولیش که می‌خوایم بگیم در مورد فورگت فراموشی هستند در واقع در کارشون مثل این عکس بسیار سخت گیرند و به سختی به درایه ها اجازه عبور میدن اما چه جوری این اتفاق میفته بچه‌ها یاد خودمون بیاریم می‌خوایم یکی یکی باز کنیم ال اس تی ام در واقع ماژلی که سه تا گیت داره سه تا از این سیم‌ها داره که می‌خوایم روش صحبت بکنیم اولین سیگما بهش میگن گیت فراموشی یا با اف نشونش میدن بهش میگن فورگت گیت چه اتفاقی میفته ما یه بار برای خودمون مرور بکنیم ما هدفمون اینه که

لحظه بدو بسازیم توی آر ان ساده اچ لحظه بدو از رو چی می‌ساختیم برام بنویسید از روی اچ قبلی و ورودی فعلی مرسی محمد جان خدمت شما عارضم که الانم همینه برای اینکه شما باز تعیین کنید کدوم درایه‌های در واقع چیز خوبن یا باید بدن باید فراموش بشن بازم شما چی به چی دسترسی دارید باز اچ قبلی و ایکس فعلی بچه‌ها این اچ قبلی x فعلی بارها استفاده میشه هم تو یک اول هم گیت دوم هم تو گیت سوم پس کلاً ما توی ال اس تی ام اچ قبلی و ایکس جدید رو میگیریم کانکت میکنیم یا حالا هر کدوم در دبلیو های خودشون ضرب میکنیم با همدیگه جمع می‌کنیم حالا هی با خروجیش یکی یکی کار داریم یه بار چیکار می‌کنیم از سیگ میگذرونیم به محض اینکه از سیگموید بگذرونید اتفاق که میفته درایه‌هاش

فقط بین صفر و یک تغییر می‌کند و ابعادم جورین که خروجی این با خروجی اچ و خروجی سی همسایزه بچه‌ها جهت اطلاع خروجی سی و اچ همسایزن یعنی در ساده‌ترین حالت مثلاً اچ اگه پنج تا درایه داره سی هم باید پنج تا درایه داشته باشه خب اینجا چیکار می‌کنه اینجا یه سری عدد بین صفر و یک به شما میده اوکیه و این نماد چیه حالا اسمشو گذاشتن فورگت گیت میگه اگر صفر شدم برو در ده متناظر c لحظه قبل ضرب بشو و فراموشش کن درایه رو اون دیگه اطلاعات مفیدی از این به بعد نیست من دارم بهت میگم شاید قراره یه چیز بهتری جاش بیاد بشینه ولی اگه یک شدم بیا نزدیک یک شدم یعنی تمام اون اطلاعات نگه دار کارت دارم بعدا به دردم میخوره تو لاین های بالاتر توی ماژول های بالاتر به دردم میخوره و احتمال داره نمادی از اون باشه که اوکی فعل و فاله رو داره حفظ میکنه داره حفظ میکنه که آقای یا خانم بع هیزوهر بیاره تو کلمات و الی آخر پس گیت اول شد فورگت گیت با f نشونش میدن میگه چیکار کن میگه

کانکت کن در دبلیو متناظر صبر کن بچه w طولانی یعنی همون مثل سری قبلی اگه اچ مثلاً چیز باشه فرض کنید کا در کا باشه ایکس مثلاً ببخشید کا در یک باشه دیگ ایکس دی در یک باشه کانکت که میشه کا به علاوه دی در یک باید ببینید که در باید این چی باشد که حاصلش باشه کا در یک مثلاً کا در کا به علاوه دی باشه پس wf اینه باید تنظیمش کرد بایاس هاش جمع میشه بایس هم داره و سیگما میگذره و در کل حرفش اینه که چقدر این اطلاعات براتون نگه دارم اوکی اینو رفتیم گیت بعدی یا کار بعدی یه چیز دوگانه اسمش میزارم اینپوت سکشن با اندیس آی نشونش میدم خود این سکشن دو شاخه میشه یه چیزش میگه کانکت کن ایکس لحظه جدید و h قبلی رو از تنش رد کن این بچه ها شبیه چیه

کیس جدیدو با اچ قبلی از تنش رد کن اسمشم گذاشته این همون قبلی ماست باریکلا اسمشو گذاشته سی تیلدا قراره این سیتیلدا تغییرات سی رو رقم بزنه یعنی علاوه فورگت سیتیلدام حالا میخواد بیاد وسط نماد اینکه الان من چه چیز جدیدی دارم میبینم که میتونم بهت بگم یاد بگیر یا به فراموشی بسپار بعضی از کتاب ها و منابع بچه‌ها اینو با جی نشون میدن بهش میگن گیت گیت فکر کنم حالا اگه اشتباه نکنم ولی ما سیتی گذاشتیم خب سیتی حرف حسابش اینه که میگه چیکار کنیم میگه یه wc داری که این لزوما اصلا با w اف یکی نیست یعنی یه wلیو ست جدیده w پس تعداد متغیرش از بیشتر شد پیچیده تر شد ولی همچنان کانکت کن اچ و ایکس رو ضرب کن با بیا جمع کن تنش سیتیلدا بدست میاد ما قبلاً سیتی نماد اچ لحظه بعد می‌گرفتیم اما اینجا یه گیت هم باز برای این میذاره میگه وایسا قبلش از یه بار دیگه ایکس و اچ و کانکت بکن با یه سری دبلیو جدید

به نام دبلیو آی دوباره اینا رو ضرب کن از یه بایاس بگذرون در خدمت شما عرض کنم سیگما از سیگما بگذرون ببین درایه‌هایی که میده که دقیقا با سیتیلدا و سی و اچ و اینا هم سایزن بین صفر و یک چه عددی در میاد می‌خوام ببینم این عددهایی که به دست آوردی کدوماشون باقی بمونن کدوماشون خوبن کدوماشون بدن یا وزن دار تاثیر داده بشن ها پس اینو در این ضرب چیکار می‌کنم نقطه‌ای می‌کنم خب اوکی من تولید اولمو کردم از اونور گیت فراموشی هم دسترسی دارم چه این دو تا میان سی و آپدیت میکن سی لحظه قبل رو ها سی که مثلا قرار بود بره نگاه کنه چند تا پرانتز باز شده اگه لازم شده بیشترش کنه کمترش کنه یا از همچنان دست نخورده باقی نگهش داره یا اینکه متغیرها فاعلام خانمن آقا اند ممکنه مثلاً ۳۰ تا کلمه قبل این اتفاق افتاده باشه یعنی شانس رو به شما میده میگه چیکار کن میگه اول فورگت درایه به درایه در سی تی منهای یک ضرب کن اوکی در

این فقط بهت میگه که فورگت کنم یا نکنم قبلیا رو میگه جدید چی داری میگه جدید دارم من توی حاصل ضرب سیتیلدای تی با آی تی نقطه به نقطه میزارم و این دوتا رو با همدیگه جمع بکن یه اتفاق جذاب بعد از اینکه اینو از تنش می‌گذرونیم سیتیلدای تی منهای یک تا یک میتونه تغییر بکنه و این سبب میشه که خروجی این اتفاق بین منهای یک تا یک باشه یعنی وقتی میخواد با سی تی منهای یک جمع بشه بعضی وقتا اگه درایه اش منفی باشه میاد چیکار میکنه یه چیزی رو کم میکنه پس شانس هم به خاطررسپاری میده به ماجرا هم شانس از حافظه بردن رو میده تمام شد سی تی به همین راحتی حساب شد از اون شاخه از ازل تا ابده با همین دو تا عبارتی که به ظاهر میاد ساده البته خود این اف تی و آی تی ماجراهایی داشتنا ها اینجوری میشه چیکار کرد میشه سی تی و آپدیت کرد خب سی تی رو آپدیت کردیم اما من می‌خوام h تی را هم آپدیت کنم چیکار کنم میگه یه گیت

فرض کنید ورودی کانکت شده اچ و ایکس میاد از سیگما میگذره بین صفر تا یک تغییر میکنه بعد المنت وایز در سی تی منهای یک ضرب میشه که میتونه حالا مثلاً اینجا چند تا داره فرض کنید داره میاد ضرب میشه و چی این میره یه پله جلوتر بعد حالا با اینم جمع میشه و در نهایت چی سی تی لحظه بعد رو میسازه این اتفاق گرافیکی ماجراست و اما گیت آخر که بریم h لحظه نهایی رو تعیین کنیم که قبلا با تنه چنین دو تا میگذشت این دفعه پیچیده تر میشه میگه ببین سی جدیدی که پیدا کردیم که اسمش سیتی خیلی غنیه خب من یه بار از تنه ردش می‌کنم تا مطمئن شم داده هاش بین منفی یک و یکه من به عنوان چیز همین قبلی خدمتتون عارضم مثل اچ های قبلیم که بین منفی یک تا یک باقی میموند از تنش رد میکنم در ضمن بازم یه گیت میزارم سر راهش بهش میگم که تمام درایه‌هاش آیا نیازی هست به خاطر بسپاری یا نه و یک گیت دیگه میزارم و این ایکس و اچ رو کانکت میکنم دوباره

E:\courses\LangChain Project\main root\data\SCR_Session14_transcript_part3.txt

‏w جدید پس این w با اون دبلیو آی و اف فرق میکنه و حالا هدف شما اینه که تمام دبلیوها رو آپدیت کنید و به دستش بیارید و در کل اینو به اصطلاح ضرب نقطه‌ای می‌کنم از و خدمتتون عارضم پس از یه چیز کردم به اصطلاح اویتی فقط صرفاً اینکه از اون جمع کانکت شده این سیگما می‌گذروند بعدش میگه او تی رو در خروجی سی تی وقتی که تنه روش اعمال میشه بگذریم ضرب نقطه به نقطه بکن و چیزی که به دست میارید دقیقا تعداد المان هاش با سی تی سی تی منهای یکh تی اینا همه برابره و این نمادی از اچl بعدمه و این دفعه حالا این اتفاق غنی‌تریه که هم قبلیا رو تو خاطرش داره هم اتفاقات جدید رو به خاطر سپرده بچه‌ها بیشتر از این نمیشه روش حرف زد و باید برید ران بگیرید چون بیشتر از این واقعاً تفسیر پذیر نیست حالا از کجا معلوم اگر من اینجا سیگما نمی‌ذاشتم یه چیز دیگه‌ای می‌ذاشتم بهتر نمیشد چرا این همه سیگما گذاشتم آیا

کوتاه خدمتتون میگم که به چه نتایجی رسیدن حالا میشه با خیال و آرامش راحتی برخلاف اون وحشت اول به این عکس نگاه کرد بچه‌ها باکس‌ها و ماژول‌های ال اس دی ام چیکار می‌کنند کاملاً شبیه باکس‌های آرنه عمل می‌کنند اینی که ایکس لحظه فعلی و اچ لحظه قبل رو میگیرن خب و به شما چه لحظه بعد رو میدن ولی در کنارش یه چیز جدیدم بهتون میدن به نام سی لحظه که خب طبیعتاً سی لحظه قبل باید به شما میدادیم اونم می‌تونید حالا یا مثلاً صفر صفر از لحظه اول بدید بزارید بره جلو میتونید حتی لازم باشه ترینش بکنید و اچ صفر و سی صفر رو میتونید جز ترین ها بزارید ولی از اون به بعد هی محاسبه میشن و هی چیکار میکنه این مدلیه که هی میره لحظه بعد بهتون میده ولی با یه تابع فوق العاده غیر خطیش تر شده دیگه شاید یکی از مهمترین مزایای ال اس تی ام نسبت به شبکه های آر این بود که یک این خط خالص و مخلص بالا رو داشت که خیلی راحت داشت می‌رفت جلو و میتونست حافظه

بسیار خوبی داشته باشه و گذشته طولانی را هم به خاطر بسپاره و دو اینکه چندین بار اپریشن اپراتورها و اپریشن‌های غیرخطی روش اتفاق میفته و میتونه بسیار غیر خطی تر از آر ان های معمولی عمل بکنه و اینم خدمتتون معرفی کردیم آی تی بهش میگیم این پوت گیت اف تی بهش میگفتیم فورگت گیت او تی بهش میگفتیم اوت پوت گیت gt یا c تیلدا اونجایی بود که خروجی تنه چه اینجا بود و خدمت شما عرض کنم سی تی و اچ تی هم همون اچ تی همچن سل استیت یاوری سل یا حافظه سلول یا الی آخر و این چیزهایی که در کل میشد گفتش اینجا حالا یه عده اومدن رو فرمول برداریش کار کردن خدمتتون عارضم که چگونه این دبلیو را همه رو بزنیم تنگ هم یه دبلیو چند در چند میشه یعنی مجموعه دبلیو های که به خاطر اینپوت فورگت اوت و گیت گیت خدمت شما عرضم مجهول بود در کل چند تا دبلیو به من میده و خب اینا چیزایی نیست که خیلی سخت باشه خودتون میتونید به راحتی بنویسید حالا

پیش اومد آقا آیا این سوپر بهترینه بچه‌ها همین قدر جوابتون میدم این خیلی خوب کار کرده از ۲۰۰۰ به اینور خیلی خوب کار کرده هر وقت ایده‌ای نداری خب از ساده هم حذر بکنید زور بیشتری داره به خصوص که شما میدید پایتون اینا براتون حساب کتاب ها رو انجام میدن شاید تو شبکه توی حرکت های دینامیکی که ما مثلاً خروجی‌مون چه می‌دونم فقط به ورودی یک لحظه بعد بیشتر وابسته است یعنی سرعت و موقعیت های لحظه قبل با نیروهای فعلی برای ما کلیات کار در میارن ولی توی متن ها آنالیز ویدیوها تحلیل فیلم ها الی آخر واقعا به گذشته‌های بیشتری نیاز دارید به نظرم ال اس تی ام خیلی بهتر از آن کار میکنه اما آیا این بهترین پاسخ بود پاسخ خیر بوده یه عده‌ای اومدن انواع واریانت رو روش زدن یه عده گفتن آقا وایسا ببینم این برای چی خالی بره این سی لحظه قب بیا بازی یعنی بیاد دخیل بشه تو اینکه تعیین بکنه با اچ و ایکس لحظه قبل ایکس

نمی‌دونم تاثیر فورگت گیت چه جوری حساب بشه و رو خود سی تاثیر بذاره یا چه جوری تاثیر بزره رو خروجی تنه‌چ این ولی آخر انواع این فیدبک‌ها رو دادن بعد یه لحظه آپدیت شده رو دادن به گیت اوت پوت و دیدن اوکی اینم همچنان داره خوب کار می‌کنه فقط بچه‌ها حواستون باشه اینجا سی تی منهای اچ تی منهای کانکت شدن یعنی قبلا شما این دوتا رو کانکت میکردید مثلا اگه بعدش کا بود این دی بود میشد k+وه دی ماتریسه متناسب با اون تصمیم اینجا اگه این کا این کا این دی باشه دو کا به علاوه دی پس این ابعاد بزرگتر میشه و شما با یه دبلیو بزرگتر تعداد متغیر بیشتری در ارتباطید بایاس طبیعتاً باید آپدیت بکنید و این یه واریانت دیگه بود که به نام پیپ که حالا روزنه چشمی داشت و این سیتیلداها سی تی منهای یک و سیتی میتونستن تو بازی دخیل باشن تو آپدیت ها و توی تصمیم گیری برای اچ مستقیم تر حتی دخیل بشن و اینم خوب کار کرده بود و اینم حالا محاسباتش بود خیلی باز چیزهای سختی نیست که پله پله چگونه حساب بکنید چگونه ft رو حساب بکنید چگونه

آیاتی حساب بکنید چگونه اوتیو حساب کنیم نگاه کنید خیلی کار سختی نیست اگه مردی بود بفرمایید من بعداً در خدمتتون هستم در نهایت میگه ۳۰ تی رو چه جوری آپدیت کن میگه ببین این چیزی که تو اف تی به دست آوردی ضرب نقطه‌ای کن با سیتی منهای یک جمع نقطه‌ای و درایه به خروجی اینجا حالا اینجا خودش چی بود سی تیلدا رو با آی تی ضرب نقطه‌ای بکنیم بعد جمع بزن سی تی جدید پیدا بشه از تنش ردش کن بعد ضرب نقطه ای بکن با او تی که خودش حالا تلفیقی از این آشغال بود که اینجا بود و برام بساز و برو استیت بعدی و من میتونم تا آخرین استیتم هی اچ و آپدیت کنم و سی هم آپدیت کنم و این اچ و سی ته ندارن تا بی نهایت هم هی برن براتون چیکار کنن آپدیت بشن اما واریانت های دیگه زدن یه عده گفتن آقا خیلی گیت داره چه خبره بابا سه تا گیت چیکار میخوای بکنی مگه بیا کمترش کنیم و فلان یه پیشنهاد جالبی مطرح شد گفت ببین من شبکه رو ساده‌تر می‌کنم داستان فورگت و نیو اینفورمیشن رو یکیش میکنم میگم آقا هر وقت یه چیزی قراره فور

همون وقت باید یه چیزی آپدیت بشه یه چیزی نوشته بشه و اگر چیزی قراره نوشته بشه باید همون وقت فورگت بشه یه همچین چیزی بعد گفت اوکی خب اف تی اگر نمادی از فورگت گیته یک منهای اف تی نمادی از چیه به خاطر سپاریه که من باید بدم به چی به تن چه یعنی بگم آقا درایه‌هایی که اف تی داره میگه کمرنگ بشو سی تیلدا تی تو بیا پررنگش کن تو سی تی منهای یک یعنی چی یعنی آقا سوم سیتی منهای یک بخاطر f تی میخواد کمرنگ تر بشه باید سیتی اتفاقاً این نباید کاریش داشته باشه این نگاه همینجوری داشتن این ایده خامش بود و رفتن یه ماژلی رو به نام گیتد ریک یا جی آر یو زدن که شبیه اینه و اینجا محاسباتشو براتون نوشتم و اینم دیدم خیلی خوب داره کار در میاره یعنی پا به پای تقریباً هست و هر وقت که ایده‌ای ندارید عرض کردم یاlst ام یا جی آر یو رو بزنید کلا هم یادمون باشه تو شبکه های ریکنت ساده ال اس تی ام و جی آر یو سلبریتی های ماجرا یعنی

ترین و معروف‌ترینان ولی شما می‌تونید هزاران نوع در واقع شبکه بسازید که هی گیت‌های مختلف داشته باشه هی بگید اینو به اون کانکت کن نمی‌دونم در اون ضرب نقطه‌ای کن از سیگما بگذران حالا بزار به بعدی نده بعدی و این کارهایی که دیگران کردند اتفاقاً من می‌خوام حالا در حد یه خط براتون صحبت بکنم فقط تو این شبکه اسمارو عوض کرد اونجا سه تا گیت اینپوت و فورگت و اوت پوت داشتیم اینجا دو تا فورگت و اینپوت که زده بود یه جورایی یکیش کرده بود کلا اسمشو گذاشت آپدیت گیت و خدمت شما عرض کنم که این مدلی ماجرا را عوض کرد باز خیلی کار سختی نیست میتونید برید نگاه کنید الان نگاه کنید مثلاً زد تی خدمت شما عارضم که اول میگه آپدیت شده اچ تی منهای یک و ایکس تی در یه wz ضرب چیز یعنی ضربش بکن عادی بعد از سیما بگذرونش که بشه بین صفر تا یک چون میخوام نمادی از این باشه که چقدر بقیه حضور دارند یا ندارن ولی آخر محاسباتشو برید ببینید اصلا چیز سختی نیست کامل متوجه میشید اتفاق جذابی که برخلاف

افتاد و شبیه آرن شد این شد که بچه‌ها این یونیت چند تا خروجی داره مثل یه دونه خروجی داره و اون یک دونه خروجی اسمش سیتی رو نداره یعنی یه جورایی اون سیتیه داخل این ماجرا دیگه محو شد و مثل خودمونه دیگه یه دونه ایکس تی و یه دونه تحویل میگیریم حالا گذاشته که پله پله چگونه انجام میشه و شما چه‌جوری می‌تونید ht رو بر حسب دیگران بدست بیارید مثلاً ht همون جاییه که مثلاً چی از یارو ما میومد ایکس خدمت شما عارضم که فعلی با h لحظه قبلی که تو راش از چیز گذشته آ تی ضرب خارجی شده بیاد

پیدا بکن و این کارو دیگران کردن اینم نمادها اینتویشن‌هایی که براتون نوشتیم تفسیرهای بیشتر اگه دلتون خواست نگاه کنید اگه مثلاً زد صفر باشه یک باشه نمادهایی از چیه و میتونید خودتون برید خیلی راحت تحلیل بکنید که اگه صفر باشه یا یک باشه داره کدومش با کدوم یعنی کی اچ تی منهای یک بیشتر میره تو h تی میریزه کی ایکس تی میره آپدیت میکنه اچ تی رو یعنی کدومشون بیشتر تاثیر میذاره رد ضد تی اینجا وجود داره دیگه و اینجا میتونید ببینید محاسبات اینجا براتون نوشتیم و اصلاً کار سختی هم نیست آره حالا محمد این خیلی سوال کلی و خوبیه خب خدمتتون عرضم من اجازه بده این سوال اینم بگم و بعد به سوال شما بپردازم بچه‌ها آیا اینا تناواریانت بودن نه یه بنده خدایی رفته t

برتری خاصی ندارند و بعضیاشون پا به پای ال اس دی هم کارو در میارن مثلاً یکیشون این بوده یکیشون این بوده و انواع گیتارو این وسط مسا گذاشته کیو اول در اچ ضرب کنه بعدش در دبلیو بزنه فلان فلان و رفتن دیدن که نه هیچ کدوم چیزای عجیب غریبی نیست و میتونه این اتفاق بیفته و در مورد این صحبت های فعلیمون میشه برگردیم به شبکه‌هامون و این دفعه به جای اون مربع های که بود ساده بود این دفعه شما میتونید تو دلتون میخواد میتونید ماژول‌های یونیت های ال اس تی ام یا جی آر یو بزار ها یون که بزارم یعنی یه ۳۰ تیل سی هم داره که حالا دیگه نشونتون ندادم اگه جی آر یو هم بزارم که نداره دیگه تابعش به اون سادگی تنش قبلی نیست که اینو اینو بگیره کانکت کنه در w ضرب کنه تنش بگیره این دفعه یه سری اتفاقات وحشی تری روشون انجام میده و چی اونو میده خروجی که این غیر خطی تر میکنه و معمولاً شبکه بهتر کار میکنه میام سر سوال آقای

جالبی اصلا چه حس و حالی میده و چه معانی دارند این درایه‌های h و c و همینجوری برای خودمون ببینیم نوشته این شبکه‌ها رو دیدیم ترتیب در نظر می‌گیرند ولی ترتیب خاصی نداشتیم پاسخ فعلی ما به گذشته وابسته باشه این شبکه میتونه کاری بکنه یا نه ال اس تی ام و جی آر یو اولین اتفاق جذابشون اینه که حالا توی اس تی ام سی تی داشتیم و توی جی آر ای و اچ تی داریم بالا که تو راهش خیلی کس خاصی نیست و این کس خاصی نبودن میتونه حافظه های عجیب غریب بلند مدت داشته باشه از خیلی گذشته دور یعنی هنوز یادش بمونه که شما هزار کلمه قبل مثلاً تو کد فیکتون یه پرانتز باز کردید یا یک کروشه باز کردید باید ببندینش مگه می‌شماره اونو مثلاً نمادی از اونه و اینو میتونه کاملاً به خاطر بسپاره حتی مهم نباشه ترتیب نیست مگه خوب ترین بشن درایه های اچ اون کارو براتون می‌کنه بچه‌ها یه پرانتز باز کنم درایه اچ تو این مثال ما سه تا

شما ممکنه همونطور که شبکه‌های عصبیتون مثلاً لایه‌های هیدنش هزار تا ۱۲۸ تا فلان تا نرون می‌ذاشتی توش ممکنه همینقدر داده داشته باشه مثلاً ما یکی از بچه‌هامون رو لب خوانی کار کرده بود توی لایه هیدنش ۱۵۰ تا نرون گذاشت تو اچ و گفت خودت برو نگاه کن این ۱۵۰ تا احتمالاً نیازه حالا تو ذهنش بوده که ۱۵۰ تا کار مختلف احتمالاً هستش که تو تو آنالیز ویدئو بهش احتیاج داشته باشی یکیش مثلاً برای این باشه که ببینیم مثلاً طرف چه میدونم اصلا انسان تو تصویر وجود داره یا نه یکیش برای این باشه که مثلاً لبش چه جوری حرکت کرد یکیش فلان تشخیص بده از فلان ولی آخر ریش سبیل داشتن از نداشتن تشخیص بده و و و خب و اینا رو به حافظه بسپاره حالا بعضی هاش به کار ما میاد بعضی هاش نمیاد بعضیاش تفسیر پذیر هستند بعضیاش نیستن محمد تونستم جوابتو بدم یا سوالتو بعد متوجه شدم عالی خدمت شما عرض کنم بچه‌ها یکی از تیکه‌های

ترین کردیم زدیم و رفت ترین شد و داشت خوب کار میکرد ببینیم که چه ویژولایزشنی داره من بچه‌ها فقط یه فتح بابی می‌کنم و بعداً حالا بهش برمیگردیم مثلا فرض کنید که گوگل ترنسلیت یکی از جاهایی که از آر استفاده میکنه من ترجمه می‌کنه من نمی‌نویسم من هستم اگر بنویسم من هستم یک می‌نویسه من من یک هستم بنویسم بلک برد زبانمون در این حد بیشتر نیست خدمت شما عرض من یک تخته سیاه هستم خب یه همچین چیزی ترجمه می‌کنه و می‌بینید که این میره تو فارسی خودشو وفق میده این تخته سیاهه باید کجا بشینه یکی باید کجا بشینه آیا اینجای چهار کلمه داشتم آیا واقعاً اونور هم نیاز چهار کلمه داشته باشم و الی آخر اینا مواردیه که چی مواردی که خب مهمه که حالا اینا بعضی هاشون در مورد

بینابین چی می‌گذره آیا کسی اومده خروجی‌های این اچ آر ویژولایز کنه تو هیدن استیتشون چی یاد میگیرن یا نه اومدن این کارو کردن یکی از همون کسا کارپتی تو استنفورد بوده که اصلاً تو این زمینه مقاله داده تو سایتشم اینا رو گذاشته اگه دلتون خواست برید ببینید گفته که من روی لئو تولستوی همون جنگ و صلحش خب رفتم یه چیزی ترین کردم یه نمونه یعنی کل کتاب رو به عنوان ترینینگ ست بهش دادم هی کلمه قبلی رو بگیره بعدی بعدی ها را الی آخر هر جمله اش به عنوان تک کلمه ها رو به عنوان یه ورودی دادم تا آخر جمله هی خروجی ازش گرفتم گفتم اوکی این حالا برو یاد بگیر یه wلی که بهت میدم مثلاً اگر با فلان شروع شد بعدیش باید این باشه بعدیش احتمالاً اینه بعدیش اینه تا اینجا تمام میشه دوباره جمله بعدی جمله بعدی مثلا ببینید تنها چندین هزار جمله بهش داده به عنوان ورودی و رفته ترین شده تمام دبلیو ها در اومدن خب حالا گفته این بینابین هی بیام باهاش چیز تولید کنم

متن تولید کنم اول نذاشته خیلی ترین بشه تعداد زیاد نبوده ۱۰۰ تا رفته بوده جلو چیزی که تعیین کرده اینه خب یه چیز بی معنیه فقط تنها چیزی که خودش ادعا کرده یاد گرفته اینه که احتمالاً فقط یاد گرفته هر از گاهی باید چیکار کنه این فعلاً اصلاً چی فعلا کاملا چیز بیخود و در واقع تولید کرده تنها چیزی که یاد گرفته هر از گاهی اسپیس های هم زده گفته به نظر میاد تو بعد بین یه سری چیزا کرکتر یه اسپیس های هم هست زده بعد تعدادشو بیشتر کرده اتفاقای که افتاده خدمت شما عارضم که یکم حالا اوضاع بهتر شده مثلاً از کوتیشن استفاده کرده کوتیشن ها رو باز و بسته کرده رفته جلوتر به چیز رسیده به ضمایر وی و هیم و هی و اینا رسیده تو تولیدش رفته جلوتر خدمت شما

دیگه قشنگ از حروف چیز این علائم به اصطلاح بفرمایید این علائم چیست علائم اشاره علامت سوال اینا استفاده کرد این کاراکترها هم جا داده مثلاً سه نقطه گذاشته و دیگه بعد از اینکه خیلیتریشن رفته جلو دیگه واقعا رفته به سمت اینکه جمله حداقل ظاهرش خوبه شبیه اون شعر فردوسی بود که اون دانشجوی خانم دکتر سلیمانی ساخته بودن و یکی از جاذبه های خروجی های شبکه میرسن انتظار نداشته باشید روزهای اولش این باشن و یکی دیگش اینه که این اچ رو مثلاً فرض کنید ۱۰۰ تا نیرون توشه مثلاً نیرون شماره یکش خب اگه یادتون باشه ما از تنه رد می‌کردیم دیگه بین یک و منفی یک بود آخرش خب اگه مثلا منفی یک و نماد رنگ قرمز قرمز پررنگ یک و نماد آبی پررنگ بگیریم یکی یکی نیرون هاشو پلات کنیم روی مثلاً داده اول داده دوم الی آخر یعنی نرون شماره یک مقدارشو می‌ذاره رو ورودی اول خب مثلاً

متن فرض کنید بعد میگه که ببینیم چه معنی داره این کارو کرده اگه دلتون خواست ببینید گفته آقا ۹۵ درصد چیزهای اچ بی معنی شدن خیلی تفسیری نداشتند که من بخوام بهتون بگم ولی چند تاش با معنی شده جذاب شده اینترپرتیبل و قابل تفسیر شده میگه یکی از نروناش اینجوریه که اوایل خط آبی پررنگه اواخر خط قرمز پررنگه احتمالاً داره یاد می‌گیره که من دارم میرسم آخر خط ها نماد اینه یعنی مثلاً اگه یکم اول خطم منفی یکم آخر خط یا بالعکس اوکی مثلا زمانی که ترین شده اینو یاد گرفته یکی از نیرون هاش میگه که به نظر میاد هرچی تو کوتیشن افتاده آبی شده آبی پر رنگ میگه داره یاد می‌گیره به محض که یه جمله میفته تو کوتیشن آبی بشو و به به محضی که از کوتیشن میای بیرون حالا مثلاً فورگ سریع بهش یاد میده آقا بپر بیرون بپر تو باید منفی یک بشی که دیگه لازمت نداریم خب و دیگه قرمز میشه و الی آخر اینم چیزای جالبیه یکی دیگش این بوده که اونایی که داخل ایف بودن قرمز میشدن ها

هرچی تو ایف می‌افتاده این کد چیز داشته طراحی می‌کرده کد فیک داشته می‌زده هرچی تو ایف بوده قرمز بوده ولی بیرون ایفا مثلاً آبی می‌شدن و کلی از هیچ معنی نداشتن یعنی مثلاً همین جوری اطلاعات که می‌کرده قرمز آبی سفید حالا سفید یعنی صفر مثلاً و h بین منفی ۱ تا ۱ داشته عوض میشده هیچ الگویی نگرفته بوده اگرچه اینا چندین بار از گیت های غیر خطی رد میشن از توابع غیر خطی و من و شما شاید متوجه نشیم ولی ماشین با همینا به چیز خودش می‌رسه ها به خواسته خودش می‌رسه و باز دوباره مثلاً یک گیت دیگه که چی نمیدونم اگه میره تو کامنت کدها مثلا قرمز باشه و به محض که میای بیرون آبی باشه و اینا جای جالبیه اگه دلتون خواست اون وبسایتی که براتون نوشته بودم سر بزنید بیشتر بخونید چیزهای جالبی داره اگه دلتون میخواد مثلا این سلستیتیو توی دپسه مثلاً گفته که هرچقدر اکسپریشن عمیق تر و عمیق تر رفتی تو قرمزت پر رنگ تر شه یعنی هی من دارم میرم داخل و داخل تر

از مثلاً اون از لحظه شروعش دارم فاصله میگیرم از اون مثلاً ورودی فرض کنید چیزه البته بعضی از اینا مندروردی ماست ما داریم می‌گیم که این اتفاق میفته و اینا چیزایی که امروز می‌خواستم در موردش صحبت بکنم خدمتتون عارضم که یه چیزی رو فقط در حد ساده میگم حالا حداقل فتح باب کرده باشه من یه سمپل کدهایی گذاشتم روز آخر ببینید بعداً یه سری اسلاید قبلش اضافه میشه که اگه می‌خواستید چیز آرن یا ال اس تی ام یا جی آر اینا رو دستی خودتون کد بزنید کداش باید چیکار میکردید چجوری کد میزدید بچه‌ها در کنار آرن یه عبارتی وجود داره به نام بای دیرکشنال آرن خب نمی‌دونم اسمشو شنیدید یا نه و اینو بازش می‌کنم و ایمیجش هم باز می‌کنم تا ببینید این اصلاً چیز سختی نیست و اینو با همدیگه ببینیم این عکس شاید خیلی گویا باشه میگه یادتونه شما تو آر ها از حالت اول می‌رفتید تا به آخری برسید مثلاً حرکت لحظه اولو می‌دیدید فر

دوم تا فریم آخر یا متن و کلمه اول کلمه دوم و الی آخر رو می‌دیدید در حالی که مثلاً این مثال زده نوشته شما این برای اینا فرق قائل نیستید میگه اگه بهتون بگن i ام شما چی میگید بعدش چی حدس میزنید میگه می‌تونید بگید هپی هم هانگریم فلانم i ام علیم الی آخر خیلی تنوع داره اما بعدش یکی بنویسه هانگری شما میگید خب اوکی مثلا اینجا باید بگم وری هانگری هم مثلاً یا نات هانگری ام الی آخر ولی اگه بنویسه ولش کنید شما مثلا بگید چیک مثلا میتونم نصف مثلاً مرغم بخورم اینجا احتمالا میتونید حدس بزنید وری مهمه پس چی پس تو یه سری از کارا نه تنها قبلیا بلکه بعدی ها مهم حالا میشه باز دوباره صحبت محمد و حالا سوال اینه که آیا شما اجازه دارید به بعدیا نگاه کنید یا نه مثلاً توی گوگل ترانس بله داریم این اول اینو کامل میبینه بعد میره براتون ترجمه میکنه ها و لحظه به لحظه نمیاد کلمه به کلمه براتون ترجمه کنه میگه یکی از

لحظه آخر میکردی اچ یک هی ایکس لحظه فعلی لحظه قبلی رو می‌گرفتی اچ‌های بعدی رو تولید می‌کردی یه بار برعکس جلوش بده جای ایکس تی تا ایکس یک رو عوض کنه یعنی فرض کن این ایکس یک اون ایکس یه سری اچ هم با همین الگو از اونور ترین کن یعنی یه اچ صفر اینجا تعیین کن فقط اسمشو یکی نذارم خب اگه این اچ اون باشه اچ پرایم صفر تعریف کن بعد اچ با ایکس لحظه آخر که حالا برای ما شده تو فیلیپ شده ایکس لحظه اول و اچ لحظه اول خودش اچ بعدی رو بساز و برو تا آخر و از روی هر دوی اینا برو خروجی رو بساز یعنی یه بار از اول به آخر یه بار از آخر به اول اینو ببین ها و برو خروجی هاشون کانکت کن ولی ایناش دیگه بچه‌ها کار سختی نیستا یعنی شما که بلد بودید از روی مثلاً wh

عادی حالا من هی می‌خوام از احتمالات فاصله بگیرم شما نترسید اینا رو ولش کنید نترسید چیو نشونتون دادم عادی بود میرفت در w ضرب میکردید با بایاس جمع میکرد خروجی میزدید میگه الان چیکار کن میگه بیا اچ رفت و در دبلیو رفت ضرب کن اچ برگشت و در دبلیو خودش پس چیا الان دبلیوهای برگشت هم چیز میشن و مجهولات جدید میشن و اینا رو با همدیگه جمع کن بابا جمع کن اون بشه اوت پوت یا به بیان دیگرش رفت و برگشت و کانکت کن خب طولش مثلا کاتا بوده بشه دو کا تا در یه دبلیو درشت تر ضرب بکن ولی همچنان همون تعداد خروجی رو بگیر تونستم بگم یا نه ببین اینجا بنویسم خیالم راحت بشه متوجه شدی ما قبلاً ما قبلاً بعد از اینکه h لحظه قبل رو می‌گرفتیم و ایکسل فعلی رو می‌گرفتیم و اچ لحظه بعد رو تولید میکردیم بعضا اینو میدادیم به خروجی دیگه میگفتیم در یه wلیو ضرب بکن و با یه بایاس جمع بکن تا خروجی

این دفعه تو مسیر رفتو داری یه دونم بساز برای مسیر برگشت رفت و برگشتم بچه‌ها به هم وصل نیستنا خب و دوتاشون با هم یه هیدن لیر دیده میشن خب یعنی کل دوتاشون با هم و میگه این از تو برگشتم یه اچ پرایم تی داری خب این دوتا رو بزن تنگ هم یعنی یه ماتریس درشت‌تری داری که اچ تی هست از یک تا اچ پرایم تی هم زیرش هست حالا در یه دبلیو درشت تر ضرب بکن خب که خودش نمادی از چیه دبلیو بخش رفتمونه یعنی بخش ناشی از این بوده که می‌خواسته تو بنفش ضرب شه در دبلیو برگشت بوده و این در با بایاس جمع بکن و اوت پوتو بساز ببین بچه ها میگن بای دیرکشنال آرنت اگر ماژولاشو ال اس دی ام گذاشتید بهش میگن با دیرکشنال ال اس تی ام ها یا بای دیرکشنال جی آر یو

اندروید زمانی که می‌خواست نشون بده برای اینکه چیز نکنن آدما قاطی نکنن اینا رو بغل هم می‌کشید نمی‌رفت دو تا لایه بالا بزاره فکر کنید اون لایه بعدی اینجوری میکرد میگفت ایکس تی یه بار میره تو مسیر رفت یه بار تو مسیر برگشت بعد مسیر رفته میره تو مستطیل بعدی رفت با یه سری what و این میره بعدی بعد مسیر برگشته از اینور برمی‌گشت خب فکر نکنید اینا دو تا چیز جدان و یادمون باشه همونطور که دبلیh تا ابد میرفت تو رفت ثابت میموند اینجا هم اگه اسمشو دبلیو اچ پرایم اچ پرایم بزارم اینم تو کل شاخش ثابت باقی میمونه ها خب و در واقع فقط پارامترهاتون دو برابر می‌شن حالا احتمالاً wh p طولشون هم سایز ولی رو کاغذ ضرورتی نداره شما میتونید نیرون های هیدن رفت تو ۱۰۰ تایی بگیرید برگشت تو ۵۰ تایی بگیرید ولی تهش وقتی می‌خواید در دبلیو های نهایی ضرب کنید با هم

بسازید باید اونجا چیکار کنید سایزها رو رعایت بکنید مثل همون جاهایی که چی ایکس لزوماً با اچ هم سایز نبود و این تمام اتفاقاتی بود که در مورد ال اس دی ما باید بهتون می‌گفتم و آرنا حالا شما اتفاقی که افتاده اینه که از پشت اینا اطلاع دارید یک کمی مفهومی میدونید چه خبره دو سه تا گام دیگه مونده که ما به جمع بندی برسیم یک شاید سوال براتون باشه چگونه اینا وزنشون آپدیت میشن که هرچند که شما کد نمی‌زنید ولی خوبه که بدونید همونطور که ما در مورد ام ال پی ها دونستیم در مورد cnn ها هم دونستیم خوبه که بک پروپشن رو تو این هم بدونیم این ماجرای اوله و چالش های که داره برای خودمون و دو هم اینه که بتونیم چیکار کنیم توی پایتون کراس اجراش بکنیم یه نمونه در واقع ماژول یا یونیتm بذاریم اون تعدادی که دلمون می‌خواد و سوم هم بریم اپلیکیشن‌هاشو ببینیم اینکه چجوری میشه با تصویر با ویدیو قاطیش کرد با داده هایی که شما از سی ان ان داشتید قاطیش کرد و این دفعه کارهای عجیب غریب

این ماجرای اتفاقاتی بود که امروز رقم خورد خیلی ممنونم از همراهیتون بچه‌های عزیز انشالله که از این روزها نهایت استفاده معنویتونو ببرید خیلی ممنون همراه بودید اگه سوالی هست در خدمتتون هستم خدا شما را به خدای بزرگ می‌سپاریم خدا یار و نگهدارتون و مراقب سلامتیتون باشید

E:\courses\LangChain Project\main root\data\SCR_Session15_transcript_part1.txt

به نام خدا دوستان عزیز ارجمند درس رباتی اجتماعی شناختی عرض سلام و ادب وقت همگی بخیر و شادی در خدمتتون هستیم با ادامه درس اگه کسی ابهامی سوالی داره در خدمتتون هستم آرمین سلام وقت شما بخیر ما این خواهش ازتون داشتیم که خوب از تمام ابزارهایی که داریم تو این درس استفاده می‌کنیم بالاخره از بخش شما استفاده کنید یه پروژه پیشنهاد بدید با همدیگه موضوعش ست کنیم این پروژه میتونه تو هر زمینه رباتیک اجتماعی باشه و یا اینکه اگر به هر دلیلی حالا اوضاع کاری متفاوتی دارید مطرح بکنید موضوعاتتونو من اگر تایید کنم میتونید انجام بدید مثلاً آقای مالکی فرض کنید خب روی عصای هوشمند ویژه نابینایان می‌خوان کار کنند مواردی که میخواد استفاده بکنه مثل پردازش مثلاً ویدئو اینایی که توش هست خب

جز آیتم‌های درسی ما هست و من می‌پذیرم اینو و مادامی که تایید بکنیم خدمتتون عارضم که به اصطلاح قابل انجامه من پیشنهاد اولیه‌م این بود که تا حول و حوش ۱۵ اردیبهشت بچه‌ها نظرات اولیه‌شونو بیارن حالا یا بذاریم اولین جلسه بعد ۱۵ اردیبهشت فکر می‌کنم ۱۸ اردیبهشت اگه یکشنبه اشتباه نکنم کلاس داشته باشیم اینو مثلاً این موضوعاتتونو بیارید برام حالا ایمیل کنید و فلان خلاصه چند خطی چند یه صفحه حداکثر بنویسید چی تو ذهنتونه و اگه لازم شد نهایتاً مثلاً تا یکی دو هفته بعدشم چکشکاریش کنید که دیگه ما از همون نیمه دوم اردیبهشت یا اول خرداد واقعا بشینید پاشو دیگه تا روز آخری که بهتون وقت داده میشه بتونید کار به خوبی تحویل بدید ما اینو مطمئنم که تا آخر تیر میتونیم تحویل بگیریم پروژه ها رو در این شکی ندارم اینکه تا کجا تو مرداد میتونیم بدیم من باید استعلام بگیرم از دانشگاه اگه

بدن من اعلام می‌کنم خدمتتون مثلاً فرزند تا ۱۵ مرداد ۲۰ مردادی همچین عددی که بتونید پروژه رو بدید تحویل پروژه هم این مدلیه که مثل سایر در واقع حالا پروژه‌های رسمی دروس مختلف یا حتی پروژه‌هایی که بعداً بعضاً آدما با کارفرماشون میگیرن یه گزارش کتبی مناسبی میخواد سر و ته داشته باشه تمامی مستنداتش باید مثل کدها الی آخر با داشتن یا کامنت یا راهنمای اجرا مثلاً یه فیلمی باشه که چگونه اجرا میشه زمین باشه نتایجش باشه و در ضمن ما یه جلسه هم دور هم خواهیم داشت که ارائه میدید حالا میتونیم مجازی باشه ولی ارائه اتفاق میفته و همه از کار همه باخبر میشن خدمتتون عارضم که این یه ماجراست ماجرا بعدی هم که امروز دانشگاه اعلام کرد به ما که از ۱۷ اردیبهشت ماه اگرشالله خدا بخواد کلاس ها حضوریه و دوستان عزیزمون ما بیشترون بیشتر بچه ها ورودی ارشد ۱۴۰۰ اند طبیعتا دانشگاه

متعهد که اگر بخواد حضوری کنه به اینا خوابگاه بده چه اتفاقای دیگه‌ای می‌افته یکی خانم هاشمی و یکی دوتا دیگه از دوستامون که بعضاً از آی پی ام شرکت می‌کنند نمی‌دونم امکان حضور دارند یا نه اگر داشته باشید خیلی مناسب خواهد بود ولی بازم اگه نداشته باشید بالاخره ما باید تلاش بکنیم یه جوری بالاخره برای شما هم یه کاری بکنیم و همینطور بچه های ۹۹ مثل آرین یا محمد نعمتی یا سایر دوستان عزیزی که تو جمعمون هستند بچه های کارشناسی مون هم نمیدونم خانم کرمی آقای مذهبی اوضاع چهه آیا دانشگاه به پشتوانه این درس به شما خوابگاه رو میده که حضوری تشریف بیارید یا نه اما اگر باشید خوب خواهد بود و خدمتتون هم عرض کردم قبلا منشالله تو ذهنمه دو جلسه کارگاهی داشته باشیم بعد از حضوری شدن که به صورت اختیاری میتونید شرکت بکنید چیزهای مفیدی انشالله سعی می‌کنیم

خدمتتون بگیم مواردی که اگر در حالت عادی بخواد بیرون یاد بگیرید هم باید زمان زیادی بذارید هم باید هزینه بکنید و یکی در مورد ربات اپریتینگ سیستم راست براتون صحبت خواهیم کرد و یه روزم با ربات‌ها به صورت عملی و در واقع از نزدیک آشنا میشید حداقل دکمه روشنشو بزنید یاد اون جوکه آدم میفته میگه طرف ازش می‌پرسن بلدی با کامپیوتر کار کنیم میگه بله میگن مثلاً بلدی روشنش کنی میگی دیگه نه تا این حد میخویم از این درس بریم بیرون انشالله دکمه ربات زده باشید حداقل خب این مواردی بود که هست اگر دغدغه‌ای هست همچنان پاسخگو وگرنه که بریم شروع کنیم درس امروزمون و مطالب جلسه قبل رو ادامه بدیم خب خیلی ممنونم تا این لحظه بچه ها ما جلسه گذشته عمده وقتمون رو گذاشتیم روی معرفی یونیت ال اس یونیت ال اس تی ام فکر میکنم صفحه نمایش به اشتراک نیست آره

معلومه بله چشم موضوع خودمم می‌تونم پیشنهاد بدم فقط من درگیر یه کار اجرایی بسیار وحشتناک و شدیدم خیلی در واقع اوضاع کاریم تحت شعاع قرار گرفته جشن فارغ التحصیلی حالا همین خود خانم گودرزی نمی‌دونم ایمیل دریافت کردید مرتضی خانم گودرزی ایمیل دریافت کردید ما دیروز شروع کردیم ایمیل و چرا پیامک زدن که جشن فارغ التحصیلی شما رو به صورت حضوری برگزار بکنیم اگر تمایل داشته باشند البته دوستان تشریف بیارن دیگه اون تعدادی که دوست دارن و عکس یادگاری و دور هم حالا اون برنامه‌ای که به هر حال دیده شده و داره نهایی میشه ولی خیلی خیلی خیلی حجم کار بالاست و بسیار چیز شدیم آرمین دانشگاه شریف اینجوریه که زمانی جشن فارغ التحصیلی دانشگاه را اجازه ورود بهت میدن که شما تمامی کارهای فارغ التحصیل من جمله فرم احراز رو تحویل داده باشید به خاطر

عموماً چند ماه بعد از فارغ التحصیل این اتفاق می‌افته مثلاً اگه شما این جشن فارغ التحصیلی مال عموماً آدم‌هایی که توی سال ۱۴۰۰ فارغ التحصیل شدند بعد از اردیبهشت ماه و این جشن این جشن رسمی دانشگاه همونطور که مرتضی نوشته و خب هم عکس‌های دانشکده‌ای داره هم توی سالن جباری میتونید با اساتید دانشکده‌های دیگه خودتونو خدمتتون عرضم دوستان کلا عکس یادگاری بگیرید حالا البته کسانی که فارغ التحصیل شدن دیگه بقیه که اجازه ورود رو ندارن متاسفانه بخاطر شرایط کرونا اما در تصمیم گیری جمع بندی نهایی بر این شد که همراه وجود نداشته باشد این حالا از نقطه ضعف های که خودمون می‌پذیریم ولی خب چیزه دیگه بالاخره هست دیگه محدودیت انشالله که حالا شرایط کرونا هر چه زودتر ختم بخیر بشه برای همه هیچکی دیگه آسیبی

دیگه خیلی اذیت کرده آدما رو واقعا روزهای تلخی بود این دو سال و نیم اخیر خیلی خیلی در واقع اتفاقات بد افتاد انشالله ختم بخیر شروع بکنیم حالا اینو گفتم خانم گودرزی چشم من این کارو انجام میدم ولی ممکنه چند روزی تاخیر داشته باشه یعنی بیست و دوم من جشن اجازه بدید برگزار کنم بعدش در خدمتتون هستم تمام قطع موضوعاتی هم کلی دارم تو ذهنم که پیشنهاد میدم چشم و خوب موضوعاتمون بچه ها جدی ها یعنی جدی باید انجامش بدی داخل سرسری نگیرید کار یه روز دو روز نیست واقعا انتظار داریم وقت بذارید و چون بخش قابل توجهی از نمره ما ۵۰ درصد نمره این درس پروژه هاتونه تلاش کردیم ابزارها رو تند تند بهتون معرفی کنیم ممکنه شما نیاز باشه تو کارتون که از ابزارهای دیگه کنار اینا استفاده کنید و البته بعضی از این به دردتون نخوره دیگه من حدسامو دارم میزنم و تلاش دارم می‌کنم که این مدلی

جلساتو فرم بدم تا انشالله بهره حداکثری بشه برد حالا امروز یه نمونه‌اش اگه برسیم خواهید دید که مثلاً برخلاف اون چیزی که خیلی تو رشته مهندسی مکانیک دیده نمیشه ولی من تلاش کردم یه سری چیزا رو بیارم چون ممکنه به درد یه عده بخوره فقط در حد البته یه اشاره ظاهری خب بچه‌ها ما جلسه گذشته در مورد ماژول ال اس تی ام یا یونیت ال اس تی ام صحبت کردیم گفتیم که داستانش این بود که ذات کارش همون شبیه آرنای ساده بود قرار ایکس لحظه فعلی و اچ لحظه قبل رو بگیره و یه اچ جدید تولید کنه و این ساختار ادامه پیدا کنه اما تفاوتش دو تا چیز بود اولین تفاوت تفاوت ظاهری بود که شکل و خف و خفن ترش میکرد وحشتناک ترش میکرد و آدم ها ممکنه خیلی به این فکر نمی‌کردن که بخوان برن سمتش محاسبات خودشون انجام بدن ما تمام تلاشمونو کردیم به زبان ساده براتون بیان کنیم که چه اتفاقی داره میفته که حداقل فورواردش خودتون بتونید بنویسید کار اصلا سختی هم نیست البته سودوکداش هم آخر این

در واقع پاورپوینت قرار دادم که شما میتونید دسترسی داشته باشید و ایده بگیرید یه توضیح هم حالا اگه برسم یکی دو تا نکته روی یکی دو تا خطاش وجود داره باید بهتون بگم ضرر نداره ولی یه چیز دیگه هم که داشت یه در واقع خطی داشت به نام سل استیت که این خط خیلی خط خوبی بود تو راهش مسیر سنگلاخی وجود نداشت و این میتونه احتمالاً توی مسیر تو فرایند بک پروپشن به ما خیلی کمک کنه یعنی شما تصور کنید که می‌خواید بیاید مثلاً این اچ یا بع از چیزی که رو در واقع از رو اچ ساخته شده بک پرو کنید بیاید عقب ها در حالت کلی قراره از این مسیرهای سنگلاخی رد بشید و بیاید هی وزن ها رو آپدیت بکنید و خب ممکنه انواع این اتفا بیفته سیگما تنش اینا تابع های مشتقشون حداکثر یکه کلا عموما ۹۹.۹ درصد وقتا مشتقشون زیر یکه و خیلی وقتا ممکنه به اشباع نزدیک شده باشند مشتقشون نزدیک های صفر باشه و شما بسیار اذیت میشید اگر بخواهید در واقع در عادی

همچین چیز ساده‌ای می‌خواستی یعنی روتینی می‌خواستی چیکار کنید وزنتونو آپدیت کنید به خصوص وزن‌هایی که خیلی خیلی عقب‌ترن مثلاً مال ۳۰ تا کلمه عقب‌تر از شما ولی اینجا این خط بالائه که خیلی کسی مزاحمش نیست این کارو می‌تونه تا حد خوبی براتون انجام بده و حالا بریم جلوتر روش صحبت می‌کنیم خدمتتون عارضم که در مورد حالا واریانت های مختلفی که روی ال اس تی ام میشد زد صحبت کردیم گفتیم که فقط محدود به نیست یکی از ماژول های جذابی که فکر می‌کنم اگه اشتباه نکنم ۲۰۱۴ به بعد پیشنهاد شد ماژلی بود به نام جی آر یو که به جای سه تا گیت ال اس ام دو تا گیت داشت دو تا از این سیم ها داره و حرفش این بود که آقا زیادی اون سه تا گیت و یه چیزایی رو قاطی قاطیش کرد مثلا فورگت و اینپوت گیت و ایده قاطی کرد اسمشو گذاشت آپدیت گیت یه دونه ریست گیت هم داره اون در واقع چیز و شکلش یه شکل حالا به ظاهر در واقع

خلاصه‌تر شده‌ای بود و سبب شد که چی بعد از اینکه آدما تست کردن دیدم که دقت‌هایی که دارن میگیرن در همون اوردر ال اس دی ام و خیلی در واقع اوضاعش خیلی هم بی‌ریخت نیست و به خاطر همین اینا جی آر یو و آر ساده سوپر معروف‌ترین واریانت های در واقع شبکه های عصبی بازگشتن اگر شما انواع شبکه های من درآوردی و دلخواه رو بسازید کما اینکه ساختن و تست کردن و دیدن که اون هم خوب کار می‌کنن جای مثلاً ضرب داخلی رو عوض کنید چرا اول مثلا اینجا توی ماژول چرا مثلاً h اول در دبلیو ضرب شه بعد ضرب فلان شه گفته نه اول بیا اچ لحظه قبل رو در آر تی ضرب نقطه به نقطه بکن من ببینم کدوما از لحظه قبل مهمن بعد با ایکس کار کرد حالا در w ضرب کن در استنش بگذران مث این کارایی که تو نبود دیگه و کارهایی که میشه کرد و دیدن که دقت های خیلی زیادی هم میشه گرفت و گفتیم که اون باکس های که میبینید

دیگه لزوماً باکس‌های ساده باشن یا می‌تونن ال اس دی ام باشند البته یادمون باشه اگه ال اس تی ام هم باشن شما اچ‌هاشو دارید می‌بینید یه خط سی داره من دیگه بهتون نشون ندادم چون ما سی رو برای خودمون نگه می‌داریم به کسی نمیدیم ها آخرین چیزم فرض کنید فرض کنید آخرین باکس باشه دیگه نیازی نبود اچ رو بدید بیرون فقط به سمت بالا سی رو دیگه نیازی نبود بدید بیرون و اصلا دیگه تمام شده اون نخ قطع میشد سر و ته ماجراش قطع میشد اینورم دیگه تا نقطه آبی قطع میشه و میره در مورد ویژولایزیشنشون صحبت کردیم چیزهای جالبی دیدیم گفتیم مثلا هیدن استیت که میتونه خودش کلی نیرون داشته باشه یکی اومده نیرون هاش توی سری مسائل خاص پلات کرده دیده خب مقدار هیدن استیت کلا بخاطر تنش گذشته شدنش بین منفی یک تا یک بعد گفته من اینو بین دو رنگ آبی و قرمز فرض کن معادل میکنم بعد میام خروجی مثلاً نیرون شماره یکشو میگیرم رو تک تک ورودی ها میندازم که شما به صورت دینامیک تو ورودی هاتون که حالا مثلاً

ببینید که نرون اول چه خروجی داره نرون دوم چه خروجی داره ولی آخر دیده بود که ۹۵ درصدش خیلی چشمی معنای خاصی نداره ولی چند تاشون اتفاق جالبی میفته مثل اینکه بدون کرکتر شما نزدیک به انتهای خط هست یا نیست مثل اینکه تو گیومه قرار داره یا نه توی شرط ایف هست یا نیست و و و چیزهای مختلفی که صحبت کردیم اما امروز می‌خوایم در مورد ترینینگ اینا صحبت کنیم ما دیدیم که ماژول آر یه سری دبلیو داره سه تا دبلیو داشت wلیو که ایکس رو به اچ مرتبط میکرد دبلیو که whh اسمشو گذاشتیم یعنی در اچ قبلی ضرب میشد مثلا اچ اگه سه در یک بود یه سه در سه ضرب میشد و یه سه در یک میساخت با اون حاصل ضرب wxh در ایکس جمع میشد با بایاسش بایاس طبیعتاً پس چیز پارامترن w همه پارامترن از تنه میگذشت و چی می‌رفت حالا یا دوباره در یه w دیگه ضرب میشد خروجی میداد یا نه اصلاً همون خودش خروجی بود برای ما خب و اونجا برای اینکه

آپدیت بکنیم باید به سمت ترینینگ این شبکه‌ها بریم فرض کنید که ما به اندازه کافی داده‌های ترینینگ داشتیم و داریم می‌کنیم و با یه w اولیه فرضی داریم میریم جلو و می‌خوایم ببینیم چه جوری میشه اینا رو آپدیت کرد شبیه اون اتفاقاتی که توی ام ال پی دیدیم و یا توی cnn دیدیم خب اینجا هم از روش بک پروپشن می‌خوایم استفاده کنیم برای اینکه رند لاس یا رند کاس فانکشن نسبت به تک تک دبلیو ها پیدا بکنیم ولی اسم اینجا اضافه تر نوشتن بکشن ترو تایم یا bpt این الگوش هیچ فرقی نداره همون بکشن خودمونه فقط چون تو زمان داره اتفاق میفته این اسم روش گذاشتن حالا میریم میبینیم که این حرکت آبشاری چقدر میتونه وحشتناک باشه حداقل در نگاه اول ترسناک باشه ولی بعدش ببینیم که اوکی حالا نمیگم آسون ولی در میاد کار و ما میخویم اینو بررسی کنیم این در واقع بک پروفشن در یک نگاهه یه شبکه در نظر بگیرید بخش فیت فورواردش با مشکی رنگ

داده شده و بخش قرمز رنگ نمادی از بک پروفگریشن چه جوریه فرض کنید از اون شبکه‌های منی تو منی و به ازای تک تک ایکس‌هام یه خروجی دارم یعنی از اون منی منیاییه که هر ورودیش یه خروجی می‌گیره شبیه مثلاً اینجا هر ورودی خروجی داره ولی ما گفتیم منی تو منیای دیگه‌ای هم داریم فعلا این فرض رو بکنیم حالا بریم جلو خب یه خروجی میده این خروجی میده اسمشو وای صفر دوتا تی یا تی بزرگ میتونه به عنوان آخریش بزاره بعد میگه تو ترینینگ من به ازای اینا یه برچسب دارم مثلا فرض کنید این اینجوری بوده که یه جمله رو میخواسته ترجمه کنه یا میخواسته یک کلمه رو که میدید کلمه بعدی حدس بزنه یه جمله رو برای شما بسازه این کلمه اول میدید باید دومی رو برای شما میساخت و شما دومیه رو به عنوان لیبل دارید وان هات مث کدش کردید حالا وهات که نمیشه دیگه ما می‌دونیم از سافت بگذرانیمش دوست داریم وان هات بشه نمیشه احتمال میشه مثلاً اون ده مرتبطش یا زیاد میشه یا کم اگه زیاد بود

اوضاع خوبه و لاسش خیلی بالا نمی‌شه مثلاً فرض کنید که یه لاسی باید انتخاب کنید یا کراس آنتروپی بزنید یا چیز بزنید یا ام اس ای بزنید یعنی بردار وای صفر دیزایر یا تارگت منهای وای حد صفری که ما به دست آوردیم بکنید به توان دو برسونیداشو جمع عددی بزنید یه اسکالر بشه اسم اینو میزاریم ال صفر یا لاس صفر همین کارو برای لاست یک تا لاس آخر میتونید انجام بدید و با جمع اینا در ساده ترین حالت میتونید لاس کل رو بسازید قرار نیست واقعا کل جمع اینا باشه ولی ما اجازه بدید این فرض بکنیم که لاس کل باشه ال صفر دو تا ال آخری خب حالا وقتی میخویم بک پرو بکنیم باید چند تا چیز رو لحاظ بکنیم اینه که اولا بک پروفشن یعنی رند لاس به رند تک تک دبلیوها پس تمام مسیرهایی که توش دبلیو داشتن و به لاس منجر شدن باید دیده بشن و آپدیت بشن و اتفاق بعدی اینه که این whh افقی همه با هم برابرند w xh همه با هم برابرند w

همه با هم برابرند یعنی چی یعنی من مشتق لاست نسبت به اچ وای wh وای بگیرم فقط نباید از این مسیر بیام حالا باید برم از تمامی مسیرهای ممکنی که از لاس می‌تونم برم و از دبلیو اچ وای ها رد بشم چیکار کنم ماجرا اینه که در واقع بکشن رو حساب بکنم و این حالا اونجایی که به نظر میاد داستان وحشتناکه بریم بهش ورود بکنیم و خودمونو بندازیم تو این دریا خب برای شروع bpt با نوت ها یا نماد گذاری آغاز میکنیم اجازه بدید نماد گذاری ها رو این بذاریم یه مقدار ممکنه بعداً با یه سری کتابای دیگه فرق بکنه یکیش هم حالا ممکنه گیجتون بکنه ولی سعی کنیم اینو بپذیریم اول اینکه خروجی رو اجازه بدید با وای نشون بدیم خروجی ها رو با وای بزرگ بچه‌ها یادمون باشه این مربع ها قرار نبود تک نرون باشن یه بردار بودن یعنی ببین وای صفر خودش تازه یه برداره ها یا مثلا بردار چهار در یک ده* یک الی آخر و الی آخر پس چی

بردار اوت پوت لحظه tn یعنی وای صفر یعنی خروجی لحظه صفر که خودش یک برداره وای آیش یعنی گفتم وای ۲ صفر یعنی نرون دوم مثلاً خروجی صفرم اوکیه زدها رو اجازه بدید پری اکتیویشن بگیریم قبل از اینکه روش تابع فعال سازی اعمال شه چند تا زد خواهیم داشت در ساده ترین شبکه ما دو تا زد میخوام براتون معرفی کنم یک زد اندیس بالا صفر یا سوپر اسکریپت صفر خب یعنی قبل از اینکه چی بشه وارد تنش این یارو بشه باکس سبز کمرنگ بشه و یه دونه هم بلافاصله قبل از خروجی وای ها که حالا اینجا انواع حالت‌ها می‌تونه اتفاق بیفته در ساده ترترین حالت ممکن اگه یادتون باشه گفتیم چی در واقع همون به اصطلاح دیگه اچ که خروجی باکس سبز کمرنگ باشه در یه wلیو ضرب میشد همون وای رو میداد یا زد رو میداد بعد مثلا تابع همانی بذاریم که

همون این باشه خب در ساده‌ترین حالت ولی بازم میشه روش چیزای دیگه زد مثلا لایه‌های چندگانه دارید مثل مثلاً چیز کیک‌های چند طبقه هی دوباره رو اونام تنش میشد زد و فلان پس من پارامترهایی که دارم یکی وایه که خودشون بردارن زدها هستند که بلافاصله تو ورودی مستطیلان ht رو دارم بلافاصله تو خروجی مستطیل هیدن اگه چند تا اچ داشتم دوباره خود این سوپر اسکریپت اچ یک اچ دو الی آخر داشت خب ولی فعلا یه دونه لحاظ کردم و ایکس ایکس بردارن یعنی هیچکدوم تک نیرون یا تکرایی نیست خب حالا با این تعاریف بریم ببینیم که مشتقات چجوری پیدا میشه بک پروپشن خب برای بک پروپگیت کنیم بچه ها باید اینو ببینید شما اول باید یک تعریفی برای لاس ارائه بدید خب چیکار می‌کنید فعلاً فرض کنیم منی تو منی هستیم و به ازای تمام این وای صفر من برچسب دارم خب یعنی می‌دونستم باید چی میشد ولی الان چند شده من باید یه لاسی تعریف کنم لاس برای

داده آموزش یه عدده یه اسکالره برای اینکه این کارو بکنم خب باید چیکار کنم بیام لاس برای وای صفر با یک وای دو تا وای تی تعریف کنم خب و اسمشو ال یک تا ال تی بزارم و بعدش حالا دوباره بین اینا یه رابطه بزنم که ساده‌ترین لاسی که میشه نوشتیم جمع جبری خطی اینا همه با ضریب یکسان اوکیه ما اینو فرض کنیم که سیمای لاس رو بگیریم خب ما لاس باید یه اسکالر باشه چیکار میتونیم بکنیم مثلا بین وای صفر پردیکتد و وای صفرچال مثلا فرض کنیم من میتونم کراتراپی بزنم میتونم در واقع چیز بزنم مین اسکرور بزنم الی آخر باید بالاخره یه عدد اسکالر از این برداره در بیاد اسکالر اسکالر اسکالر با هم جمع میزنم لاس نهایی حالا این رند لاسه رو باید به رند تک تک دبلیوها پیدا کنم تک تک این w آی جی هایی که روی این فلش ها به صورت در واقع چیز نانوشته اینجا قرار دارند من باید چیکارش کنم پیدا بکنم خب پس طبیعتاً من اول باید لاس رو نسبت

تمامی وای آیا پیدا کنم به ازای تمام آیی‌ها خدمت شما عارضم که یعنی یعنی اینجوریه که مثلاً اگه این ۱۰ تا درایه داره تو لایه آخرش توی مثلاً لایه آخر تی باید به ازای تک تک رند لاس به رند درایه اول وایش دومش تا دهمش همین کار باید بکنم در ضمن باید به ازای اونام انجام بدم یعنی به ازای تمام تی ها به ازای تمام آیی‌ها باید انجام بدم یعنی تمام خروجی ها مثلاً اگه ۲۰ تا وای دارم هر کدوم ده تا نرون دارم ۲۰۰ تا رند لاس به رند وای ها را باید حساب بکنم گوشه داشته باشم به دردم میخوره پس به نظر میاد اوضاع بیریخته خب و حالا شروع بکنم از این بالا یا از کلاً این مستطیل قرمز رنگ بک پرو کنم بیام پایین تا برسم رند لاس به رند تمام دبلیو ها رو پیدا کنم بماند به اینکه اچ رو اگه یادتون باشه چی گفتیم میخویم آپدیتش کنیم رند لاس به رند h هم باید چیکار کنید اچ آبی را باید پیدا کنید خب برای اینکه این کارو بکنیم پله پله میریم جلو خدمتتون عارضم که از لایه آخر که لایه تی بزرگ باشه شروع

یه فرض ما اجازه بدید بکنیم اجازه بدید که لاسو بگیریم جمع لاس صفر و لاس یکو تا لاس تی و در ضمن این اینجوری اتفاق میفته که لاس صفر فقط تابع صفر رو داره لاس تی تابع تی تابع دیگران نداره عادی باید رند لاس به رند تک تک وای آی تی ها را به ازای همه آی ها به ازای همه تیها پیدا می‌کردیم اجازه بدید این فرض ساده شونده رو بکنیم که وقتی میگیم رند لاس به رند وای آی تی منظورمون رند لاس تیوم دیگه یعنی فقط این تی وی است که روی وای تی اثر میذاره اوکی این اولین فرض ساده شونده ماست که تازه بفهمیم چقدر کار داریم حالا ماجرای بعدی اینه که اوکی یه پله باید بیاید چی عقب تر یعنی شما الان رند لاس به رند وای رو پیدا کردید اگر رابطه بینش رو بدونید رابطه اش هم خودتون تعیین کردید مثلا گفتید چهیدم درایه های وای یک منهای یک پردیکتد با یکچال منهای یک پردیک به توان دو به علاوه وای دو منهای این به توان دو تا

این چیزا استفاده می‌کردید طبیعتاً فرمولتون یه چیز دیگه میشد ولی به هر حال میشد مشتقشو خالی گذاشته بودید خب مشتقشو گرفت خب رند لاس به رند وای آی تی لحظه آخر رو پیدا کردم ولی به ازای تک تک درایه‌هاش چه‌جوری می‌تونم یه پله بیام عقب اولین پله‌ای که میام عقب اینه که در واقع وای چگونه از روی زد یک ساخته شده ها وای چگونه از روز یک ساخته شده و اینجا باید ببینیم که آیا همان بوده تابعتون یعنی زد یک همون وای تونه خب یا نه یه تابعی زدید تنه چی زدید فلانی زدید طبیعتاً چیزی که وجود داره اینه که رند لاس به رند درایه های زد آی خب در زمان تی زد یک هم گذاشتم منظورم اینجاست تا بلافاصله قبل ورودی به باکس خروجی چون زد صفر اینجاست

زد سوپر اسکریپت ۱ اندیس آی یعنی درایه آیمش چون کلی نرون توشه توی لحظه تی رند لاس به رند این میشه چی این شبیه بچه‌ها چیز ساده‌ایه دیگه مثل یه ام ال پی ساده است بدون لایه هیدن یعنی چه جوری با یه مشتی دبلیو به وای وصل کنیم یعنی یه مشت نرون اینجا دارید یه مشت نرون تو وای دارید به هم وصل شدن اگه یادتون باشه ما قبلاً حساب کردیم میشد رند لاس به رند تک تک وای جی ها در رند وای جی ها به رند زد آی ها ها پس اینجا رو جی هم سیما میبدید که پارامترتون فقط تا از آی داشته باشه یعنی اول یک میذارید یه بار از لایه وای برای نرون اول یه بار از لایه وای برای دوم الی آخر حساب می‌کنیم امیدوارم کسی با این داستان مشکل نداشته باشه این چیزی بوده که تو امl پی ساده دیده بودید خب رند لاس به رند وای در رندz حالا باید ببینیم اینجا چه تابعیتی به کار رفت خب تا اینجا رند لاس به رند زد و زد یک رو پیدا کردن یه پله عقب‌ترش اینه که از

یک از چی ساخته شده از اچ ساخته شده در یک دبلیو ضرب شده اینجا تو این نمادگذاری بچه‌ها اسم این دبلیو رو اندیس ۱ گذاشته می‌خواسته با این زد یک همخوان باشه ما اسمشو why گذاشتیم اگه یادتون باشه خب یا دبلیو وای اچ گذاشتیم حالا رند در واقع لاس به رند این دبلیو چجوری پیدا میشه یا رند لاس به رند h چجوری پیدا میشه ما چون هر دو رو میخویم پیدا کنیم رند لاس به رند دبلیو رو میخویم که بتونیم دبلیو آپدیت کنیم رندلاس به رند h رو میخویم چون بدونیم بریم لایه قبلی دب هاش آپدیت کنیم یادتونه دیگه همیشه ورودی های خروجی های یک لایه ورودی های لایه های بعدی میشدن حالا یا با یه رابطه اینجوری میشد پس من دو تا پارامتر باید پیدا کنم یک رند لاس به رند اچ یکی رند لاس و رند دبلیو یک به تک تک درایه هاش البته رندلاس به رند دبلیو یک تک تک هاش همون در واقع یکی از بخش های آپدیت بردار ماتریس w1 رو بهم میده ولی رند

مستقیم استفاده یعنی درجا خودش برای آپدیت نیست ولی میره توی چیزای دیگه استفاده می‌شه رندلاس به رند اچ چه جوری استفاده میشه رندلاس به رند h میگه میشه رند لاس به رند زد در رند زد به رند اچ چرا چون زد و اچ چجوری از رو همدیگه به دست اومدن اچ در برد ماتریس w ضرب میشد زد رو می ساخت باز دوباره مثل یه ام پی ساده است یعنی یه مشت نرون داریم تو زد با مشتی دبلیو آی جی ها به هم ربط پیدا کردن حالا میگه که رندلاس به رند اچ آی برای تک تک درایه‌های اچ شما چیکار کن رندلاس به رند زد و بود که اینجا پیداش کردی که تازه خودش یه سری بود خب من اینجا با یه نماد نشونش دادم اینو باید در رند زد جی به رند اچ آی ضرب کنیم و در ضمن به ازای تک تک جی ها اینا رو با همدیگه جمع کنیم تا رند لس لاس به رند اچ آی بدست بیاد اگه فرض کنیم زد زد اینجوری بوده که بوده دبلیو آی جی در h تی ضرب شده حالا بایاس هم حالا من الان

نگرفتم رند زد به رند اچ میشه wij همین یک حالا درایه اندیس آی در واقع درایه جی این با w این اگه اینجا جی اینو قرار بدید خدمتتون عارضم برای آیش میتونید پیدا کنید یعنی مثلاً اگه می‌خواید رند لاس به رند اچ اول رو پیدا کنید اینجا باید دبلیو یک جی بزارید روی اندیس اول دب یک باشه روی جی سیگما ببندید یا دو بزارید یا الی آخر اوکیه پس اینجا تا اینجا تونستیم پیدا کنیم خب که عرض کردم یه دبلیو جی یک به نظر میاد معلومه چنده الان معلومه ولی رندلاس به رند زد همونطور که تو اسلاید قبل بهست آوردیم خودش یه سیما بودا ها پس سری تو سری میشه یعنی حالا ببخشید شما بخونید دانکی تو دانکی یه مقدار داستان خب خدمت شما عارضم که حالا رند لاس به رند اچ رو یه بار پیدا کردم اوکی تا اینجا هنوز دور نشدم رندلاس به رند دبلیو یک هم باید پیدا کنیم این به ازای تک تک آی جی هاش باید

رند wid برعکس اونه یعنی اگر دبلیو ضربدر اچ میشد زد رند زد به رند h میشد w بشه زد این اتفاق میفته دیگه مشتق این نسبت به اون میشه اون یکی دیگه اینجا رند اس رند لاس به رند w چیز ساده ای میشه میشه رندلاس به رند زد جی در رند زد به رند در واقع دبلیو آی جی که میشه ها پس اچ آی با رندلاس به رند زد جی رو اگه با هم بگیرید رندلاس به رند w آی جی پیدا شده اوکی تا اینجا خبر خوبی اینه که این دبلیو که روی این فلش قرمزه بود داشت اچ رو به زد یک ربطش می‌داد حالا چی شده مشتقاتش لاس نسبت بهش پیدا شده پس من میتونم حالا با نمیدونم گس یا عدم یا هر الگوریتم پراپ یا هر چیزی بخوام آپدیتش کنم اما آیا این پایان ماجراست نه آم این فعلا اول ماجراست

شما بارها و بارها باید برید از این فلشه رد بشید چون همه اینا چین wوهاشون اینه پس حالا چه در واقع دور از جونتون گلی باید به سرمون بگیریم دنبال کنیم اجازه بدید دنبال کنیم یه پله دیگه بریم عقب‌تر می‌خوام این رند لاس به رند در واقع w اینم پیدا بکنم خب اول لازمش اینه که از اچ رند لاس برم رند لاس به رند زد رو پیدا کنم برای اینکه زد صفر رو پیدا کنم رند لاس و رند اچ به رند زد صفر میشه اینجا باز باید نگاه کنیم که ما چجوری از رو اچ زد صفر ساختیم اگه یادتون باشه میگفتیم مثلا چیکار کن تنش بزن خب پس اینجا این رند اچ به رند زد صفره چی میشه اینجا دیگه آی و جی بچه ها نشده چون ابعاد اچ و زد یکیه یعنی مثلاً اگه ۱۰۰ تا درایه داره زد از تک تککش گرفتم رفته شده hi پس اینجا بستگی به اینکه تابعتون تنه چه سیگمایی داره ریلو چی هست اینجا مشتق اون ظاهر میشه پس شما رند لاس به رند زد صفر رو پیدا کردید یه پله دیگه بیاید پایین تر میتونید رند

E:\courses\LangChain Project\main root\data\SCR_Session15_transcript_part2.txt

پیدا کنید که لازمش اینه که رند لاسو به رندw بخوای پیدا کنی میشه رند لاس به رند زد در رند زد به رند دبلیو رند زد به رندww بچه‌ها ادعا میکنم میشه ایکس آی حالا چرا اینو بنویسم فقط برای قاطیش نکنید نماد گذاری توافقی مون باشه که زد صفر خب زد سوپر اسکریپت صفر که خودش یه برداره مثلاً در لحظه تی هستش یه دبلیو ایکس چی خدمت شما عرض کنم در چی در بخش ایکسش به علاوه دبلیh در بخش چی اچ یکی قبلیش خب اینو من اینجا اسمشو گذاشته همین توی نماد گذاری گذاشته w صفر یعنی رند زد به رند w صفر پس میشه ایکس تی و اون یکی دیگه هم whh هم اسمشو گذاشته دبلیو یک یک اینم توافقی ها باز دوباره اگه hh میذاشت شاید

قشنگترم بود این نماد گذاری رند زد به رند w صفر چی میشه میشه ایکس تی دیگه درسته پس اینجا اگه بیایم ماجرا رو دنبال کنیم میشه رند لاس به رند زد صفر که قبلا پیداش کردم خودش دوبار سری تو سری شده بود یعنی اینجا پیداش کرده بودم از این گذشته خودش یه سری توش بود بعد یه قبلیش هم یه سری دیگه داشت یعنی حداقل دوبار اینجا سری تو سری شده بود و خدمتتون عارضم در ایکس هم که ضرب کنم رندلاس به رند w آی جی آی پیدا میکنم حداقلش خیالم راحته اولین آپدیتاشو میتونم بدم یعنی یه بار دب رو با منهای تا برابر مشتقش بکنم ضریب آموزش هم حالا اعطای عدد یک هزارم فلان و w یه کوچولو داره آپدیت میشه اما عرض کردم این پایان ماجرا نیست چون اینجا این فلش هم همونه باید از این مسیرم بیایم رد بشیم و تازه یه پله وحشتناک ترش این مسیر بدقق این قوسی هستش که حالا من به جای اینکه کج وصل مستقیم وصلش کنم عمدا اینجا اینجوری وصل شده که شما راحت تر ورودی و

راحت‌تر ببینید ماجرا اینه که وقتی می‌خواید مشتق نسبت به اچ اینجا رو پیدا بکنید یادتون باشه هم می‌تونید از این مسیر آبشاری بیاید هم می‌تونید مستقیم بیاید و حالا دو تا ماجرا جمع میشن باز این یکی درود به شرف فقط چی داشت یک بار یعنی از یه مسیر به این خطه رسیدم خب ببین از این مسیر از یه بارم به این خطه می‌رسم البته نه یه بار که نه از اینجاش میام و اینا رو باید یکی یکی حالا چیکار کنم با اون جمع بزنم خب رند w آی جی رو پیدا کردم ولی چون نیاز دارم خدمتتون عارضم که باید برم رند لاس به رند دب آی جی یک یک میشه این خط قرمزه و همینطور نسبت به اچش هم پیدا بکنم چون به دردم میخوره به درد چیزهای دیگه میخوره خب برای w خیلی مشابه اونه میگه رندلاس به رند زد رو داشتید این دفعه در اچ آی ضرب میشه چرا در آی ضرب میشه اینجا چون دارم نسبت به رند زد دارم به whh میگیرم دیگه ضریبش اچ تی منهای یک

لحظه قبلم اینجا ورود می‌کنه خودشو نشون میده تا اینجا یک دور تونستم دبلیو فلش بالا w این بالاتریه و w قوسیه رو چیکار کنم رند لاس به رندشون رو پیدا بکنم تا آپدیت کنم ولی عرض به خدمت شما حالا گام بعدی اینه که چی گام بعدی اینه که برم رند لاس رو به رند زد حالا یه پله عقب تر اینجا حساب بکنم اگه اینجا اسمش زده یک لحظه تی بود اینجا زد یک لحظه برای این کار بکنم باید چیکار کنم خب اول تنها مسیری که به این منجر میشه وای تی منهای یک همه فرمولش شبیه قبلی است فقط هرجا تی دیدید تی منهای یک می‌ذارید خب به نظر میاد که تا اینجا مشکلی نیست و درستش همین ولی اینجاش چالشه اینجاش تنها جای نکته دارشه که دیگه می‌خوام تعمیم بدم استقرا بزنم جایی که من می‌خوام رند لاس رو به رند اچ آی یه لحظه قبل پیدا بکنم خب از دو مسیر دارم میگذرم یه بار از این لاسه میتونم بیام اینجا یه بار از

می‌تونم بیام اینجا پس دو تا چیز با هم جمع میشن یکیش بخش در واقع این مسیرشه یکیش بخش این مسیرشه بخش خدمتتون عارضم این مسیر چیزش مستقیم این اولی هستش رند لاس به رند زد جی در تی منهای یک ضربدر wj که کامل معادل با در واقع چیزه دیگه اون بخشی بود که داشتم رند لاس به رند اچ تی پیدا میکردم که فقط یه سری شده بود ها اینجا پس الگووش همینه فقط تی منهای یک شدن جمله اولش ولی جمله دومی هم دارد و جمله دومش هم اینه که رند لاس به رند زد جی صفر هم حالا در چی رند زد به رند اچ باید ضرب بشه رند زد به رند اچ هم میشه همین دبلیو که این خط قرمز منحنی رو داره پس می‌بینید که یه دفعه رندلاس به رند اچ یه لحظه قبل جمع دو تا سری و این الگو حالا ادامه پیدا میکنه ما یه دور دیگه تونستیم تکمیل کنیم و بریم جلو خاطر همین فرمول

چگونه اصلاح می‌شه بچه‌ها رند لاس به رند مثلاً w ij یه لحظه اول نه تنها فقط اونی که اول حساب کردم و نه این جدیده بلکه جمع ایناست یعنی شما چیکار می‌کنید اولی رو حساب می‌کنید دومی که حساب کردید باهاش جمع بزنید بعد لاین سوم لاین چهارم تا لاین آخر همه اینا رو جمع بزنید تا رند لاس به رند دبلیو که زد یک و اچ رو به زد یک وصل میکرد چیکار کنه پیدا بکنه و همین کارو باید برای سایرین هم انجام بدید و اگه دوست داشتید حالا اینا رو دنبال کنید با آرامش تمام مشکل سختی نداره نوشتنش از صفر صفر کار سختیه خودمون بنویسیم ولی وقتی جلوتون باشه بخواید تطبیق بدید خیلی کار سختی نیست و می‌بینید که هر سری w میخوان آپدیت شن هی باید با قبلی جمع بشن و اینقدر باید برید جلو تا برسید به اینجا ته ته ته تهش یه دونه باید رند لاس به رند اچ منفی یک رو به از تک تک پیدا کنید که اینم فرمولش میشه همچین چیزی و اینجوری هم رند لاس رو به تمام دبلیوها دارید یعنی فلش های wx

وای wxhwhh و wh و همینطور h لحظه اول که گفتیم به عنوان ترینینگ ترینش میکنیم دیگه چون ما اول رندوم میزاریم ولی بعدش خودش ترین میشه که ما لحظه اولش چند باشد و اینجوری می‌تونید چیکار کنید برید بک پروفشن رو براش تکمیل کنید تکنیک ریاضیش چیز متفاوتی نبود ولی چون توی زمان اومدیم عقب اسم ترو تایم هم بهش گفتن ولی خب بازم با این حساب انواع کامپیوترشنال چلنج ها داره برای خودش ما در عادی مثلاً فرض کنید یه دنبال خیلی خیلی طولانی داشته باشیم باید به ازای تک تکشم لیبل داشته باشیم مثلاً فرض کنید من دارم یه شبکه جنریت میکنم که بتونه مثلاً پاراگراف پاراگراف های مثلاً کتاب چه میدونم فیزیک دوم دبیرستان هی برام چیز کنه تولید کنه بعد مثلاً همه مثلاً می‌بینید ۱۰۰ کلمه ۵۰ کلمه هزار کلمه و و و و شما بخواید اینو بیاید عقب انواع چالش‌ها دارید شما برای یکیش می‌خواستید بیاید هی سیکما می‌گرفتید بعد هی دوباره در بعدی ضرب میشد بماند به اینکه مسیر خیلی سنگلاخیه و

ممکنه اینجا انواع مشتقه و اینا ظاهر شدن اگه عددهاشون به سمت صفر میل کنند زیر یک باشند این حاصل ضرب اینا جوری باشه که گرادیانتون ونیش کنه ناپدید بشه اصلا چیزی به این اولیا نرسه از اونور اگر از درایه‌هایی داشته باشند که بالای یک باشه میتونه چندین بار در همشون شدنشون شما رو به بی نهایت میل بده و کلاً چیز کنید انواع چالش‌ها داشته باشید در ضمن هزینه محاسباتی زیادی هم داره راه پرکتیکالی که اولین گام برای در نظر می‌گیرم که به جای bpt از ترانکید bpt یا bptt بریده شده استفاده می‌کنن ماجرا اینکه میگه آقا ولش کن نمیخواد کل کلشو بری عقب یه ده تاش ۲۰ تاش نهایتا ۳۰ تاش برو عقب و یه پنجره بنداز روش تا اونجا آپدیت کن حالا خوبیش اینه که ما تو فوروارد هیچ مشکلی نداریم یعنی داده ها رو همه رو داریم فوروارد مون تقریب نداره توش دقیق دقیقه بکواردمونه که تقریب می‌زنیم با همین مثلاً چه می‌دونم چند تا آپدیت می‌کنیم و در ضمن یه ماجرای دیگه اینه که همونطوری که ما

مینی بک می‌زنیم توی شبکه‌های سی‌ان‌ان یا اون ام ال پی اینا اینجا هم همین کارو می‌تونیم بکنیم یعنی مینی بچه‌ها مثلاً ۵ تایی ده تایی بزنیم از اولی شروع کنیم یعنی همه یه دور دیده باشنا خب اینجوری نیست که بگید آقا چرا این از تا اینجا اومد بعد اینا هیچ وقت مثلاً سرشون بی کلاهمون فلان نه می‌تونستید مثلا اول رو این ترین بکنید w کوچولو تغییر میکنه بعد دومتون رو بیارید اینجا و با دبلیو های که حالا ترند شدن تا اینجا فقط پروگت کنید و بیاید تقریب بزنید دیگه حالا انشالله که خوب در میاد و این تو عمل داره و به جای اینکه لاس رو بیاید با کل دامنه دورتون بگیرید چیکار کنید فقط با بخشش ببرید جلو و این ماجرایی که وجود دارد و خب اینجوری کنید و بیاید عقب و این مسیری که شما رو انشالله به نقطه دبلی مناسب میرسونه اما اگر این باکس های سبز رنگ آر ان ساده باشند همونطور که عرض کردم خدمتتون چالش خواهید داشت این که ممکنه گریدتتون وش کنه اگه

بارها و بارها استفاده میشن در واقع چیز داشته باشند مقادیر ویژه بالای یک داشته باشند به علت چیز شدنشون حالا ضرب‌های متوالیشون ممکنه انواع اتفاقات براشون بیفته رادیانتون یا بره به سمت صفر میل کنه یا بره خیلی خیلی زیاد چه بسته به اینکه اون دبلیو ها مقادیر ویژه هاشون چه جوری اند زیر یک یا بالای یک اند من یه کامپیوشن گرفت بکشم باز اینم فکر می‌کنم کامل دید بهتون میده بچه‌ها این مسیری که ما رفتیم شاید دید جذاب تر و واقعی ترش اینه ببینید ما خدمتتون عارضم که اچ لحظه قبل رو گرفتیم مثلاً اسمشو می‌ذاریم h صفر ایکس یکم گرفتیم خب ایکس یک خودش بردار ها بعد اچ صفر هم برداره یعنی من این بردار کاکتشون کردیم درسته بعد در یک دبلیویی اینا رو چیکار کردیم ضرب کردیم این ضربه البته چیز نیستا ضرب نقطه به نقطه نیستا به اصطلاح ضرب ماتریسی واقعا

دبلیو در این کانکت شده اینا ضرب شد خدمتتون عارضم که از یه اف گذشت غیر خطی شد مثلاً اون اف تنش بود و رفت چی تولید شد h بعدی تولید شد اچ یک تولید شد حالا دوباره ایکس دو میاد باهاش کانکت میشه میره با در واقع یه دبلیو ضرب میشه از اف میگذره و چی اچ بعدی تولید میشه یادمون باشه بارها و بارها تاکید کردیم که این دو تا دبلیو کاملاً یکسانه حالا فرض کنید اینجا دیگه ته ماجراست شما اینجا وای اوت پوتتونه همون وای پرد شما یه لاس تعریف میکنید اینجا میگید این وای هم دارم چنده بعد با این دو تا یه لاست تعریف میکنم حالا میخوام رند لاس رو چیکار کنم نسبت به تمام دبلیو ها پیدا کنم من شما از این مسیر باید آبشاری بیاید پایین در ضمن یه بار باید یعنی از این مسیر بیاید رند لاس به رند اینو پیدا کنید

یه بار باید برید از این مسیر بیاید و الی آخر یعنی از اول تا از نزدیک‌ترین مسیر تا دورترین مسیر باید بیاید این میشه همون حرفایی که من زدم که ریاضیات خیلی تو هم تو هم شد ولی می‌خوام این دیدو داشته باشید که اوکی حداقل فیزیک پشت ماجرا رو می‌دونیم چه خبره و این ماجرایی که وجود دارد خب ما بحث کردیم در مورد ال اس تی ام ها که یه جایگزین خوب بودن اولین در واقع دلیل خوبشون که می‌تونستن حافظه‌های خوبی رو به خاطر بسپارندش نکنه به این زودی این داستان سل استیتشون بود این خطی که بالا به هیچکی وصل نیست یعنی البته نه که به هیچکی هیچکی خالص و مخلص هم حالا همچین هم نیست یعنی بالاخره این بینابین یه سری ضرب و جمع های نقطه‌ای داره براش اتفاق میفته ولی واقعا مثل این مسیر سنگلاخی نیست که هی بخواد از تنه چه سیگما و فلان و اینا بگذره هی هم مشتقات اینا بیان تو کار و شما رو هی مثلاً با عددهای کمتر از صفر در

قدیمی‌ها نمونه این خطه این شانسو به شما میده که مثلاً چه می‌دونم اینجا بیاد این دبلیو رو آپدیت کنه بعد وقتی از اینجا میای حالا اینجا دو شاخه میشه دیگه هم از اینجا میای هم از بالا میای تو باکس قبلی شاید از پایینی مثلاً به سمت ولی شدن برید ولی از بالایی اوضاع بهتره و اونم باز میاد رند لاس به رند دبلیو محاسبه میکنه و میره آخر و خب اوضاع انشالله اینقدی که ما فکر می‌کنیم بعد نباشه بچه‌ها خیلی میشه روش حرف زد ولی چون میدونم خارج از برنامه حوصله‌تونه حتی خود کامپیوتر من نگاه کردم جزوه های مثلا ام تی هم نگاه کردم تدریس نمی‌کنن لزوماً یعنی بعضاً در همین حدش هم نمیگن خب بعضیا میگن بعضیا فقط فرمول ها رو میارن بحث نمی‌کنن روش میگن برای خودتون چرا چون عمده اینا رو قراره در واقع چیزا برای ما انجام بدن حالا لایبراری ها و کتابخونه های معروف حوزه دیپ لرنینگ برای ما انجام بدن ما فقط خواستیم گرا بدیم بهتون که آشنا باشید خب

بحثش زیاده بالاخره اوکی اگه بخواید بنویسید حالا این شبکه تازه ساده‌ترینش بود اگه شبکه‌های من‌درآوردی می‌اومدن چی اصلاً به نظرتون چی میشه یعنی نمی‌دونم تا حالا تجسم کردید بیاید ال اس تی ام بک پروفایل واقعاً برای این ماژول که انواع تابع‌ها توش به کار رفته و توش سی و اچ تولید شدن و فلان حالا مثلاً برید به این فکر کنید که میخواستید بکشن رو بنویسید در حالی که این نرم افزارها اینقدر خوشحال باشید که حتی ماژول‌های دست‌ساز هم بسازید اینا خوب نوشته شدن براتون حساب میکنن یعنی با تابع های دست ساز شما هم اینا باز همون کامپیوتر که رفت و یه جورایی حالا برای خودشون یا میکشن یا هر ایده دیگه‌ای نمی‌دونم ولی میرن اون مسیرهای رند لاس به رند تمام پارامترهاتون رو پیدا می‌کنن و اینجوری میان عقب و اینو توی کراس میتونید دستور مناسبش پیدا بکنید اما اینجا به نظرم دیگه بریم سمت اینکه یه سری اپلیکیشن های واقعیش یک زوم تر بشیم یعنی با بحث بیشتری

جلسه آینده تفاوت این حرفایی که تو این جلسه می‌مونه رو مطرح بکنیم و همینطور چی خدمتتون عارضم که یه نگاه عملی هم داشته باشیم و با کراس بهتون یاد بدیم چه جوری میتونید ماژول های رو صدا بزنید و به شبکه‌تون اضافه بکنید و بالاخره یه مثال حل کنیم حداقل که با همدیگه دستمون نرم‌تر شد ببینیم اینا چجوری تو واقعیت می‌تونن برای ما کاربرد داشته باشن خب بچه‌ها من فکر کردم این یه مقدار جاده خاکیه اپلیکیشن ها رو میخواستم بیارم خیلی عشق این بودم که امروز تلفیق سی ان ان و بهتون نشون بدم ولی آخرش مجبور شدم یکی دو سه تا چند تا اسلاید چیز خاکیه مقدماتی بیارم ما به عنوان مهندسی مکانیک خیلی به اینا کار نداریم مگر اینکه شماها بخواید تو حوزه های یا گفتار کار کنید تو رباتیک یا آنالیز متن و مدل سازی تکست کار کنید که حالا بین بچه های ما مثلا

احتمال داره تو این حوزه‌ها ورود بکنه و خوب لازمه که با این ادبیات و این الفبا تا حدودی آشنا باشه ببینید خدمتتون عارضم من به شکل خیلی موفقیت آمیز و آگاهانه‌ای تا الان تونستم این همه درس رو با شما بیارم جلو بدون اینکه بخوام به صورت تخصصی حرف از احتمال بزنم خب اینو در واقع یه پوئن برای خودم حساب می‌کنم بدون اینکه شما رو گیج کنم توی احتمالات بندازم احتمالات شرطی حتی من تا الان براتون تعریف نکردم البته دیگه بیشتر از این نمیتونم مقاومت کنم انشالله بلافاصله بعد آر ان ما برسیم دیگه چاره‌ای ندارم یعنی بایدش باید احتمالا شرطی رو در حد ساده براتون معرفی بکنم خب خدمتتون عارضم که فقط در این حد بهتون میگم فرض کنید ساده ترین در واقع کار مادلینگ تست مادلینگ که با آر میتونید بکنید اینه همون کاری که ما با پیامک اون روز بهتون گفتیم اینه که شما یک کلمه بدید خب و اون شروع کنه

کلمات بعدی رو براتون بسازه البته یه فاز ترینینگ داره شما اول ده‌ها جمله بهش دادید اولی رو دادید یه دومی ساخته بعد همون دومیتونو ورودی دادید سومی ساخته بعد گفتید که من یه لاسی می‌خوام که من می‌دونستم دومی باید چی باشه تو چیزی که می‌ساختی باید دومی متن من میبود ها که من این دومیه رو می‌خوام تازه ورودی بدم برای ورودی لایه چیز بعدیم گام بعدیم و و و این لاسه اینقدر میاد خودشو میزنه تو کله خودش که این دبلیوهای خطوط افقی و قائم که همون xh و وای اچ باش ترین بشن بعد از اینکه ترین شدن با تعداد متن های کافی حالا دیگه میشه اون موبایلتون ها کلمه اول مثلاً بهتون مثلاً یا سلام پیشنهاد میده یا شما سلامو انتخاب می‌کنید بعد میگی خب اوکی بعد سلام چی ها که حالا بسته به اینکه تو مثلاً موبایللامون ما بیشتر چی تایپ کرده باشیم اگر این شبکشو به روز کرده باشه حالا یا هر الگویی که داره استفاده میکنه برای من و شماها میتونه متفاوت باشه

کلمه دوم پیشنهاد بده البته لزوماً یه دونه پیشنهاد نمیده چرا چون این وکتوره ها اینجا نوشتم w۲ خب ولی کامپیوتر که دبلیو دو بارش نیست یه برداره بردارم نمادی از چی بود همون نمادهای خروجی سافت مکس بود مثلاً ۱۰ تا درایه داره نماد ۱۰ تا کلمه اولی احتمال اینکه کلمه اول باشه دومی کلمه دوم باشه ولی آخر و چیز لیبلش بچه ها چی میشه مثلا من فرض کنید یه دیتا ست ده کلمه‌ای دارم من داد واژهگانم ده کلمه است خب کلمه دوم بچه ها چیزش چی میشه وای اکچالش چی میشه الان وای پردیکتش من گفتم بعد از اینکه دبلیو بهش دادیم در واقع اینا h و اینا روش اعمال شد و ضربش انجام شد یه بردار مثلاً ده تایی بهم میده که نمادی از احتمال سافت مکس زدم واقعیش چیه بچه‌ها برام بنویسید یه دونه بردار وان هات باریکلا علی جان یه دونه بردار وهات که ده دومش

تو چیز تو یارو خدمتتون عارضم خروجی شبکه‌های ما اکچوال یعنی به خاطر میتونیم به راحتی از این استفاده کنیم چون عدداش صفر نمیشه که لوگش بی نهایت بشه و خب چیزه خدمتتون عارضم که لوگاریتمشو میگیریم و فلان این نماد لاس میشه پس اینجوری باید چیکار کنیم حالا قبلا ترین کردیم حالا کلمه اول یه برداری دوم یه بردار شده ۱۰ تا درایه داره خب مثلاً درایه اولش ۸۸ دومیش ۱۰ صدم سومیش دو صدم چهارمی به بعد همه صفره شما باشید کلمه بعدی رو چه انتخاب می‌کنید شما کلمه اول رو دادید خروجیش یه بردار ده تایی شده گفتم عرض کردم اولیش گرایش ۸۸ سافت مکس هم زدیم دومیش ۱۰ صدم بعدی دو صدم

شما باشید چیو به عنوان ورودی بعدی میدید پیشنهادتون بچه‌ها نوشتن اولی اولی باریکلا اولی محتمل‌ترینه حالا اینجا دیدگاه‌های مختلفی وجود داره اگر اومدید اولی رو استفاده کردید اوکی همیشه به یه جواب می‌رسید یعنی دیگه تنوع نداره دیگه مادامی که مدلتون ثابت باشه همیشه اول به شما میگه سلام دومی میگه خوبی سومی میگه فلان و و و همین همیشه بیشتر اینو بردارید اینه یک پله واقعی‌ترش اینه که چیکار کنید اینه که شانس بهش بدید بگید آقا ببین من اگه صد بار بخوام انتخاب کنم ۸۸ بار اون کلمه اول رو انتخاب می‌کنم ولی ۱۰ بار هم این شانس رو بهش میدم کلمه دوم انتخاب شه دیگه و این تنوع بده یا مثلاً سه تا احتمال بالاها رو برای کاربرم نشون می‌دم مثلاً تو موبایلتون می‌بینید سه تا کلمه بهتون پیشنهاد شده شما نمی‌دونید احتمال هر کدوم چند بوده ولی مثلاً سه تا بالاتره مثلاً یکیش ۵۰ بوده یکیش مثلاً ۳

اولی رو بردارید فقط به گریدی حریصانه فقط به بیشترینش نگاه کنید یه ماجراست اینی که شانس بهش بدید تاس بندازید ولی تاس وزن دار دیگه یعنی احتمالشم لحاظ کنید یه ماجرای دیگه هست ولی آخر خب حالا اینجا یه ورژن دیگش نوشته نوشته بچه‌ها این تکست مادلینگ ها کلا ویژگیشون اینه که یا کرکتر کرکتر بهش میدید اونا باید کرکتر بعدی رو حدس بزنن مثلاً سه تا کرکتر بهش میدید مثلاً اچl بعد مثلاً اون باید بشناسه بعدیش هم احتمالاً اله می‌خوایم هلو بسازیم ها یا اینکه کلمه بهش بدید سلام خوبی من مثلا خوبمه جوابش ها یه همچین چیزی خب بعد خدمت شما عارضم که پس میتونه کرکتر کرکتر کلمه به کلمه یا حتی جمله به جمله باشه ورودی اول یه جمله دومی یه جمله فقط باید وان هات کدش کنید ولی یه چیزی اینجا وجود داره میبینید برخلاف این عکس که دبلیو رو مستقیم داده به چیز به این ماژول های میانی اینجا حالا نک

فرض کنید دیکشنری کامپیوتر شما ۱۰۰ هزار کلمه دارد ورودی‌های شما چین یک بردار وانات ۱۰۰ هزارتایی‌اند شما اگه می‌خواستید ببرینش توی این چک خودش دل خودش ۲۰۰ تا نرون داشته باشه شما باید این اکس رو در یه ماتریس دبلیو ضرب میکردید که شما رو به یه بردار ۲۰۰ تایی ببره ها باید به یک ۲۰۰ در مثلاً ۲۰۰ در صد هزار ضرب میکردید یعنی اینقدر درایه باید میذاشتید تو فقط تو بخش کاری که بچه ها میکنن اینه بهش میگن ورد امبدینگ میکنن خودشون آگاهانه با یه سری تکنیک های میان چیکار می‌کنن این ابعاد ۱۰۰ هزار تا یا به چی فضای کوچیک‌تری می‌شکونن اون یعنی مثلاً در یه ماتریس پی ضرب میکنن که این پی ترین نشده ها یعنی پی از قدیم موجوده حالا شاید بتونه فاینتیون بشه و یه بردار کوچیکتری رو میدن به اچ حالا این یه توضیح کوتاهی در مورد این ورد ام بدینینگ ها بدم بد نیست اگر نشنیدید یا براتون

مهم نیستم هیچ مهم نیست نگران نباشید من فقط اینجوری بتونم بیان بکنم به زبان ساده امیدوارم بتونم در حد سوادم بیان بکنم بد نیست ببینید بچه‌ها ما اگه یادتون باشه اومدیم هر کلمه رو با وانات کد کردیم کسی یادشه از قدیم چرا وان هات کردیم و نگفتیم کلمه اول لیبلشو یک می‌ذارم دومی دو سومی سه چهارمی چهار الی آخر چرا وانهات کد کردم پیشنهادتون چی بود فاصله آفرین فاصله‌های همه دو به دو برابر باشه چرا باید الان خیلی فاصله داره حالا ممکنه اینجا مثلاً کلمش پدر باشه اینجا مادر باشه بعد اینجا مثلاً فرضا اینجا فلان چرا باید مثلاً یک از ۴ اینقدر پدر از مادر اینقدر فاصله بگیره ها گفتیم که دو به دو فاصله‌شون برابر باشن خب اوکی شما با یک فضای ان بعدی تنک مواجه هستید که چی که تو نقطه‌های یک و صفر دستگاه مختصاتشون یه کلمه کد شده خب بعد مثلاً ان بعدیش کنید ۱۰ هزار بعدیش

اوه اوه چقدر مثلاً پارامتر اینجا وجود داره یا می‌تونسته وجود داشته باشه پرش کنه صفحه رو ولی شما فقط یه دونه اشغال کردید میگه آقا یه عده میگن بیاید از دیمنشنال ریداکشن استفاده کنیم ابعاد کوچکتر کنم برای چی مثلاً سه تا برای چی ۱۰ هزار تا برم جلو یه مثلاً ابر صفحه‌ای یه صفحه دو بعدی یا یه خط پیدا بکنم خب این خط این صفحه مهمه چه جوری پیدا میشه مناسب باشه که پروجکشن اینا رو رو اون نگاه بکنم و کلاً دیگه به جای اینکه کلمات صد هزار بعدی نشون بدم کلاً با دو بعد نشون بدم اگه صفحه دارم با اکسپرین و وای پرین این صفحه نشون بدم اگه این باشه این وایپرین ها و بگم با این کار در بیارم برم جلو یعنی این نماد کلمه باشه خب و جالبه یه عده یه کارای خفنی کردن اصلاً تو این زمینه های بردهینگ و اینا که بعد اینکه پلات میکردن یعنی بردن تو فضای جدید فضای جدید اینجوری روزهای هفته بغل هم افتادن خیلی جالب مثلاً شنبه یکشنبه دوشنبه بعد مثلاً شرکت‌ها کامپیوتری

پروجکت شدن رو اون صفحه اون صفحه یا ابر صفحه مهمه چی باشد چه جوری پیدا بشود فلان و اینا ولی اگه خواستید برای خودتون بدین اصطلاحاتو تو ذهنتون داشته باشید برای خودتون بخونید اینم جهت اطلاعتون که این پی چیه خب اینجوریه که میان اول در واقع دیمنشن wو یا ورد رو کوچیک میکنن بعدش میدن حالا به خروجی و فلان و الی آخر خب و گفتیم که در ضمن این خروجی ها نمادی از چی اند به تعداد مثلاً کلمات فرض کنید در ساده ترین حالت به تعداد کلمات دیکشنری خروجی دارند و مولفه‌هاش نمادی هست احتمالات اینه که چی با چه احتمالی فلانی هستید مثلاً w۴ اگه اولی شد ۸۸ بعد شد ۱۰ یعنی احتمال ۸۸ درصد اولین درایه در واقع وکتون ورد چهارمتونه خب و احتمال ۱۰% بعدی فلان فلان و اینجوری هی می‌تونید ادامه بدید و هی هم بعدش بسازید یعنی اوکی چهار رو داشتم

باز به عنوان ورودی میدم تو پی و درش ضرب می‌کنم دایمنشن رو کوچیک می‌کنم میدم به اچ دوباره احتمال می‌خونم دوباره کلمه کرکتر بعدی کلمه بعدی الی آخر و میتونم چی اینجوری متن تولید کنم یه صدا تولید کنم و مثلاً فرض کنید که شما دیتا ست بسیار غنی از صدا یا صوت متن اینا بهش بدید یا همون سازهای چیز نوت های مثلاً موسیقی مثل فا س فا دیز فلان فلان این چیکار میکنه بهتون پیشنهاد میده که مثلا سول اومده باشه سومیش باید چی باشه که خوشایند باشه و فلان و این ماجرایی که وجود داره این تست مدلینگ رو مجبور شدم بگم چون در واقع چیزه استفاده دارم یعنی توی تعاریف بعدی استفاده دارم یکی از شبکه های دیگه مهم دی سیکوئنس تو سیکوئنسه خب سیکوئنس تو سیکوئنس های که منی تو منی هستند ولی این فرصت رو دارید که چی مثلاً اولی رو تا آخر ببینید بعد

بچه‌ها من جزئیاتو قبلاً بهتون نگفته بودم اگه یادتون باشه می‌گفتیم که اوکی یه همچین ساختاری دارند یعنی اول ورودی ها رو میگیره غنی میکنه بعد خروجی ها را تلاش میکنه چی بسازه از آخرین ورودی این اولین خروجی رو می‌سازه و ای ادامه میده اولین اتفاق اینه که بچه‌ها اینا دو تا شبکه ریکنت مجزا یعنی بخش سبز و قرمز رنگه دبلیوهاش با بخش سبز و آبی رنگه لزوماً یکی نیستند یعنی بخش سبز رنگ میتونن متفاوت باشن دو تا شبکه بیکارنته ورودی رو میگیره ریکنت میزنه میره تا برسه به نقطه آخر بعد شروع میکنه وارد کارنت بعدی خروجی تولید میکنه خب اوکی تو ترین داستان اوکیه فرض کنید من مثلاً چیز استفاده گوگل ترنس از این استفاده می‌کنه مثلاً نوشتید من سیب خوردم خب حالا اون باید بنویسهp بعد مثلاً اینجا سه کلمه بود اونجا چهار کلمه است خب بعد کلششو با هم میبینه بعد این کار براتون انجام میده خب وقتی ترین میکنه یکی یکی میبینه یعنی

همه رو داره به ازای تک تک خروجی‌ها قشنگ دقیق دقیق داره چند باید باشند و وزنشو آپدیت می‌کنه ولی فرض کنید من برم بعداً بخوام باهاش جنریت کنم مدل بسازم یه جمله جدیدی بدم که گوگل ترنسلیت ندیده به نظرتون بچه‌ها چیکار می‌کنه جمله رو بسازه ها فرض کنید تا اینجا شبکه ترند شده تمام شد ها فورواردشو رفته جلو بعد اینجا با این اچ و این ایکس نهایی من خب چیکار می‌کنه اولین خروجیشو تولید می‌کنه اولین تولید شد بعدی چیکار میکنه مثلاً فرض کنید که اولیشو یاد می‌گیره من باشه بقیش چی سیب را خوردنش یا آی باشه مثلا تولید میکنه به نظر شما پیشنهادتون چیه فکر می‌کنید آفرین باریکلا علی خروجی رو هی میده ورودی این همون چیزی که اینجا کشیدم تو تست چون شما به اندازه کافی داده ندارید فقط یه دونه این اولشو دارید میگه اوکی i رو پیدا کردی به عنوان من اینو دوباره بده به شبکه ورودی ببین چی تولید میکنه

احتمالی چی تولید می‌کنه و حالا اون باید بره این کارو برای شما انجام بده حالا اینجا اتفاقاً اون داستان حریصانه رو یه دور دیگه با هم ببینیم ضرر نداره من گوگل ترنسلیت رو بالا میارم خب مثلاً من می‌نویسم آی این می‌نویسه چی می‌نویسه من آی ام من هستم خب می‌نویسم i am ae میشه من یک هستم ها یه اتفاقات جالبی داره می‌افته الان داره یاد میگیره که نه ترتیب این با ترتیب اون لزوماً یکی نیست خب و خدمت شما عارضم که همون داستان های بعدی پیش میاد حالا احتمال بده بعد برو چک کن که نمیدونم فرصت بکنیم یا اصلا به درسمون ربط پیدا بکنه یا نه که اوکی وقتی چند تا گزینه پیش روته چیکار کن ها فرض کنید که اینجاش اینجاشو ازتون بپرسم یعنی امیدوارم بتونید بگید فرض کنید اینجا رفته پیدا کرده احتمال آی هستش ۹۰ درصد بقیه مثلاً حالا مثلاً آی هست ۵۱ درصد رقیب بعدیش ۳۹ درصده خب

اگه بخوایم گردی نگاه کنیم و حریصانه نگاه کنیم اینه که اوکی تو ۵۹ رو که ماکسیما بردار برو بعدی بعد بعدی رو بردار برو بعدی هی ماکسا رو بردار ولی مثلا به محضی که شما آیم همون بلک خودمونو بنویسیم ببینید این وایمیسته که من ترجمه تموم کنم بعد خب اینو بنویسیم این برای که ترجمه اگه نوشته بود من هستم اصطلاحا دست به حرکت بود دیگه نمی‌تونست جملشو خوب دربیاره اینجا به نظرتون بچه‌ها چیکار می‌کنه یعنی الگوی ضمنی که این بتونه پیدا کنه من هستم رو ببره ته و این وسط مسا چیزای دیگه بیاره فکر می‌کنیم چیه ایده‌ای دارید نسبت بهش اگه ماکسیمم برندارم اگه ماکس ماکس رو برندارم چون گفتم اگه ماکس ماکس برداری بعد دو تای اول میشه من هستم بعد سومی چی میشه میره رو هوا خب خانم گودرزی نوشته با یه شانسی از بین گزینه

E:\courses\LangChain Project\main root\data\SCR_Session15_transcript_part3.txt

موجود انتخاب می‌کنه محمد نوشته وزن‌دهی بکنه حالا وزن دهی اگه منظورتون اتنشن بچه‌ها آره یه چیزای خف و خفنی است در بیان ساده بچه‌ها اینه که بیا به جای تک ماکسیمم سه ماکسیمم اولو بردار گوش ذهنت نگه دار اوکی بعد برو سه ماکسیمم دوم بردار در همدیگه هم ضرب کن احتمالشو باز دوباره بین این چیزایی که پیدا کردی سه تای اولو دوباره انتخاب کن انقدی برو جلو تا به ته برسی و چی بشه و اونجا ماکس ما انتخاب کن به عنوان جوابشالله اونجا دیگه درست در میاد یعنی من یک تخته سیاه هستم در میاد تا من هستم یک فلان پس چی شد پس اینجا میگه من اولی سه تا انتخاب میکنم یا پنج تا انتخاب میکنم بعد میره دومی دومی هم چند حالت ماکسیمم بهتون میده انواع اینا خب مثلاً پنج تا تا پنج تا ۲۵ حالت میشه اوکی میگه بین ۲۵ تا حالت دوباره برو پنج تا ماکسیمما رو بردار خب و باید ببینید چجوریه داستان اینه که بعضی وقتا مثلاً ماکسیممش اینه که اینجا دو شاخه میشه بعضی وقت

دو شاخه میشه بعضی وقتا اصلا دو حالت مختلف میاد جلو من با هستم پیر میشم مثلا تو با فلان پر میشه و اینا رو هی میای جلو هی هر زمان ۵ تا ماکسیما رو پیدا می‌کنید کنار می‌ذارید تا برسید به ته ته که رسیدید حالا چیکار کنید ماکس کل مثلا بردارید اینم باز یه راه رو کاغذ حداقل کار میکنه و تو واقعیت هم دیدن کار میکنه نکته بعدی که می‌خوام خدمتتون بگم اینه یه چیزیو ما اینجا نگفتیم وقتی یه جمله بچه‌ها می‌سازید دو تا توکن داره دو تا در واقع حرف داره که این هم جز لایبری اند ولی شما نمیدید نمیبینیدشون مثلاً این چیزو فهمید دیگه یارو گوگل ترنسلیت فهمید بلک برد اینجا کلمه آخره خب ولی اینجا مثلاً بات بنویسم این میفهمه بات کلمه آخره جهت اطلاع دو تا توکن وجود داره به نام توکن‌های استارت که اینم با وان هات میشه کدش کرد مثلاً اگر چیزتون ۱۰۰ هزار تا کلمه داره می‌تونه این ۱۰۰ هزارم یکمیش باشه بعد مثلاً

جمع فلان بعد یه توکنم داریم هرچی بخونه دیگه خب خدمت شما عارضم که اینم داره حالا داستان اینه که وقتی شما به در واقع دارید شبکه‌ها ورودی می‌دید بچه‌ها eos آخریه که بهش میدید خب یعنی اون e او اس رو که بهش میدید تازه میفهمه که من ته جمله رسیدم دیگه نیاز نیست چیز جدیدی تولید کنم ولی آبی ها تا کی ادامه پیدا میکنه تا تا اونم باز برسه به ای او اس خودش ها به محض که پیشنهاد بهتون داد مثلاً با احتمال ۷۰ درصد ۸۰ باید ای او اس باشه یعنی چی یعنی من تمام دیگه ادامه نده خب و اینم اتفاق جالبیه که رخ میده اینم گوشه ذهنتون داشته باشید خدمتتون عارضم که موبایللامون حداقل مال من این شعور رو نداره لطفاً چند تا از شما دو سه تا از شما نمونه این کارو بکنید بچه‌ها برید شروع بکنید با رندوم‌هایی که پیشنهاد میده چیز کنید کلمه بسازید ۱۰ تا بزنید پشت سر هم رندوم بعد اگه قابل

میرسه حالا یا اگرم میرسه بیانش نمی‌کنه مثلاً نقطه نمی‌ذاره براتون شما می‌تونید اینا رو کامل کد کنید یعنی نقطه نمی‌دونم eos اینا رو جزئی از چیز در نظر بگیرید به اصطلاح دادگانتون در نظر بگیرید هم تو ترینینگ هم تو تست ببینه اینا رو و بعدشم براتون تولیدشم بکنه حتی خب حالا یکی برام بنویسه هفت هشت ده تا کلمه که ازتون دیده مهمم نیست بی ربط باشه آرمین آره مرسی تو چطوری میشود و در این به این ترتیب که برای شما ارسال همینه دیگه منم حدسم همین بود این آخرش میره قاط میزنه خب یعنی چون احتمالاً ای او اس رو نمیبینه باید نگاه میکنه میگه خب بعد میشود و میاد بعد در این بعد در این زمینه بسیار چیز محتمله یعنی من خیلی اتفاق میفته در اینکه مینویسم زمینه می‌نویسه مثلاً به این بنویسی شاید

ترتیب بسیار محتمله به این ترتیب بعدش ۹۹ درصد که باید باشه درسته دوستان دیگه کسی چیزی هست قابل نوشتن برامون بیاره خب حالا باز ادامه میدادی احتمالا چیز در وری دیگه هم در میومد خب خدمتتون عارضم بچه ها این مدل های کلا ترنسلیشن مدل های زبانی اینا همه الگوشون پس اینجوری شد قرار شد که بالاخره چند تا برد بهشون میدید مثلا مدل های ترنسلیشن اینجوری که شما تا تهش حق دارید ببینید بعد بعدش برید شروع کنید به تولید کی تا کی میرید جلو از استارت شروع می‌کنید تا ای او اس میرید جلو برای خودتون بعد

استارت خودش شروع می‌کنه تا eosش میره جلو و دیگه eusش که رسید دیگه میشه گوگل ترنسلیت دیگه تمام شده و جمله رو برای شما پلات می‌کنه و بهتون ولی اتفاقی که میفته اینه فرض کنید مثلاً ترجمه زبانیه مثلاً چیز انگلیسی به فرانسوی مثلاً iample بعد eos هم داره ها خب میگه من اول یه شبکه خیلی ساده در نظر بگیرید با یک لایه هیدن شبیه این میگه آقا اول می‌تونست استارت هم بده اولا ولی حالا استارت نداره آی داده بعد با اچ صفرش رفته اچ جدید رو کد کرده فعلا خروجی نساخته دلیل نداشته گفته نه اول باید کل جمله رو ببینم اپل رفته رفته رفته نهایتاً توی یه چیزی به نام قرمزه چی شده آل اینفورمیشن استور شده یا تمام اطلاعات ذخیره شده الان این قرمزه باید اینقدی غنی باشه که کل این جمله تو ذهنش باشه باید اینو بره باز کنه تازه تو فرانسه حالا خب حالا اینو به عنوان ورودی اینو به عنوان ورودی میدیم به شبکه چی تولید کنندمون که خب میگه مثلاً اینو می‌ره

فرانسه است آلمانی یا چیز دیگه‌ایه یعنی کسی سوادی موادی داره برام بنویسه نمی‌دونم این همینجوری من اول گفتم فرانسه چیز خاصی نبوده احتمالاً آلمانیه دیگه هیچی خب حالا فرانسه نیست آره به نظر میاد نیست خب خدمت شما عارضم که این رفته تولید کرده بچه‌ها تو رفتم مثلاً دو چهار پنج تا دو چهار تا پنج تا توکن داشتیم اینجا ۱ ۲ ۳ ۴ ۵ ۶ تا داریم لزوماً طولشون یکی نیست ولی تو اونم تا رسیده e او اس دیگه وایساده البته نه که تا رسیده اینو ما چیز بهش دادیم ترینینگ بهش دادیم خب مثلا میتونسته این باشه ترینینگ بهش دادیم که برو اینقدی بزن تو سر کله خودت دبلیو هاتو اینقدر آپدیت کن که به این برسی بعد هزاران جمله دیگه هم بهش دادم حالا بعدش که بهش میدم برام بساز ممکنه بگم آی بنانا خب حالا اون باید برام بره بسازه اولی رو با این قرمزه میره احتمال اول رو میده بعد از احتمال اول و اون قرمزه باز دوباره دومی رو تولید میکنه

دومی امید ورودی اولی و میره تا آخر تا به eos برسه و چی به شما بگه که من کارو درآوردم بچه‌ها به این شبکه به صورت خاص میگن شبکه انکودر دیکودر بخشی که ورودی رو میگیره تا کلشو توی قرمزه که در واقع دیمنشنالشم لزوماً بالا نیست و میتونه کاملا دوست شده باشه و توی فضای پکی جمع شده باشه بهش میگن اینکودر در واقع رمزنگاری کرده الان و دیکودر چیکار میکنه تولید کنه براتون حالا اگه یادتون باشه من جلسه قبلی کلمه به نام شبکه های ان کد سی ان رو بهتون گفتم خودتون برید یاد بگیرید اونم فلسفه شون ذات یعنی همچین کاریه که اوکی عکس ابعاد بالا رو میگیرن خلاصه میکنن تو ابعاد پایین بعد دوباره از روش ابعاد بالای خوب می‌سازن بعد میگن اوکی این قرمزه رو ببین چقدر غنی شده این میتونه الان نماد خیلی خوبی برای من باشه و فلان حالا اونو اگه خودتون دلتون خواست نگاه بندازید و یکی دو تا مثال آخرم بزنیم و جمعش کنیم امروز تمومش کنیم بره یکی اینکه بک پروپشن

آبشاری دوباره میره یعنی اینکه لاس‌ها رو تعریف می‌کنی تو ترینینگ این شروع میکنه همه چی ترند میشه شاید در واقع چون هندسه‌اش به منظمی قبلی نیست روابط بک پروفگریشنش هنوز ماجرا داشته باشه ولی ذاتاً همونه شما باید برگردید عقب و تمام اینا رو wلیوهاتون آپدیت کنید و برسید به شروع ماجرا و حتی اون اچ صفره که همه رو آپدیت کنیم بعد از اینکه هزاران جمله ۱۰۰ هزاران صدها هزار جمله بهش دادید حالا می‌تونید انتظار داشته باشید که اوکی این فلش‌هاتون فلش‌های خیلی خوبی و مدل خوبی رو ساختن و می‌تونن مثل گوگل ترنسلیت برای شما چیکار کنن ترجمه های خوبی ارائه بدن و خب یه حقه دیگه که تو مدل های زبانی حیفم اومد نگم اینه بچه‌ها یه کاری که می‌تونن بکنن و البته نتیجه بسیار بهتری می‌ده می‌گه وقتی می‌خواید ترجمه کنید به جای اینکه بگید آی ای تنپل برعکسش ورودی بدید ها یعنی آخر آی رو ببینه یک قبل آخر ببینه تجربه نشون داده این بهتر عمل میکنه وقتی تو ورودی اینجوری بهش میدید شبکه

جمله اولتون برعکس فیلیپ می‌کنید بهش میدید اون بهتر براتون می‌سازه دقت بالاتره اینم چیز جالبیه و یه تریک جذابه که اینپوت و اینور میکنن و همچنان خوب جواب میده ولی ما نمی‌خوایم مدل‌های زبانی ورود بکنیم انواع جزئیاتی دارند یه بخشش غیر دیپه یعنی اینکه باید ببینید اصلاً قدیمیا کسانی که تو مدل‌های زبانی فلان فلان هرچی کار می‌کنن چیکار می‌کردن و خب همه زبان زبان فارسی نیست که واسه همه زبانا می‌تونه اتفاق بیفته تازه فقط آرمین حرفمون کامل تر میکنم این میتونه چت بات باشه لزومی نداره فقط ترجمه کنه شما بهش بگو آیه تنپل اون مثلاً بگه اوکی نوش جان خب یعنی در این حد بهت جواب بده کاری نداره دیگه ذاتش همینه دیگه درسته تازه اینی که عرض کردم برعکسش کنیم هم خوب جواب میده برای چیزه برای زبان انگلیسی و اینا یعنی دیده شده تو پیپرراشون و خدمتتون عارضم که اینم موقع جالبیه که اگه

زمانی تو این زمینه ورود کردید بهش فکر کنید اگه شبکه‌های داشتید شاید شاید اگر ورودیتونو فیلیپ بهش بدید شاید خروجیتون بهتر براتون تولید بشه حالا اینم جهت اطلاع خب و اما اون چیزی که میخواستم یعنی همه اینا رو گفتم من یه ربع ساعته دارم یه سری حرف می‌زنم که برسم به این چون ذوقشو داشتم حتما تو اسلایدامون باشه بچه‌ها میشه سی ان ان ها و آر ان ها رو تلفیق کرد کلاً هم شبکه های الان در واقع به روز و پرلات این کارها رو میکن خودرو بخواید بسازید ما مثلاً تز ارشد یکی از بچه‌هامون که در زمینه لب خوانی بودن انشالله تو تمرین باهاش آشنا میشید همین بود این بود که یه ویدیو از لب خوانی یه نفر می‌گرفت که تصاویر بود بعد چیکار میکرد هم از سی ان ان استفاده میکرد هم میداد به ال اس تی ام و در نهایت به شما می‌گفت که این لب خوانی چی گفت اونجا یه تک کلمه بود میگ گفتی ابر گفتی سلام اینجوری خب اینجا چند خروجی چند ورودی نبود چند مثلاً ورودی یک خروجی بود خب

خدمتتون عارضم که برای اینکه این کارو بکنید مثلاً ایمیج کپچرینگ یکی عکس به شما بدن بعد میگن یه جمله در موردش بنویس حالا روز اول شما بهش میدید مثلاً ۱۰۰ هزار تا عکس از هر عکسی هم سه چهار تا زیرنویس پیشنهادی بهش میدید یعنی مثلاً با ۳۰۰ ۴۰۰ هزار تا عکس میره ترین میشه ۳۰۰ ۴۰۰ هزار زیرنویس مختلف و خدمتتون عارضم که حالا اگه عکس جدید بهش بدید اون باید براتون یه زیرنویس تولید کنه ها یا مثلاً یه نمونه‌های ساده‌شو بگم این حالا سعی میکنیم بشه اشاره بهش بکنیم جلسه بعدی مثلاً در مورد imdb بچه‌ها که فیلم فیلم بازهای ما کیان من یه لحظه موبایل روتیت کنم دست بالا رو ببینم کیا فیلم بازن یعنی اصلاً خو فیلمن و تو این جهان به به حالا جالبه من قبلاً بهتون گفتم مثلاً اصلاً فیلمبین نیستم ترجیحم اینه که بخوابم معمولا خودم با چیزای دیگه سرگرم می‌کنم خدمتتون عارضم که آی ام دیبی رو حتماً می‌شناسید بعد مثلاً فرض کنید که نمی‌دونم یه دیتا ستی وجود داره توی

اشتباه نکنم چیز می‌کنه یعنی متن‌هایی وجود داره که ملت در مورد فیلم‌ها تعریف کردن تعریف و تمجید یا حالا فحششون دادن بعد اینجوری شده که این لیبل زده که این خوب گفته یا بد گفته بعد اینجوریه که شما اگه اینو با خوب ترین کنید باید یه جمله جدید بسازید این چیز می‌کنه تلاششو می‌کنه به شما بگه که شما دارید تعریف میکنید حالا یا دارید بد و بیراه میگید خب این کاریه که سعی می‌کنیم حالا یه جورایی با همدیگه مرورش بکنیم تو اگزپل هاش من چشمی قبلاً دیدم خدمتتون عارضم که سی ان آر اینجوری اند که ما مثلا میتونیم برای اکسترکشن استفاده بکنیم یادتونه cn میرفت جلو میرفت جلو باز میشد فلت میشد بعد یکی دو لایه حتی کانولوشن هم میزد چیز فول کانکتد میزدیم بعد آخرش سافت مکس آخرش پاک کنید همون لایه مثلاً فلت شده یا یکی دو تا ام ال پی بعدش که مثلاً ۴۹۶ تا شده الان یه داده بسیار غنی از اون عکس است ها این فیچر اون عکسست فیچر یعنی اکسترکت کرده و حالا اینو به عنوان ورودی میتونید به تو بدید چجوری بیاید با هم ببینیم

یا الکس نت یا شبکه‌های من درآوردی خودتون بخش‌های چیزشو حذف کنید سافت مکس آخرشو حذف کنید خب قرار نیست الان برای ما تصمیم بگیره خب تو همین فولی کانکتدای مثلاً ۴۹۶ تایی باشه یعنی ۴۹۶ تا عدد به من بده بسیار غنی از این عکسه بعد چیکار کن بعد میگه توکن استارتتو ران کن به عنوان شروع اچ صفر هم حالا یا داری اول ترینش بعداً ترین میشه دیگه این خروجی ۴۹۶ تایی رو در کنار توکن استارت بده بهش ورودی ها بده به این ورودی و چیکار کن حالا اینجا اگه اچ صفر در واقع وجود نداشته باشد چیکار میک یعنی قبلا اینجوری بود دیگه همون درست گفتم قبلا اینجوری بود که فقط بخش ایکس و اچ وجود داشت w اینجا میگه سه تیککه است میگه هم اچ صفر وجود دارد که در دبلیو خودش ضرب کنیم هم ایکس وجود دارد که در دب ایکس اچ ضرب کنیم در ضمن این ۴۹۶ تا هم در یه wلی

اسمشو می‌ذاریم اینپوت هاش ضرب بکن تا اینم بشه بعدش همون بعد اچ اینا رو با هم جمع بزن با بایوسشم جمع بزن از تنش بگذرون ها یعنی خروجی عکسه یا عصاره عکسه رو بده به چی بده به درایه اول آرنت و آرنت این دفعه یه کوچولو پیچیده‌تره ها یعنی فقط اینم کانکت میشه باهاشون ورودیش اگه بخوایم برداری نگاه کنیم فقط ایکس و اچ صفر نیست تنگ هم زده شدن اون ۴۹۶ تا هم تنگشون زده شده حالا یه دبلی در ضرب شده در نهایت مثلاً یه برداری اون چیزایی که تو اچ هست بهتون میده خب خدمتتون عارضم که اینجوری می‌رید چیکار می‌کنید ترین می‌کنید چجوری شما استارت که دارید مثلاً برای این ایمیج دارید مثلاً میگه مردی کلاه به سر دارد باید اول مردی رو خروجی بده خب اینقدی در واقع ترینینگتون رو انجام می‌دید که در واقع لاس فانکشن و این وای صفرتون با توکن مردی چیزش یکی بشه در واقع نزدیک بشه به همدیگه اون مثلاً فرض کن مردی توی چیزتون توی دیکشنری

۱۱۵۰ بود این باید اینجوری باشه که درایه ۱۱۵ به یک نزدیک بشه بقیه‌اش به صفر و هی بعدیاش ساخته بشه اوکی ترین شد تمام وقتی می‌خوایم تست کنیم چیکار می‌کنیم دوباره همون داستان قبلی عکس جدیدتونو بهش میدید اول ۴۰۰۰ تا ۹۶ تا رو در میاره بعد این دیگه الان ترین شده الان دیگه تغییرش نمیدید استارت و توکن استارت رو میزید شروع میکنید اچ صفری دارید شما هم یه وی دارید بهش میدید اچ نهایی از جمع اچ یک از کانتکت شده اچ صفر استارت توکن استارت و این ۴۹۶ به دست میاد بعد از این از این اچ یک که اینجا هست این بالای اینم هست با احتمالات حالا اگه دبلیو در اچ ضرب میکنیم بدست اومده وای صفر پیدا میشه اونو شروع بذارید دیگه کلمه شروع هر چی گفت دیگه اعتماد کنیم مثلا میگه آقایی خب مثلاً لب دریا کلاه به سر دارد بعد این آقایی رو بدید به چی به ورودی بعدی خب یا اینکه نمونه بردارید

یا اینکه مثلاً اگه احتمالش شد ۸۸ درصد ۵۰ درصد یکی شد ۳۵ درصد این شانس رو بدید که حالا بعضی وقتا ۵۰% رو بدید بعضی وقتا ۳۵ رو و برید تا آخر تا زمانی که eos رو ببینید دیگه اونجا جمله تمام شده است و این کارو ادامه بدید این سمپل گیری شده اینجا همون ماکسیمم انتخاب نشده‌ها یعنی واقعاً مثلاً اگه یکی هفتاده یکی شانس بهش میده هر از گاهی انتخاب بشه ۳۰% مواقع شانس میده اون انتخاب حالا هر چیزی برسید اینا تو زبان برنامه نویسی بعضاً دیدید و در نهایت جمله‌تون تولید شده و امیدوارم جلتون جمله‌تون چیز خوبی باشه رو مایکروسافت کوکو رو این دیتا ست آزمایشش کردن ۱۲۰ هزار تا عکس داره هر عکس پنج تا چیز داشته مثلاً فرض کنید یکیش این بوده که نمی‌دونم ام رایتینگ بایک آنت پست ترو فارست خب و و و چیزای دیگه هم براش نوشته اینا رو به عنوان ۱۲۰ هزار تا پنج تا فکر می‌کنم ۶۰۰ هزار تا ورودی بهش داده و ترین کرده این شبکشو بعد اینکه ترین کرده

ساخته اینم نتایج تست‌هاشه بعضیاش خیلی جالبن بچه‌ها مثلاً نوشته فریزبی و تقریبا داره چیزای خوبی رو بیان می‌کنه و خب خیلی هیجان انگیزه که یک ماشین تونسته از صفر صفر تولید کنه و این میتونه گامی باشه به سوی اینکه بره بعداً گذشت فوتبال بکنه برامون خب یعنی داده ها رو بگیره از ویدیو و بره مثلاً بگه یک سانت به بی هدف و توی دروازه خدمت شما عارضم که و البته سوتی هم داده مثلاً فرض کنید یه همچین چیزایی رو دیده دری وری گفته مثلاً فرض کنید دیگه گفته این یه خانمیه که یه گربه تو دستش داره در حالی که لباس اون خانمه یه جوریه شبیه پوست گربه است مثلا بعد اینو نتونسته ببینه خب احتمالاً تو دیتا ستش کم دیده یا این برادرمون مثلاً چیز کرده حالا

بالانس زده بعد مثلاً این ندیده بودم همچین چیزایی تو ترینینگش یا کم دیده بوده بعد نوشته گفته چی یه خانمی نمی‌دونم چیز کرده حالا نمی‌دونم یعنی چی چیه من همون شبیه چیزهاست همین چیزایی که رو حالا خشکی میرن معادل دریایشه نمی‌دونم چی بهش میگن یا مثلا تخت موج سواری دنبال لغت می‌گشتم رامتین کمکم کردی واقعاً مرسی خانم گودرزی اصلاً یه لحظه قفل بود ذهنم مثلا این تار عنکبوت ندیده بوده یا کم دیده بوده بعد مثلا رو درختی که همیشه چیز بوده درختایی که یعنی پرنده های که بهش نشون میدادن رو درخت نشسته بودن یه درختایی که بهش نشون می‌دادن پرنده روش نشسته بوده بعد این بازم اشتباه گفته مثلاً نتونسته اینا رو بگه و خب اینا ماجراهایی که چی وجود داره بچه‌ها این شد تمام بحث های امروزمون اجازه بدید اینجا نگهش داریم چند تا اپلیکیشن جذاب گفتیم الان فقط تنها ماجرای باقی مونده رسمی دو تا ماجرا

یک من یک کوچولو فتح بابی بکنم در مورد شبکه‌هایی که تو الگوشون ترتیبیه ولی ترتیب مشخصی نداره یعنی وقتی شما می‌گید سلام چطوری اگر مثلاً ۵ ثانیه صداتون ضبط کنن معلوم نیست از کجاش تا کجاش سلام بوده از کجاش تا کجاش چطوری حداقل فتح باب بکنم الگوی حلشون چیه انشالله بهتون میگم جزئیاتشو و یکی هم اینکه با همدیگه کد پایتون بزنیم این بود جلسه امروز ما انشالله خوش و خرم باشید هر جا که هستید ببخشید من دیگه بیش از حد این روزها اورلودم و صدام یاری نمیکنه منو فکر میکنم دارید متوجه میشید بخشش خاطر کارهای اجرایی که بلدم سپردن امیدوارم تا ۲۲ سه اردیبهشت ختم به خیر بشه و به سلامتی این جشن فارغ التحصیلی برگزار بشه بعدش ما برگردیم به زندگی طبیعی عادی‌مون انشالله هرجا که هستید خوش و خرم باشید بچه‌ها ما ساعت چهار و نیم با بچه‌های گروه قطب رباتیک جلسه داریم اگه کسی دلش خواست میتونه باقی بمونه اگر نه هر جا که هستید

سلامت باشید خدا یار نگهدارتون

E:\courses\LangChain Project\main root\data\SCR_Session16_transcript_part1.txt

خوب به نام خدا دوستان عزیز و ارجمند جانم الان میگم خدمتتون آقای مالکی پرسیدن که برای مثلاً آنالیز یک ویدیو چیکار کنیم آیا فریم فریم تصمیم بگیریم یا کار دیگه‌ای بکنیم خب من اون چیزی که الان مدظرمه چیز پیچیده نیست شما هر کدومو راحتید برید جلو اینکه تو هر فریم نگاه بکنید ببینید که با چه احتمالی داره اون خروجی ها رو تولید میکنه و اگه دلتون خواست میتونید ترشولد هم بزارید و بگید که من به تجربه فهمیدم اگر مثلاً عددی که اون کلاس نسبت میده فرضا زیر ۸۰ درصد باشه اصلا چیز شبیه در نمیاد بعد مثلاً یه ایف بذارید که اگر هیچک از مثلاً درای آن بالای ۸۰ درصد نیستند فرض بر میگید که هیچک از اون هفت هشت تا حالت هیجانی نیست خب و یا یه حالت نامعلومی مثلا خدمتتون عارضم که این یه ماجرا

آیا فریم فریم قضاوت کنید یا نه باز اینم باز دست شماست یه راه اینه که واقعاً فریم فریم قضاوت کنید یعنی الان مثلاً فرض کنید دوربین ۳۰ فریم بر ثانیه از شما عکس می‌گیره یعنی در هر ثانیه ۳۰ تا عکس رو داره می‌بینه و حالا چه می‌دونم ۱۰ ثانیه میشه ۳۰۰ تا عکس و ۳۰۰ بار میره تصمیم می‌گیره که تو این فرایند چیو دید و یکی یکی گزارش می‌کنه مثلاً می‌نویسه هپی هپی هپی هپی ۱۰۰ فلان یه حالت اینه که نه ود کنید رای بدید بین اینا و خدمتتون که مثلا هر پنج تا ده تایی که دیدید ببینید که بین این ۱۰ تا مثلاً چند بار چیو دیدید ماکسیممشو انتخاب کنید مثلاً می‌بینید که هشت بار هپی رو دیدم دو بار سرپرایز احتمال داره که مثلا هپی برنده باشه تو واقعیت چون مثلاً ۳۰ فریم بر ثانیه خیلی عدد بالاییه و آدما این مدلی نیستند که بتونن تو یک فریم برای کامپیوتر تغییرات شدید حالا چهره بدن و احتمالاً یه پیوستگی تو

خودشون وجود داشته ولی هر کدوم راحت‌ترید برید من حقیقتشو بخواید هدفم از دادن اون سواله این بوده که عددم یعنی هدفم این بود که شما یه دور تلاش بکنید که روی وب کم لپ‌تاپ خودتون هم این کدهای پایتونی که میزنید و پیاده سازی عملیشو ببینید این کل در واقع دغدغه‌ای بود که من داشتم که مطمئن باشم این کارم یه بار کردید جالبه آفرین حالا نیست من امروز رامت یه جوری دیگه نشون میدم مثلا چالش های داره یعنی آره بعضی وقتا ممکنه یه چیز دری و بهش بدیم منظورت اینه که باز عددهای یک تا صفر تا نه با دقت بالا بده درسته منظورتون اینه آیا آره دقیقاً حتی یک می‌داد نوشتید و خب این چیزی که هست و حالا بالاخره راه‌های چارش اینه که مثلاً یکی از راهش که به ذهنم

اینه که شما یه دیتا ست غنی هم فراهم بکنید از اینایی که صفر تا ۹ نیستند یعنی اونارم بهش نشون بدید و به عنوان یک کلاس یازدهمی معرفی بکنید و باید ببینید که اگه به اندازه کافی اونا رو دیده باشه شاید انشالله بگیم که دیگه صفر تا نه رو لااقل به عنوان چیز غیر صفر تا ۹ رو به عنوان عدد نبینه و اون جز دسته آدرز یا دیگران ببینه سلام خدمتتون عرضم رامت انشالله چند روز آینده بعد تعطیلی‌ها با تماس می‌گیرم برای پایان‌نامه‌تون انشاالله جمع بندی بکنیم یکی دو تا ایده خامم دارم یکیش خیلی پرته نسبت به اون چیزی که خودت تو ذهنته ولی شاید برات جذاب باشه ولی یه مورد هم هست تو همین حول و حوش کارهای خودت انشالله که بالاخره بتونیم جمع بندی خوب برات برسیم خب بچه‌ها بریم سر کارمون خدمتتون عارضم که خیلی ممنون بابت همراهیتون تا این لحظه ما

توی جلسات گذشته در مورد شبکه‌های تئوریاشو در حد مناسبی سعی کردیم بگیم من اجازه بدید صفحه نمایش باهاتون به اشتراک بذارم و یه دور این به این اسلاید نگاه کنیم چون باهاش کار داریم و امروز هدف اصلیمون بدون اینکه من اسلاید خاصی ساخته باشم اینه که در مورد کد نویسیش توی پایتون و حالا بهره‌گیری از لایبری کراس صحبت بکنیم خدمتتون عرضم این در واقع ساختار رو یاد خودتون بیارید ما قرار بود بالاخره توی آرناون از یکی از اینا استفاده کنیم ها طبیعتا اگر در واقع یه باکس میدادید و یه باکس هیدن داشتید و یه باکس خروجی خب این مثل پی ساده خودمون بود در حالی که این باکس های سبز رنگ ثابت بودن از لحاظ چیز معادله حاکم برشون از لحاظ ریاضی شما حالت‌های دیگه‌ای سیکوئنشال یا تایم سریز میتونستید ببینید که مهم باشن ورژن های وان تو منی بود ورژن منی تو وان بود وان

این بود که یه عکس بهش بدید یه جمله‌ای مثلاً خروجی ازش بگیری تحویل منی توانا اینجوری بود که یه ویدیو بهش بدید یا یه جمله بهش بدید بگید که طرف مثلاً چی بود میگه حس و حالشو بگو خوشحال بود یا ناراحت بود نمیدونم هر چیز دیگه‌ای مثلاً این لپ تاپ خریده راضی بود یا ناراضی بود و خیلی چیزا میشه براش مثال زد که در واقع یه ویدیو انجام بدید و اصلاً کلسیفای کنید بگید طرف راه میرفت آب میخورد ببینم سوال بود یه لحظه کردم صدای خب خدمتتون عرضم اینه و عرض به حضور شما منیتو منی های متفاوتی داشتیم منی تو من های داشتیم که اول تا ورودی وجود داشت وجود داشت وجود داشت بعد یه دفعه کلاً ورودی ها غیب می‌شدن خروجی ها تازه شروع می‌شدن و اینا توی تسک های ترنسلیشن دیده میشد یعنی شما وقتی بود که مثلاً یه جمله رو از یه متن میورد از یه زبان می‌آوردی تا آخرش حق داشتید ببینید بعد چی بعد بعد شروع می‌کردید از یه زبان دیگه

سوال پرسیدی چت با تو می‌خوان به کامپیوتر به صورت اتومات به شما جواب بدن ها خدمتتون عارضم که یا ویدیو ساختی ویدیو ورودی بهش میدید ویدیو می‌خواید خروجی بگیرید یا جمله می‌خواید خروجی بگیرید و این حقو دارید که کل ویدیو رو ببینید یه حالتای منی تو این بود که چی درجا که ورودی میدید همون لحظه خروجی بگیرید ها و بعد حالا یا ورودی بعدی رو می‌دید یا بعضی وقتا خروجی قبلی رو به عنوان ورودی جدید میدادید ولی آخر میرفتید جلو و اینا مثلاً توی جمله سازی و اینا میتونست مفید باشه خدمتتون عارضم که خیلی جاها میتونه کاربرد داشته باشه بهش فکر کنید و یه تسک وحشی تر و سخت تر که البته برای ما مکانیکی ها میتونه خیلی کاربرد هم داشته باشه این آخری سمت راسته که اینه که مثلاً فرض کنید شما یه مجموعه حرکت های انجام میدید بعد بهش نمیگید که از کجا تا کجا فلان بود و اینا و اونه که باید مثلاً تو در واقع حالا فاز تست بتونه به شما بگه اوکی این حرکتی که انجام دادی مثلاً تلفیقی

از بالا بردن دست چپ بالا بردن دست راست و بعدش نشستن روی زمین هی کدوم کجا اتفاق افتاد اینا همه ماجراست خب ما امروز نمی‌خوایم در مورد این بحث کنیم اگر یکی از رویاها و آرزوهامه که بتونم تو اینترنت در مورد این برای شما صحبت بکنم چون شاید بیشتر از تسک ترنسلیشن و اینا اینا برای شما بتونه کاربردی باشه ولی باید صبر کنید تا ما در واقع حوزه هیدن مارکوف مدل رو شروع بکنیم اچ ام که انشالله این جلسه بعدی حضور شما خواهد بود ما مشتاقانه منتظر دیدارتون در یکشنبه آینده هستیم و در ضمن پیشاپیش هم عید سعید فطر رو خدمتتون تبریک میگیم و انشالله بعد از اینکه حضوری تشریف آوردید اون مبحث بعدی رو شروع می‌کنیم به نام هیدن مارک آف مدل و اونجا به صورت در واقع حالا ابتدایی با این داستان آشنا میشید با ویتر بی آشنا میشید و بعدش میشه برگشت و یه فلشبک زد و برگردیم به عقب و یه تیکه

تا اون لحظه صبور باشید لطفاً و خب حالا می‌خوایم ببینیم چه جوری میشه اینا رو پیاده کرد توی چیز کراس با فرض اینکه ما دانش داریم نسبت به چی سی ان ان و ام ال پی و حالا می‌خوایم پیاده کنیم بچه‌ها پیاده سازیش تو کراس خیلی در واقع به صورت تئوری کار آسونیه خب کلاً یه خط انجام میشه و من مثلاً یه سری مدل بیارم ببینم این کراس فانکشنال ای پی مثلا بیارم قبلا صفحشو آورده بودیم دیده بودید میخوام ببینید که دستوری که استفاده میشه چقدر میتونه چیز راحتی باشه یا خدمتتون عارضم که یه نمونه کد گوگل کلب بیارم از خودم و حالا روش صحبت بکنیم من می‌خوام بهتون بگم امروز میخویم در مورد چی حرف بزنیم ببینید دستوری که کلا به حوزه آرن ام ربط داره این چیزی که اینجا میبینید یه

دستور فقط یه خط دستورشم اینه مثلاً می‌زنید اینجا چی می‌زنید مادل.ad قبلا یادتونه دیگه شما دنس رو داشتید سی ان انو داشتید و الی آخر و اینا رو اینجا می‌زنید مدل یه عددی این ساده‌ترین چیزیه که میشه گذاشت مثلاً می‌زنید مادل.lstm ۶۴ مثلاً اینجا می‌نویسید ۱۰ خب حالا انb نام بالای عدد ثابت تعریف شده یه همچین چیزی رو بزنید کار در میاد اوکی یعنی به همین واقعاً سادگی ولی حالا می‌خوایم در مورد جزئیاتش صحبت کنیم که این چجوریه خروجی چجوری بهمون میده و فلان و اینا توی مود سیکوئنشال یا غیر سیکئنشال ازش استفاده کردن چه ماجراهایی داره و حالا یکی دو تا مثال پرکتیکال هم بزنیم دیگه در حد وسع و توانمون با توجه به اون محدودیت های وقتی که قبلاً خدمتتون گفتم من شرمندم که بیشتر از اینی که بهتون میگم نرسیدم و جای کار داره یعنی الان چیزی که

بهتون میدم علیه السلام نیست ولی برای شروع خوبه و می‌تونه سوال خوب بهتون بده و انگیزه بهتون بده که شما هم بیشتر روش کار کنید و ما انشالله حالا چند روز دیگه هم انشالله تمرین ۳ رو می‌تونیم براتون بارگذاری بکنیم باز دوباره یه چند روز وقت بدیم که زحمت بکشید و انجام بدید خب در مورد همین شبکه‌های cnn و حالا ممکنه تلفیقش با شبکه ممکنه تلفیقش با cnn مثلاً کارو دربیاره خب پس کل دستوروری که می‌خواید استفاده کنید اینه مادل دات adl یه عددی یا چی یا به جایlst ام سیمپل آر یا جی آر یو ها و ساده‌ترین چیزایی که ما می‌خوایم استفاده بکنیم ایناست بنویسیم اد فلان که حالا می‌خوایم یکی یکی بریم توش ببینیم و اینکه چجوری کار میکنه ولی اینا جزئیاتی دارند که میخویم الان روش صحبت بکنیم خب خدمتتون عارضم که اولین چیزی که میخویم صحبت بکنیم من میرم توی در واقع کراس مثلاً کلمهlstm رو سرچ بزنم

میاد حتی در مورد چیز خوبیه کلاً ببینید و چند تا مثال داره مثلاً نوشته من روی imdb مثلاً با دیرکشنال زدم وجود داره که میتونید ببینید من چیزایی که باز می‌کنم این دوتاست خب خدمتتون عارضم که ورکینگس میتونه چیز کوتاهی باشه خیلی وقت طولانی نمی‌گیره برای اینکه بخواید بخونید شما با چند تا چیز کار دارید یا می‌نویسید مثلاً حالا سیمپل آرنت یا ال اس تی ام یا جی آر یو همون سه تا سلبریتی های معروف میخوید استفاده بکنید و حالا می‌خوایم در موردش صحبت کنیم چه جزئیاتی داره سیمپل که از قدیم الایام وجود داشته ال اس تی ام عرض به خدمت شما چیزه از سال تقریباً ۲۰۰۰ اومده همون حوالی و ۲۰۱۴ هم گفتیم یه چیزی زدم که از اس تی ام ساده تر بود به نام جی آر یو و کسی یادشه که فرق

چی بود از دوستان از جلسات گذشته حالا حافظتون یاری کنه یا جزوه رو همینجوری دیده باشید اگه گفتیم پرفورمنسشون اگرچه تقریباً یکسان فرق ذاتی و اساسی دارند کسی یادشه محمد نوشت سبک‌تر بود جی آر یو بله گیتاش کمتر بود و یه فرق دیگش هم این بود که ال اس تی ام داشت دو تا استیت دو تا چیزو خروجی میداد ولی چی خدمتتون عارضم یه دونه یعنی یه دونه اچ میداد یه دونه سی میداد سی برای خودتون بود به کاربر نشون نمی‌دادید ولی از استفاده میکردید در محاسبه میکرد خب که حالا این همین که عرض میکنم سبب میشه یه دستور اینجا وجود داشته باشه که توی ال اس تی ما بتونه به کارتون بیاد و مهم باشه حالا در حالی که خیلی برای اون دو تای دیگه مهم نباشه خب پس این ماجرایی که وجود داره بچه‌ها مدل سیکوئنشال اگه بخواید اضافه کنید عرض کردم کلاً

عادی خودمونو می‌نویسید حالا بستگی داره اگه کرده باشید مستقیم مثل ما قبلامون ولی اگه نه فقط کراسو اد کرده باشید بنویسید مدل پرانتز باز بسته و حالا آماده میشید که پلکانی و لایه لایه رو همدیگه بذارید شبکه‌ها کاراتونو خب حالا اینجا توی کار تکست بوده یه ام بدیم زده بعدش چیکار کرده بعد رو سر قبلیه یه لیرز دات ال اس تی ام ۱۲۸ زده بچه‌ها این یعنی چی یعنی بیا یک در واقع باکس سبز رنگ ال اس تی ام برام بزار با ۱۲۸ تا نیرون اوکیه ولی اینو که چند تا این ال اس تی ام چند بار باید باز شه آنفولد بشه دیگه شعورش به چی در واقع کد برمیگرده که اون باید سردرد بیاره شما دارید چیکار می‌کنید و کاملاً به ورودی های شما و تعداد فریم های شما بستگی داره اون خودش به اندازه کافی می‌چینه نگران نباشید اگر شما ورودی هاتون که قرمزشن حالا با استاندارد خود این یارو بهش بدید به تعداد فریم ها میره

خروجی قبلی رو میگیره به عنوان یه اچ و ورودی جدید می‌گیره و هی دوباره اچ جدید تولید می‌کنه تا چی تا برسه به آخری سبز آخری اما حالا سوال به وجود میاد آقا من کی این آبیه رو می‌گیرم که این سه تا رو میگیرم ها و اینا چه جوری میشه با واریانتاش بازی کرد بچه‌ها تو خود کد ادعا کرده که شما هر ساختار من‌درآوردی آر میتونید بسازید خب و فقط باید یعنی دانشتون عمیق تر بکنید اما این چجوری اتفاق میفته خدمت خدمتتون عارضم که میخویم بریم وارد بشیم یکی یکی روش بحث بکنیم اینا نمونه هایی که توی خودش وجود داره اگه نوشتید لیرز به جای چیز به جای نوشت براتون اضافه میکنه نوشتید سیمپل آرنت اضافه میکنه و ساده ترین حالتش اینه که شما تعداد نیرون های داخل اون مکعب مستطیل سبزه رو باید بگید اما باز دوباره کنارش یه سری آت آشغال داره که ممکنه بنویسید و به کارتون بیاد که حالا می‌خوایم رو این هم صحبت بکنیم و اینا نمونه‌ها و کدهایی که اینجا وجود

وجود دارد حالا برمی‌گردیم چند تاشو با همدیگه یه نگاهکی میندازیم خب بریم تو ال اس تی ام فرض کنید من اصلاً دیفالتم اینه که می‌خوام ال‌سی‌ام استفاده کنم حرفش اینه وقتی میگه باز کردی پرانتز باز که می‌نویسی اولین چیزی که واجب و ضروریه و غیر قابل چشم پوشیه اینه که باید بگی چند تا یونیت یا چند تا نرون مخفی داشته باشه که دیدید نوشته بود ۶۴ ۱۲۸ و فلان و شما هم باید یه چیزی بنویسید اما این چیزایی که جلوش نوشته مساوی مساوی شما میتونید ننویسید و دیفالت های خودش داره مثلاً یادتون باشه ما گیت‌هامون توابع بود ولی مثلا چیزا اون تو ورودی خروجی یه جاهایی تنه استفاده میشد همون حالت استاندارد ولی شما حق دارید که دلتون می‌خواد عوضش بکنید مثلاًreلو بذارید ها و این شانس رو به شما میده و یکی دو تا چیز دیگه خیلی خیلی خیلی به کار ما میاد حالا دراپ اوت و اینا داره دو تا چیزی که به کار ما میاد یکی ریتر سیکوئنسزه و یکی ریتر استیته خب در حالت عادی ریتر سیکوئنسش فالسه اگه شما هم هیچی ننویسید یعنی

یعنی فقط بیا تو تهترین اچ رو به من خروجی بده ها یعنی برو جلو فقط از آخرین سبزه به من اچو بده من اچ‌های میانی دیگه نمی‌خوام خب طبیعتاً می‌تونید حدس بزنید که اگر چیز بنویسید ریکارنت ریتر سیکوئنس و ترو کنید اتفاقی که میفته اینه که شما می‌تونید تمامی اج های میانی هم داشته باشید طبیعتاً تو جی آر یو و توی چیز و توی سیمپل هم طبیعتاً چون های داشتن اونا هم همین داستان براشون برقراره و ریتر سیکس ترو کنید اونم برقراره توی یه چیز اضافه تری داریم به نام ریتر استیت که اینم باز در حالت عادی فالسه ولی اگه تروش کنید نه تنها اج های میانی رو بهتون میده بلکه سی های میانی هم بهتون میده حالا به هر دلیلی مثلاً کجا به دردمون می‌خوره تو انکررا اگه یادتون باشه میگفتیم از اینجا قرمزه تا این سبزه که موسم روشه در واقع شبکه داره میره جلو و

من آخرین در واقع اچی که توی این سبزه پیدا کردمو لازم دارم می‌خوام به عنوان ورودی به یه شبکه جدید آرانی بدم ها و اون بره حالا باز باهاش جلو و اونام باز پارامتر دومی و اولیه میتونه ربطی هم نداشته باشه و اونجا مثلاً به چی به اچ و سی لحظه آخر این چیزه احتیاج دارم یا مثلاً اینجا می‌خوام تمامی به ازای تمامی سبزها تمامی آبی‌ها رو بسازم بعداً من به تمام اچ‌هاش احتیاج دارم اوکی بعدش بدم به یه لایه فول کانکت رو مثلا چیکار کنم بگم برو برام در واقع با یه سری دبلیو مشخصی بین تمامی این اچ ها با همون یه wلیو ثابت چیکار کن هی از هر چی برام خروجی بگیر حالا من سافت مکس میخوام بزنم ممکنه و بعدش با چیز نگاه کنم پس اولین اتفاقی که افتاد داستان ال اس تی ام بود اما ورودی هاش فکر میکنید چند در چنده بچه‌ها ماجرا این بود ماجرا اینه که ال اس تی ام قرار شد یه سیکوئنس رو از شما بگیره و

باکس‌های سبز رنگ خودشون به اندازه لازم چی بشن آن فولد بشن و چی و برای شما هی برن اچ بعدی رو تولید کنن و بدن به فلان بچه‌ها سیکوئنس شما یه تعداد درایه داره مثلاً فرض کنید یه فیلم دارید بهش میدید هر فیلم مثلاً ۵۰۰ در ۵۰۰ پیکسله اوکیه پس شما به ازای تعداد فریم‌های فیلم شما چی دارید یه ورودی دارید حالا من ورودی منو بردار یه بعدی فرض کنید ما خب حالا ۵۰۰ در ۵۰۰ هم میتونیم انواع کارا رو روش انجام بدیم یکیش اینه که چی ۲۵ هزار تا عدد زیر هم بنویسم دیگه ها میشه یه بردار یه بعدی و اینا باشن ایکس‌های لحظه یکم دوم الی آخر اوکیه پس چیزی که واضحه شما ورودی هاتون باید یه همچین ق و قیافه‌ای داشته باشه خب ورودی هایی که میدید اینپوت های که میدید به شبکتون در حالت عرف این در واقع داستان رو داره خدمتتون عارضم که اولاً باید بهش بگید که هر کدوم از ایکس ها خب چند تا

این درایه آخر ورودی‌ها رو می‌گیره عرفاً اوکیه و در ضمن باید بین تمام سمپل‌هاتون ثابت باشه یعنی اولاً مثلاً ویدئوتون اگه مثلاً ۱۰۰ تا فریم داره باید تمامی فریم‌هاش مثلاً اینجا ۲۵۶ داشته باشن بعد سمپل شماره ۲ سمپل شماره ۳ باید چی باشه همه اینا تعداد یکسانی ورودی بگیره ما و شما باید فورس کنید که این کارو بکنه مثلاً ما توی همین کد امستی که زدیم با وب کمتون دیدید این بود گفت برو دور اون باکس که حدس میزنی عدد افتاده حالا عدد بود کادر بیار بعد برو فورسش کن عکس بشه ۲۸ در ۲۸ چرا ما گفتیم فورسش کن چون شبکه c که براش ترین کرده بودیم باید عکس ۲۸ در ۲۸ می‌گرفت پس این باید بین تمامی چیزا تمامی یاروها به اصطلاح ورودی ها در تمامی فریم ها چی باشد ثابت باشد یکسان باشد خب عرفاً اینا حالا

ممکنه حالت‌های خاصی وجود داشته باشه من خیلی سر در نمیارم خدمت شما عارضم که درایه بعدی که میتونید بهش اشاره بکنید حالا من اینو بردارم اینجوری چند تا ور گذاشتم اینی که می‌تونید اشاره کنید تعداد فریم‌هاست خب یعنی اینکه اوکی این در واقع ویدئوی شما یا سیکوئنس شما جمله شما الی آخر چند تا فریم داره و این در واقع تو ورودی قبله این تعداد ورودی ها میشینه از منظر دید ال اسtn خب تعداد فریم ها خوبه که حالا با حقه‌های یکیش کنید مثلاً اگه ویدئوهایی دارید به شبکه میدید همشو اول همه سایز کرده باشید بعداً هم تست می‌دید ویدیو همسایز شده رو بهش بدید خب این خیلی کارتونو راحت تر میکنه که اینم هم سایز باشه ولی کراس این شانس رو به شما میده با یه حقه که چیکار کنید که اینو یکسان نگیرید یعنی مثلاً بگید اوکی من یه ویدیو دارم ۱۰۰ تا فریم داره یه ویدیو دارم ۵۰ تا داره بعد جفتشم تو ترینینگ هستند بعد ویدیوهایی که تستم بهت میدم ۷۰ تاییه

و این خودشه که باید بره به تعداد این فریم‌ها برای سبزا رو باز بکنه حالا حقه‌هایی وجود داره الان ولش کنیم اگه رسیدم میگم و طبیعتاً درایه اولشم تعداد سمپلامه ها یعنی اینکه اوکی مثلاً من تعداد نمونه یعنی اینکه مثلاً من ۱۰۰ تا فیلم بهش دادم هزار تا فیلم ۱۰۰ هزار تا فیلم به عنوان ورودی بهش دادم ترین بشه بعد حالا یه دونه میخوام بهش بدم خروجی بگیرم دیگه پس یه همچین اتفاقی میفته ساده ترین در واقع بیان چیز بیان در واقع این ورودی اینپوت برای ماژول های ال اسd هم چی اند سه تایی اند مثالی که خودش زده اینه ما الان بیاریم حالا یا من مثل خودم یه چیزی نوشتم بیارم بالا و اونو بریم جلو شاید بد نباشه سریعتر هم باشیم خب من تو کلابم اینترنتم قطع شده فکر کنم اجازه بدید شما که صدای منو دارید درسته بچه‌ها صدا و تصویر ما هست

اینترنت من قطع شده بود یه بار دیگه گلمو بزنم خب من میرم تو این مثلاً آن تایتل ۵ خب از رو خود چیزم گرفتم از رو خود این هلپ خودشم برداشتم توی چیز ال اس دی ام کجا رفت همونجا که توضیح میده همینجا شروع میکنه براتون نوشتن خب خدمتتون عارضم که میگه اینپوت میتونید اینجوری تعریف کنید تی اف رندوم دات نرماله چی ۳۲ در ۱۰ در۸ یعنی حالا سنسور فلو برو یه سری اعداد مثلاً رندوم چیز کن با این سایز ۳۲ در ده در هشت ها یعنی چی یعنی مثلاً معادله که ۳۲ تا سمپل دارم که مثلاً حالا یه ویدیوهایی هستن که ۱۰ تا فریم دارن هر فریمش هم هشت تا چی داره ورودی داره یه همچین چیزی خب و حالا منم اینجا مثلاً یه چیز ساده‌تری زده بودم نوشته

من مثلاً فرض کنید که حالا به پنج تا مثلاً چیز دارم ورودی دارم سه تا فریم دارم دو تا هم نرون دارن یه همچین ماجرا خب و اینو اگه برید چیز بکنید یعنی بزنید من اینو یه بار ران بکنم بعد یه باکس جدید باز می‌کنم که بتونم یکی یکی اینا رو براتون نشون بدم چون اینترنتم تازه وصل شده داره اینیشالایز می‌کنه خب این درست شد حالا اینجا بزنم اینو میام تو باکس جدید کپی میکنم اسمشو اینپوت یک فعلا گذاشتم خدمتتون عرض میگم پرینت کن اینپوت یک رو میخوام ببینمش

ببینمش و این چیکار می‌کنه اومده پنج تا ست برام تولید کرده که هر کدوم سه تا فریم دارند و هر فریمش دو تا ورودی داره پس این دوتاییا میرن میشن همون ایکس قرمز ورودی میشن سه تا نماد سه تا فریمن و این پنج تا هم نماد اینکه یه ترینینگ سته دو تا سه تا تا پنج تا اوکیه خب گام بعدیش میگه چیکار کن میگه که میتونید همچین کاری بکنید این خیلی دیگه چیز ساده‌ایه یعنی دیگه میتونید یه چیزی به نام تعریف بکنید بنویسید tf.lstm چهار میگه من همین کاری که میکنه هیچی فقط یه ال اس تی ام با چهار تا ماژول رو براتون تولید میکنه اوکیه اینم بزنیم اینجا باشه زیر کارمون خب اینو دیدید دیگه اینو چیزش میکنم تا شلوغیاشو کم کنیم خب تا اینجا چی میشه هیچی هیچی خروجی بهم نمیده دیگه فقط یه چیزیو تو ال اس ریخته چیز بعدی که داره اینه میگه اوت پوت رو مساوی با ال اس تی ام اینپوت قرار بده بچه‌ها این نسخه های غیر سیکوئنش

یادتونه تو غیر سیکو انشالله می‌نوشتیم هی یه چیزی رو روی مثلاً فلانی اجرا کن تو فلان بریز بعد دوباره ادامه بده این الان درجا از اوت پوت به از اینپوت و اوت پوت رسیده و اینجا هم اسمشم گذاشته بودیم اینپوت وان ما می‌ذاریم اینپوت وان و روش ران می‌کنیم حالا چه اتفاقی میفته من میگم پرینت کن اوت پوتو و چیزی که به من خروجی میده پنج تا ۴ در یک بهم خروجی میده یعنی چی بهم خروجی داده خانم احمدی نرمالش باید نگاه کنیم تو تنسرفلو که مثلا آیا منظور از نرمال رندوم نرمال دیستربیوشن یا الی آخر من حدس میزنم نرماله نماد نرمالیستی روبیشن چون رندوم ها اگه یادتون باشه مثلاً تو مطلب دستور رند عادی رو میزدید یه عدد بین صفر تا یک بهتون می‌داد منفی ولی نمی‌داد ولی اگه رند n میزدید از رو یک تابع گاوسی اند میرفت

چیز می‌گرفت تابع خدمتتون عارضم عدد رندوم می‌گرفت حالا انشالله که تونستم بگم خدمتتون حالا اینجا بچه‌ها اتفاقی که افتاده اینه اومده به ازای تک تک اون ورودیا یادتونه پنج تا بود اومده یه اچ لحظه آخر تولید کرده hl از آخرم چیه چهار تا درای هم باید بیشتر داشته باشه چون تو خودش چهار تا درایه داشت دیگه ولی اینکه مثلاً چند بار ال اس تی ام باز شده و از هر کدوم چند بار استفاده شده که از هر کدوم سه بار دیگه شما ندیدین خودش این کارو کرده یعنی ماژول ال اس تی ام تو خودش یه فور داره یه در واقع به صورت موی رگی یه فور داره و اون فور رو داره اجرا می‌کنه که حالا ممکنه سوال پیش بیاد آقا اگه من نخوام این فور اجرا کنه چیکار کنم باز یه چیزی اضافه کردن به نامlstm سل اگه اشتباه نکنم یه دونه براتون میره جلو خب و حالا تو حلپش باز اونم معرفی کرده و یا میشه حقه‌های دیگه‌ای زد خب پس انتظار ما اینه که اگر مثلاً اوت پوتمونو شیپشو بگیرم چی بهم بده

بده ۵ در ۴ که ۵ تعداد چیزها باشند ورودی‌ها و ۴ چی باشه تعداد نیرون‌های هیدنم اونم تو لایه آخر یعنی آخرین اچ رو داره بهتون میده ولی وسط مسا رو بهتون نمیده خب بریم بعدی چیز بعدی که میشه نوشت جاش اگه بنویسید ال اس تی ام باشه این به جای این در واقع به این سادگیه بنویسیم هستش این خب و اینو مثلاً چیکار کنم کامنت کنم میگه بنویس ال اس تی ام چهار ریتر سیکوئنس این دفعه ترو کن خب ریتر استیت هم گفته ترو کن حالا میتونید میتونیم پله پله بریم اینو اول ترو نکنیم خب و اینجا دیگه هم قراره به ازای تک تک اچ های که میخواد از فولد بازش کنه اچشو براتون بریزه در ریتر استیت هم که باز بشه چون ال اس تی ام علاوه بر اچ سی هم داشته چی چیکار میکنه خدمتتون عارضم که سیش براتون سیو میکنه در حالی که خب ریتر استیت فکر

معنی ندارند دیگه بعد مثلاً گفته چیکار کن گفته این سه تا ظرف من بهت معرفی می‌کنم یکی یکی اینا رو بریز توش گفته که مثلاً اینپوت وان گفته که هول سیکوئنس اوت بوت بریز تو این فاینال مموری استیت رو بریز توی این فاینال کریستیتو بریز توی این یعنی ال اس تی ام اینپوت وان مادامی که ال اس دی ام اینجوری باشه هم ریتر سیکس باشه یه چیز پیشرفته‌تری به شما میده و حالا شما می‌تونید چیکار کنید حالا می‌تونید اینو کامنت کنید فعلاً بعد بگیم که اول پرینت کنه یه بار مثلاً این حوله رو این چی بهمون میده خب اینجا میاد چیکار میکنه میاد به ازای تک تک پنج تا در واقع داده ورودیتون

به ازای تک تک سه باری که آن فولد کرده چیکار می‌کنه اچ‌هاشو براتون تولید می‌کنه خب حالا من اجازه بدید اینو یکش کنم حالا می‌خوام یعنی چیز بشه خلاصه بشه با هم چند تا چیزو ببینیم خب من میگم پرینت کن اینو و پرینت کن اون یارو رو فاینال مموری state خب و فاینال کری و اینو اجرا کنیم خب حالا اتفاق جالبی که میفته اینه ببینید این حول استیت چیکار میکنه هم اچ لحظه اول ها مثلا هم اچ لحظه دوم بهتون میده هم چی اچ لحظه سوم درسته یه همچین ماجرایی

E:\courses\LangChain Project\main root\data\SCR_Session16_transcript_part2.txt

خدمتتون عارضم که ولی فاینال مموری استیت یعنی در واقع همون چیز ریتر استیتو که آن گذاشتیم فاینال مموری استیج میده فقط اچ لحظه آخر رو میده که علی الاصول باید با h لحظه آخر اون حوله یکی باشه خب و چی و فاینال کریستییت هم چیه بهمون میده سی هاشو میده که لزوما یکی نیستند ها سایزهاشو اگه ببینید دیگه دستتون میاد که مثلاً اینجا ۱ ۳ ۴ شد اینجا ۱ ۴ شد چی اینجا هم یک چهار شد ها و اینا فقط مال لایه آخرن اینا ولی بینابینش هم دادن یا مثلاً اگر دات شیپش هم بزنم حالا دیگه میتونم تعداد یاروهاش بالاتر ببرم که دیگه نخوام کلشو ببینم مثلاً بگم پنج تا ورودی داشته باشم هول سیکوئنس

یه چیز ۵ ۳ ۴ شد سه بعدی شد ولی مثلاً فاینال استیت یا چه میدونم فاینال سلش همون یعنی این اچ باشه این سیل از آخر باشه چیه دو بعدی شد حالا حالا اینجا اگه بخوایم اگه بخوایم طبق اون دانشی که دارید فرض کنید که من در واقع یک هیدن استیت گذاشتم بعد ورودی‌های ایکسمم با این آرایشی که گفتم بهش دادم و چی سیکوئنس کردم خب و اونم اومده به من چیز داده اومده به من این یاروها رو داده این سه بعدی رو داده حالا میخوام یه هیدن استیت دیگه بزارم رو سرش مثل لایه های مخفی بالاتر می‌خوام مثلاً شبکه‌مو باز با سبز ولی این دفعه با یه سبز دیگه نشون میدم این لایه دوم هیدنم یعنی اینا مثلاً h سوپر اسکریپت یک بودن اینا دومی دو اند ما میخویم اینو تولید کنم بچه به نظرتون اینو چجوری میشه بهش داد آیا اگه من تو اون فضای سیکوئنشالم

بعد این بنویسم ۶۴ رو روی قبلی ها به نظرتون اینو می‌شناسه یا نمی‌شناسه تو این حالتی که الان یارو کردم این حالتی که الان در واقع ریتم سیکوئنسسشو ترو کردم به نظرتون میشناسه یا نمی‌شناسه یعنی من بیام در واقع مثل اون کامودیا بود هی می‌زدم مدل فلان بعد زیرش اد میکردم آیا من یه hlm اینجوری تولید کرده باشم که ریتر سیکون باشه میتونم بعدش یه دونه دیگه اد کنم یه دیگه به این یا نه محمد نوشته چی متوالیش میکنه متوجه نمیشم چی متوالی میکنه ببین این نگاه کن به این ما میگیم لایه الان توافق کنیم به این پیشروی اچ یک به اچ دو یعنی از ورودی به اچ دو میگیم پیشروی لایه‌ای اینجا

منظورم اینه که میشه یا نه یعنی من بزنم اینجا ال اس تی ام یعنی تو سکوئنشال بزنم اد بکنه بعد زیرش بزن بالاش بزنم یعنی خط زیرش بزنم اد کن فلان به نظرتون اینو میشناسه یا نه محمد نوشته استدلالی دارید که چرا نه بچه‌ها این این کارو میکنه تو مدل های سیکونشال اگه اد بزارید زیرش به راحتی هرچه تمام‌تر براتون چیکار میکنه اد میکنه فقط یه قیدی وجود داره چرا اد میکنه چون ورودی هاش از جنس همون سه بعدی هایه که ما میخواستیم عادی بهش بدیم اگه یادتون باشه ما اینپوتسمون اگه ورودی می‌گرفتیم ۵ در سه در دو بود سه گانه بود دیگه اینجا هم شده ۵ در سه در چهار ها یعنی الگوی ورودیش همون الگوئه پس می‌تونه بده به ال اس تی ام بعدی و اگر

لیر بکنه اینا اینجوری مثلاً نوشتید الان مادل دات اد لیرز.lstm فلان بعد زیرش یه بار دیگه بنویسید مادل.» لیرز ال اس تی ام ۵۶ مثلاً فلان این کار میکرد مادامی که شما تو این ال اس تی تو این ۱۲۸ کنارش می‌نوشتید و چیزش هم سیکوئنسش هم ترو میکردید ها که کلشو بهم بده اگه فقط میخواست یه دونه بده دیگه نه این یعنی بعدی که زده بودید در واقع فقط داشت اون تک ورودی رو میگرفت بخاطر همینه که اینجا چون این یارو نکرده بعدش بلافاصله دس گذاشته درست و اینجوری کرده که این الان این شکله که دارید میبینید این مدلی که دارید میبینید یه دونه از این آبی ها داره از آخرین آبیش داره خروجی می‌گیره و یه دونه از ببخشید از آخرین سبزش داره خروجی میگیره یه دونه آبی تولید میکنه یعنی چی یعنی تم مثلاً منی تو وانا بوده خب این از آخریش فقط دنس رو زد ولی اگه شما چیز

بکنید اینو شما داشتید انجام می‌دادید این سیکوئنسشو به اصطلاح ترو می‌کردید شما داشتید اینو می‌گرفتید حالا اینو می‌تونید چیکار کنید باز دوباره یا بدید به دنس یا به یه ال اس دی ام تکی بدید که اون فقط آخریشو ببینه منو آخریشو بدید به دنس مثلاً و سافت مکس بزنید و ببینید که اوکی تو ویدیو شما آدم داشت آب میخورد راه می‌رفت می‌نشست یا توی دست خطی که نوشته بودید اگر ایکس وای مثلاً حروف نوشتاری الفبا یا انگلیسی از آدما بگیرید یعنی ۱۰۰ نفر بگید بنویس ب خب و ایکس و وای بر حسب زمان بگیرید و اینا رو بدید به ترینینگ آخرش به شما قراره چیز بده دیگه بگه الف یا ب است یا پ است فلان آخرش باید به یه همچین تک آبی منجر بشه یه سافت مکس ساده بزنه تهش بگه کدوم از حرف های الفبا بود یا اصلاً هیچکدوم نبود ها پس اینم این داستانیه که اگر بزنید این کار اتفاق میفته خب خدمتتون عارضم که یه ماجرای دیگه اینه که این اینکه چرا هی ما باید بعضی وقتا خاموشش کنیم سیکوئنس

یکی از مهمترین فوق مهمترین کاربردهاش توی انکودر دکودراست ها اینجوریه که مثلاً فرض کنید شما می‌خواید که این آخریه مثلاً اطلاعاتشو ذخیره بکنید بعد به عنوان ورودی بدید به این اینم باز یه سمپل کد خیلی خوب داره تو خود صفحه و با همدیگه ببینیم اینو فقط نمیدونم تو این بود فکر کنم در مورد آتکودرها چیزشو بخونم در مورد استیت‌ها و اینا صحبت کرده فکر می‌کنم همینجا بود دیگه آره دیگه این خب این مدلیه که میگه من مثلا یه لیرز دارم از جنس اینپوت بعد اینجا همون حقه اینپوت که میگفته نان و مثلاً فلان این نانه یعنی آقا من هیچ گارانتی نمی‌کنم که تعداد فریمم چقدره ممکنه یه جا کم و زیاد باشه مثلاً یک کلمه میخوام بهت بدم ممکنه پنج تا حرف داشته باشه ۱۰ تا حرف داشته باشه و فلان فلان بعد گفته لیرز دات امبدینگ و روی اینکر اینپوت ران کن بچه‌ها مدلا

خدمت غیرنشالشو نوشته کد یعنی گفته لیرز دات فلان پرانتز بسته رو که میزنید بعد پرانتز باز بسته رو کی اجرا کنم فقط گیج نشید که این پرانتزشو اینجا خط بالا گذاشته اینجا خط پایین همه دنبال همن خب بعد گفته چیکار کنیم لیرز.lstm6۴ بعد ریترن استیت تروشو براش گذاشته می‌تونستم نذاره روی ان کد ام بده ران کن و در نهایت این استیت اچ و استیت سی رو که لحظه آخرم باشه برام نگه دار لازمش دارم بعد گفته اینا رو کانکت کن این لحظه آخری ها رو تو انکر استیت بریز بعد گفته دیکود میخوام شروع بکنم با اینپوت مجدداً شروع می‌کنم از جنس نامعلوم شروعش تعداد فریم های نامعلوم بعد حالا امبدینگ رو روش میزنم بعد چی بعد گفته لیرز دات ال اس تی ام ۶۴ رو میزنم که چی باشه که اینیشیال استیتش مساوی با انکر استیتی باشه که شما اینجا براش تعریف کردید ها اینم پس کاربردهای چی کاربردهای

به کی اضافه کن به دیکودر اوت پوت اضافه کن خب بعد گفته مدل من چیه مدل من crs مدل اینکودر اینپوت و دیکودر اینپوت ورودی‌ها و کلاً اوت پوت خروجی هاست یعنی کانکت ورودی یا خروس بعد حالا مدل سامری چیه که بعداً حالا بخواد فیت کنه کامپایل کنه و فلان دیگه این از اون مدله یارو میره مشتق میگیره و در واقع بکشن رو انجام میده و الی آخر و این دیگه الان شروع داره که مثلا اوکی شبکه به وجود اومد حالا جزئیات داره اگه دلتون خواست برید ببینید در مورد جی آر یوmc و سیمپل صحبت کرده که یه جورایی اگه اشتباه نکنم اون فور رو حذف میکنه یعنی فقط یک بار به نظرم میاد اونو براتون ران میکنه اگرچه من خودم تا الان ازش استفاده نکردم خب اینا رو گفتیم حالا بیایم یه مثال یکی دو تا مثال کاربردی بزنیم و بریم کار در بیاریم یه نمونه ببینیم و بعدشم امروز دیگه خداحافظی کنیم و براتون آرزوی سلامتی و

مریضگونه است ببخشید این چیزی که دارم میگم گفتم ما که تا الان با ام نیست اومدیم جلو واقعا بی معرفتی رهاش بکنیم خب یادتونه حالا علی قدمی هم یکی دو جلسه قبل اشاره کرد دیگه یادتونه ما گفتیم که شبکه‌های سی ان ان و چه شبکه‌های فیلمو میشد با شبکه‌های cnn تحلیل کرد درسته چه جوری حقوقش این بود که شما هر فریمشو تو یک چیز جا بدید توی یک عمق جا بدید و این باشه ورودی cns و عادی با اون شبکه‌های کامولوشن بریم جلو و هی حالا فیلتر روش بندازیم سایتشو کوچیک‌تر کنیم عمقش بدیم و در ضمن ترتیباش هم همون اولش ما خودمون رعایت می‌کنیم یعنی مثلاً اینکه جلو گذاشتیم فریم یک می‌ذاریم دو می‌ذاریم تا مثلاً فریم دهم و میدونیم که انشالله دیگه میره حتی ترتیب زمانی هم توی محاسباتش لحاظ میشه و بعداً اگه یه فیلمی بهش بدن بگن اگه این آب خوردن بود اون نشستن بود این که من بهت میدم به کدوم نزدیکتره بتونه بگه یا مثلاً فرض کنید دینامیک حرف

یکی میاد یه حس دیگه‌ای می‌نویسه و اینو به عنوان ورودی می‌خواید بهش بدید ببینید که آخرش قضاوت کنه به کدوم نزدیکتر بود یا کدوم بود ها و ایکس و وایاشو بر حسب زمان بهش دادید و شما فقط در واقع چیز می‌کنید این محور این داخل رفته رو به عنوان زمان در نظر می‌گیرید خب اگر می‌شد اگر می‌شد سی ان ان رو برای داده‌های زمانی سوسکی استفاده کرد برای داده های غیر زمانی میشه سوسکی ازش استفاده کرد آقا به نیست خودمون سر بزنیم مثلا فرض کنید یه پنج توش نوشته بود مگه نبود این ۲۸ در ۲۸ بود ها یعنی ستون ها و سطرهای ۲۸ در ۲۸ داشت من می‌خوام اینو به عنوان ورودی با بدم ستون اولشو می‌خوام به عنوان ایکس بدم ایکس یک بدم ستون دومش به عنوان ایکس دو بدم ستون سومشو به عنوان ایکس سه و یه هیدن هیدنی به وجود بیارم که این بره از اولی و هیدن اولش هیدن دوم رو بسازه از دومی به هیدن دومش هیدن سوم تا برسه به آخری بعد آخرش چیکار میکنم یه ساب فکس

قضاوت کن حالا یه بار تو ترینینگ بهش میگم این پنجه و بعداً یه چیز جدید بهش نشون میدم و بهش نمیگم این پنجه میگم تو بگو چنده بچه‌ها اینم کار می‌کنه اینم کار می‌کنه و دقت بدی هم نمیده ۹۰ و خورده‌ای درصد همیشگیمونو میده برای اینکه این کارو بکنیم یه کد نوشتیم بسیار همه چی شبیه قبلنه از اینکه بک سایز چند باشه نامبر آف ای باکس چند باشه مثلاً من دو گذاشتم دراپ اوت داریم یا نه اگه داریم عددش چند باشه چه چیزایی رو باید اد کنید تنها چیزی که بهمون اضافه شده ال اس تی ام یا حالا سیمپل آر یا میتون شما به اداتون اضافه بکنید صحبت لود بکنید همون کاری که قبلا میکردیم خدمت عارضم خدمت شما عارضم که نام ال اس تی ام اوت پوت رو من اینجا فعلا نوشتم ۱۲۸ یعنی همون نوشته بود ال اس تی ام پرانتز باز بسته تو هر کدوم از ال اس تی ما چند تا نیرون باشه من ۱۲۸ گرفتم شما میتونستید اصلاً بالا تعریف نکنید بع پایین عدد تایپ بکنید و خدمتتون عارضم ورودی ها هم اینجوری دادم ورودی ها اگه ۶۰ هزار در ۲۸ در ۲۸ باشه اینجوریه ۶۰ هزار اول نماد تعداد ترین

۲۸ اول نماد تعداد فریم‌هام ۲۸ دوم نماد چیم حالا برداریه که ستون مثلاً آیومو داره توی ورودی آیم بهش میده و خودش تنظیم اصلاً نیازی به تغییر و تغییر نام نداره خب که من یکیشو ایمیج راز یکیشو ایمیچ calms گذاشتم و اینو حالا می‌خوام استفاده کنم همونجوری مثل قبلاً ترین و تست‌های لود می‌کنم در ۲۵۵ تقسیم می‌کنم مدلش هم سیکوئنشال تعریف میکنم حالا چندین مدل داره من الان مثلاً مدل شماره یک ساده ترین مدل باشه من اینا رو کامنت کنم خب ساده ترین مدلی که میتونید تعریف بکنید اینه بسم الله الرحمن الرحیم مدل دات اد حالا مدل نوشتم مدل دات اد کن الstm مثلاً ۱۲۸۰ و اینپوت شیپش از جنس اینپوت شیپ که بالا بهش گفتم من فورسش میکنم که آقا اینپوت شیپ شما ۲۸ در ۲۸ اوکیه بالا بهش گفتم اینپوت شیپ ظرف اینپ شیپ ۲۸ و ۲۸ در

دوتایی لیست دو تا عدد است بعد مدل محاسباتشو نگفتیم که حالا تو چه جوری میشه دراپ اوتو اضافه کرد خب بعدی مدل کن دنس nb class number of class که ۱۰ تا باشه اکتیویشن سافت مکس این چیکار میکنه اینی که این سه خطی که من زدم این شبکه است براتون بکشمش تا ببینید شبکه پرزوری ها همچین همزور نیست این یه ال اس امه در واقع ۱۲۷۸ است تو خود خودش ۱۲۸ تا نرون داره بعد خدمتتون عارضم ورودیش ورودی اولش ستون اوله داده است داده همون نیست بعد این میره دوباره جلو ستون دومو بهش میدید تا ستون ۲ هشتم فقط چون نگفتیم بهش که سیکوئنس نمیدونم چی چی ترو بکن این فقط از آخریش به من خروجی میده و سافت مکس هم روش میزنه

دنس سافت مکس دار ۱۰ خونه‌ای بهم میده و این همون نمادی از اینه که من بگم این عدد چی بود صفر بود یک بود فلان بود و اینا من اجازه بدید اینو کنم براتون بریم شروع کنیم بقیش هم کامنت بکنم که هیچی نباشه مدل سامری هم باشه خب اینو اجازه بدید بزنم این بدون ارور انشالله ران میشه دیگه تیک بخوره انشالله بخوره که هنوز نخورده داره فکر میکنه بخوره یا نخوره آها دانلود داره میکنه ام نیست و تیک خورد تموم شد دانلود کرد برای من آشغالایی هم که بالا گفته بودم ۶۰ هزار در ۲۸ در ۲۸ ترین و تست و فلانم اینم مدل سامری در واقع چیز دارم هم گفته نمیدونم چند در چند بهم میدی چند تا فریم داره ولی میدونم ۱۲۸ تا نیرون دارم دراپ اوت روش میزنم دنس بهت میدم و بعدشم می‌دم کامپایل کنه و

به اصطلاح فیتم بکن این کارایی که از قدیم بلد بودید دیگه مدل لاتیتو این کارا رو بکن و داره میره بالا دقتش مثلاً با چند درصد الان اکیورسیش رو ۵۰ درصده داره میره بالا دیگه با همین الگو و بعداً تست هم که می‌کنم همینه ها یعنی ستون ستون میده به چیز ورودی اون ۲۸ بار الstm خودش میدونه شعور داره که باید باز بشه از فول در بیاد و آخرین خروجیشو چیکار کنه بده به سافت مکس و خروجی بگیره این یکی از راه های که میشه این کار کرد درسته خب داره میره بالاتر یکی از کارهایی که میتونید بکنید زورتون بیشتر شه اینه که تو راهتون به جای اینکه یه دونه ال اس تی ام بذارید حالا داده به اندازه کافی دارید دو تاlstm می‌ذارید دو لایهlstm بره ها خب همه چیش خودشه فقط این تغییرات میکنه دیگه فرض کنید که بهش گفتم دوباره اینپوت شیپ رو بگیر ریتر سیکوئنسزشو ترو کن چرا چون می‌خوام کل لایه اول رو برام خروجی بگیری

یه لایه بالاتر می‌خوام اینو بدی همه اینا رو بدی یه لایه بالاتر اینجوری اگه این کارو بکنی تهشو ترو بکنید شما میتونید دوباره یه مدل اد کنید بهش چرا چون خروجی این سه بعدیه دیگه ها یکیش نماد تعداد ترینینگه و اون دیگه بس کردیم حالا دوباره از خروجی این فقط این دفعه اینو سیکوئنسشو تورو نمیکنه و اینجا سافت مکس میزنم با ۱۰ تا و چیز میکنم اینو میخونم به عنوان ورودی انگار مثل که دو لایه هیدن دارم هیدناش خودش ۱۲۸ نیرون یعنی قشنگ خیلی غنی فقط لازمش اینه که شما خیلی ترینینگ ست تو غنی باشه و با دو لایه هیدن کلاً شما یه کار دیپ لرنینگ کردید چون توی آرنا همینقدر واقعا دیپ لرنینگه بیام ببینم این تمام شد یا نشد این تموم شد با دو تا اومد حالا لاس و اکیورسی و اینا هم کشید حالا ۹۶ درصد با یه دونه هیپاپ با دوتا ایپاک ۹۶ درصد دقت داریم یعنی کاملاً زور زورش کمتر از ال اس تی هم نشده ولی آخر

قبلا ما گرفتیم که بره چیزو بگیره به اصطلاح کانفیوژن ماتریکس‌ها رو درصدشو مقدارشو اینا رو بگیره اینا رو گرفتیم و عرض کردم میتونید مدلتون پیچیده‌تر بکنید باز بزنید خب طبیعتاً بیشتر باید طول بکشه ولی همچنان ارور نمیده مدله اگه تیک بخوره بعد من میتونم ترین رو انجام بدم و بقیش کاری ندارم فقط یادمون باشه ال اس ام اول یا یکی قبل آخری باید چی باشه ریتر سیکرو باشه که چیکار کنه که همه چیو بده خروجی و اینجا دیگه اگه بیام ران بکنم چی میشه مدل شروع میکنه ترین شدن احتمالاً زورش بیشتره احتمالاً حالا قسم نخوریم ولی یعنی ببین مثلا قبلی از ایکس رفت یه عصاره گرفت به نام اچ و تهش تصمیمش گرفت الان از اچ دوباره یه عصاره دیگه‌ای می‌گیره باز به نام اچ دو و با اون می‌خواد تصمیمشو بگیره میتونه خیلی غیر خطی تر باشه و تو مدل های خیلی غیر خطی احتمالاً

عملکرد بهتری داره مشابه اینه که شما هیدر لیرهاتون رو چیکار کردید زیاد کردید پس این شد اولین مثال که من این کد رو براتون آپلود می‌کنم در اختیارتون باشه و بتونید ایده بگیرید اگه خودتون خواستید ال اس تی ام سیکئنشال اضافه کنید چیکار کنید غیر سیکونشالش عرض کردم خیلی آسونه اصلاً کاری نداره واقعاً شما دستی کجا رفت تو این مثاله دستی چیز می‌کنید دیگه اینجوری می‌نویسید که روی اینا مثلاً لیرز پرانتز باز بسته توضیحات خود ال اس تی ام تا اینجاش پرانتز باز بسته روی چی اجرا کنم ها که این تو راحت میتونید ببینید اینم پس برای غیر سش این اولین مثال چیز بود که خدمتتون می‌تونستم بزنم که می‌تونستم بزنم ان کدش بی زحمت خودتون نگاه بندازید شاید تو کاری بعداً در آینده به کارتون بیاد یه کار جذاب دیگه هم کردیم و اینم براتون نشون بدیم فقط من اجازه بدید بیارم بالا یادم بیاد کدوم

فولدر ریختیم یعنی در از اینجا بیارمش توی کد توی اینجا خب اون قبلاً اگه یادتون باشه یه بحثی رو باز کردیم به نام بحثی رو باز کردیم به نام لوکالیزیشن خب که بره جای عددارم پیدا کنه حالا یه حقه زدیم حقیقت علیه سلام خیلی نیست وقتمونو منابع کامپیوتری هم که در اختیارمون بود بالاخره یه محدودیت‌ها رو به وجود آورد مثلا اینجوری نبود که من چند ماه وقت داشته باشم باهاش فکر کنم چیزی بود که دو سه روزه وقت گذاشتیم و درش آوردیم شاید به دردتون بخوره و ایده بهتون بده اینه که نه تنها مثلاً بگه عدد چنده باید دورش کادرم بکشه بگه کجاست خب حالا می‌بینید علیه‌السلام نیست بعضی وقتا جواب میده بعضی وقتا جواب نمیده بعضی وقتا چیزهای دری و دورش کات میکشه و الی آخر خب عرض کنم خدمتتون که اسم در واقع کدش هست main پس من اگه بنویسم پایتون مین

اجرا بکنم چه اتفاقی میفته اجرا که بکنم وحشت نکنید دو سه تا پنجره باز میشه هیچ نگرانش نباشید باید علی‌الاصول منو ببینید اول فکر می‌کنه حالا انشالله که عمل می‌کنه خب چند تا پنجره باز شد اینا چیزایی که خودم بهش گفتم باز شه یکی رنگیه همون در واقع دوربین خود وبکمه و البته فورسش کردم توی سایز خاصی باشه یعنی تهش گفتم آقا مثلاً برو حتماً چه می‌دونم ۹۰۰ در فلان باشه مثلاً ۶۰۰ باشه سیاه و سفیدش گفتم حالا گره لازم دارم یه دونه دیگه دارم که مثلاً چیز کرده ترش زده روش کلا اینجا خاکستری اینجا فقط سیاه و سفیده در ضمن سفیداشم مثلاً چیز کردم اصطلاح یارو زیاد کردمترسیتیش زیاد کردم که ببینید مث شفاف تر معلوم باشه و اینجا یه چیزی داره اتفاق میفته حالا دستور کانتوره که تو خود اوپن سیv هست و اینا من میگم در ساده ترین حالت اومدیم اینو زدیم با کمک یکی از بچه‌ها که همین در واقع خودش بره یه سری کانتور دربی

انشالله بگیم امیدوار باشیم این عددهایی که ما می‌خوایم تو این کانتوره بیفتم خب حالا این چیکار می‌کنه این کده من رنگیشو باز می‌کنم اینجوریه که اولاً بعضاً می‌بینید یه مستطیل‌هایی داره میندازه توش نوشته مثلاً تو کروشش نوشته ۴ یعنی من دارم اینجا تشخیص میدم چهاره جلوشم یه عدد بین صفر تا یکه احتمالشو تعلقشو داره میگیره الان در تایید فرمایشات رامتین مثلاً فرض کن الان هیچی نیست هیچ عددی نیست مثلاً الکی داره یه جاهایی مستطیل های سبز رنگی میاره بعد می‌نویسه با احتمال ۹۷ درصد ۱ تازه ما یه ترشولد هم گذاشت زیر ۹۰ درصد هم بود اصلاً نشون نده یعنی نمی‌دونم خیلی مطمئنه که اونجا داره یک و دو میبینه یکی از کارایی که مثلاً می‌تونیم بکنیم تمیزترش بکنیم من دیگه وقت نکردم بذارم ووت کنیم مثلاً می‌گیم آقا تو یک ثانیه اخیر ببین واقعاً اونجا یک دیدی یا نه اگه یه بار دیدی شانسی قبول نیست خب حالا مثلاً من فرض کنید کاغذ جلوش بگیرم خب بعد مثلاً الان نگاه دو و سه پایینیه رو کامل شناخته بعد با احتمالات بالا مثلاً سه رو با ۱۰۰

بالاییه رو نشناخته حالا این می‌تونسته به خاطر نورپردازی محیط اینام باشه یعنی باید بریم تو بخش اون در واقع یارو این چیزه سیاه و سفیدش اینجا چیو می‌بینه مثلاً حالا اینجا که داره البته می‌بینتش نتونسته احتمالاً به عنوان کانتور بشناسه دورش کادر بیاره خب من برای اینکه لوکالایز کنه از خود اوپن سی الان استفاده شده ها خب یعنی خیلی ما خودمون کدیم نمیدونم از این یولو نمیدونم انواع الگوریتم های پرداز تصویری هیچ استفاده نکردیم هیچی همینجوری خودش گفتیم که آقا اینایی که خودشون پهلو من یه دسته تو تشخیص میدی و چیز کن برای ما نشون بده حالا یه در واقع این کد رو بهتون میدیم دلتون خواست باشه ور برید یه توضیحاتی هم روش میدم و دیگه کلاس امروز رو میتونیم تمام کنیم خدمتتون عارضم که این کد رو اگه بریم توش من اینو توی مثلاً یکی از این تکست ادیتورهای مثل مثلاً نوت پلاس پلاس باز میکنم خب کارایی که میکنه اولش اینه که چیز میکنه اوپن سیری

خدمت شما عارضم که کپچر میکنه ویدیو رو و میریم میگیم که تا زمانی که داریم ویدیو رو می‌گیری رو بریز تو فریم فریم یه عکس من نیازش دارم جهت اطلاع بچه‌ها اینو میگم به خاطر بسپارید اگه دلتون خواست به جای ویدئو یه عکس ثابت بهش بدید میتونید از اینو کامنت کنید این پرینت فریم دات چیز ببخشید ۴ p ان جی رو باز کنید این عکس ثابت رو براتون لود میکنه اگه دلتون خواست که نه مثلاً ویدیوتون روشن نباشه از اسکرین کامپیوترتون فیلم بگیره یعنی تند تند عکس بگیره این دو تا دستوره میتونه به کارتون بیاد اسکرین مساوی با آی ام جی gb پرانتز باز بسته بعد ان پی دات ارای اسکرین رو بریز تو فریم این باز اونم یه عکس از اسکرین تند تند براتون میگیره و شما با عکس های مواجهید که حالا می‌تونید روش کار کنید دیگه حالا ما فرض کنید عکسمون توی متغی به نام فریم ریخته شده صرف نظر از اینکه از دوربین دارم استفاده می‌کنم یا عکس ثابت یا چی یا اینکه از

کانورت کالر بکن به اصطلاح کالرشو از بی جی آر ببر تو گری اینا دستور آماده اپن سیوی اصلا من تو ویدیو اینتروداکشن هم بودا اینو بریز فیلم میشه این یارو میشه این کجا رفته وای همون تصویر سیاه و سفیده خب خدمتتون عارضم باز رو گره هنوز یه سری کار بکن مثلا مدین بلرش کن الی آخر مثلا چیز بکنه نویز های فلفلی رو ازش بگیره این خیلی تخصصی حالا چیزه دیگه کامپیوتر ویژنی بلدم نباشید عیب نداره همینقدر بشنوید کافیه یه ظرفی هم به نام ترشولدش تعریف میکنم که اون میشه چیز دیگه میشد همون ویدیوی سومی که خیلی سیاه و سفید بود هیچ رنگ خاکستری توش نبود گری رو بگیر بعد روش بزن از یه عددی به بالا مشکی از یه عددی به پایین سفید بعد نمیدونم الی آخر حالا در نهایت یه دستوری به نام کانتورز ران بکن خب بعد

فایند کانتورز ران بکن و خروجی که چیکار میکنه میره تو اون عکس سیاه و سفید شده میگرده ببینم حالا کانتوری داره یا نه حالا اگه دلتون خواست کانتور چیه برید تو حل ببینید گفته اگر چیزایی که تو کانتور پیدا کردی بیشتر از صفر تا بود خب که معمولاً بیشتر هم پیدا میکنه یعنی متغیر کانتور چیز بود به اصطلاح داخلش درایه وجود داشته باشه بالاخره حداقل یه دونه داشته باشه این کارو بکن خدمتتون عارضم که این فور آی از یک تا یه چیزی اینجا اسمشو نوشته سی ان تی فکر گفته برو این دستور باندینگ رکتور روی سی ان تی اجرا بکن هر کانتوری اگر دستور باندینگ روش اجرا کنید بهتون گوشه بالا سمت چپش و عرض و طول مستطیلی که اون کانتور رو پیدا کردن رو میده ها من یه بار دیگه کاش ران میکردم که همینجوری این برای خودش بره به امید خدا مثلا ببینید چه میدونم مستطیل آبی رنگ و سبز رنگ و اینایی که میکشید

همه نمادهایی است اون کانتوران اینایی که داره میکشه به اصطلاح چیزن نمادهایی از اون کانتورا بعد ایف گذاشتیم اگر کانتورا مثلاً عرض و طولشون از این عدد بیشتر و از این عدد کمتر بود برو چیز کن اون کارهایی که من می‌خوام انجام بده وگرنه نه حالا چیکار کن اگه بیشتر و کمتر بود یعنی توی بازه طولی خاصی بودن برو چیکار کن برو یه آر او آی یا ریجن آف اینترست از عکس چیزه بگیر از عکس سیاه و سفید شده بعد اینو ۲۵۵ تقسیم کن و بهش فورسش کن که ری سایز بشه به ۲۸ در ۲۸ اینو بده به مدل ترین شده شبکه هم توی سی ان ان که قبلا داده بودم حالا یا آر فرقی نداره هر کدوم دادید خب مدلتون رو سیو کردید خب مدل دات pیکس کن به اصطلاح چیزو این گ اسمال رو حالا که اسمشو گذاشتیم ریسمان و عدد عددشو بریز تو پرد حالا این پرده بعد مثلا ممکنه چیز باشه وان هات باشه

ده تا درایه باشه چیز کن ماکسیمومشو بگیر و فلان و اینا و بعدش مثلاً ببین اگر ترشولدش بالای ۹۰ درصد بود این عدد رو شما می‌تونید دست بزنید برام اونجا بنویس که این عددی که من دارم تشخیص میدم تو فلان جا بنویس که با رنگ مثلا چه میدونم چیز این بی جی آر اگه بگیریم اینجا بلو میشه اینجا گرین میشه خب و این برام چیز کن برام اینایی که گفتم رو بنویس همین تمام شد و تهش هم فورس کردم که تمامی اون سه تا عکس سه گانه ترش فریم و گره هم همه ۶۴۰ در ۴۸۰ باشه یعنی ممکنه مثلا دوربین های کامپیوتر شما بزرگتر کوچیک‌تر باشن ولی من اینجا فورس کردم که آقا خروجی حتماً حتماً اینایی که بهم نشون میدی اینستاگرام ویدیو سه گانه اینجا اینا همه سایزشون چی باشه ۶۴۰ در ۴۸۰ باشه خب خدمتتون عارضم که آی ام شو ام شو یعنی برام پلاتش کن اینجا هم یکیش اینه که اسمشو چی بذارم یکی اینکه کیوپلات کنم براتون و تهش

آشغال‌های ته خودش که چه میدونم وایسا و فلان شو و اینا که دیگه مال خود اپن سیبی یکی دیگه ما کاریش نداریم به همین بچه‌ها به همین شکیلی و یه خلاقیت ساده می‌شد چیکار کرد میشد همچین کدی رو درآورد ولی خوب دقت کنید ما برای لوکالیزیشن اصلا الگوریتم حرفه‌ای نزدیم ما با یه دستور ساده کانتور استفاده کردیم گفتیم که برو فایت کانتور کن حالا اینکه فایند کانتور چیو پیدا میکنه تو اوپن سیv خرجش یه سرچ ساده است برای شما و اینکه چه چیزهایی بهتون میده تنظیمات فلان این کد رو من در اختیارتون قرار میدم بچه‌ها این شد در واقع تمامی چیزهایی که در مورد cnn در مورد آر به ذهنم میخو بهتون بگم حالا رو این جزئیات و پیاده سازیش دیگه به نظرم خودتون میتونید با هلپشو با یک سعی و خطا پیدا کردن نمونه‌های کد پیدا بکنید یه نمونه دیگه هم فقط فیلمشو بهتون نشون میدم حالا کدش حقیقتشو بخواید رو کامپیوتر خودم یه سری باگ داشت رو کامپیوتر این آقای رنجبر دانشجوی ارشدمون درست کار کردیم بهش گفتم برامون بفرسته یکی از

کارشه حالا اینم اگه درست شد کدشو بهتون میدم اگر نشد که در واقع چیز نیست ایشون از این شبکه ال اس تی ام استفاده کرده این مدلیه که یه کد اولاً یه کد آماده زده که در واقع وقتی عکس بهش میدی اون موقعیت بندهای انگشتو بهتون میده با آبی و سبز و فلان مشخص کرده بعد دیگه به جای اینکه کل این عکسه رو بدید به ال اس دی هم فقط این چی میدید این موقعیت‌های ایکس وای این بندهای انگشتو بر حسب زمان میدید به ال اس دی داره دستشو بالا می‌گیره براش می‌نویسه آپ وارد دست چپ میبره میگه و اگه بالا ببره هند آپ پایین بیاره هندون الی آخر و این کاری که انجام داده و این مدلیه که جزئی از حالا پایان نامه شونه باید یه سری حرکت‌ها رو بتونه آنالیز بکنه به صورت خاص حرکت‌های زبان اشاره رو و با ویدیو هم این کارو بکنه هیچ دستکشی هم دستش نیست یه کد آماده زده یه بار دیگه ببینیم یه کد آماده زده که آماده استفاده کرده یه فانکشن که اینا رنگی ها رو بهش بده این رنگی ها رو به

E:\courses\LangChain Project\main root\data\SCR_Session16_transcript_part3.txt

ال اس دی ام اول داده خروجیشو کلشو گرفته به یه ال اس ام دیگه داده اون ال اس دی ام آخریه دیگه چیز ریتر سیکوئنسش فالس بود فقط آخر آخریش درایه میداد بعد با همین چهارگانه چی سافت مکس بهتون میگفت کدوم از این چهار تا حرکت داره انجام میشه و اینا رو خروجی میده و خیلی هم میبینید داره خوب کار میکنه قبلش هم ترینش کرده بود به ازای هر باری مثلاً هر کدوم از این حرکت ها رو مثلا صد بار انجام داده بود خب این ۱۰۰ بار دستشو بالا ۱۰۰ بار پایین آورده بود ولی آخر و خب طبیعتاً برای دادنش غنی بشه باید از آدمای دیگه هم استفاده بکنه فقط خودش نباشه دست های با طول های مختلف استفاده بکنه و این هیچ سبب بشه که شبکه‌اش ربات و ربات تر بشه ما بهتون بگم بچه‌ها با همینایی که تا اینجا یاد گرفتید می‌تونید خیلی کارهای بزرگی بکنید و می‌تونید پایان‌نامه‌هاتونو خیلی خوب تعریف کنید و پیش ببرید و همینطور میتونید جذابیت و هیجان ایجاد کنید برای خودتون حتی تو خونتون با وبک‌های لپتاپتون و سوم اینکه انشالله بتونید تو این زمینه‌ها مقاله بدید این ماجرایی که وجود داشت خب

من دیگه درسو می‌خوام ببندم فقط حداقلش حالا نرسیدیم اینا رو بگیم ولی دوست دارم قلقلک بدم ذهنتونو خب ما فرض کنید که اولین قلقلکی که بدم اینه که این ورودی‌ها رو خب اگه یادتون باشه چیزای محدودی می‌دادیم مثلاً یه عکس هزار در هزار بهم می‌دادن من نمیومدم یه میلیون تا بردارش کنم بعد بدم به خروجی آها اینم راستی بهتون بگم ببخشید حالا حرف میاد است خب یه دستوری وجود داره تو این لیرز های خودش بزنم این چند تا آشنا بشید بعد نیست خب سیمپل لیر رو شناختید تا الان تفاوت زیادی با هم ندارن ذاتا یه کار میکن مشابهت زیادی هم نوشتنشون داره یه چیزی وجود داره خودم یعنی فضولی کردم در واقع حالا اینو از یکی از بچه ها یاد گرفتم این دومی را توی کار دیگه دیدم چند وقت قبل تایم دیستبیوتد لیر تایم دیستبیوت لیر حرف جالبی میزنه خب این اگه اشتباه نکنم حالا برداشتمو میگم انشالله تطبیق بدید اگه اشتباه می‌کردم یکی بی زحمت اصلاحم

ماجرا اینه که ما وقتی که می‌خواستیم یه عکس مثلاً یه فیلم ورودی بهش بدیم مثلاً بگیم این آب خوردنه یکی از کارهایی که می‌تونیم بکنیم فریم فریم فیلمو بهش بدیم ولی فرض کنید عکستون هزار در هزار باشه ۱۰۰۰ واقعاً یه میلیون تا نروم میدید اینجا یه میلیون تا ورودی می‌دید اینجا انواع این ضربی که میخواد بکنه فقط این یه میلیون مثلاً ۱۲۸ تبدیل بکنه خودش داستانه و ممکنه کلا تعداد پارامترهاتون خیلی زیاد باشه یکی از کارهایی که می‌تونن بکنن به جای این هزار چیکار کنن بچه‌ها من یه بیان ساده میگم عصارشو بگیرن حالا این عصاره می‌تونه معانی مختلفی داشته باشه قبل از اینکه۰ رو بدید اول از یه cnn رد بکنید خب اول از یه cnn رد بکنید هی بره بره جلو بره جلو فلتنش بکنید مثلاً برسید به ۴۹۶ همون کاری که قبلاً تو چیز می‌کردیم به اصطلاح توی شبکه های الکس نت نمیدونم وی جی نت و الی آخر اینو بدید ورودی یعنی عصارشو بدید خودشو ندید ما اینو قبلاً هم دیدیما توی

بهتون گفتم که چه جوری ام بدین می‌کنند و اینا یعنی مثال‌های خودشم که می‌بینید لیر ام بدین میزاره همینه‌ها لیر ام بدینینگش حالا مثالینگ‌هایی که می‌زنه اینه که مثلا میگه آقا اوت پوتشو بکن ۶۴ تایی خب یعنی همیشه فورس میکنید که شما در واقع اوت پوتتون خیلی عصاره تر و خلاصه تر از اینپوتتون باشه اینو میدید ورودی فریم خب این کار اگه بخواید بکنید بچه ها برای اینکه سی ان ان یکسانی رو همه اینا اجرا بشه یعنی همون سی که برای فریم یک اجرا شد برای فریم دو اجرا بشه و این ۴۹۶ داشت دیگه مطمئن باشید از یه فانکشن اومدن بیرون و آماده ورود به ال اس تی من این از دستور تایم دیستبیوتد میتونید استفاده کنید تایم دیستبیوت کاری که میکنه اینه که میاد سی ان ان های یکسانی رو میزنه روی چیزا روی اینا برید بخونید مثلا عکس ها ۱۲۸

۱۰ تا از اینا دارید به عنوان نماد ۱۰ تا فریم بعد اینو اگه روش بزنید در واقع یارو بکنید بزنید روی خروجی مثلا همین دودی لیرز رو اینپوت بزنید همه چیکار میکنه یکسان براتون انجام میده خب اینو پس داشته باشید برای خودتون سرچ بزنید باشه اگه ویدئو رو خواستید ورودی بدید به ال اس تی ام و خب در واقع اگر این حسین رنجبر تو کدش نیومده بود اون فانکشن رو بزنه که مثلا چیز کنه به اصطلاح جای انگشتاشو پیدا بکنه با اون پاره خطای رنگی رنگی و میخواست کل عکس ورودی بهش بده احتمالاً باید این کارو میکرد خب حالا ما یه تمرین بهتون میدیم تو حوزه لب خوانیه شما این کار احتمالا لازم دارید یعنی فریم حرکت لب زدن یا آدم که مثلاً می‌گه سلامو دارید بعد خداحافظ هم دارید میخویم تست دیتایی که بهش بدیم بهمون بگه این لبه نماد سلام بود یا خداحافظ کل حرکت دینامیکشو خب بعد اینجوریه که شما

بزنید و چیکار کنید خدمتتون عارضم که به اصطلاح از همشون از یه کام بگذرن این یه ماجراست یه دونه هست این یه رسماً قیمه‌ها رو ریختن تو ماستا کامپ ال اس تی ام دو دیلیره یا حالا کلاً چند دی لیره خب این یه پیپر اینجا ضمیمه بود جالب بود اینم می‌تونید به اینم فکر کنید من یه کد دیدم این فکر کنم پیپرشه ها این پیپرشه بچه‌ها این دو تا رو زده تنگ همه عجیب غریبی شده خب پرینت بتونم پی دانلود بکنم روی کانولوشن ال اس با هم قاطی کرده خب یعنی یه چیز عجیب غریبیه حالا البته باید روابط ریاضی با حوصله و جزئیات خوند باز اینم توی یکی از کدهای موجود در اینترنت همینجوری دیدم توی اکشن استفاده کرده بودن اینجا یه عکس‌هایی گذاشته اینجا

چی بوده و فلان این حرفش اینه اینجا مثلاً یه همچین چیزیه میگه ببین اچ و سی لحظه قبل برای اینکه بره hoc یه لحظه بعدو بهتون بده بر اساس ایکس لحظه بعد باید خودش دوباره یه چیزم داره یه مثل سر خوردن ال اس دی ام سی ان ان وار هم داره یه همچین چیزی و این ماژوله این کارو براتون میکنه خیلی حقیقتشو بخواید وقت نذاشتم بخونمش ولی جز گزینه هاتون باشه چون شما که نمیخواید حساب کتاب بکنید اگه دیدید به کارتون میاد چیز کنید میتونید ازش استفاده بکنید و مثلاً چه میدونم تونست های متحرک میتونه استفاده بشه حتی میتونه تو تخمین و پردیکشن استفاده یعنی مثلاً من یه سیکوئنسی از مثلا چه میدونم اینجا صفر و هفت بهتون بدم پنج تا بعد شیشمیشو بگم شما حدس بزنید خب و بگید که این تو فریم بعدی این عکسه چه خواهد بود خب و این مدلی بتونید بسازید اینم داشته باشید گوشه ذهنتون که اینم

جز گزینه‌های پیش روتون هست دیگه تقریباً چیزایی که می‌خواستم بگم گفتم بای دیرکشنال لیر کاری نداره شما فقط یک کلمه نوشتن بای دیرکشنال کارو براتون در میاره یعنی بزنید و فلان این کار براتون در میاره سمپل کداش موجوده مثلاً نوشته by dcionalstm بزن یادتون باشه چیز نبود دیگه فقط در واقع حجم محاسبات بیشتر میکرد اجازه میداد به سیکس یک بار از اول تا آخر یک بار از آخر تا اول بهش نگاه کنه بعد تصمیم بگیره که میتونست چی باشه میتونست دقت شما رو ببره بالاتر بچه‌ها اینجا می‌بینید دوباره یه دونه زده ریتر سیکوئنسش تروئه بعدی زده دیگه نداره یعنی چی یعنی یه بار یه stm ساخته یه لایه دیگه هم روش مثل کیک دو طبقه دیگه البته با دیرکشنال زده دیگه و شما به تمام این چیزا واریانت برای خودتون فکر کنید شاید تو کارتون راهگشاتون باشه اینا مواردی بود که خدمتتون می‌خواستم عرض کنم امروز دیگه بیشتر از این باتون کاری ندارم خیلی ممنون که همراه بودید و دیگه

بیشتر از این نتونستم کودک آماده کردم به خاطر مشغله‌های این روزام تمیزتر کنم براتون انشالله دیگه تمیز کردن احتمالش در آینده با شما و پیشاپیش عیدتون مبارک خوش خرم باشید مراقب خودتون باشید خدانگهدار

E:\courses\LangChain Project\main root\data\SCR_Session18_transcript_part1.txt

به نام خدا دوستان عزیز و ارجمند عرض سلام و ادب و احترام خیلی ممنون بابت حضور در خدمتتون هستیم با اولین جلسه حضوری کلاسیمون حالا خوشحال بودیم هفته گذشته حضوری توی آزمایشگاه دیدیمتون یه مقدار با فضای آزمایشگاه آزمایشگاهمون آشناتر شدید اگر قبلاً تشریف نداشتید و خوب امروز هم به صورت حضوری در خدمتتون هستیم تا مباحث درسی‌مونو ادامه بدیم خدمت شما عارضم که ما جلسه گذشته خدمتتون کلیات بیان کردیم که میخویم ادامه درس رو چه داشته باشیم ما در واقع آیتم جدیدی که میخویم در موردش صحبت بکنیم اسمش هست مدل مخفی مارکوف یا هیدن مارکوف مدل یا مدلزها که

عرض به خدمتتون یکی از راه‌های سنتی هستند که قبل از اینکه آرن‌ها بیاد استفاده می‌شدند یعنی عملکردشون شبیه آرنهاست ولی از لحاظ تاریخی قدمت بیشتری دارند ۱۹۶۰ ۱۹۷۰ توسعه پیدا کردند ولی استفاده‌های جدی‌شون دیگه رفت تو ۱۹۸۰ ۹۰ و حالا یکی از دلایلش هم ذکر شده تو منابع که کسانی که چاپ شده بود مهندسی نمیرفتن سمتش بخونند و یا بیانش بیان خیلی مناسبی نبود که این اتفاق بیفته و خب همین قدر بدونید که اینا قبل از اینکه آر ان ها بیان اینا بودن که داشتن کار در میوردند مثلاً شما چه میدونم توی گوشیاتون یا تو کامپیوترتون مثلاً می‌نویسید اس با قلم نوری رها کنید اون اس نوشتاری شما رو که مثل شبیه پینت حالا به اس کاراکتر موبایل تبدیل کنه و این

در واقع الگوریتم این قابلیت‌ها رو می‌تونه داشته باشه هم میتونه جنریت کنه هم می‌تونه احتمال تعلق به یک گروه رو بهتون بگه که حالا قراره رو اینا صحبت کنیم بچه‌ها به خاطر مشغلم و درگیری که حالا هفته گذشته داشتم و خدمتتون هم بیان کردم من خب زیاد وسواس می‌کنم می‌گردم که یه منبع مناسبی پیدا بکنم و برای هر کدوم از اون زیررفصلاتون تا الان نزدیک مثلاً پنج تا منبع و حداقل نگاه می‌کنم و سعی می‌کنم که یا تلفیقی از اونا رو بردارم یا اون چیزی که فکر میکنم بهترینه رو بردارم من واسه زیر فصل مدل مخفی مارکوف بین تمام چیزهایی که مشاهده کردم جزوه آقای دکتر ویسی از دانشگاه تهران خیلی پسندیدم چون یکی دو تا مثال حل شده توش داره و البته خودمم یکی دو تا مثال براتون اضافه می‌کنم می‌خوام مطمئن شم که یاد می‌گیرید و باهام هستید یه مقدار لطفاً تمرکز کنید فسفر بسوزونید ضرر نداره اینجا این از اون مباحثی نبود قبلاً

خود من یه بار خوندمش بتونم اون لحظه بفهمم ولی اگه این مثالا رو دنبال کنید خیلی می‌بینید مثلاً راه دسته حالا نگم که بعداً ذهنی میشه مسائلشو حل کرد ولی حداقل کلیات ماجرا رو متوجه می‌شیم پس با همه مقدمه‌ها انشالله بریم در واقع بحثمونو در مورد هیدن مارکو مدل‌ها یا hmm‌ها شروع کنیم ولی قبل از اینکه خب واردش بشیم طبیعتا مجبوریم یه سری تعاریف اولیه هم ارائه بدیم بعد بریم بگیم مدل مخفی مارکو چیه ها اصلا چرا کلمه مخفی به کار رفته مارکوفه اسمش از کجا اومده اصلا آیا مهمه اگه مثلا مدل مخفی ممد بودم باز مثلاً کار در نمیومد یا نه اینا چیزاییه که حالا یه چند دقیقه دیگه در موردش صحبت می‌کنیم بچه‌ها مدل مخفی مارکوف مثل آر ان ها روشیه برای مدل سازی داده های سیکوئنشال یا ترتیبی که همونطور که عرض کردیم خدمتتون می‌تونن هم داده ها و سری های زمانی باشند هم می‌تونن جاهایی باشن که زمان توش مهم نیست ولی اردر مهمه مثل

کلماتی که پشت سرم توی جمله میان اگرچه زمان توشون مطرح نیست ولی کاملا ترتیبشون توی جمله مهمه و ما می‌خوایم برای شناسایی اینا استفاده بکنیم مثال از داده‌های ترتیبی خب نرخ ارز در روزهای مختلف حالا نرخ می‌تونید شما روغن و پنیر و فلان اضافه بکنید نمونه‌های پشت سر هم سیگنال‌های گفتار دست نوشته و امضا نمونه‌هایی که برای بچه‌های کامپیوتر ساینس جذابه خدمتتون عارضم که برای مکانیکی ها دنبال تصاویر پشت سر هم توی ویدیو ها و آنالیز حرکت آدم ها خیلی مهمه اصلاً دلیل اینکه من اینو دارم بیان می‌کنم که ابزاری به شما معرفی کنم که بتونید در علاوه بر الگوریتم کلاسیک که در اختیارتون بوده و هست برای آنالیز حرکت انسان ها و حیوان ها و انواع در واقع خزندگان چرندگان پرندگان و یا ساختن ربات های که بتونه حرکت های اونا رو تقلید بکنه در واقع بتونید کارهای اکشن انجام

و کلاً هر چیز زمانی یا حالا از لحاظ چیز ترتیبی با اهمیت و بتونید آنالیز بکنید که اینا نمونه‌هایی از اونا هستند و مدل مخفی مارکوف یه روشی که این کارو می‌تونه برای شما انجام بده از اینجا یه سری تعاریف وجود داره خیلی چیزهای مهمی نیستند من اصلا ترجیح میدم برای اینکه گیجتون نکنم بپرم چون برای بچه های کامپیوتر اینا یا توی درس‌های دیگه‌ای با جزئیات گفته میشه اونا بدونید که خب خیلی بیشتر از شما آمار خوندن خب و بعدش هم فرایند تصادفی خیلی خوب میشناسن و الی آخر من برای که تا حد امکان گیجتون نکنم سعی میکنم مینیمال صحبت کنم خب و هر چیزی که لازم داشته باشید خودتون بعداً می‌تونید دنبال بکنید اون چیزایی که برای ما مهمه رو مطمئن باشید من از قلم نمی‌ندازم خب خدمتتون عارضم که گفته که برخورد با داده های ترتیبی میتونه به چند گونه اتفاق بیفته اگر مثل فرض کنید پرتاب یک تاس یا یه سکه به

نگاه کنیم اینه که داده‌ای که الان دارید می‌گیرید هیچ ارتباطی نه به قبلی داره نه به بعدی درسته حداقل منطق برای ما این حکم رو می‌کنه مگر اینکه بگید نه حالا من تو پرتاب تاسم مثلاً یا یه حرکتی که داشتم توی بازیم انجام می‌دادم استرس گرفتم که دفعه قبلیشو خراب کردم و این کاملاً روی بعدیم تاثیر میذاره ولی اگر ما این فرض رو بذاریم کنار و اون در واقع رابطه و ارتباط بین اینا رو در نظر نگیریم و اینا رو مستقل از هم فرض بکنیم که بهش میگن فرایند آیا دی بوده اتفاقی که میفته اینه که وقتی که به شما میگن احتمال وقوع ایکس یک تا xn با همدیگه رو ببینید ها شما میگید چیه میگید احتمال x یک رو در ایکس دو در ایکس سه ضرب میکنم تا در ایکس درسته این برای فرایند مستقل کاملا اتفاق میفته شما از گذشته باهاش آشنا بودید می‌گفتن با چه احتمالی اولی شیر دومی خط سومی و چهارمیش و و اینجوری میومدن که هی احتمال یکی یکی رو میذاشت ضرب میکید اما

سیستم‌هایی رو مدل بکنیم که اتفاقاً بتونن به گذشته‌شون ارتباط داشته باشند حالا این ارتباط به گذشته می‌تونه ارتباطات عجیب غریبی باشه که ما تو اینجام یه سری ساده‌سازی انجام می‌دیم ارتباطی که توش بیان شده اینه که احتمال ایکس یک تا xn وقتی که همزمان بخوان اتفاق بیفتن اینگونه باشد بگیم احتمال ایکس یک من اینجا بنویسم براتون احتمال ایکس یک در احتمال ایکس دو به شرط ایکس یک اول این چیزی که نمیدونم از گذشته به یاد دارید یا نه پی ایکس دو خط ایکس یک یعنی چی می‌خوندن پی ایکس دو به شرط ایکس یک خارجیترش میشد مثلاً پی ایکس تو گیون ایکس وان ها این یعنی که اگر ایکس یک اتفاق افتاده باشد احتمال وقوع ایکس دو چند است ها

همچین چیزایی مثلاً می‌گفتیم اگر مهره‌ای که درآوردیم از گونی دوم باشد با چه احتمالی قرمزه این گونی دوم بودن اینجا کاملا داره تاثیر خودشو می‌ذاره ها و خب بعدی چی میشه بعدی پی ایکس میتونه کاملا به ایکس یک و ایکس دو ربط پیدا کنه و این اتفاق بیفته تا آخریه به تمام قبلیاش ارتباط داشته باشه این میشه یه مدل پیچیده‌تری ها از اون فرایندهای دینامیکی که ما می‌خوایم در واقع مدلشون بکنیم و حالا بهتون میگم که برای اینکه بریم به حالا مارکو وارد بشیم ما چه فرز ساده شونده تری در نظر می‌گیریم پس در نظر گرفتن وابستگی بین مقادیر پشت سر هم توی دنباله رو ما میتونیم به ذات فرایند مارکوف اسمشو بذاریم تعاریف دقیق تری داره هیچ نیازی نداره بدونید اگه دلتون میخواد میتونید بعداً مراجعه بفرمایید و همین قدر در این حد بدونید که اوکی هر سری به

خدمت شما عارضم که به این در واقع حالا زنجیره‌ای که اتفاق میفته تا فرایندها نسبت به قبلی همه الگو بگیرند و بعدی‌ها از قبلی‌ها هم تاثیر پذیره ما اسمشو می‌ذاریم زنجیره مارکوف و البته قراره تو این درس عمدتاً با زنجیره مارکوف درجه اول یا فرست اردر مارکوف چین بریم جلو این فرست اردره یعنی چی یعنی هر مشاهده فقط و فقط تابع مشاهده یک لحظه قبله ها حتی دو لحظه قبل هم نمیبینه مگر اینکه اگر بخواد ببینه داره تو یک لحظه قبل هرچی ذخیره شده رو میبینه مستقیم از دو لحظه قبل تاثیر نمیپذیره این فرضیه که ما داریم می‌کنیم ها و با همین هم اتفا کار ما رو راه میندازه گواهش برای ما چیه سیستم های دینامیکی اند ما همیشه تو تحلیل سیستم‌های دینامیکی می‌گیم سرعت اولیه و موقعیت اولیه به همراه دونستن نیروها بعدی رو به من میده

و همینطور می‌تونم با بعدیه بعدیشو پیدا کنم و اینجوری برم جلو و اتفاقی که میفته مدل ساده‌تر میشه به پی ایکس ۱ تا xn به صورت همزمان نگاه کنید الان چه اتفاقی افتاده فرقش با این بالاییه چی شده تو این مدل ساده تر پی ایکس یک که خودشه پی ایکس دو به سمت شرط ایکس یک هم خودشه اما اینجا که بود پی ایکس به شرط ایکس یک و ایکس دو من فقط ایکس دو و الی آخر تا پی ایکس ان بشه به شرط ایکس ان منهای یک این قراره در واقع الگویی که من تا آخر این بخش مدل مخفی مارکوف لحاظش خواهم کرد و اینم به خودتون واگذار می‌کنم که اگر می‌خواستید بیش از یک دونه رو ببینه دو تا یا سه رو ببینه حالا تو روابط ریاضی چه تاثیری چه فرقی میکنه خیلی در واقع کار سختی نیست حالا یه لحظه فکر کنید ولی می‌تونید درجه‌های بالاتری هم در نظر بگیرید که هر لحظه به دو تا قبلش به قبلی و دو تا قبلش یا چند تا قبل

ارتباط داشته باشه و اینجوری بریم جلو خب یه توافق با هم بچه‌ها بکنیم خدمتتون عارضم گردالی‌ها توی مبحث هیدن مارکوف مدل اصلاً نمادی از نیرون‌های شبکه عصبی نیستند خب شکل‌هام که می‌بینید نمادی از گراف‌های جهت دارند برخلاف اون قبلیا که دایره‌ها نماد نرون بودن و خودشون یه فعال سازی و تابع بودن روی فلش‌ها ضرایبی وجود داشت که نمادی از حالا ماتریس‌های وزن یا ضرایب وزنی تکی اسکالر بود ما اینجا تا هر چیزی که لازم باشه من خودم بهتون میگم پس اولین چیزی اینه که این گردالیا رو با نیرون‌ها اشتباه نگیرید خب حالا می‌خوایم یکی یکی در موردش صحبت بکنیم تا ببینیم در مورد چی می‌خوایم بگیم قبل از اینکه به این مثال به ظاهر پیچیده تر وارد بشم اجازه بدید با یه مثال خیلی ساده شروع بکنم به این عکس نگاه بکنید خب فرض بکنید که به شما گفته شده فرض بکنید که به شما این اطلاعات در واقع داده شده از هوای

روزمره و زندگی‌هامون خوب من عدداشو بهتون میگم میگه اگر فرض کنیم این فرض ها من مدل می‌خوام بکنم برای اینکه هوا رو به دو دسته آفتابی و غیر آفتابی بشکونم حالا ابری و بارونی و برفی همه تو یه دسته باشن خب یه مدل اینه که من بگم آقا امروز به فردا هیچ ربطی نداره به دیروزم هیچ ربطی نداشت درسته راستی یه چیزی ما قبلیا رو نمی‌رفتیم ایکس یک تا x تابعیت ایکس ان به علاوه یک بگیریم ها چرا تو سیستم های علی معلولی شما از آینده خبر ندارید خب و اینم فرض منطقی بود تا الانا ما پیxn رو نهایتاً تا ایکس ان منهای یک از ایکس یک تا n منهای یک از قبلی هاش در نظر میگرفتیم حالا فرض کنید به شما گفتن امروز با احتمال تو این شهر با احتمال ۷۰ درصد آفتابیه ۳۰ ابریه و میگن که اوکی به من بگید که مثلاً با چه احتمالی امروز فردا پس فردا آفتابی خب یک مدل خیلی معمولی

فرض کنیم اصلاً فرض کنیم که فردا به امروز هیچ ربطی نداره بگم ۷۰ درصد امروز بوده ۷۰ درصد فردا آفتابی ۷۰ درصد پس فردا اینا رو در هم دیگه ضرب کنم و بگم این چی احتمال آفتابی بودن اون شهر توی سه روز متوالی ولی این مدل مدل کاملی نیست حداقلش اینه که مثلاً چی فرض بکنم که آفتابی بودن امروز یا ابری بودن امروز یه جورایی تأثیر می‌گذارد روی فردا نگم لااقل رو پس فردا ولی فردا مدل کنم همون ساده ترین مدلی که میخوام حالا تصور کنید به شما این اعداد داده شده میگن اگر روزی آفتابی بود فرض کنید فرداش احتمال ۷۰ درصد آفتابیه ۳۰ درصد ابریه اگر روزی ابری بود فرض کنید که احتمال ۶۰ درصد فرداش هم ابریه ۴۰ درصد آفتابیه ها حالا میگن برای این سعی کنید یه مدل ارائه بدید خب یه مدل دینامیکی که من

سوال بپرسم مثلاً بگم احتمال اینکه فردا ابری یا بارونی باشه چیه احتمال اینکه دو روز دیگه آفتابی باشه چیه احتمال اینکه فردا ابری پس فردا آفتابی باشه چیه احتمال اینکه مثلاً دیروز متوالی آفتابی باشه چنده و از این سوالا بتونم ازتون بپرسم یا یه سوال دیگه من یه الگو بهتون بدم بگم فکر می‌کنید این الگوی بارونی و ابری میتونسته مال این شهر باشه یا نه با احتمال چقدر میتونسته متعلق به این شهر باشه یا نه مال یه شهر دیگه بوده اینا سؤالاییه که من بعداً می‌خوام از مدلی که ارائه میدم خدمتتون به دست بیارم خب عرض به حضور شما خب ساده ترین بیانی که میشه داشت اسمشو می‌ذاریم دیاگرام درختی یا تریااگرام میگه فرض کنید من می‌دونم امروز آفتابیه چرا دارم بیرونو می‌بینم اوکیه دارم میبینم به من گفتن این شهر اینجوریه که ۷۰ درصد آفتابی فردا ۳۰ درصد بارون

پس طبیعتاً همین اعداد وجود داره و اگر فقط فرض کنم توی مدل مارکوف مرتبه یک هستم احتمال اینکه فردای این فردای آفتابی باشه باز ۷۰ درصده اسمشو آ میزارم و اگر بخواد بارونی باشه سی میزارم و اسمشو ب میزارم اوکیه و اینجا خدمتتون عرضم با عددهایی که بهتون گفتم احتمال ۴۰ درصد فردای بارونی آفتابی خواهد بود و احتمال ۶۰ فردای بارونی بارونی خواهد بود خب یعنی اینجوری بود اون شهری که اوکی هر کدوم دیروز بوده احتمال بالاتری رو برای فرداش به خودش اختصاص میده حالا سوال ازتون می‌پرسن میگن فردا به چه احتمالی آفتابی است ها اگر بدانیم امروز آفتابی بوده خب یه همچین چیزی خب این میشه ۷۰ درصد میگه با چه احتمالی فردا و پس فردا هر دو

چند ۴۹ صدم میگه هفت دهم فردا هفت دهمم فرداش ۷۷ تا ۴۹ منچی‌ام احتمال اینکه هر دو روز پشت سر هم فردا پس فردا آفتابی باشه طبیعتاً می‌تونستید اینجا ضرب بکنید ۲۱ صدم که فردا آفتابی پس فردا ابری باشه بارونی باشه خدمتتون باشه و اینجا هم سه شش تا ۱۸ صدم با این احتمال که جالبه جمع اینا یک میشه حالا فرض کنید سوالمو به این تغییر بدم با چه احتمالی پس فردا آفتابی است جانم ۶۱ جمع دو تا عدده میگه ببین من این سوالی که تو پرسیدی فردا برات مهم نبود ولی پس فرداات برات مهم بود که آفتابی باشه طبیعتاً اینجا میتونست گزینه باشه اینجا هم میتونست باشه یعنی اینکه فردا آفتابی فرداش بارونی ۴۹ و فردا ابری فرداش بارونی ۱۲ صدم ۶۱ جانم

خدمتتون عارضم که پس سوالات گوناگون می‌تونه پاسخ‌های متداولی بده متنوعی بده اتفاق جذابی که داره می‌افته رصد کردن این دیاگرام که اسمشو گذاشتیم تری دیاگرام یا نمودار درختی خیلی راحته ولی تا کی می‌تونید اینو ادامه بدید ها اگه گفتم روز بعدی ۸ تای دیگه باید بکشید اگه گفتم روز بعدی ۳۲ تا دیگه جا ندارید و بعدش و الی آخر دو به توان ان هی تعداد درخت‌هاتون زیاد میشه میان جاش یه پیشنهاد دیگه میدن میگه به جای اینکه من این گراف پیچیده رو بکشم یه گراف ساده‌تری می‌کشم که همین معنی رو دارد ولی عرض به حضور شما چیز میکنه یه سری داده ها رو با دیدن دیگه نمیتونید پیدا کنید ولی همون معنی رو داره فشرده هستش میگه من کلاً دو استیت دارم دو حالت مختلف دارم یا آفتابیه یا بارانیه خب از

تابی به خودش احتمال ۷۰ درصده از آفتابی به بارانی احتمال ۳۰ درصده طبیعتاً جمع دو تا قرمزها باید یک باشه از بارانی به خودش ۶۰ درصد و از بارانی به آفتابی چیه احتمال ۴۰ درصده طبیعت دو تا بنفشه هم باید چی باشه خدمتتون عارضم که یک باید باشه خب حالا اینجا اتفاقی که میفته اینه باز دوباره همون سوالا رو تکرار می‌کنم میگم که با چه احتمالی فردا آفتابی پس فردا بارانی نیست خب میگید که اوکی من اول فردا باید از روی ۷۰ برم پس فردا که باران نیست از رو سی برم پس میشه هفت ضرب در سه دهم میشه ۲۱ احتمالش ولی اگه ازتون بپرسم با چه احتمالی پس فردا باران نیست شما باید این تمرکز رو داشته باشید که اگه می‌خواستید روی این شکل برید باید چیکار میکردید یه بار از آفتابی فردا به بارانی میرفتید ها یه بار از بارانی فردا به بارانی میرفتید و

پس این گرافه که حالا زنجیر مارکوف رو داره برای من نشون میده خدمتتون عارضم که این زنجیرهای گرافیکی داره به من نشون میده شکل سمت راست که بهش میگن ترانزیشن دیاگرام یه شکل فشرده تری از اون چیزهایی که سمت چپ بود و من دیگه نیازی نبود برم روزهای متوالیشو محاسبه کنم و البته یه پله شکیل‌تر نسبت به این چیه نمایش اون با یه ماتریسه من اینو بیام با یه ماتریس اندر ان نشون بدم که n تعداد استیتام باشه من اینجا دو تا استیت دارم با یه ماتریس دو در دو نشون بدم بگم آفتابی بارانی آفتابی بارانی بگم آفتابی آفتابی احتمالش چنده ۷۰ آفتابی بارانی سی همین شکل رو که جمع سطراش یک میشه رو حالا این دفعه با این نگاه بیانش بکنم که این حالا میتونه برای ما کار بکنه حالا این اتفاق جالب مثلاً فرض کنید از شما

با چه احتمالی پس فردا آفتابی است یادتونه عددشو ۶۱ برای اینکه این کارو بکنی اگه اسم اینو بزاریم تی یا تی به توان یک این تی رو یه بار در خودش ضرب کن ضرب ماتریسی بکن اتفاقی که میفته درایه‌های اون ۴ تا درایه براش محاسبه میشه دیگه بالایی سمت چپ نماد اینکه دومی آفتابی باشد اگر پریروز آفتابی بوده باشد درایه بعدیش اینه که اگر پریروز آفتابی باشد از فرداش در واقع باران باشد و الی آخر و این اتفاق جذابی که میفته و شما به راحتی با یک در واقع ضرب ساده ماتریسی میتونید به یه همچین ظاهری برسید و چیکار کنید عرض به حضور شما آنالیز بکنید که خب اوکی اگر این تی به توان یک باشه سمت چپیه یعنی اینکه در مورد فردا داره اطلاعات بهتون میده اگه امروز آفتابی فردا آفتابی چنده و فلان فلان و ولی این دومی که این سیاه ضرب در سیاهی شده یعنی دوبار در

۶۱ صدم داره نمادی از این باشه که اگه امروز آفتابی باشه پس فردا با چه احتمالی آفتابی که جمع اینا رو همه رو تو خودش دیده و شما دیگه نیازی نبود که اون آنالیزها رو انجام بدید و این خبر خوبیه که ما می‌تونیم به فرم فشرده و بسته ماتریسی بنویسیم و این کارو در بیاریم اما این سوالایی که داریم میگیم آیا به درد ما می‌خوره ما داریم مثال‌هایی می‌زنیم که به نظر میاد حداقل تو مدل‌های ما نیست اجازه می‌خوام اینجا سه تا مثال براتون بزنم خب و ازتون بعضا میخوام که روی این مثال ها اون چیزایی که میخوام بیان بکنیم سه تا مثال معروفی که براتون میزنم اینست یک پیش بینی وضع هوا خب از روی چیز از روی همین آفتابی بارونی بودن میتونه این باشه آشپزی مادرتون یا خودتون در منزل خب آشپزی در منزل به نظرتون اگه شما بخواید مدل کنید غذایی که مادرتون فردا درست میکنه تابعیت

روز داره یا نداره این تقریباً همه کله‌های همچین حرکتی رفت خب و این نشون میده که آره این مثلاً مادر یه قورمه سبزی درست کرده در عین حال یه قورمه سبزی می‌تونه جذاب‌ترین غذایی باشه که در واقع چیزن می‌تونه تو سفره ایرانیا باشه البته ذائقه خودم دارم میگم میگفت این جوکرم بگم ادامه بدیم میگه من خوب شد ما این اصل حجر زندگی نمی‌کردیم من اصلا نمیدونستم قورمه سبزی ها کجا زندگی می‌کنن که بخوام برم شکارشون حالا عرض به خدمت شما اینکه حداقل نشون میده که غذای دیروز لااقل تاثیرشو میذاره رو فردا ها پس این مدل دقیق تری آشپزی در منزل میتونه در واقع با این مدل های مارکوف مدل بشه هنوز در مورد مخفیش صحبت نکردیم خب فعلا داریم در مورد مارکوف صحبت میکنیم بهتون میگم هنوز وقتی مخفی نگفتیم چیه خدمتتون عارضم که فرض کنید که یه ربات دارید که میخواد تو این در واقع

دانشکده جابجا بشه نقشه دانشکده موجوده مثلاً اینجا کلاس جی ۱۳ است میره بعداً کلاس اگه وجود داشته باشه جی ۱۴ است بعد مثلاً جلوش یه کلاس دیگه است و راهرو هم براش مجازه فرض کنید اینجا هم بسته است خب فعلاً این فرض رو میزاریم که حرکت ربات یا موقعیت‌های ربات گسسته است فعلاً پیوستگیشو فراموش کنید مثل مثلاً بازی پکمن خب فرض کنید ربات یا میتونه اینجا باشه یا اینجا باشه یا اینجا باشه بره تو این اتاق و الی آخر و تو این نت ها جابجا شه خب زنجیره‌ای که برای میتونم بکشم اینه که اوکی ربات بین این دو تا میتونه بره و بیاد بین این دو تا میتونه بره و بیاد بین این دو تا هم میتونه بره و بیاد ولی از این به این مستقیم نمیتونه بره و بیاد درسته و الی آخر خدمتتون عارضم که ممکنه این فرض رو براش بزارم که اینجا که رسید میتونه قطری هم بره و براش یه چیزایی اضافه‌تری در نظر بگیرم خب و یک گراف تشکیل بدم حالا فرض کنید ربات

استیجی که هر لحظه ربات داره برای ما چیه به نظرتون اون چیزی که ما می‌خوایم مدلش کنیم این چیو من استیت تعریف می‌کنم اینجا موقعیت ربات درسته چیو دارم اندازه‌گیری می‌کنم با جی پی اسم همین موقعیت ربات همون چیزی که دارم اندازه‌گیری می‌کنم و چیکار می‌خوام براش مدل ارائه بدم پس این هنوز مدل مخفی نیست ها مدل مخفی مارکوف یه چیز دیگست یه مدل مارکوف میخوید ارائه بدید که اینو ببینه اوکی با این ماتریس های که بهش گفتیم مثلاً ترانزیشن اگر فلان جا باشد با چه احتمالی میره اینجاها خب اوکی مثلاً فرض کنید من ۲۰ تا نقطه قرمز براتون کشیده باشم طبیعتاً ماتریس انتقالش یه ماتریس چند در چنده ۲۰ در ۲۰ خواهد بود که میتونه کلی درش هم صفر باشه یعنی چی مثلاً اگه اینود یک باشه خب توی نده یک با یه احتمالی تو خودش باقی میمونه مثلاً ۴۰

با ۶۰% فرض کنید میره نود ۲ و بقیه صفر صفر و هیچ وقت به از یک به سه نمیتونه بپره یعنی شما اگه یه وقتی متوجه شدید رباتتون تو نود یکه تو بعدی حالا بنا به داده‌هایی که گرفتید ۴۰ درصد سر جاش باقی مونده ۶۰% رفته بعدی اگه بخواد یه دونه عدد بالاتر رو میگم احتمالاً رفته بعدی ها و اینو می‌خوام مدل ارائه بدم و این ماتریس n در n رو در نظر میگیرم که همون چیزی که دارم میبینم رو داره برای من چیکار میکنه مدل میکنه اوکیه خب اینو سوال های مختلفیه که می‌تونیم بگیم یا یه مثال دیگه‌ای هم که باز براتون بیان میکنم مثال های گوی و گلدا همون مثال های در واقع چی جبر جبر و احتمال دبیرستان اگر من سه تا گلدون داشته باشم که توی هر کدوم سه رنگ مختلف وجود داشته باشه مثلاً یا سه جسم مختلف نمیدونم گردالی ستاره و مثلاً مثلث حالا به تعداد متغیر تو هر سه

هر سه تاش هست یا تو چهار تا سبد دارم ولی آخر فرض کنید که حالا یه سری سوالایی ازش پرسیده میشه که می‌خوام براتون بگم چه جوری اینا رو مدل می‌کنیم و فلان و این مدل‌های مارکوف یا مدل‌های مخفی مارکوف چه جوری به ما کمک می‌کند خب با این توضیحات بریم حالا سر مثال آقای چیز خود در واقع جزوه آقای دکتر ویسی میگه فرض کنید وضعیت هوا رو من این دفعه بگیرم بارونی ابری آفتابی اسمشم می‌ذارم استیت یک استیت دو استیت سه با اس نشونش میدن اینا رو خب تو مدل های مارکوف و اینم شکل چیه اون گرافیشه که بهتون گفتم این الان حرفش اینه که اگر امروز چی باشد برفی باشد فردا ۳۰ درصد آفتابیه ۴۰ درصد فرداش برفی خودشه و چی خدمتتون عرضم ۳۰ درصد ابری میشه خب حالا آیا لزومی داره تو مدل های شما همه به همه وصل باشن نه خب اینی که ارگاتیک‌ها چی هستن و فلان و اینا رو الان کاری نداریم خب مثلا است ساختارهای وجود دارند که اگر از

برگردید خب ولی ساختارهایی هم وجود دارند که از هر کدومش شروع کنید می‌تونید بالاخره احتمال حتی کمی هم داشته باشه شانس به شما میده که بازم برگردید تو اونجا که مثلاً هواها از اونا دیگه فرض کنید آقا آخرین باری که تهران برف اومده که کسی یادش نیست ولی بالاخره معنیش این نیست که قرار نیست تو مثلاً ۴۰۰ روز آینده برف نیاد حالا شده با یه احتمال پایینی این چرخه وجود داره ولی بهتون نشون میدم مدل‌هایی که اصلاً قرار نیست اجازه بده که شما برگردید اول نمونه اش چیست اینایی که الان براتون نمونه‌شو می‌کشم و خدمتتون عارضم که ما خیلی با اینا کار داریم اتفاقاً عرض به حضور شما یکی توی انجام یه سری حرکت های ورزشیه خب مثلاً فرض کنید یه یه نفر باید دستشو اول جلو داشته باشه بالا ببره این کار کنه این کار کنه اگر درست انجامش بده بعد از جلو میره بالا دیگه و هیچ‌وقت هم به این برنمی‌گرده اینجا اگه استیت به صورت گسسته فعلا گفتیم پیوسته نداریم یک دو سه چهار تعریف بکنم

من یه استیت ۱ دارم یه استیت ۲ یه استیت ۳ یه استیت ۴ اگه بخوام مدل گرافیکشو ارائه بدم میگم از استیت یک یا تو خودش باقی می‌مونم یا میرم بعدی از استیت ۲ یا تو خودش باقی می‌مونم یا میرم بعدی چرا بچه‌ها به نظرتون دارم میگم تو خودش باقی می‌مونم چرا تو خودش باقی می‌مونم چرا در جا نمیرم بعدی آفرین چون ممکنه یکی کندتر تندتر انجامش بده ولی سنسوری که داره برای من داده میگیره ها حالا یا انقدی فرزه که داره هی می‌بینه که این مدام الان تو است که بعد رفت دو یا اینکه نه اینقدر ریتمش کنده که چی ممکنه درجا بره بعدی یه مدل دقیق‌ترش تو اینجور چیزا حتی اینه که شما از یک به سه هم وصل کنید یا از یک به چهار هم وصل کنید این باز برای چی اتفاق میفته جانم یا اشتباه رفتی و به قدری تند رفته که سنسور ندیده سیستم آبزرویشنتون ندیده اینو و باید اینو لحاظ بکنید خب دیگه کجا اینو داریم توی آنالیز کلام اگه

سامانه طراحی کنید که حرفو که شما می‌زنید به یه نوشتار تبدیل کنه مثلاً یکی میگه سلام یکی میگه سام خب حالا یا سلامشون لامشو انقدر یا مثلاً خفیف میگی یا سریع میگه که نمی‌شنوید و شما باز مدلاتون اینجوریه که یه س دارید که این هی مدام ممکنه تو خودش بچرخه تو چند تا فریم اول بعد بره بعدی بعد بره بعدی و اینا از اون سیستم های ارگادیک نیستن نمی‌ذارن شما بعد که رفتید به سومی مجددا به اولی برگردید ولی ما خیلی بهش الان کاری نداریم خیلی هم مفهوم هاش الان برای ما چیزهای مهمی نیست خب خدمتتون عارضم که تعریف کرده گفته که این ماتریس آی بزرگ و اسمشو می‌ذارم ماتریس استیت ترانزیشن یا احتمال انتقال حالت ها گفتیم اگر n تا استیت داشته باشیم باید n در n تا درایه داشته باشه درایه های هر سطح رشته جمع ش باید یک باشن درایه های قطر درایه آی جی نمادی از اینه که اگر الان تو آی باشی با چه احتمالی گام بعدی

E:\courses\LangChain Project\main root\data\SCR_Session18_transcript_part2.txt

یه چیزیو دقت کنیم هیچ وقت نمیگه که تو چندمین فریمت به آی رسیدی میگه ببین مهم نیست برام امروز روز سوم آنالیز تو یا روز چهارمته اگه امروز آفتابیه فردا چیه اوکی و نمیگه اگر روز دوم آفتابی بود به سوم با اینکه روز پنجم آفتابی بود به ششم فرق داشته باشه ها اینو نمیگه ها این باز فرض ساده شونده ماست یعنی ما الگوی چیزو یکسان لحاظ میکنیم ما مادر شما رو مادر شما رو تو الگوی در واقع چیزش آشپزیش یه دینامیک ثابت براش در نظر میگیریم یعنی فرض رو بر این نمی‌ذاریم که داره تغییر میده دیدگاه‌هاشو توی زمان‌ها و الی آخر خب و به اندازه کافی استیت شده خب خدمتتون عارضم که حالا سوال های مختلفی میتونه مطرح شه که گفتیم اگر امروز آفتابی باشد احتمال اینکه الگوی هفت روز آینده به ترتیب آفتابی ابری آفتابی باران باران آفتابی آفتابی باشد چند است بچه‌ها این ریاضیش بخوایم بنویسیم اینجوری میشه میگه پی

او به شرط مدل من اینا رو باز بکنم براتون او نماد آبزرویشنه که خودش یه مجموعه است یعنی توش او یک او ۲ تا او ان رو داره که اینجا او انمون او چند بود او ۷ بود ۷ تا مشاهده پشت سر هم داشت مدل چیه مدل اینه که شما شهرتون رو میشناسید یعنی ماتریس رو بهتون دادن مادرتونو می‌شناسید دینامیکشو ما یه پله سخت داریم ما مدلو نمیشناسیم و اول می‌خوایم مدل استخراج کنیم بعد حالا آنالیزش کنیم ما اینم تو برنامه‌مون داریم خب ولی فعلا فرض کنیم مدل رو میشناسیم یکی از یه جایی اینو به ما داده یکی از یه جایی به ما داده که این ماتریس‌ها درایه‌هاش چی می‌شه خب بچه‌ها این پی این هفت تا الگوی اس اس یک اس یک فلان به شرط مدل گفتیم توی مدل های مارکوف ساده شونده میشه احتمال اولی در احتمال دومی به شرط اولی در احتمال سومی به شرط دومی در احتمال چهارمی به شرط سوم

الی آخر درسته تا هفتمی به شرط شیشمی بچه‌ها من پی اچ ۳ رو خب چون میدونم امروز هوا آفتابیه چند باید جایگزین کنم احتمالشو چند باید بزارم یک میزارم چون اطلاع دارم امروز آفتابیه مثلاً می‌تونه یه جای پیچیده‌تر باشه بهت نگن روز اول چیه که خود پی اس اینجا یه حالا چیز داره مقدار اینیشیال داره که اونم باید لحاظ بکنید خب که میگه آقا من نمیدونم از فردا میخوای شروع کنی اصلاً نمیدونم فردا چه خواهد بود یعنی احتمال دیگه هم داره پس اینجا اولیش یک میزارم که اینجا با حرف پای در واقع یونانی نشون داده با اندیس سه این پی اولا سه و چها نیست خب و فعلا هم براتون مهم نباشه چیه میریم جلوتر بهتون میگم این فعلا یک بگیرید چون میدونستیم در واقع از این داریم شروع میکنیم بقیش چجوری بوده احتمال سه به شرط سه یعنی چی یعنی از ده آی سه باشه جی سه باشه برو تو ماتریس آ قرائت کن هشت دهم خب اوکی هشت دهم رو جایگزین میکنیم خب بعدی

۱ ۳ رو می‌خونید یا سه یک و سه یکو می‌خونید دومیه نماد اینه که روز قبلی اتفاق افتاد این بعدی پس یک دهم جایگزین می‌کنید و اینا رو در همدیگه ضرب می‌کنید بچه‌ها یه احتمال بدست میاد عددهایی که به دست میارید عددهای بسیار کوچیکین چرا بسیار کوچکی‌ان چون n تا احتمال که خودشون زیر یکه دارن در همدیگه ضرب میشن اولاً این بهتون داره نشون میده که چقدر تنوع حالت دارید خب بالاخره شدنیه دیگه و حتی احتمال یک درصد باشه داره شانس به شما میده که شدنیه بچه‌ها ما بعضی وقتا با خود این عدد کار نداریم ما با اینکه این عدده از یه عدد دیگه بزرگتر یا کوچکتره کار داریم همین ها این فقط می‌خوایم نگاه کنیم این عددی که اینجا بدست آوردیم احتمال این هفت تا باشه از احتمال فلان هفت تا بیشتر هست یا نیست همین و خیلی ممکنه خود عددش برامون مهم نباشه ماجرای دوم این عددا خیلی سریع

به صفر میل می‌کنند برای اینکه مشکل محاسباتی بر نخورید بعضاً متداوله که چیکار می‌کنند جاش که عدداتون نمیره و شما بتونید محاسباتتون زنده نگه دارید لگاریتم می‌گیرند ها تا عدد مثلاً به جای ۱۰ به توان منفی چهار حالا این دفعه ال انش یا لوگش بیاد و بعداً برش میگردونن حالا خوبیش اینه که تابع لوگاری تابع اکیداً یکنواخت هر چیزی بزرگتر کوچک‌تری هیچ تاثیر خاصی نمیذاره دیگه هر کی بزرگتر بوده الان هم بزرگتر باقی میمونه و الی آخر پس اینا رو گوشه ذهنتون باشه که بعداً رسیدیم بهش در واقع چیز نکنید خب سوال دوم این بود میگه امروز بارانیست خب البته اینا سوالی لزوماً جذابی برای ما مکانیکی ها نیستند احتمال اینکه دیروز متوالی بارانی باشد چقدر است خب اولاً امروز که بارانی نیست یعنی اس اول من باید یک بزارم من خبر دارم بارانی نیست خب s بعدی باید برم احتمال باران بشم

به شرط بارانو ببینم دیگه اس بعدیش دوباره باران بشم به شرط باران تا کی تا چند روز تا دیروز بعد روز بعدیش چی احتمال غیر باران به شرط بارانو ببینم ها که مثلاً میشه یک منهای احتمال اون حالا اینجا اگه درایه مثلاً باران معادل آیومین سطر و ستون آیاومین سطر ماتریس آ باشه اینجا آ آی آی میشه در واقع احتمال اینکه بارون بعدی بارون بیاد و یک منهای آی آی میشه چی احتمال اینکه دیگه بارون نیاد درسته حالا هر چی میخواد باشه باشه ها ابری بشه آفتابی بشه و اینو باید دی بار دی منهای یک بار دارم ضرب کنید چرا یکی کمتر چون اولی رو که دارم حالا بستگی داره سوال چجوری مطرح بشه و اینو اسمشو میزارم حالا پی اندیس آی دی و این احتمال دی روز متوالی توی اتفاق باقی موندنه خب و حالا یه پله بعدش باز سوالش سخت تر

خیلی کارش نداریم میگه به نظر شما متوسط تعداد روزهای پشت سرم آینده که مثلاً از آفتابی شروع کنیم و تو آفتابی‌ها باقی بمونیم تو اون شهر چنده اگه ماتریس آرا داشته باشیم میگه اوکی یک بار فرض کن یک روز بعدش آفتابی یک بار فرض کن دو روز بعد تا بی‌نهایت روز بعد خب و اینا رو با هم جمع بزن حالا اکسپکتیشن بگیر خدمت شما عارضم که این دیوار برو حساب بکن که عدد شده یک تقسیم بر یک منهای آی این جواب نهایی ساده کرده گفته مثلاً اگر من احتمال آفتابی به شرط آفتابی دو دهم باشه یک تقسیم بر ببخشید آفتابی به شرط آفتابی هشت دهم باشه یک تقسیم بر یک منهای هشت دهم میشه یک تقسیم بر دو عدد پنج بدست میاد یعنی تو این شهرره وقتی یه روز بارونی آفتابی میشه احتمال اینکه آفتابی باقی بمونه پنج روز متوالیه خب احتمالاً روز ششم به یکی دیگه از حالت های دیگه تغییر پیدا میکنه و این عدد برای بارندگی یا ابری عدد کمتری

اینجا هشت دهم بود و این سبب شد روزای بیشتری باشه اینا سوال‌های مختلفی که از این در میاد خب نوشته تا الان تمام چیزهایی که ما داشتیم آنالیزش می‌کردیم که بهشون میگفتیم استیت یا حالت با اون چیزی که یا چشم شما داشت می‌دید یا سنسور شما داشت میدید یکی بود خب ولی یه سری جاها هستن که این اتفاق نمی‌افته و شما یه چیزهای پنهان دارید به نام استیت ولی یه چیزهای دیگه رو میبینید به نام آبزرویشن و الان باز میخویم مدل دینامیکی ارائه بدیم اینجا بهش میگن مدل مخفی مارکوف یا هیدن مارکوف مدل کجا اینو داریم فرض کنید که مادر شما توی آشپزی کردنش یه چیزی به نام مثلاً آفتابی یا ابری بودن هوا رو لحاظ بکنه

یا عصبانیت یا غیر عصبانیت خودشو لحاظ بکنه ها حالا چی میشه حالا اون عصبانیت شما ممکنه نبینید ولی براتون استیت باشه که عصبانی هست یا نیست ولی ببینید چی درست کرد ماکارونی درست کرد مرغ درست کرد و و این میشه آبزرویشن خب دیگه کجا داریم توی در واقع تبدیل گفتار به نوشتار برای مثلاً توسط ربات چرا این اتفاق میفته چی هیدن چی داره آبزرو میشه فرض کنید ربات شما می‌خواد که گفتار یه آدمو به نوشتار تبدیل کنه چیو داره میخونه چیو داره آبزرو میکنه داردش داده های چی داده‌های صوت یا میکروفون که بر حسب ولتاژن ولتاژ زمان داره میخونه ولی قراره به چی تبدیلش کنه به سلام چطوری خوبی حالا اونا میشن هیدن استیت ها پس ماجرا اینه که شما توی مدل‌های دینامیکی که بعضاً می‌خواید ارائه

بدید اینه که یه سری چیزا رو به چشم می‌بینید یا سنسورتون می‌بینه به اینا میگیم آبزرویشن یه سری چیزا رو نمی‌بینید به اینا میگن در واقع هیدن استیت یا لیتنت استیت ها استیت‌ها یا در واقع حالت‌های نهان یا مخفی و به خاطر همین وقتی که بتونید اینجوری مدل ارائه بدید بهتون می‌گن شما یک مدل مخفی مارکوف یا هیدن مارکوف مدل ارائه دادید حالا مثلاً توی مسئله هوا شما ابری و جاش به چشم می‌بینید اگه شما آبزرور بودید و استیت هاتون هم این بود اوکی این کار میکرد ولی فرض کنید شما به جای ابری بارون نیست یه مشتی سنسور گذاشته بودید سنسورتون چیو اندازه می‌گرفت رطوبت دما فلان حالا استیت چیه آبزرویشن چیه بلند بگید استیت چیه همون همون آفتابی بارونیه است آبزرویشن میشه دما یه وقت میتونه برعکس باشه یه وقت اینه که شما دارید به چشم

آفتابی بارونیو می‌بینید استیتتون کم فشار پرفشاری هواست یعنی برعکس نگاه می‌کنید به داستان ها آبزرویشنتون اینه استیتتون اونه و اینجا بچه‌ها این مدل‌ها رو ارائه میدن حالا براتون اینجا شکلشو می‌کشم ولی میریم یه بار مرور میکنیم میگه فرض کنید که اینا هیدن استیتن خب یا لیتنت استیتن که عموماً تو منابع از زد براشون استفاده میشه باز اینجا یه خواهشی دارم ازتون این زد رو با اون زدایی که توی نیرون های شبکه عصبی داشتیم اشتباه نکنید خب میگه هر استیتی داری این اتفاقا براش میفته خب این دفعه یکم مدل پیچیده‌تره می‌خوایم ریاضیش با هم بحث کنیم خب هر استیت سبب میشه که شما یه آبزرویشن تو اون زمان داشته باشید اینی که مادرتون اون روز عصبانی هست یا نیست ولی بالاخره یک نواری به شما میده خب پس شما یه ناهاری رو دارید به چشم می‌بینید

در واقع دینامیک رفتار ایشون توی فردا و پس فردا تابعیتی از چیه تابعیتی از ماکارونیشه یا تابتی از حالت چیزش گرفتم استیتش گرفتم استیت گرفتم پس این استیت امروز که با یه دینامیکی استیت فردا رو به شما میده و دوباره اون استیت فردا به شما یه آبزرویشن میده و اینجوری میتونید مدلتون رو تا ابد ببرید جلو به این آبرویشن ها ایکس یک ایکس دو تا ایکس تی بزرگ میگم که داره ته ماجرا رو میبنده و به لیتنت استیتام زد یک زد دو تا چی زد تی اسمشو میزارم و اینجوریه که اینا اینو داره میده اتفاقای که داره میفته اینه اولاً استیت زد تی فقط تابع تی منهای یکه یعنی همونطور که مدل ساده ترین مدل رو لحاظ کردیم البته میتونستیم پیچیده ترش کنیم تا به یکی

۲ الی آخر نبود و در ضمن یه چیز جدیدی که اضافه شده قبلا نبود اینه که زدتی خودش یه ایکس تی رو تولید می‌کنه حالا بیایم مثال بزنیم ببینیم کیا این اتفاق می‌افتن و می‌خوام علاوه بر ماتریس آ یه چیز دیگه هم کنارش براتون تعریف کنم خدمتتون عرض کنم همین مثال رباته رو در نظر بگیرید ربات آرش که میخواد توی در واقع ساختمان دانشکده بگرده فرض کنید که ربات به جی پی اس دسترسی نداره یا جایی که جی پی اس کار نمیکنه فکر میکنید چجوری میتونه پیدا کنه که کجاست چه ایده ای دارید چیکار کنه بالاخره می‌خواد راه بره بعد میخواد ببینه کجاست خب دیدن دیدن یعنی چی به زبان در واقع سیستم اکاترونیکی میشه یعنی چی داره الان یه دوربین داره یه دوربین داره فرض کنید که فرض کنید که

می‌خواد بدونه کجاست مجدداً استیتای من اینه که کجاست یعنی مجدداً استیتا همین نقطه‌هاست ولی به جای اینکه مستقیم داده جی پی اس بهش بدیم که همونی بود که اونجا بود بره یه دوربین داشته باشه کف زمینو عکس بگیره حالا فرض کنید مثال شاید تو دانشکده خیلی شفاف نباشه ولی تو خونه کار کنه تو خونه شما یه جاهایی فرش دارید یه جاهایی سرامیک دارید یه جاهایی کاشی دارید البته میتونه یه جایی دوتاش هم باشه یا یه فرش تکراری میتونه تو اتاق مختلف هم باشه اینجا استیت چیه آبزرویشن چیه من بعد نمی‌شنوم حقیقت یکی بلندتر بگه یکی که اعتماد به نفس داره آره عکس هایی که گرفته خب مثال دیگه فرض کنید که من ان تا گلدون دارم که تو هر کدوم ام نوع رنگ مختلف مهره وجود داره خب

من نمی‌بینم آدمی که وقتی بهش میگم یه مهره رو بیار بیرون اون رنگشو به من اعلام می‌کنه ولی بهم نشون نمیده از تو کدوم گلدون داره در میاره و در ضمن برای خودش یه دینامیک و الگویی داره که وقتی الان گلدون یکه بعداً با چه احتمالی بره گلدون کدومو برداره مثلاً از ۱ به ۲ احتمالش ۹۰% یعنی احتمالاً بعد یک میره ۲ ولی به شما اینو نمیگه فقط به شما اعلام می‌کنه سبز آبی قرمز قرمز سبز خب و تو همه این گلدون ها همه چیه در واقع یارو چیه آبزرویشن چیه نمی‌شنوم رنگه رنگ آره رنگی که بیان میشه آبزرویشن داره اعلام میکنه میگه این سبزه این قرمزه استیت چیه که من نمیبینمش و هیدنه شماره گلدون است ها توی مسئله هواشناسی هوای کم فشار پرفشار میتونه نماد باشه ها و یک مثال جذابی بزنم اینو پیدا کردم باز تو اینترنت

خیلی چیز جالبی بود ارزش داره بهش نگاه کنیم خدمتتون عارضم که مثاله رو بیارم اینجا الانم البته دارید می‌بینیدش دیگه ها یعنی کیفیت دیدنش اجازه بدید یکم چیزش کنم فول اسکرینش کنم بعد بریم رو پرده خب میگه این مثال براتون میزنم میگه فرض کنید یه داور مقاله‌ای داریم یه داور ژورنالی داریم خب که مقاله‌ها رو یا اکسپت میکنه یا ریجکت سبزها نماد اکسپتن قرمزها نماد ریجکتن این داوره میتونه عصبانی باشه می‌تونه حالش خوب باشه خب و این چی می‌شه پس اینم می‌شه حالت‌های دیگه حالا چیزی که داره به شما اعلام میشه اینه که مقاله‌ای که داوری کرده اکسپت شده ریجکت شده این یعنی چی یعنی چیو داره به شما میگه آبزرویشن رو داره میگه اینی که حالش چطوره و شما می‌خواید براش یه مدل ارائه بدید چیه استیت ماجراست خب پس این نماد اون زد است و اینم

پول اضافه بهشون میدن رو میزهای شیشه‌ای مثلاً بازی می‌کنن از زیر دوربین می‌گیره آقا روزای اول به شما داده داده یا خودش یا یکی اطرافیانش میگه ببین روز اول حالش خراب بوده زده مقاله رو ریجکت کرده روز دوم خراب بوده زده ریجکت کرده سوم خراب بوده ریجکت چهارم حالش خوب بوده ولی ریجکت کرده پنجم خوب بوده اکسپت کرده بعد خراب بوده اکسپت کرده و و این چیزایی که دارید میبینید حول و حوش ۱۶ روز رو به شما گزارش داده خب خب هیچ چیز دیگه هم نگفته حالا این شمایید که باید برید یه سری مدل در بیارید دیگه آیا همون ماتریس آی قبلیه کافی بود یا نبود آیا به چیز دیگه من اینجا احتیاج دارم یا ندارم و اینا حالا چیزایی که می‌خوایم روش صحبت کنیم بچه‌ها اون آ قبلیه که اندر ان بود کافیه کافی کافی نیست و یه چیز دیگه هم احتیاجه خب و حالا می‌خوایم در مورد اینا صحبت بکنیم ولی همینایی که می‌گمو یه دور با هم بریم جلو من با همین ۱۶ تا چند تا چیزو

اولاً اینکه کلاً اگه بخوام دید داشته باشم دید داشته باشم هر کدومو فرض کن نماد شروع بگیرم یه بار کرنومترمو بذارم روز اول یه بار بذارم رو روز دوم یه بار روز شانزدهم درسته این چند بال‌ها چند بار حالش خراب بوده چند بار خوب بوده ۱۱ بار از ۱۶ بار خراب بوده چی ۵ بار خوب بوده این یعنی چی این یعنی که اگه بهتون نگن حالش چطوره شما احتمال میدید که چیه حالش خرابه یعنی ۱۱۶ دو برابر اینکه حالش خوب باشه حالش خرابه خب با این برای این آدم شروع می‌کنید خب خدمتتون عارضم به اینا که میگم نگاه کنید ولی بهتون میگم از کجا اومدن بهتون میگم از کجا ولی اینایی که میگم نگاه کنید اینی که چند بار حالش در واقع خراب بوده مقاله رو ریجکت کرده بشماریم اینو اینجا خراب ریجکت کرده این یکی دو تا سه تا اینجا نه چهار تا

۵ تا ۶ تا ۷ تا ۸ تا ۹ تا ۱۱ بار حالش خراب بوده از ۱۱ بار ۹ بارش ریجکت کرده اینا همه نمادی از یه احتماله میگم کجا به کار میاد فقط می‌خوام دید داشته باشی طبیعتاً دوبارم چی در حالی که حالش خراب بوده اکسپت کرده اونورشو نگاه کنیم چند بار از اینکه حالش خوب بوده مقاله رو اکسپت کرده و ریجکت کرده برید بشمارید کلا پنج بار حالش خوب بوده دوبار اکسپت کرده کلا آدم سختگیری خب یعنی ربطی نداره حالش خرابه یا خوبه یعنی دستیش ملسه خدمتتون عارضم که اینم اینم داده که به دردمون میخوره دیگه چه داده‌ای داشته باشیم به این نگاه کنید وقتی حالش خرابه با چه احتمالی فرداش هم حالش خرابه بشماریم اینجا حالش خرابه فرداش خرابه این یه حالت اینجا حالش خرابه اول کلاً بشماریم چند بار حالش خراب بوده چند بار

خراب بوده دیگه خب یکیش آخریشه کم کنیم چون فردایی براش وجود نداره ۱۰ بار از این حال خرابی‌ها فردا داشته قبوله حالا از این ده بار چند بارش که خراب بوده فرداشم خراب بوده ۸ بارش خب پس این وقتی تو استیت حال خرابه تخمینی که من دارم برای مدلم اینه که چی با ۸۰ فرداشم خرابه ولی با ۲۰ درصد میره تو چی میره تو استیج خوب و طبیعتاً همینو میتونید بشمارید که وقتی خوبه با چه استیتی با چه احتمالی تو استیت خوبش باقی میمونه و الی آخر اتفاق جالبی که داره میفته اینه که شما به این هشت هشت نگاه کنید چیو داریم می‌سازیم همون ماتریس آ رو داریم می‌سازیم زمانی که چیزی به نام هیدن استیت وجود نداشت الان که این رفته هیدن اوکی این آ سر جاش بالا هست ولی یه اتفاق دیگه میفته یه سری احتمالات جدید اضافه شدن وقتی حالش خرابه

بازم اون به شما یه آبزرویشن می‌دهد ها یه احتمال باید اینجا حساب بکنید وقتی حالش خرابه با چه احتمالی ریجکت می‌کنه با چه احتمالی اکسپت همینطور وقتی حالش خوبه حالا این سوال من از شما می‌پرسم تو مثال ربات آرشی که اومد تو اتاق گشت و جی پی اس نداشت و دوربین میرفت زیر پاشو می‌گرفت خب همینا رو برام توضیح بدید اولاً این فلش‌های بالا معادل چی اند یعنی من اگه اون بالاشو میخواستم تشکیل بدم باید چی می‌کشیدم برای آرش مکان‌های مختلف با گراف به هم وصلش میکردم احتمالا روش میکشیدم از یک به چه احتمالی تو یک باقی میمونه با چه احتمالی میره دو الی آخر قبول اینکه قبول این معادل این چیه اینجا که فلش‌هایی که اومدن پایین که مقاله اکسپت ریجکت شده برای آرش چی میشد حالا آها اینی که اینی که وقتی تو فلان جاست خب

با چه احتمالی این عکس رو گرفته خب یه همچین چیزی البته من ممکنه برعکسشو بخوام ممکنه بخوام وقتی این عکسو گرفته با چه احتمالی تو فلان جاست ولی اینو داره میگه دیگه این فلش از بالا پایین اینو داره میگه که وقتی تو فلان جایی با چه احتمالی عکست فرشه با چه احتمالی سرامیک الی آخر برای خودتون تو ذهنتون داشته باشید این اگه نتونید جا بندازید تا آخر اینقدر فرمول های ریاضیش اعصاب خورد کنه نوشتارش هیچی نمی‌تونید دنبال کنید من متاسفانه روز اول مارکو خوندم اونوری خوندم رفتم ریاضیاشو خوندم هیچی نمی‌فهمیدم یعنی اصلا نمیفهمیدم استیج چیه فلان چیه و خیلی تلاش کردم چون زخم خورده هستم و همینطور قبلاً به بچه‌هام گفتم یکی از در واقع جذابیت ها افتخارات زندگیم اینه که از شاگردام در واقع هوش کمتری دارم و این خیلی خبر خوبیه یعنی من همیشه سبب میشه که بیام تا حل یعنی خیلی چیزهای ابتدایی تری رو بگم دیدم خستتون می‌کنم ولی دوست دارم همینجا جا بندازم این ویژگی شخصیتی

خدمتتون عارضم که اینا رو دیدید و این چیزایی که میشه روش حرف زد آنالیز کرد اینکه اگر امروز خوشحال باشی با چه احتمالی فردا خوشحالی اگه امروز ناراحت باشی با چه احتمالی فردا ناراحتی و این چیزایی که به نظر میاد داره به کار میاد حالا بریم سر مدل سازی ریاضی و این دفعه خیلی با دل و جرات تر میتونیم بیان بکنیم که چیه مثال گوی و گلدانو گفته گفته که فرض کنید که تو هر کدومشون می‌تونید تعداد مختلفی نگویی داشته باشید خدمتتون عارضم که ولی مثلاً سه رنگ یا چهار رنگ مختلف وجود داره تعداد گلدان ان تاس تعداد مثلاً رنگ ها ام تاست میگه اگر به شما نگن از کدوم گلدان برداشتن همون شماره گلدان میشه استیت هاتون رنگ های که اعلام میشه میشه چیزاتون آبزرویشن هاتون بچه ها تعداد گوی های داخل هر گلدان بیان نشد این کجا داره تاثیرشو میذاره مثلاً نگفتن که گوی گلدان اول ۲۰ تا داره

توی احتمال چیز داره تاثیرشو می‌ذاره تو احتمالی که با چه از این گلدان بکشم بیرون رده فلانه اینجا اون عدده اونجا تاثیر گذاشته بچه‌ها به این اندیس‌ها بچه‌ها داره بی اسمشو می‌ذاره دقت کنید ها بی ۱ بی ۲ الی آخر چیزی که مشخصه انگارن من در کنار آب یک ماتریس دیگه‌ای به یه بردار دیگه‌ای به نام بی احتیاج دارم توی مدل های هیدن اینو لحاظ کنید و هر بی به نظرتون چند تا درایه داره هر بی هر بی برای هر گلدان چند تا درایه داره من به ازای ان تا ان تا بی دارم خب ان تا گلدون دارم پس ان تا بی دارم هر بی چند تا درایه داره مثلاً تو مسئله گلدون ها اگه چهار تا رنگ داشته باشم چند تا درایه داره دقیقا چهار تا تو مثال های آرش میومد عکس می‌گرفت چند تا درایه داره

به تعداد تنوع عکس‌هایی که داره زیر پاش می‌گیره کاشی و سرامیک و فلان و فلان باید به این تعداد درای داشته باشه حالا یه عده هستن تو کدهاشون کل اینو می‌چسبونن تنگ هم یه ماتریس بی بزرگش میکنن پس طبیعتاً ماتریس آ میشه ان در ان درسته ماتریس b میشه چی ام در ان ام به خاطر اینکه ام تا درایه داره هر کدوم از گلدونا ان بخاطر اینکه n تا گلدون داشتن ها پس من علاوه بی احتیاج دارم میگه چیکار بکن میگه که الان اینا رو گفته که اینا رو براتون خدمتتون گفتم ماتریس ان در ان داره چیو بیان میکنه معادلش چیه یعنی تو فیزیک داره چه اتفاقی میفته اون ان در ان بود ماتریس آ داره چیو بیان میکنه تو فیزیک تو واقعیت یه مشتی درایه داشت توش دیگه تو هوای ابری بانی میگفت احتمال اینکه از ابری بریم بارونی از بارونی تو بارونی بمونیم الان داره چیو میگه

احتمال اینکه اون آدمی که من نمی‌بینمش از گلدون یک بره ۴ حالا از ۴ بیاد ۲ از ۲ بمون و الی آخر این داره نشون میده b چیه b اینه که وقتی تو گلدون ۲ احتمال اینکه سبز بیاره بیرون چقدره اینا احتمالاً شرطی‌اند دیگه خب خب اوکی پس یه سری یه سری فرض هم ما می‌کنیم اینکه مشاهدات توابع احتمالاتی از حالت‌ها یا استیتا هستن که مادرتون وقتی میخواد آشپزی کنه حال دلش خوب باشه یا نباشه تاثیر داره اینکه دنباله حالت ها متاسفانه قابل مشاهده نیستند برای ما مخفی هستند خیلی وقتا این اتفاق میفته این که فرض وابستگی درجه اول میکنیم ما فقط آینده را به یک لحظه از گذشته ربطش میدیم و اتفاقاً کار ما رو راه میندازه و در ضمن مشاهده ها فقط به حالت ها بستگی دارند و به همدیگه بستگی ندارن خب این نماد گرافیکی که میشه براش کشید زد یک تا زد ان لیتنت در واقع چیزها هستند

هستند و اینا آبزرویشن‌هامون هستند که صحبت کردیم حالا می‌خواد تعریف کنه به صورت ریاضی اگه درجا می‌رفتید سر این ممکن بود خیلی از این داده‌ها رو از دست بدید میگه که شما یک مدل مخفی مارکوفتون یه همچین چیزایی باید داشته باشه تا بتونید به صورت یکتا اونو تعریفش بکنید عناصری که داره اینه اول باید بدونید چند تا استیت دارید خب فعلاً بچه‌ها فرض می‌کنیم که تعداد استیت ها گسسته است ها یعنی حتی برای اومدن ربات به اتاق فرض نمی‌کنیم ربات میتونه پیوسته بیاد فعلا فرض کنید تو یه سری نقاط فقط جابجا میشه جلو عقب میره اوکیه و تعدادشون متناهی در نظر بگیرید اسمشو گذاشته اس یک تا اس ان بزرگ اوکی که گفته توی مثال گوی و گلدان گلدان ها بودن خدمتتون عارضم که میگه که هر استیتی به استیت دیگه و یا به خودش با یه احتمالات آی آی جی احتمال گذر داره خب که ما نمیبینیمش البته بعد میگه که فرض کنید آبزرویشن های ما میتونن ام تا باشند

۱ تا بی ام باشد حداکثر ام تا مختلف مثلاً توی گوی و گلدان ۴ رنگ مختلف ۵ رنگ مختلف داشته باشند ۲۰ تا گلدون پنج رنگ مختلف ان میشه ۲۰ ان میشه ۵ درسته خدمتتون عارضم حالا اینجاها رو نگاه کنید میگه آ آی جی معادل چیه از لحاظ ریاضی میگه که میشه احتمال اینکه شما تو استیت قبلیتون تو اس آی باشید استیت بعدیتون تو اس جی باشید اوکیه اینو میپذیرید پس این میشه معادل جی میگه کیو نماد استیت بچه ها نماد چیزهایی که نمیبینیمشونه بعدا او را نماد آبزرویشن ها میگیره پس کیو میره برای سمت اس که نمیبینیمشون او میاد سمت اونایی که میبینیمشون میگه که آی آی جی نماد اینه که احتمال لحظه بعدی برید تو جی به احتمال لحظه قبلی تو آی باشه چنده یه اتفاق جالب و عجیب هیچ وقت بهتون نمیگه این آی آی جی یه

هیچ فرقی برای من نداره شما اگه توی استیت تو لحظه دوم تو استیت مثلاً ابری باشی با همون احتمال میری روز بعدیش بارونی که روز پنجم ابری باشی با همون احتمال میری میگه این مدلو من این فرض ساده شونده رو دارم و گفتم این معادل اینکه مادر شما دینامیکشو عوض نمیکنه تو آشپزی یه چیزی داریم به نام احتمال اولیه حالت‌ها این کجا مهمه اگر دیدید امروز ابریه اوکی طبق اون شروع می‌کنید از ابری ازگ شروع می‌کنید و محاسباتتون انجام میدید ولی بعضی وقتا شما نمیدونید که روز اولتون کجا هستید اینجا هم شما باید چیکار کنید احتمال بدید این احتماله رو با پای اندیس آی نشون میده به تعداد در واقع چیزا به تعداد استیت ها عدد توش وجود داره و جمعشون هم باید یک بشه مثلاً شما می‌گید سه تا استیت دارم ابریریم بارونی‌

۷۰ درصد تو این شهر رفتم آمار گرفتم بارونی بوده ۱۰% ابری بوده ۲۰ درصد فلان بوده پس این عددا رو برای شروع دارید وقتی هیچ ایده‌ای ندارید تو این مثال پیپرا کدوم می‌شد حالا این عدده همینی که شمردیم گفتیم که این در واقع ۱۱ بار برادرمون ناراحت بوده پنج بار خوشحال بوده این حالت اول اگه بهتون نگن امروز حالش چطوره یا دیروز حالش چطور بوده ادامه بدید شما چون مجبورید چیکار کنید چون مجبورید که از یه همچین احتمالی استفاده بکنید خب خدمت شما عارضم که ماجرای بعدی هم احتمال بعدی که تو اونو تو بردار بی میریزم تابع توزیع برای برای نماد کا در حالت جی خب فعلا شما فرض کنید که مشاهدات گسسته است یعنی که تعداد عکس هایی که میتونه بگیره شش تا پنج تا مختلف فقط مجزا یک دو سه چهار پنج خب

E:\courses\LangChain Project\main root\data\SCR_Session18_transcript_part3.txt

عکس یک عکس دو تا عکس ۵ میگه که بی جی کی میشه چی حالا میگه احتمال اینکه شما تو استیت جی‌ام باشید عکس یا خروجی کیوم رو ببینید ها مثلاً تو مثال گلدون چی می‌شه مثلاً بی اندیس توی پرانتز ۵ یعنی چی احتمال اینکه چی گلدون سوم باشه که شما نمیبینید رنگ پنجم در بیاد ها یه همچین چیزی و این را هم داشته باشید و حالا وقتی که شما آ ماتریس کل آ که ان در انه بی بزرگ که ام در انه و پای رو که یک در ان رو داشته باشید حالا کل مدل رو دارید و میتونید به یه سری مسائل جذاب پاسخ بدید ها مثل اینکه با چه احتمالی فردا و پس فردا بارونیه با چه احتمالی پشت سر هم پنج روز بارونی خواهد بود و حالا یه سری سوالات دیگه خب

و اگر به شما بگن مامانتون امروز ماکارونی فردا قورمه سبزی فرداش قورمه سبزی فرداش قیمه درست کرده حالت هیجانیشو تخمین بزنید که عصبانی بوده یا خوشحال بوده بیشترین احتمالی که می‌تونسته داشته باشه تا این الگو در بیاد از غذاش چیه شما میتونید با داشتن آبی و پای به این سوالات جواب بدید ما می‌خوایم این کارو با هم بکنیم و یه پله از اون که ما تهش دنبال اونیم و خاطر این وارد مدل شدیم اینه که ما اصلا بتونیم مدل بسازیم یعنی آبی که ندادن رو بسازیم با چی می‌سازیم با آبزرویشن ها و داده هایی که از بیرون می‌گیریم خدمتتون عارضم فرض کنید دارید شما آنالیز حرکت میکنید میخوید یا آنالیز صوت می‌خواید انجام بدید مثلاً فرض کنید به پنج نفر میگید بگن سلام به پنج نفر هم میگید بگن خداحافظ برای سلام ها یه هیدن مارکوف مدل در میارید برای خداحافظ

صوت جدید میاد یه بار بده به این یه بار بده به اون ببین کدوم احتمالش بیشتره هر کدوم بیشتره یعنی چی احتمال تعلقش به اون دسته بیشتره پس فرض من بر اینکه انشالله اون سلام بوده ها این کاریه که داشتن می‌کردن و دارن میکنن الان حالا درسته الگوریتم‌های دیپ اومده ولی قدیم با این کارا راه مینداختن و اگه یادتون باشه من آرنا آخراش یه چیزایی رو نگفتم گفتم وایستید اول هیدن مارکوف مدل رو بگم بعد برمیگردیم اون تیکه براتون تکمیل میکنم که ببینید از این استیت ها چجوری استفاده میکنه و از این الگوریتم های که اینجا خدمتتون میگیم که اونجا باز تو کارهای دیپ لرنینگ کار در بیاره خب پس با داشتن ماتریس آب بی بزرگ و پای که من کلا اسمشو میزارم لاندا دیگه من مدلمو چی مدل دینامیکی دارم توی مثال ربات بچه ها این آ و بی پایه که در میارید نمادی از چی اند بهم بگید تند تند آیه نمادی از این بود که اوکی با چه احتمالی از این نقطه به اون نقطه میرید بی نمادی

چه عکس‌هایی می‌گیرید وقتی تو استیت‌های مختلفید یعنی وقتی تو استیت یکی چه عکس‌هایی احتمالاً می‌گیرید تو استیت ۲ الی آخر پای نماد چیه شروع از کجاست این رباته مثلاً روزشو که شروع می‌کنه از کجا شروع می‌کنه احتمال داره با احتمال ۱۰۰% از یه جا شروع کنه مثلاً اونجا کجا باشه نقطه شارژش باشه یا آشیانه‌ش باشه مثلاً تو هواپیما توی مثلاً اتوبوس های در واقع پایان مسافربری اتفاق میفته هواپیمای خودرو باید بره اونجا پارت کنه ها و فرداش دوباره از اونجا شروع کنه دیگه پایه اینجوریه که یه جا یکی بقیه صفرن ولی رباته اگه اینجوری باشه که آزاد باشه هر جایی خودشو خاموش کنه این ربات میتونه جاروبر باشه جاروبر هوشمند مثلاً چی مثلاً یه عده حاضر وسط اتاقم ولش می‌کنن ولی مثلاً فرض کنید پروگرم شده جوری که وقتی تمام شد بره گوشه اتاقش وایسه فرض کنید سه تا حالت مختلف داره ولی بقیه جاها صفره مثلاً ۵۰ تا نقطه دارید مثلاً ۴۷ تاش صفرن سه حالت داره

خدمتتون عارضم فعلاً بیا گسسته فرض کنید خب من در مورد بی پیوسته صحبت خواهم کرد اول رو بگم بعد میگم حالا تو پیوسته‌هاش باید چیکار کنیم فعلا فرض کنید که مشاهدات ما کاملا گسسته است ها مثل رنگ گوی هاست مثل هوا آفتابی ابری فلانه مثل غذا ماکارونی یا نمیدونم فلانه چیزی بینابین نداره مثلاً قرمه مثلاً چه میدونم داشتم دو تا اسم میساختم می‌خواستم تلفیق هم بکنم مثلاً یه همچین چیزی نداریم فعلا این فرض نکنیم خب حالا شما مثل مدل های آر ان از این مدل های مخفی مارکوفتون میتونید تولید خروجی بکنید میتونید متن فیک بسازید میتونید حرکت فیک بسازید می‌تونید رباتتونو فیک جابجا بکنید تو خونه و یا اینکه یکی یه چیزی بهتون بگه مثلاً احتمالش محاسبه کنید آیا ربات می‌تونسته اصلاً همچین مسیری بره یا نه اگه احتمالش صفر شد یعنی چی نمی‌تونسته بره بعضی وقتا احتمال

پشت سر هم اومده باشه مثلاً یک به ۵۰ هیچ ربطی نداره مثلاً نوشته باشه آیا الگوی دو سه یک ۵۰ فلان فلان شده نیست یا نه احتمالش صفر در میاد میگید نه شدنی نیست یا از یه عددی کمتر در میاد اینا خیلی احتمالش ضعیفه خب و این اتفاق میفته حالا وقتی می‌خواید مدلتونو تولید کنید باهاش جنریت بکنید چیکار می‌کنید فرض می‌کنیم که شما مدلتون چیه مدلتون کاملتون در آمده است چیکار می‌کنید می‌خواید مدل شروع کنید به تولید کردن میگه خب میگه اول بیا چیکار کن اول بیا به پایانات نگاه بکن خب شما میخوید از استیت اول شروع کنید میگه بیاد به پایان نگاه بکن این پایه چند تا درایه دارند n تا درایه دارند دیگه ها یه احتما توش وجود داره حالت گردی یا هریسانه میگه کدومو بردار

بیشترینه رو بردار مثلاً اگه اولی بیشترین بود مثلاً هشت دهم بود بعد یک دهم بود بعد یک دهم بود بقیه صفر بودن گریدی میگه آقا حتما از اولی شروع کن اوکیه پس یه استیتو به عنوان کیو یک چیز خدمت شما عرض کنم زد یک مساوی با کیو یک برمی دارید خب یه همچین چیزی خب استیت اول باید یه آبزرویشن برای شما تولید کنه مثلا فرض کنید رباتتون اینجاست خب چه عکسی میگیره صددرصد کاشی درسته دیگه اگه ۱۰۰ کاشیه خب باید ۱۰۰% اونو می‌دید ولی اگر احتمال داره باز دوباره تاس میندازید یا گریدی نگاه میکنید چیکار میکنید انتخاب میکنید پس اینجا یه او یک برای شما تولید میکنه از روی کیو یک دیگه کاری نداره دیگه میرید تو آ و بی و پای آ و بی خودتون چجوری میرید سمت کیو دوتون

ماتریس آ بود احتمال رفتن از یه جا به یه جای دیگه به سطر آیومتون نگاه می‌کنید الان تو یکی باید به سطر یکمتون نگاه کنید سطر یکم فرض کنید درایه‌هاش هست سه دهم چهاردهم سه دهم یعنی چی یعنی به احتمال ۳۰% فرداام همینجا باش ۴۰ درصد برو بعدی ۳۰ درصد برو اونورکی درسته که دوباره یا تاس میندازید یا گردی انتخاب می‌کنید و می‌رید دوباره اینجا خروجی تولید می‌کنید و تا هر زمانی دلتون بخواد چیکار می‌کنید اینو ادامه میدید ها و اینجوری میتونید متن فکر تولید کنید صدای فکر تولید کنید خدمت شما عرض کنم حرکت فکری تولید کنید با این مدل خب بچه‌ها وقتی که خونتون عوض میشه یعنی طبقه عوض میشه برای ربات چه تغییری اینجا به وجود میاد چی تغییر میکنه اینجا چیا تغییر می‌کنند کل لاندا عوض میشه

کل لاندا که هم آ هم بی هم پای باشه عوض میشه پس این سه تایی که الان دارم برای طبقه همکفه سه تای بعدی برای مثلاً طبقه بعدی سه تای بعدی برای خونه شماست بفرمایید وقتی میگه سوال اینه گفته که شما یک دنباله تولید کن باید یکیشو انتخاب کنید ولی حالا سوالای دیگه‌ای مطرح می‌شه مثلاً با چه احتمالی سومین خونه‌ای که توش هستی اصلا هم برام مهم نیست که اولی و دومی کجا هستی اینم میشه حساب کرد شما باید بری تمام حالت‌هایی که سومی به این منجر میشه رو بری حساب کنی احتمالشو چه از خودش شروع شده باشه چه از اتاقای بغل و این همه رو حساب می‌کنیم خب خدمت شما عارضم که پس تمام شد دیگه با این الگو می‌تونید چیکار کنید میتونید هی مدام تولید کنید خب خدمتتون عارضم که من به این اسلاید کاری ندارم چون الان جی ام ام

مدل‌های مخفی مارکوف انواع مختلف دارند خب حالتی که خیلی برای ما مهمه و دوست داشتنی حالت‌های چپ به راسته که چی ۱ تو آنالیز حرکت‌ها خیلی مهمه مثل همین گفتم دست و بالا می‌بریم یعنی وقتی از این رفتین دیگه برنمیگردیم اگه برگشتی یعنی غلط انجام دادی درسته و یه حرکت دیگه است و یا اینکه تو گفتار مثلاً وقتی من می‌گم سلام اول میگم س بعد میگم لا بعد میگم درسته یه همچین اتفاقایی میفته تو این الگوها شما تو اس یک که هستید یا به خودش میتونید برید یا s دو از اس دو به خودش بعدی ها میتونید برید ولی به قبلی برمیگردید اتفاقی که اینجا میفته ماتریس آش جوریه که درایه های آی آی جی که جی کمتر از آی صفر میشن یعنی احتمالش صفر می‌کنه اصلاً نمی‌ذاره شما برید مدل شما نمی‌ذاره که بره عقب خب طبیعتاً میتونید انواع حالت‌هاشو بررسی کنید که اگر مثلاً قطر اصلی صفر باشد یعنی چی اگه قطر

بالا و پایین صفر باشد یعنی چی و و الی آخر همه اینا رو حساب بکنید که چه اتفاقاتی داره میفته خب من اصلاً به این کلاً فرایند تصادفی مارکو هیچ کاری ندارم شما کتابای این حوزه مراجعه کنید ساعت‌ها و صفحاتی در مورد اینا وقت می‌ذارن یا مثلاً کاریش نداریم اگه نیاز شد خودتون می‌رید می‌خونید اوکیه اینا کجا کاربرد داره همین این مدل چپ به راست دیگه نتونید برگردید عقب تشخیص گفتار یعنی گفتارو به متن تبدیل کنید درسته تشخیص دست خط مثلا فرض کنید می‌خوام بنویسم اس انگلیسی حالا اگه بتونم اینو با تمام شرمنده کمال سری چهارم بهتون چهارم بهتون خواهم داد خب که مثلاً شما وقتی من اس رو بنویسید از اینجا شروع کردید اینجا تمامش کردید یا یکی اینجوری نوشت یا یکی اینجوری نوشت اینا رو تشخیص بده اس خب و فرق هیدن مارکو مدل با روش های دیپ هم اینه با چند تا آبزرویشن محدود هم مدل کار میکنه یعنی فرض کنید شما دسترسی ندارید به

صد هزار نفر براتون بگن سلام خب داری تز انجام میدید خودتون و خودتون ۴ نفر می‌تونه براتون از امیرعلی خواهش می‌کنه دیگه بیاد سه بار این حرکتو برام انجام بده ممدم میره دوباره پنج تا کلاً داری با پنج تا باید بتونی کارو در بیاری از حرکت اول پنج تا از حرکت دوم و الی آخر اینجا هیدن مارکوف مدلا به در واقع آرنا و اینا ممکنه اولویت داشته باشن چون اونجا اصلا داده ندارید به اندازه کافی خب و اگه بخواید مدل های دینامیکی با تعداد داده محدود برید جلو چاره ای نداره این کار بکنید خب مثلا فرض کنید که طرف گفته کت سیگنال صوتی که شما گرفتید اینه از اینجا تا اینجاش بعدیش آ بعدی تی بعد لزوما بینشون فاصله های برابری نیست مدلتون باید بتونه اینو تولید کنه مثلا سه تا سی داشته باشه به خودش برگرده ای ای و تی و اینجوری مدلی که برای شما تولید کنه و هیدن مارکوف مدل های چپ به راست میتونن این کارو بکنن آنالیز حرکت ها میتونن طبیعتاً مدل های ار

داریم که اینجوریم که از همه به همه راه داره حالا شاید مستقیم نباشه شاید به این زودی نرسه ولی از هرکی هر جا ولش کنی می‌تونه بعداً بره و به خودش باز برگرده برخلاف اون چی مدل‌های چپ به راست که اگه کسی از استیت خودش خارج می‌شد دیگه نمی‌تونست برگرده خب که اینام توی کاربردهای مختلفی دارن حالا و طبیعتاً هر گونه دیگه‌ای که می‌تونید برای خودتون بسازید بچه‌ها سه تا مسئله اینجا صورتشو بیان میکنه انشالله جلسه آینده صحبت می‌کنیم ما با مدل مارکوف که الان تا الان فقط بیانش کردیم سه تا کار داریم سه تا کار مهم کار اول اینه فرض کنید شما مدلو درآوردید یا بهتون دادن خب بهتون میگن احتمال اینکه این دنباله او یک تا او تی دیده بشه چقدره یعنی چی مثلاً میگن توی مثال چیز رباتتون که اینجاست

با چه احتمالی تو همکف می‌تونه کاشی کاشی فرش کاشی فرش فرش ببینه خب حالا اینو می‌تونید مثلاً تو چند تا مدل بزارید ببینید این احتمال کجا بیشتره اتاق شما بیشتره یا اتاق من یا اینجا ها پس یه مثال اینه که اوکی دنباله رو چیز مدل رو داریم یکی دنباله به ما میده آنالیز می‌کنیم این برای آخرین لحظه ماست یعنی فرض کنید ما برای حرکت‌هامون یا صداهامون کلمه‌هامون مدل مارکو درآوردیم و فقط یکی یه چیز جدید میده نگاه میکنم ببینم به این میخوره یا نمیخوره شابلونش خوبه یا نیست دومی سوال اینه که اگر شما یه مشتی آبزرویشن پشت سر هم بهتون بدن بالاترین احتمالی که میتونسته اون آبزرویشن تولید کنه چیه باز تو مثال ربات ها اگه بهتون بگم من کاشی کاشی فرش کاشی دیدم این احتمال بیشترین احتمالش اینه که از چه اتاق های رد شده یا همون مثال غذاهای مادرتون رو

حالت‌هایی دارد یا به شما بگم اون پیپر قبلیه داور ۶ بار پشت سر هم من بهتون بگم ریجکت ریجکت ریجکت فلان بعد بگم به شما بگید حالتش چی بوده ناراحت مثال‌های دیگه‌ای که می‌شه زد اینم میشه مدل دوم سوال دوممون و سوال جذاب سوممون اینه اگه من یه مشتی آبزرویشن داشته باشم چه مدل مناسبی می‌تونم بهش فیت کنم یعنی چه آ بی و پی میتونم پیدا بکنم بردارها یا ماتریس‌هایی که اون مدل خوب دنبال بکنه بعداً یعنی من ۱۰ بار سلامو بهش بگم انتظار داشته باشم انشالله یازدهمی رو پیدا کنه من باید از این ۱۰ تا به عنوان ترینینگ ست هم چیکار کنم یه آب بی و پی در بیارم محاسبه بکنم کهزدهمی رو که بهش به عنوان آبزرویشن میدم تو مثال اول این به من احتمال بده و من اونجا تازه تصمیم بگیرم که این مال این گروه بوده یا نبوده

خیلی ممنون که همراه بودید انشالله جلسه آینده سه‌شنبه ادامه میدیم و من سعی می‌کنم تمرین بخش آرنه هم هرچه زودتر آماده بکنم براتون بارگذاری بکنم خوش و خرم باشید بچه‌ها خیلی ممنون از دوستان عزیزم که به صورت مجازی کنارمون بودن حالا انشالله که صدا رو داشتن و تصویر رو داشتند انشالله اگه کسی سوالی دغدغه‌ای داره در خدمتتون هستم حالا بعضی از دوستان قرار بود سوالاتی بپرسند من پاسخگو خواهم بود خوش خرم باشید خدا نگهدار

E:\courses\LangChain Project\main root\data\SCR_Session19_transcript_part1.txt

به نام خدا دوستان عزیز و ارجمند درس رباتیک اجتماعی شناختی عرض سلام و ادب خیلی ممنون بابت حضورتون ما اومدیم حضوری بشیم سریع مجازی شد و فقط فعلاً بگیم خوشحالیم که یکی دوبار شما رو در واقع تونستیم از نزدیک زیارت کنیم حالا انشالله دوباره شرایط درست بشه آلودگی هوای تهران برگرده به حالت در واقع حالت نرمال خودش و آلودگی تا حد امکان کم بشه و بتونیم حضوری در خدمتتون باشیم ولی خوب خوشبختانه بستری که تو این دو سال فراهم شده برای آموزش از راه دور یا غیر حضوری الحمدلله جوریه که انشالله کمترین در واقع توقف و وقفه رو توی کار ما به وجود بیاره و ما با همون فرمون به کار خودمون ادامه بدیم فقط شما حرکت دست و پای بنده رو موقعی که تلاش میکنم یه چیزی رو توضیح بدم دیگه نمیبینید چون کما اینکه الان دارم این کار میکنم ولی خب شما متوجهش نمیش

ولی اونو بذاریم کنار تقریباً مسائل دیگه سر جاش ما امروز درسو ادامه می‌دیم من تا یه ساعتی درس رو ادامه میدم بعد انشالله دقایقی رو در مورد پروژه‌های درسی این درسمون صحبت خواهیم کرد و حالا ببینیم تا کجا درسمون میره جلو و بعید می‌دونم که امروز برسیم hma تمام بکنیم ولی کلاً ما انشالله حداکثر ۴ جلسه روی hm هستیم یه جلسه رفتیم امروز داریم و دو جلسه دیگه خواهیم داشت و خوب بدون مدل ها ما اول در حد مدل سازی براتون بیان میکنیم با فرض فضای گسسته خدمت شما عرض کنم توی حوزه آبزرویشن هامون یه پله سخت ترش میکنیم فضا رو فضای پیوسته اش میکنیم ولی تعداد استیت ها را همچنان گسسته فرض میکنیم چون استیت پیوسته بشن دیگه اسمش هیدن مارکو مادل نیست و بعدش انشالله یه پیاده سازی عملی روی کد خواهیم داشت و

اگه فرصتم بکنیم یه مصاحبه‌ای با یکی از افراد فوق برجسته تو این زمینه در دنیا بنده به صورت آفلاین انجام دادم که خدمتتون پخش خواهم کرد وگرنه اگه نرسیدیم براتون فیلمشو جداگانه توی سامانه بارگذاری می‌کنم خب خدمتتون عارضم ما جلسه گذشته بچه‌ها مبحثی به نام مدل‌ها رو شروع کردیم یا مدل‌های مخفی مارکو شروع کردیم گفتیم که چون شما آرن رو گذرودید الان خیلی راحته توصیفش که همون کارهای قراره شبکه های میخواستن بکنن و قرار بود که بتونن سیستم های دینامیکی یا سیکوئنشال رو ترتیبی برای ما مدل بکنند و خوب با این اوصاف ولی از ابزارهای غیر دیپ استفاده میکن که با داده های خیلی کم هم میتونه کار انجام بده تا حوالی سال ۲۰۱۴ اینا غول بدون در واقع رقیب و بی چون و چرای حوزه شبیه سازی های در واقع

سیگنال‌های دینامیکی بودند یا ترتیبی بودند و همه با این الگوریتم حالا اگرچه با ابزارهای یا دست ساز خودشون کدهای دست‌ساز خودشون و یا تولباکس‌هایی که موجود بود کارو در می‌آوردند که ما باز اگه فرصت بکنیم انشالله با کمک دو تا از دوستان خودتون در همین کلاس ابزار کلی رو بهتون معرفی می‌کنیم که بتونه بهتون یاد بده چگونه بتونید از نرم افزارها آماده برای مدل سازی کنید داستان این بود که ما یه مثال خیلی خیلی ساده زدیم گفتیم که در مثلاً مسئله‌ای مثل پرتاب سکه یا پرتاب های متوالی سکه ما این فرض رو داریم که اگه سکه سکه درست حسابی باشه پرتاب های متوالی هیچ ربطی به قبلیاش نداره یعنی اولیه دومیه سومیش ربطی به قبلی ندارن و احتمال اینکه مثلاً بگن سه بار متوالی شیر بیاید این مدلی بود که اولی شیر دومی شیر و سومی شیر بیاید و احتمالش

ساده‌ترین در واقع مدل‌هایی بود که برای سیستم‌های متوالی میشد به کار برد ولی خب دینامیکی توش لحاظ نمیشد ما گفتیم از این پله که توی دبیرستان خوندیم یه مقدار فاصله بگیریم یکم مسئله رو سخت‌تر کنیم و اون این بود که بیایم سمت چیزهایی که بتونن به گذشته ارتباط داشته باشند و البته ساده ترین ارتباط اینه که هر چیزی در آینده فقط به یک دونه بخش در گذشته ربط داشته باشه مثال های متنوعی زدیم براتون گفتیم که فرض کنید که امروز هوا آفتابی باشد و با چه احتمالی چه میدونم فردا باران نیست پس فردا بارانی نیست اگر بدانیم که اگر امروز آفتابی باشد بارانی بودن فردا و آفتابی بودن فردا مثلاً احتمال ۸۰۲۰ داره مثلاً آفتابی بارانی و در ضمن اگه بارانی باشه یک روز با احتمال مثلاً ۳۰ ۷۰ فرداش آفتابی بارانیه ها و این اتفاق گفتم رقم بزنید اینجا اتفاقی که میفته اینه که

هر روز به دیروزش ربط داره و البته می‌تونست به روزهای قبل‌ترش هم ربط داشته باشه ولی ما این فرض ساده شونده رو داشتیم به این مدلی که ارائه دادیم و گفتیم یه ماتریسی به نام ماتریس انتقال وجود داره که به ما بگه که در واقع چیز حالا شامل درایه‌هاش آیا آی جی باشند و نمادی مثلاً ابعادشم n در n باشه نمادی از تعداد استیت‌هامون که مثلا اینجا دو حالت آفتابی و بارانی داشتیم میتونستیم ابری مهی فلان اضافه بکنیم و این اعداد بیشتر بشن اعدادی که توی این ماتریس قرار می‌گرفتند نمادی از احتمال رفتن به حالت‌های بعدی بود یعنی اینجا اگه آفتابی باشه نماد آفتابی اینجا بارانی باشه عدد اینجا معادل آفتابی و آفتابی و عدد اینجا معادل آفتابی به بارانی که مثلاً ما باید عدد ۸۰۲۰ رو اینجا درج می‌کردیم و سی۷۰ و چی اینجا درج می‌کردیم و خب اتفاقی که توش میفتاد این بود که چی جمع هر سطح باید

شما همه استیت‌ها رو می‌شناسید چیزی از قلم نیفتاده و در ضمن استیتا محدودن یعنی بی نهایت تا نیستند تعداد محدوده ۲ تا ۳ تا ۵ تا ۱۰۰ تا هرچی دلتون میخواد ولی عدد شمارا و محدود باشه خب این شد مدلی که داشتیم ولی گفتیم برای اینکه این مدل تکمیل و تکمیل تر شه و ما بتونیم توصیف بهتری از دینامیک هوای اون شهر داشته باشیم اینه که ما باید بدونیم با چه احتمالی روز اول حالا تو آفتابی یا بارونی هستیم مثلا فرض کنید رفتیم ۳۶۵ روز سالش آنالیز کردیم دیدیم که ۳۰۰ روزش آفتابی بوده میگیم اوکی اگه به ما نگن روز اولمون چنده میگیم مثلاً ۳۰۰ ۳۶۵ آفتابی ۶۵ ۳۶۵ بارانی هستیم و حالا با این در واقع داستان ها میریم آنالیز میکنیم که با چه احتمالی فردا نیست پس فردا آفتابی است فردا بارانی پس

با همین دوتا ماتریس در ان و بردار پی ان در یک میتونستیم یک مدل کامل دینامیکی از البته ساده شونده دیگه فقط هرکسی قبلی خودشو ببینه رو داشته باشیم از اون هوای اون شهر که ما به این هواهای آفتابی و فلان میگفتیم حالت یا استیت خب این بچه هایی که حالا کنترل پیشرفته گذروندن با این کلمه ها آشنا هستند اگر نگذروندید نگران نباشید چیز عجیب غریبی نیست خب اما یه پله خفن تر از اون این بود توی یه سری از مسائل که مثالش براتون زدیم گفتیم که شما همیشه استیت ها را نمیبینید و سیستم اندازه گیری شما یا سنسورهای شما چیز دیگه ای رو میبینه و حالا این شمایید که باید بیایید چیکار کنید تخمین بزنید چه رابطه بین خود استیتا و چرا رابطه بین استیت ها و آبزرویشن ها وجود داره و اونجا دیگه بحث مدل های مخفی مارکوف یا اچ ام ام ها یا

مدل‌ها به وجود میومد اونجا اینجوری بود که یه مرزی وجود داشت که یه ورش برای شما شفاف نبود شما نمی‌دیدینش همون استیت‌ها بودن که خودشون می‌تونن یه دینامیک دارند و میرن هر روز بعدی رو می‌سازن و در ضمن یه چیزی دارن به نام آبزرویشن تولید می‌کنند برای ما که ما چیکار می‌کنیم که ما این‌ها رو می‌بینیم یا سنسور ما اینو میبینه مثلا توی مثال آفتابی وارانی اگه ما داریم آنالیز میکنیم خب ما میتونیم آفتابی بارانی رو ببینیم ولی اطلاعی از کم فشار بودن اینا نداریم اونجا دیگه آفتابی بارانی استیت نیست کم فشار بودن و یا نه اگر آفتابی بارانی ای آر باشه ولی سنسورهایی داشته باشید که رطوبت رو بسنجند دما رو بسنجند و فلان خب استیت ها همچنان همون آفتابی بارانی خودمونن و الی آخر خدمتتون عارضم که کتاب های مختلف اینا رو با نام های مختلف نشون میدن اینا رو با آبزرویشن یا او نشون میدادیم مثلا به این میگفتن او یک او دو تا او تی که

آخرش باشه و می‌تونستم کلشو با مجموعه بردار او نشون بدن که اینا رو توی کتاب بولد می‌نویسن بعضیا اینا رو ایکس میگیرند یعنی ایکس یک ایکس دو تا ایکس تی میگیرن و خب عرض به خدمت شما اینو با بردار ایکس نشون میدن همونه یعنی این دوتا یکی هستند آبزرویشن‌هامونن اینایین که سنسور ما میبینند و ما بهش دسترسی داریم و اون بالاییه پس اینا آبزرویشنان بعضیا بهشون حالا کلمه های دیگه هم میگن از ذهنم پرید یک کلمه معادل دیگه داشت حالا توی شاید به چشمم بخوره یکی دیگه هم اینجا استیت ها بودن جایی که ما نمیدیدیم ولی میدونستیم تعدادشون محدوده حالا فعلا فرض کنید که میدونیم چند تاست حالا انشالله فرصت بشه در مورد اینکه ندونیم چند تاست هم صحبت میکنم که چیکار میکنن تو این حالت خب این استیت ها این مدلی بودن که یه عده که از کتاببا اینا رو با وای نشون میدن وای یک

وایتی نشونش میدن بعضی از کتاب‌ها با زد یک تا زد تی نشونش میدن و بهش میگن لیتنت اسپیس لیتنت استیت یا فضای نهان فضای مخفی خدمتتون عارضم که این از این و ممکنه هم چی باشه ممکنه بعضیا اینا رو توی مثالمون گفتیم مثلاً ما بعضاً وقتی می‌خوایم صدا بزنیم اینا رو با کیو کوچیک ها صدا میزنیم یعنی میگیم اگه کیو یک فلان باشد من دارم در مورد صحبت میکنم اگر از او استفاده کردم یعنی در مورد آبزرویشن ها دارم صحبت میکنم خب این هم برای این ماجرا بود و گفتیم برای اینکه یه مدل دینامیکی دقیقی از هیدن مارکو مدل ها داشته باشیم یا تولید بکنیم مثلا کجا بود مثالش این بود که مثلاً یه آشپزی داریم که بسته به اینکه حال دلش چطوره آشپزی میکنه پنج تا غذا بلده درست کنه ولی خب بستگی به اینکه خوشحال ناراحته یا خنثیست تصمیماتی میگیره و خب شما اونو نمیبینید بعد میخوید یه مدل

یا اینکه نمی‌دونم گلدون‌هایی داشتیم که توش مهره‌های مختلف بودن بعد شما نمیدونستید کسی که داره مهر انتخاب میکنه کدوم گلدون انتخاب می‌کنه یه دینامیک بین این وجود داشت و می‌خواستید مدل کنید یا فرض کنید سیگنال صوت میاد شما می‌خواید بگید که به نوشتار تبدیلش کنید فرض کنید یه جمله میاد مثلاً میگه که من زمین را دوست دارم یا من در کلاس ربات اجتماعی شناختی نشستم بعد استیتاتون این باشه که بره فعل و فاعل رو پیدا کنه ها بگه این فعل بوده فاعل بوده و فلان فلان و انواع این چیزهایی که استیت های وجود داشته باشه که شما نمیبینید و عمدتا هم مفهوم فیزیکی دارند یعنی شما درک دارید نسبت بهشون ولی نمیبینیدشون و میخوید مدلش کنید مثال چیز رو زدیم پیپر رو اکسپت یا ریجکت میکرد آدم عصبانی یا خوشحالی که پیپر ها رو اکسپت یا ریجکت میکرد و دینامیک براش بدست میوردیم گفتیم که برای کامل ترین چیزی که برای یک مدل دینامیک اچ ام وجود دارین که یک ماتریس آ رو بدونید ماتریس آ

به شما میگه که با چه احتمالی از استیت شماره آیوم این میرید تو جیومش اوکیه مثلاً فرض کنید عصبانی خوشحال بودنش یه ماتریس پی داشتید که شما در حالت اول یه بردار پی داشتید که تو کدوم استیت شروع می‌کنید قرار گرفتن که مثل قبلی هستش و مثلاً حالا با یه احتمالی توی آفتابی و بارونی اسید با یه احتمالی آقای خوشحال و ناراحته ما یه احتمالی گلدونه که انتخاب کرده شماره یک دو یا سه هست و الی آخر و اینم باز به تعداد حالا یک در ان یا ان در یک تا در مجموع داره و در ضمن یه چیز دیگه اضافه میشه به نام ماتریس بی که اینم به ماجراهای جدیدتون اضافه شده شما ان تا از اینا رو دارید با سایز های ام که این نشون میده وقتی که توی استیت اول هستید یا دوم هستید با چه احتمالی میاید غذای مثلاً قمه سبزی نمیدونم آش فلان درست میکنید یا با چه احتمالی مهره آبی قرمز زرد رو می‌کشید بیرون یا با چه

اگر می‌خواید فعل انتخاب کنید کلمه منو انتخاب می‌کنید چیز دارمو انتخاب می‌کنید فاعل بخواید انتخاب کنید فلان و این گزینه‌های پیش روتونه که حالا ما فعلاً فرض می‌کنیم رفتن از فضای استیت به فضای ابزرویشن گسسته هستش یعنی اینکه تعداد محدود گسسته داره حالا در مورد پیوسته انشالله جلسه آینده صحبت خواهیم کرد و به ازای هر استیت شما یه دونه از این بیا باید طراحی داشته باشید خب و این میره جلو باید این خدمتتون عارضم که ببخشید اینجا طبیعتا میشه ام در دیگه حالا با این چیزی که من کشیدم اگه افقی میگرفتید میشد ان در ام در ان تا و ان تا از این ستون ها دارید که معادل n تا استیتتونه و برای هر کدوم احتمال که مثلا وقتی استیت یک اومد مهره رنگ آبی بیاد بیرون وقتی استیت یک اومد مهره رنگ قرمز بیاد دومی این نماد اینه که وقتی استیت دو اومد باز با چه احتمال رنگ آبی میاد چرا چون تو گلدون های مختلف رنگ آبی وجود داره یعنی اینجوری

اگه استیت یک اومد دیگه فقط آبی بیاد دو اومد قرمز بیاد شاید شانسی این اتفاق بیفته اگر اون گلدونه فقط حاوی رنگ‌های قرمز و آبی باشه ولی در کلی هر کدوم از استیت‌ها می‌تونن هر کدوم از ابزرویشن‌ها رو برای شما تولید بکنن و حالا اینجا گفتیم که انواع سوالا مطرح میشه و سه تا سوال مهمی که مطرح میشد و ما آخر جلسه قبل معرفیش کردیم و امروز میخویم در مورد حل اینا صحبت بکنیم اینا بود یک اگر من خدمتتون عارضم که برم عقب اون برسم اسلاید اصلیش اگر من به شما مجموعه از دنباله های خروجی را بدم و مدلم شما داشته باشید مدل داشته باشید یعنی چی یعنی شما ماتریس آ بی و پی رو دارید اوکی یکی بهتون داده یکی یه جوری بهتون داده داشته باشید چه میتونید بفهمید که آیا اصلا مدل شما میتونه این خروجی رو تولید کنه یا نه یا به عبارت دقیق تر و ریاضی تر

چه احتمالی اینا تولید میکنه این کجا به کارمون میاد ما فرض کنید که مثلاً رباتی داریم که داره زمینو می‌گرده مثال زدیم جلسه قبل و گفتیم که از هر نقطه‌ای به نقطه دیگه میتونه بره توی خونه‌ای و از یه سری نقاط میتونه بعضاً به بیش از یک نقطه بره و خدمتتون عرضم هر نقطه نماد یه استیت بود بعد فرض کنید که ربات اگه اینجا باشه میتونه اینجا بره میتونه سر جاش بمونه فرضا و میتونه پایین بره بعد مثلاً سر جاش بمونه اینجا باشه میتونه اینوری هم بره ولی آخر هیچ وقت از مثلا یک به پنج نمیتونه بره و اینجوری این مثلا مدل داشتید اوکی آ و بی و پی و فرض کنید به شما میدادن که ما این اسمش لاندا میذاشتیم مجموعه اینا رو آ یک ماتریس n در ان بی یک ماتریس ام در n و p1 ماتریس n در یک بود خدمتتون عارضم که اونجا استیت ها نماد موقعیت ربات میشدند و آبزرویشن هامون نماد این بودند که عکسی که

از زمین گرفته چه چیزیه که فرض کنید مثلاً چند حالت مختلف کاشی مثلاً فرش فرش یک فرش ۲ مثلاً چه میدونم سرامیک و و داشته باشه و حالا اگه بهتون می‌گفتن فرض کن اینو برای طبقه یک خونتون دارید برای طبقه دو خونه مثلاً یکی یه نفر دیگه هم دارید و اگه بهتون می‌گفتن سرامیک سرامیک فرش یک فرش یک مثلاً فرش دو سرامیکو دیدم شما برید در واقع چیکار کنید برید محاسبه کنید با چه احتمالی میتونسته این تو خونه شما اتفاق بیفته با چه احتمالی میتونسته تو خونه دیگری اتفاق بیفته و اینجا مثلاً فرض کنید وقتی که یه حرکت میارید انجام میدید پارسا نشسته یا نه تو امروز تو کلاسمون هست مثلا تو پایان نامهش میتونه به کارش بیاد هستش خدمتتون عارضم که این که مثلا شما یه مدلی رو استخراج کردید برای حرکت شماره یکتون یه مدل هم برای حرکت شماره دوتون بعد یه حرکت جدیدی میاد

آبزرویشناتونو از سنسوراتون گرفتید میدید به مدله احتمالشو بررسی می‌کنید یه بار رو مدل ۲ هر کدوم بالاتر شد میگید این احتمالاً اون بوده ها و مثلاً اگه یه دونه برای راه رفتن دارید یه دونه برای دویدن دارید یه دونه برای نشستن نگاه می‌کنید که به کدوم نزدیکتر و چی اتفاقی که میفته اینه که بالاترین احتمال براش محاسبه کنید این مسئله اولی که میخویم الان روش بحث کنیم و دو تا مسئله دیگه هم داریم که حالا رو اونا هم بحث خواهیم کرد پس سوال اینه که اگر دنبالباله مشاهدهات او یک تا او تی رو به صورت یکتا داشته باشم بچه ها مشاهدات دارم من استیت ها رو ندارم اصلا استیت رو ممکنه تا ابد نداشته باشم یعنی همونطور که اسمش روشه هیدن مارک آف مادل ها و استیت ها ممکنه هیچ وقت هیچکی به من استیت رو نگه و من نهایتا حدسامو بگم ممکن هم مرام بزارن بعضی جاها استیت ها رو یا بهم بگن یا خودم اذیت بکنم خودمو یه نیرو استخدام بکنم که چی رو چند تا از داده های ترینینگم این مشاهدات این استیت بره چیکار کنه استخراج بکنه

لگ استیتا قابل استخراج باشند و مفهوم فیزیکی داشته باشند خب اگه مدلو داشته باشم و در ضمن اینو بهم بدن بهتون میگن که پی او به شرط لاندا رو حساب کنید پی فکر می‌کنم باید درست پی بزرگ نوشته میشد چون تو دنیای آمار احتمال که من به جز خانم هاشمی بعید می‌دونم کس دیگه‌ای رسمی اینو پاس کرده باشه مگر اینکه ممکنه دوستان دیگه‌ای بوده باشن خانم هاشمی نمیدونم تشریف دارید یا نه بین دوستان شاید خانم فلاح هستند حاضرین خدمتتون عارضم که چیز بکنه مثلا قبلا گذرونده باشند میتونید تایید کنید تو چت باکس کسی هست بچه ها آمار احتمال پاس کرده باشه رسماً دست بالا من ببینم احسان خودش باز کرده باریکلا احسان خب میخوام ببینم دانش دارید خانم هاشمی خب قابل حدس بود برای دوستان هم که دیگه همین همونطور که حدس میزدم پاس نکردید خب ماجرا اینه که بعضی هاتون که مثلا اندازه گیری با خودمون بودید در مورد این پی کوچک پی بزرگ یه چیزایی

کارشناسی رامتین داشتید شما مثلاً برای بچه‌های شریف اجباری نیست خب و می‌تونن اختیاری بگیرن عرض به حضور شما اینجا من فکر می‌کنم پی بزرگ باید مینوشت پی بزرگ او به شرط لاندا رو گفته محاسبه بکنید خب پی بزرگ او به شرط لاندا یعنی چی میگه اگر کل مدلت معلوم باشد خوب ممکنه من دیگه دفعه دیگه لانداشو ننویسم این فرض اومده میگن اوکی دیگه لاندا که معلوم پی او چنده خب پی او چنده مثلا فرض کنید اینه دیگه ابزرویشن دادن بردار o رو بهم دادن او یک او دو تا مثلا او تی و اینا معلومن مثلا این نماد چیه فرض کنید تو آشپزه نماد این باشه قورمه سبزی قورمه سبزی فلان فلان مثلا چی نون خشک بعد به شما میگن که پی یعنی با این یارو با این مثلا آشپزه پی او چنده حالا این به شرط لانداش میزاریم با فرض اینکه آشپزش معلومه کیه خب و اینو میخویم محاسبه

برای اینکه این کارو بکنید خب حالا می‌دونم باید دانش آمار می‌داشتید از قبل خدمتتون عارضم که یه فقط سوسکی اشاره‌ای می‌کنیم و رد میشیم اگه موردی بود بعداً سعی می‌کنیم جداگانه پاسخگوتون باشیم خب من یک سری چیزی یادآوری بکنم چاره‌ای ندارم حالا با خودم داشتم فکر میکردم رسما برید بیرون بگید که چیزه عرض به حضور شما اول اومدم به ما دیپ لرنینگ درس دادن بعد هیدن مارکو مدل گفتن بعد اومدن احتمالات ساده رو گفتن به سلامت یا خودتون یا مدرس تو شک میکن چون همه اینا کاملاً بالعکس اتفاق میفته ما در حد نیازتون الان بیان میکنیم خب احتمال که از گذشته میدونید مثلا گفتیم یه شیر و یه خط و نمیدونم تاس بندازیم فلان مثلا توی متن رو ببینید شاید با این آشنا نبودید مثلا یه متنی ۲۰ کلمه داره میگن آقا با چه احتمالی توش کلمه سرزمین میاد خب ۲۰۰ تا کلمه داره تو مخرج ۲۰۰ چند سه بار سرزمین توش ظاهر شده قرمز نوشته میشه ۳

مدل‌های متنی زبانی و اینا از این الگوها استفاده می‌کنند خدمتتون عارضم اینکه در واقع فضای نمونه و رویداد و احتمال چیه و اینا از قبل آشنا هستید اینکه احتمالات بین صفر تا یک اینه که از تعداد در واقع حاصل شده تقسیم بر تعداد کل مشاهدات می‌تونن به دست بیارن اینا از قدیم میدونید چند تا مفهوم رو با همدیگه مرور بکنیم یکی میگه خدمتتون عارضم که احتمالات توام یا جوینتلیتی احتمال دو رویداد که به صورت همزمان اتفاق میفته مثلا میگه احتمال جفت آمدن شش چنده خب اوکی اینجوریه که یا میگید کل حالتش ۳۶ یک دونه داریم که جفت شش میاد یا اینکه بگیم خب اوکی این دوتا از هم به همدیگه ارتباطی ندارن اولی باید شش بیاد و بعدی هم باید شش بیاد یک ششم در یک ششم ۱ ۳۶ و یا میگه رخداد احتمال رخداد دو کلمه پشت سر هم سرزمین ایران توی متن کلمه چنده خب

متن ۲۰۰ کلمه داشته چند تا از این زوج کلمه‌ها داشتن مثلاً فرض کنید بازم ۲۰۰ تا مثلاً مفهوم ایران ایران بزرگ بزرگ از از جهات و و ادامه ۲۰۰ تا از اینا داره بعد نگاه می‌کنید چند تا سرزمین ایران توش ظاهر شده یک بار ظاهر شده میشه چی میشه مثلاً ۱/۲۰۰م و تمام خب یه همچین ماجرایی و خدمتتون عارضم که باید نگاه کنید چند تا از این جفتیا توی مخرج یعنی شدنی بوده و کدومش مطلوب ماست که خوب این به وجود میاره خدمتتون عارضم که ولی یه چیزی داریم به نام احتمال شرطی یا کاندیشنال که حالا جلسه قبلی فرض بر این گذاشتیم که شما میدونید میگن پی آب شرط ب مفهومش اینه که بازش بکنیم میشه پی آ اشتراک ب تقسیم بر پی ب ها یه همچین اتفاقی میفته و این همون جایی که مکس میخواستم بکنم خدمتتون عارضم در حالت کلی پی آ به شرط ب میشه

پی آ اشتراک ب تقسیم بر پی ب یا یه بیان دیگشم اینه که چی پی بی به شرط آ باشه چی پی آ اشتراک ب تقسیم بر پی آ درسته حالا صحبت می‌کنم این کجا می‌بینیمش و چه فرقی با این قبلی سرزمین ایرانو می‌خوام تو دوبار بگم اگه طرفین بکنید قانون جذابی میرسیم که بهش میشه پی آ به شرط ب در پی ب میشه پی بی به شرط آ در پی آ که بچه ها کسی اسم اینو میدونه قانون چیه یعنی یادش مونده از گذشته یا آما مون علیرضا رکوردهای چی میفرمایید رکوردهایی که الان داره ویدیو ضبط میشه آقای علیخانی بله من پیش خودمه من برای بچه‌ها تو سایت بارگذاری می‌کنم شما از دانشجویان خود شریف هست

خارج از مجموعه با بچه‌ها ارتباط بگیریم فیلم‌ها رو ببینین انشالله دسترسی داشته باشین باید از بچه‌ها بگیرین خب احسان درسته قانون بیز بهش میگن خیلی ممنونم ازت خدمتتون عارضم که این معادل پی آ اشتراک ب است یعنی همزمان آ و ب اتفاق بیفتند که دو بیان داره میگه اگر به اتفاق بیفته بعدش با چه احتمالی باید اتفاق بیفته که در واقع این معادل اینه یا اینکه میگن اگر آ اول اتفاق بیفته و بعدش بی هم پشت سر اون یعنی بدانیم اتفاق افتاده بی هم اتفاق افتاده باز حاصلضرب اینا پی آ اشتراک ب رو بهمون میده قانون بیضش میگن و تو ماشین لرنینگ بسیار متداول اگه درس ماشین لرنینگ کلاسیک رو داشتید یا در آینده خواهید گرفت اینو بارها و بارها ازش استفاده است اونجا

اینجوری که تو یه سری مسائل اینو می‌خواید ولی ندارینش بعد ولی عوضش مثلاً با داده‌های ترینینگ که دارید مثلاً اینو اینو نمی‌دونم اینو پیدا می‌کنید و اینو تخمین می‌زنید و بعداً با این میرید جلو و فلان خدمتتون عارضم که بیان‌های دیگه‌ای هم هست مثلاً مثل این چه می‌دونم pa به شرط بی با بی ساده میشه و پی ببخشید بد گفتم یعنی اینجوریه که حالا من برای خودم اینجوری حفظ میکردم بی بی که تکی میخواید بنویسید اینجا باید دومی باشه خب اون قبلی بعد گفتم پی به شرط آ در پی آ باز دوباره اینجوریه که معادل پی اشتراک بی میشه یعنی اونی که سمت راسته با خودش بعدا تکی ظاهر میشه خب حالا این بهش میگن احتمال شرطی حالا فرض کنیم برگردیم تو کلمه قبلی میگه احتمال آمدن سرزمین ایران اگر بدانیم کلمه اول سرزمین است چقدره بچه ها آیا به نظرتون بازم میشه سه بیستم یا نه

میگه احتمال آمدن عبارت سرزمین ایران اگر بدانیم اولی سرزمین بوده برام بگید آیا اینی که این سه دویستم آیا هستش یا نیستش تو این متنه خیر نیست دلیلشم اینه که من سری قبلی رو کلمه اول قید نذاشته بودم تمام حالت های ممکن میگرفتیم ولی الان گفته گفته باید کلمه اول سرزمین باشد حالا شما باید برید ببینید چند تا سرزمین داریم سه تا داریم خب و چند تاش بعدش ایران اومده یکیش اومده پس میشه یک سوم ها و اینجا میشه حالا ماجرای احتمال شرطی یعنی همه اینا رو گفتم که به این نقطه برسیم که این احتمال شرطی فرقش با احتمال عادی چیه خب و البته البته یه چیزی هستش حالا قانون چین رول هم که دیگه خیلی کار سختی نیست گفته اگر بخواید احتمال

مثلاً بازیکنان تیم ملی نوجوانان را بگیرید میگه میتونید اینجوری نگاه کنید من اول ببینم با چه احتمالی بازیکنان ظاهر میشه با چه احتمالی تیم به شرط بازیکنان بعدش ظاهر میشه با چه احتمالی ملی بعد از بازیکنان تیم ظاهر میشه الی آخر یعنی من پی اشتراک a۱ تا anهای متوالی می‌تونم بگیرم چی پی آ۱ در پی آ۲ به شرط آ۱ در پی آ سه به شرط آ یک و a۲ الی آخر درسته اینم احتمال در واقع چینشه حالا مستقل و اینا الان کاری نداریم و این افراز هم همه اینا رو گفتم باید میرسیدیم به اینجا که گیج نشید میگه که اگر تعداد n رویداد آ1 تا n یک افراز از اس باشد و بی یک رویداد در اس باشد حالا رویدادهای بی آ یک بی آ2 تا bn هم یک افراز از این تشکیل میده مثلا میگه که b رو مثلاً شما بنویسید a1 b اجتماع a۲ بی تا اجتماع anb اگر این b سیاه باشه

مختلف باشند اگه بهتون گفتن پی بی چقدره شما می‌تونید بیاید چیکار کنید پی اشتراکشونو با a۱ تا آیه‌ها با بی بگیرید بعد رو هم جمع ببندید اینم چیزیه که هستش و چونم افرازن اینام آ۱ تا آیه‌ها از همدیگه مجزا اشتراکی ندارن و این جمع برقراره خب حالا اینو گفتم که برگردیم سر کار خودمون ما اینجا برای اینکه پی او به شرط لاندا رو پیدا کنیم یا یا در واقع راحت محاسبه میکنید یا اینو بپذیرید میشه چی میشه پی او به شرط کیو در پی کیو حالا لانداش فرض کنیم مشترکه یعنی میتونستم ننویسم ها یا پی او به شرط کیو و لاندا در پی کیو به ازای لاندا خب و این یعنی چی رو شکل بدیم جلو ببخشید که کاملا خیلی کند و جزئی میرم چون دیگه میخوام خیالم راحت باشه مطمئنم متوجه میشید به این دیاگرام دقت کنید خب دیاگرام دقت

فرض کنید به شما گفتن من چیو دیدم مثلاً آشپزیه مثلاً من املت املت مثلاً کباب خوردم اوکیه o۱ o۲ o۳ رو بهتون دادم درسته بعد بهتون میگن که پی املت املت کباب برای این آشپز چقدر باید احتمالشو حساب کنیم الان هدفمون اینه دیگه باید یه درصدی بگید یه عددی بگید بین صفر تا یک که این احتمال برای این بنده خدا آشپزه برقراره بدانیم که آشپزی قراره ۱۰ تا غذا بلده درست کنه خب کباب املت دوتاشونن و چیزهای دیگه هم داره خب یه راهش اینه که میگه چیکار کن میگه بیا نگاه کن آشپزی یا حالش خوبه یا حالش بده درسته و به ازای هم خوب ها برو نگاه کن با چه احتمالی املت بعد املت بعد کباب درست میکنه و هم به ازای بدا برو نگاه کن و با همدیگه جمع بزن بچه‌ها این جمله رو قبول دارید یا نه این که گفتم

E:\courses\LangChain Project\main root\data\SCR_Session19_transcript_part2.txt

یعنی اینکه برو یه پله بالاتر استیتشو ببین بعد ببین وقتی خوبه با چه احتمالی حالا اولی خوبه بعد دوباره بعدیش هم یه احتمالی داره دیگه بله دیگه قبوله حالا این سیگما همونه این سیگما همون حالا نشان افرازه است یا نشانی از اینکه بیان کردن به شفاهی یعنی اینکه برو به ازای تمام کیوهای ممکن یعنی اولی خوب بعدی خوب بعدی خوب ببین با چه احتمالی برات املت املت کباب میسازه اولی خوب بعدی خوب بعدی بد چه احتمالی میره باز املت املت کباب میسازه و و و تمام حالت های ممکن در بیار و اینا رو با همدیگه جمع بزن تا پی املت املت کباب پیدا کنی اینو قبول دارید یا ندارید اینو تایید کنید چون مسئله مهم یعنی پله اولیم اگه تایید نکنید ماجرای کلاه میره تو همدیگه اگه تایید میکنید من ادامه بدم وگرنه خدا یار و نگهدارتون گفتیم که احتمال این که املت املت کباب درست کنه اینه که بگیم برو نگاه کن املت املت کباب

به ازای خوب خوبت با چه احتمالی درست می‌کنی ضربدر احتمال خوب خوبت بکن یه بار املت املت کبابتو بذار خوب خوب بدش نگاه کن در پی خوب خوب بعدش ضرب کن و و اینا همه اینا رو جمع بکن تمام حالت‌هاشو افراز می‌کنه قبوله به جز آرمین بقیه قبوله یکی دیگه استیت‌ها رو داری آره فعلا فرض کن مدل داری دیگه هم استیتو داری هم احتمال ترانزیت بینشون داریم آ بی و پی رو داری فرض کن اینو قبول داری یا نه یعنی می‌خوام بگم چیزی که گفتم آیا خارج از در واقع یارو قبوله دیگه استیت رو داریم تموم شد تموم شد حالا پی کی شرط لاندا یا کلا پی کیو رو میگیریم احتمال انتخاب دنباله حالت های در نظر گرفته شده که ماتریس آ توش نقش آفرینی میکنه یعنی که وقتی اولی خوبی باید با چه احتمالی میری تو خوب یا میری تو بعد و پی او به شرط کی بچه ها چی توش نقش آفرینی میکنه به نظرتون او به شرط کی یعنی اینکه این سبزه رو از این آبی استخراج کنم کدوم ماتریس میاد وسط

برنامه بنویسید و حالا اتفاق جالبی که میفته محاسبه اینه محاسبه این بچه‌ها اصلاً سخت نیست پی کیو به شرط لاندا مگه غیر اینه که فرض کنید اول کیو می‌خواید برید کیو دو آی کیو کیو دو احتمال اینو میداد که از کیو یک برید تو کیو دو درسته آی کیو دو کیو سه احتمال اینو میداد که از کیو دو برید تو کیوسه و الی آخر قبول دارید تا کیوتیک حالا کیوتی کیو یک و کیو دو میتونن یکی باشن مثلا میتونن دوتا خوب باشن دوتاشون بد باشن یکی خوب یکی بد باشه و الی آخر اینو قبول دارید یا نه که احتمالا قبول دارید یه پی کیو یک هم همون اولش گذاشتم وقتی به نگن روز اول کجا بوده من اینم باید ضرب کنم یعنی بسته به اینکه خب میخوام برم تو خوب با چه احتمالی میرم تو خوب با چه احتمالی میرم تو بعد این میشه پیq به سمت با شرط لاندا یا به شرط لانداشو بیخیال شید پی کیو پی بزرگ کیو میشه پی او به شرط کیو چی میشه میشه پی در واقع این پی بزرگ حالا او تی که خودش او بردار او یک

طائوتی به شرط کیوتی باشه میشه بی کیو یک به ازای یعنی توی درایه o یکش یعنی چی یعنی وقتی که اولی کیو یکه با چه احتمالی o۱ شما اتفاق میفته ببین کیو یک که باشه ما گفتیم تو خوشحالیش بلده هم املت درست کنه هم کباب هم فلان تو کیو دوشم باز همین کارو بلده بکنه ولی احتمالش فرق میکنه خب اوکی درایه مثلا مربوط به املت اونو می‌کشید بیرون ها پس میشه دی اندیس کیو یک او یک دهمش توی استیت کیو یکم بی رو بکش بیرون بعد همینطور برای بی کیو دو تا الی آخر اینم میشه بخش پی او به شرط فلان حالا میگه چیکار کن یکی اینا رو دارم دیگه ضرب کن روش تمام حالت های ممکن سیگما بگیره پس در کل میشه چی در کل میشه پی او وقتی آرایه به شما میدن میگید باید برید تمام حالت های ممکنی که وجود دارد رو بگیر pq یک که احتمال ورود به کیو یک باشه رو بگیر باید آیq دو آیq دو

ضرب کن در بیهای مربوطش یعنی مشتی درایه آ و بی و یه دونه از پی دارم دیگه ضرب میشه و در نهایت رو تمام حالت‌های ممکن جمع بسته میشه اینو قبول دارید یا نه حالا مثال می‌زنم می‌بینیدا یه مثال عددی می‌زنم می‌بینید اینو قبول دارید به عنوان اینکه حاصل احتمال اینکه مثلاً من املت املت کباب ببینم از این آشپزمون چقدره یا نه یه نفر بنویسه بی‌زحمت حالا اگه آرم تایید کرد اوکی مرسی آرمین جان خب خدمت شما عرض کنم که رسایی فرد نیست نه آخی برنامه به هم خورد خواستم شوخی بکنم باهاش چرا نیومده خب حالا فقط یه ماجرا و یه مشکل اساسی وجود داره تعداد محاسبات این روش خیلی خیلی زیاده چون باید تمام استیت های که طرف میتونه تحمل بکنه رو بیارید وسط این اولی خوشحال باشه بعدی خوشحال بعدی

خوشحال بدی ناراحت اولی خوشحال بدی ناراحت بدی فلان بعد نگاه کنید که حالا باید برید درایه مربوط به بیش هم بخونید و هی دارم یه ضرب بکنید و جمع بزنید و همشو پیدا بکنید و تعداد محاسبات این روش تو اردر تی در n به توان تی مثلاً اگه ۳۰ تا نوشته در واقع استیت یک دنباله ۳۰ تایی داشته باشیم یعنی مثلاً ۳۰ بار تو ۳۰ روز مختلف آشپزه رو رصد کرده باشیم و ۱۰ تا غذا هم بتونه درست ۱۰ تا حالت مختلف هیجانی هم بتونه داشته باشه شما ۱۰ به توان ضرب در ۲۰ عدد ناقابل در واقع برای محاسبات باید وقت بذارید و شاید خوف ترین کامپیوترهای الان هم جا بمونن از اینکه فقط بخوان به شما بگن با چه احتمالی چی میشه شما املت املت کباب میخورید ها و یکی از دلایلش اینه که چی محاسبات خیلی زیاد مشترک اینجا وجود داره که شما اگه باهوش می بودید میتونستید یه جوری ذخیره کنید و ازش استفاده کنید مثلا فرض کنید حالتی رو در نظر بگیرید که استیت های من خوشحال خوشحال

آخرین ناراحت باشه خوشحال خوشحال خوشحال آخرین خوشحال باشه بارها می‌بینید که کلی از این عددا تکراری در همدیگه ضرب شدن و شما قبلا محاسبه‌شو داشتید و حالا از این حقه باید استفاده بکنید الگویی به وجود میاد به نام الگوریتم جلو رو یا الگوریتم عقب رو یا تلفیق الگوریتم جلو رو عقب رو که می‌خوایم الان در موردش صحبت بکنیم پس ما این چیزی که الان نوشتیم فرمول درستی هست فقط چالش ما اینه که هزینه محاسباتیش برامون زیاده و باید یه راهی براش پیدا کنیم که بتونیم اینو جدا حل بکنیم خب حالا میخویم با الگوریتم جلو رو و عقب رو تماما جلو رو تماما عقب رو و یا تلفیق جلو رو عقب رو آشنا بشیم که بهتون بگم اینا کجا به کارمون میاد خب فعلا به همین الان به جلو رو عقب روی تلفیقی کاری نداریم تو شماره سهش کار داریم ولی الان به جلو روی کامل کار داریم حالا یا عقب راه کامل ولی طبیعتاً جلو رو چون درک بهتری هم نسبت بهش داریم احتمالا اولویت اون میشه داستان هم اینه که میگه

با این الگویی که داشتیم از چپ به راست می‌رفت خدمتتون عارضم که بیایم به در واقع دو بخش بشکونیمش و یه بخششو سبز رنگش کنیم بهش بگیم بخش او یک تا او تی کوچیک و بخش آبی رنگی داشته باشیم که از او تی به علاوه یک تا اوتی بزرگ باشه که انتهاشه و حالا میخوایم صحبت بکنیم و بگیم چجوری این تلفیق الگوریتم جلو رو یا عقب رو یا حالا ترکیبشون با هم میتونه کار ما رو سریعتر انجام بده خب ما تا الان بچه ها برای اینکه یک مدل مارکوف رو دقیق دقیق بشناسیم چه پارامترهایی رو معرفی کردیم بنویسید چه برای وقتی گفتیم یک مدل مارکوف من با چیا به صورت یکتا میشناسم یه چی باشه دیگه مدل رو دارم دیگه و میتونم برم کارهای بعدی انجام بدم محاسبات چیزامو تمام شد آ و بی و پی باریکلا من یه چیزی داشتم مجموعه داشتم به نام لاندا که اسمشو گذاشتم ماتریس آ ماتریس بی و ماتری و بردار پای از این سه و چها نبود

بردار احتمالات اینشیال بود این امیشن بهش میگن ترانزیشن حالا خواهیم دید حالا می‌خوام الان چیکار کنم من در واقع به هم نریزید لطفاً خونسردی خودتون حفظ کنید من می‌خوام از الان به بعد یه سری پارامتر جدید برای شما معرفی کنم که کار ما رو در میاره یه پارامتر می‌خوام بهتون معرفی کنم به نام آلفا در موردش صحبت میکنم چیه یه پارامتر میخوام تعریف کنم به نام بتا یه پارامتر میخوام تعریف کنم به نام دلتا و سای از همینا از همین اینا براتون در واقع استخراج میکنم ولی میبینید که به چه کاری میاد و مفهوم های فیزیکیشون چیه یه پارامتر براتون تعریف میکنم به نام گاما و یه پارامتر هم براتون تعریف میکنم به نام زتا که من بتونم به همه این سوالات پاسخ بدم پس لطفاً تمرکز خودتونو حفظ کنید اینا هیچی نیستند حتی اگه نتونستید حفظشون کنید هیچ نگران نباشید شما قراره بعداً توی کدهاتون آماده اصلاً از فرمول های آماده که جلوتون موجوده استفاده بکنید و در ضمن بعضی از مثلاً در واقع طول باکس ها اینا رو

خروجی رو تحویل می‌گیرید خب بسم الله الرحمن الرحیم آلفا چیست تعریف می‌کنم آلفا اندیس تی روی آی خب که حالا اگه بعداً شما بخواید خودتون کد بزنید ممکنه شما ترجیح بدید به عنوان دو تا درایه آلفا تی و آی معرفیش کنید یعنی یک بردار دو بعدی خب یک ماتریس دو بعدی معرفیش کنید حالا این چیه این معادل فارسی اینه احتمال بودن در استیت آییم در زمان خب وقتی که مشاهدات لحظه اول تا تیوم هم همونی باشه که اونا دادن خب یعنی چی پس این چی شد احتمال احتمال بودن در استیت

آی در زمان وقتی که مشاهدات من او یک تا او تی باشد حالا چی داره میگه مثلاً فرض کنید که آلفا یک یک چیو داره میگه میگه که من با چه احتمالی توی استیت یکم فرض کنید یکم برای آشپز خوشحالیه و غذای یک رو به شما میدم تحویل زمانی که بدونم غذای یک چیه خب ببخشید این بد گفتم آلفا اند این زمان بود این استیت بود این حالت بود خب وقتی که بدونم o۱ چند است مثلا فرض کنید میدونم او یک املت است حالا این بیانگر این میشه معادلش میگه احتمال اینکه

در زمان تی مساوی با یک آشپز در حالت کیو مساوی با یک یعنی خوشحال بوده و به من املت تحویل دهد خب طبیعتاً آلفا یک دو با او یک املت چی میشه میشه زمانی که در زمان احتمال اینکه در زمان طی یک آشپز در حالت ناراحتیش باشد ولی باز املت به من تحویل دهد و اینجوری میتونید هی تی آیا ببرید بالا خب پس آلفا تی آی چی شد شد احتمال بودن در استیت شماره آی در زمان تی وقتی که مشاهدات او یک تا او تی تا همون لحظه نه بیشترش به من چی شده باشه داده شده باشه خب میگه من اگه با این برم جلو به صورت ریکرسیو من ادعا میکنم که میتونم برم اون کسره رو براتون اون سیگما رو براتون حساب کنم یعنی من اول بیام برای تی مساوی با

آلفا رو حساب بکنم به ازای تمام استیت‌ها خب یعنی من تو تی مساوی با یک باید بزار تمام استیتا تمام حالت‌هایی که اون آشپزه داره آلفا حساب بکنم بعد از روی اینا میرم آلفای لحظه ۲ رو حساب می‌کنم آلفا میرم تا آلفا یه لحظه تی رو پیدا می‌کنم و حالا تو محاسباتش خواهید دید که چی تو محاسبات خواهید دید که داریم یه جورایی میریم به سمت محاسبه اون سیم های که گفتم هزینه محاسباتیش خیلی زیاده با یه هزینه محاسباتی خیلی کمتر و معقول تر فقط بچه ها دقت کنید آلفا تابعیت از زمان دارد تا استیت هم دارد خب ولی تو خودش ظاهرش چی ظاهر نشده عرض به حضور شما مثلا فرض کنید که اون چیز را هم جدا به اون دادن میخوام اینو تاکید کنم خدمتتون که اوها را بهمون دادن یعنی در حضور اوها تا لحظه تی پس این تعریف دقیق آلفا شد خودش دو تا پارامتر داره

نهانطور بمون یعنی گفتن توی اندیساش ننوشتم خب که او یک تا او تی هم بهم داده شده اوکیه یعنی املت املت مثلاً فلان بهم دادن خب بریم ببینیم محاسبه چه جوریه میگه که تعریف ریاضیش میشه پی چی همزمان o۱ o۲ ot و qt مساوی با i به شرط لاندا حالا یه لحظه می‌خوام قبلی رو ببینید اینجا خودتون بهم کمک کنید من قبلا گفتم که اولین سوالی که توی مدل ها برام مطرحه اینه که اینو حساب کنم پی او یک او دو تا او تی حالا تا یه لحظه ای یا تا او تی بزرگ که لحظه آخر باشه رو میخوام حساب بکنم اینی که الان من این علامت سوال میخوام حسابش کنم خب خواسته شماره یکم بود اما اینکه من الان تعریف کردم آلفای تی آی هستش پی او یک او دو تا او تی یعنی همه اینا خودشه در ضمن

بدانم در لحظه در واقع تیوم توی استیت آیوم هستم خب توی استیت آیم هستم در لحظه آخر این مشاهداتم اینو اسمشو میزارم آلفایتی بچه‌ها همین جا به من بگید این دوتا چه ربطی به هم دارد الان نگاه یه نوشته این اضافه داره و مثلاً من چه جوری میتونم از آلفای تی به پی برسم میتونید بهم بگید ببینید اینجا من پی او یک تا او تی برام علامت سواله ولی پی او یک تا او تی و کیو مساوی با آی باشه رو فرض کنید تونستم پیدا کنم چجوری میتونم اینو پیدا بکنم چه ایده ای دارید این الان یه شرط اضافه گذاشته یعنی قبلاً بهم نگفته بود که q لحظه آخر چند باشه الان یه قید گذاشته گفته نه تنها اینا رو باید رعایت بکنی بلکه باید تو لحظه آخر هم مثلاً چیز باشه حالت خوشحالی ناراحتی یا فلان باشه آفرین محمد باریکلا محمد باریکلا باید

باید اگر بیام رو تمام استیتا جمع بزنم ها این تمام آلفاها رو رو تمام استیتا جمع بزنم پی بدست میاد اینو قبول دارید یا نه اینو بگم اوکی این احتمال وقتی بود که عصبانی باشه توی حالت آخر یه بارم خوشحال باشه یه بار خنثی باشه یه بار سورپرایز باشه اینو با هم جمع بزنم باید بالایی رو بهم بده قبول دارید یا نه سکوت نوشتید برام عالی مرسی که تایید کردید پس این شد چی جمع اینا خب حالا چجوری آلفا رو حساب بکنم من با یک در واقع الگوریتم ریکرسیو این کار را انجام میدم یا در واقع چی بهش میگن بازگشتی یعنی از آلفا مثلا مثل چیزها استقرایی از آلفا یک شروع میکنم میرم به ازای تک تک آی هاش پیدا میکنم بعد میرم آلفا دو بچه‌ها یک بیان میتونه برای آلفاها

اینجوری باشه توی دستگاه اینجوری رسمش کنیم من این صفحه رو خرابش نکنم بعداً برمی‌گردم آلفا رو کلاً اینجوری رسمش کنید بگید اینجا نماد استیت باشه یعنی اینجا این ان تا استیتا باشند اینجا تیام باشند خب تی مساوی با یک تی مساوی با ۲ و یه جدول اینجوری شروع کنم پر کردن درسته و مثلا چه میدونم آلفای در لحظه تی مساوی با یک آلفا یک یک رو پیدا کنم آلفا یک دو رو پیدا کنم مثلا عرض کردم آلفای یک پنج نماد اینه که تو لحظه یک با چه احتمالی استیت آشپز توی پنجم خودش حالا پنجم خودش ممکنه عصبانی باشه بعد حالا آلفا دو دو چی میشه یا آلفا دو سه چی میشه آلفا دو سه یعنی با چه احتمالی در لحظه دو در استیت سوم من سوم هستم اگر او یک و او دو رو من چیز کنم و برقرار کنم یعنی اگه بهم گفته آقا اولی املت دومی کباب من باید اینو رعایت بکنم

و اینو می‌تونیم حسابش بکنیم و چیزی که می‌خوایم اینه که جمع تمام درایه‌ها تو اون لحظه یعنی سیگمای آلفاها تو اون لحظه معادل چیه احتمال وقوع o۱ تا اوتی اون لحظه هستش و اینجوری میشه این جدول رو پر بکنیم حالا یه مثال عددی می‌زنم کاملاً متوجه میشید خب چجوری حسابش می‌کنیم بچه‌ها اولین ادعا اینه که اگر شما آلفای تی آی رو بدونید چجوری میتونید آلفای تی به علاوه یک جی رو پیدا کنید چون به ازای تمام تی ها در تمام استیت ها من باید آلفا پیدا میکردم دیگه میگه که برو چیکار کن برو روی تمام در واقع آلفا تی های لحظه قبل در آی جی ش اینو ضرب بکن مثلا قبلا با یه احتمال مثلاً ۱۰ درصد توی لحظه تی مساوی با سه تو استیت یک بوده بعد لحظه بعدی

پیدا کنم میگه برو به ازای این روی تمام لحظات قبلی برو با احتمال اینکه از یک به سه میری از دو به سه میری از سه به سه میری رو پیدا کن در اون آلفای ضرب کن اینا رو با همدیگه جمع بزن خب اینجا رسیدیم تازه به اینکه احتمال اینکه استیت بعدی جی باشد چنده بعد گفته با چه احتمالی آبزرویشن او به علاوه تی به علاوه یک مثلا فرض کنید که قورمه سبزیه میگه در بی جی او تی به علاوه یک هم ضرب بکن تا چی بشه تا آلفا مورد نظرش پیدا بشه که احتمال وقوع حالا همون رفتن استیت جیوم در زمان تی به علاوه یک مادامی که چی مشاهدات قبلی همه رعایت بشن چرا این اتفاق افتاده مشاهدات o1 تا او تی که تو اون آلفا تی ها مستتر بوده مشاهده بعدی هم خودم دارم رعایت میکنم و این اتفاق برای من میفته خب حالا چیکار میکنم نحوه محاسبه گرافیکش هم اینجوریه میگه اگر شما آلفای لحظه قبل داشته باشید برای اینکه آلفای خونه بعدی مثلا جی پیدا کنید میگه برو تک تک از ماتریس انتقال

۱ در همان جی مثلا فرض کنید به پنج دارید میرید یه بار آی یک در پنج یه بار آی ۲ در ۵ آی ۳ در پنج و در آلفای مربوطش ضرب کن با همدیگه جمع بزنش رفته در یه بی در واقع چیزم ضرب بکن اینجا نوشتیم بی جی او تی به علاوه یک هم ضرب بکن تا چی آلفاهای ستون بعدی بدست بیاد و همینطور ادامه بده برو حالا فقط چالش چیه آلفای ستون اول چیه تعریف میکنم آلفا ستون صفرم باشه چی احتمال اولیه هر کدوم از اینا حالا نگاه کنید ببینید این که میگم تایید میکنید یا نه فرض کنید که طرف مثلا دو استیت خوشحالی و ناراحتی داشته مثلاً ۸۰ درصد عصبانی ۲۰ درصد خوشحال من اسم اینو میزارم مثلاً تی مساوی با صفر اینجا آلفا در واقع صفر یک آلفا اینجا تی میزارم که بعدش شما صفر بخونید آلفا تی دو اوکیه یک نماد استیت یکمه

استیت مساوی با یک یا کیو مساوی با یک که خوشحال باشه اینم کیو مساوی با ۲ حالا گفته که کی مساوی با ۲ خب مثلاً فرض کنید که سه نوع غذام بلده بپزه خب گفته با چه احتمالی شما اولین بار املت میبینید در تی مساوی با یک با چه احتمالی اولین بار املت می‌بینید می‌گیم اوکی با احتمال ۸۰ درصد من میرم خوشحالم فرض کنید مثلاً با احتمال بی یک در واقع چیزی میبینم املت میبینم ها به علاوه چی با احتمال ۲۰ درصد ناراحتم و با احتمال بی دو تا املت میبینم تو حالت ناراحتی حالا مث اینجا ممکنه ۷۰ باشه اینجا ممکنه مثلاً ۲۵ باشه و این عدد رو ضرب میکنیم جمع میزنیم تا آلفا یک یک پیدا بشه همینطور میایم آلفا آی بعدی رو پیدا میکنیم پس آلفای لحظه اول چه پیدا میشه میگه برو آلفا صفر آی رو تعریف کنم و احتمال اولیشون بعد برو شروع کن بسم الله بگو و سیگما

از در واقع تی مساوی با صفر تا تی بزرگ و روی تمام استیت‌ها این محاسبه کنید ماتریس رو و در نهایت هم وقتی می‌خواستی po به شرط لاندا رو پیدا کنید روی تمام آلفاهای اون ستونه چیکار کن جمع ببند تا احتمال این پیدا بشه بچه‌ها اینو ظاهری موافق بودید یا نه همین چیزی که گفتم یا بهتون انداختم به نظر خودتون اوکی بود اینی که این ادعایی که من با این روش برم احتمالات پیدا بکنم و هی سطح برم جلو قبول بود یا نبود اینکه با داشتن آلفاها احتمال ترانزیت بین آلفای آی تا جی بعدی و احتمال رویت در واقع آبزرویشن بعدی توی زمان جیوم تو استیت جی من بتونم اینو محاسبه کنم من هنوز همونجام به نظر یعنی کسی بچه‌ها تایید کرد تایید میکنید اینو عالی خب

چون نمی‌دونم الان بچه‌ها چقدر براتون ساده یا سخته فقط می‌خوام جا بندازم براتون خیالم راحت باشه خب حالا مثال می‌زنیم من اینجا دوست داشتم با یکی از بچه‌ها شوخی بکنم یه بار دیگه نگاه کنم ببینم بدون ذکر نام امیرعلی رسایی فرد هست یا نیست نظر وجود نداره خب آقا دلیل داشت حالا یکی دیگه با یکی دیگه شوخی کنیم آرمین با تو شوخی می‌کنم دیگه حالا پیشاپیش ازت معذرت خواهی می‌کنم حله تایید می‌کنی آقا عیب نداره منظورم بعداً خیرمونو بگیریا خب رفت مالکی رفت اذیتمون می‌کنیدا خب احسان احسان کاظمی خودتو می‌گیرم دیگه معیار می‌خواستید آخرین نفر نباشید آقا فرض کنیم احسان آشپز ما خب من عمداً این کارو میکنم که جا بیفته براتون خب

احسان فرض کنید دو حالت داره یا ناراحته یا خوشحاله خب یا ببخشید برعکس می‌گیم یا خوشحاله یا ناراحته صفر رو میزنیم نماد خوشحالی اس یکو می‌ذاریم ناراحتی حالا چه بهتر یک اس دو میذاشت که اندیس صفر رو استفاده نمی‌کرد خدمتتون عارضم که احسان دو تا غذا بلده درست کنه یا آشه یا باقالی پلو آش نماد آ می‌گیریم باقالی پلو بی می‌گیریم اوکیه احسان مطمئنیم که از ناراحتی شروع می‌کنه یعنی اینکه صد% ببخشید از خوشحالی شروع میکنه صد در صد خوشحاله یا چی یا صفر درصد ناراحته روز اول اوکیه من میدونیم که به احتمال ۶۰ درصد فرداش خوشحال خواهد بود و به احتمال ۴۰ درصد ناراحت و همینطور اگر رفت و ناراحتی به احتمال ۱۰۰ ناراحت باقی میمونه و دیگه خوشحال نمیشه پس یادمون باشه احسانو اذیت نکنیم و خب اگر ناراحت شدم با احتمال ۳۰ درصد برای اون آش درست می‌کنه با احتمال ۷۰ درصد باقالی پلو با گوشت من به نظرم این آدم آدم ارزشمندیه کسی که تو ناراحتیش هم

همچنان نه ببخشید برعکس ۷۰ درصد آخه مثال‌ها رو باید برعکس می‌کردم دیگه ناراحت و خوشحالی رو ببخشید گیجتون کردم به نظرم اینجوری بگیم دیگه من آخه می‌خواستم با رسای فرد شوخی کنم یه بار دیگه جمله‌مو داشته باشید نماد ناراحتی احسان اس یک نماد خوشحالیش خب ماجرا اینه که وقتی ناراحته احتمال ۸۰% اون آش میده ۲۰ درصد به اون باقالی پلو میده اگه بده ولی اگه خوشحال شد چی با احتمال ۷۰% برامون باقالی پلو درست میکنه ولی ۳۰% هم ممکنه آش بده و یه اتفاق خوبی که داره میفته اینجا اینه که اگه احسان خوشحال شد خوشحال باقی میمونه ها پس تلاش بکنیم احسان باید ناراحتی درش بیاریم خب حالا به این ماتریس که توش شش دهم چهاردهم و یک و صفر جا بشه میگفتیم ماتریس انتقال آ درسته پس ماتریس انتقال a اینه مثلاً ۶ دهم چهاردهم نمیدونم چند دهم سه دهم هفت

و این نماد آش بود نماد باقالی بود حالا من یکی از دلایلی که این آ و ب رو سریع عوض کردم این بود که می‌خواستم با این اسمایی که خودمون انتخاب کردیم عوض نشه خدمتتون عارضم که بهمون گفته بود احسان حتماً روز اول ناراحته و روز دوم یعنی حتماً حتماً با ناراحتی شروع می‌کنه و احتمال بیرم بهمون دادن که چی ببخشید این آش آش نبود ای بابا بد نوشته خوشحالی ناراحتی هاش بود استیت‌ها بود دیگه خوشحالی ناراحتی خوشحالی ناراحتی اینجا چی اینجا میگه اگر خوش اگر خوشحال باشه هشت دهم دو دهم این آش باقالی و اگه ناراحت باشه

ناراحتی خوشحالی ناراحتی خوشحالی یه بار دیگه بگیم آقا ناراحتی با احتمال ۶۰% تو خودش باقی میمونه ۴۰ درصد میره خوشحالی و اینجام سه دهم و هفت دهم نبود اینجا اگه خوشحال شد با احتمال ۱۰۰% خوشحال باقی میمونه و دیگه هیچ وقت ناراحت نمیشه آش و باقیش هم اینجوری بود که ناراحت باشه اینو به ما میده این معادل ستون اول معادل استیته شماره یک بود که ناراحتی باشه و اینم معادل استیت شماره دو بود که چی باشه خوشحالی باشه خب احسان خودت صورت مسئله رو متوجه شدی یا نه دینامیک رو گرفتی آره من من کلا بد نوشتم خب حالا سوال اینه گفته آقا با چه احتمالی احسان تو سه روز متوالی به ما آش باقالی میده

یعنی اینکه من تو سه روز متوالی اینو ببینم ازش چنده بعد هیچی هم در مورد حالا روز اول نام بهم نگفته که چی داده و این گفته با چه احتمالی اتفاق میفته نیسان بالاخره ۱۰۰ روز متوالی هزار روز متوالی آشپزی بکنه با چه الگویی ما ممکنه آ آبی رو ببینم خب ماجرا اینه که من با همین الگوریتم ریکرسیور میرم جلو اینجا باشید میگه من یه آلفا صفری اول تعریف می‌کنم در تی مساوی با صفر فرضی که بتونم از تی تی مساوی یک دو سه رو الی آخر رو براش بسازم گفته آقا من با احتمال صد صد خب میخوام برم در واقع تو استیت صفر با احتمال صفر درصد میرم تو فلان اوکیه که این مخفف آلفا صفر صفر و آلفا صفر یک حالا یا آلفا صفر یک و آلفا صفر دو اگر صفر و اس یک به جاش اس یک و اس دو نوشت خب اینجا چه اتفاقی میفته ببینید گفته که وقتی تو استیت یکم با چه احتمالی میرم تو همون استیت خودم نگاه میکنم اینجا تو ماتریس احتمال

شش دهم با چه احتمالی آش درست می‌کنم وقتی که توی استیت خوشحالیم هستم پس میشه شش دهم ضربدر هشت دهم خب اینو اینجا دارم روی این فلشه دارم با چه احتمالی از حالت خوشحالی میرم تو ناراحتی با احتمال چقدر تو آیه نگاه می‌کنم میشه چهاردهم برعکس گفتم ناراحتی خوشحالیش و با چه احتمالی زمانی که خوشحالم آش درست می‌کنم با احتمال سه دهم درسته خب اینم شد خدمتتون عارضم وقتی که خوشحالم یعنی اس یکم با چه احتمالی خوشحال باقی میمونم با صد صد و با چه احتمالی آش بهتون می‌دم ۳۰ درصد وقتی خوشحالم بچه‌ها اینجا یه فلشی رو نکشیده خب با چه احتمالی میرم به استیت ناراحتی اینو بهم بگید صفر من بخاطر همین فلششو دیگه نکشیده یارو ولی چیز بود باید میکشید خب

درایه‌های مربع بعدی رو حساب بکنم این فلش‌ها رو در عدد قبلی ضرب می‌کنم همه حاصل‌ها رو با هم جمع می‌کنم الان این مربعه فقط یه فلش بهش رفته میشه ۶ ضربدر ۸ میشه ۴۸ صدم ضربدر یک میشه ۴۸% بچه‌ها این شد آلفا یک یک یعنی چی یعنی با احتمال ۴۸ درصد احسان روز اول ناراحته و در ضمن بهمونم چیز میده آش میده خب آلفا یک میشه روز اول ناراحته در حالی که به اون آش داده اوکیه یه همچین چیزی خب باقیش چی میشه میشه چهار دهم ضرب در سه دهم میشه ۱۲ صدم ضرب در یک میشه ۱۲ صدم به علاوه صفر ضربدر میشه همون ۱۲ صدم اینجا میشه آلفا یک یک میشه احتمال اینکه احسان خوشحال باشه در روز اول و در ضمن بهمون چی بده آش بده خب این شد برای یه روزش

E:\courses\LangChain Project\main root\data\SCR_Session19_transcript_part3.txt

اگه می‌گفتن احتمال اینکه احسان روز اول به اون آش بده بچه‌ها عددش چند می‌شد کلاً نگاه کنید رو نه کجا نوشته از اینجا احتمال اینکه احسان به اون آش بده روز اول فقط یه روزه یعنی یه روز فقط ببینیم ۶۰ درصد باریکلا خود احسانم داره جواب میده‌ها واقعاً این کارو بکن بعداً برامون خب اینه که یه ۴۸% داره که خوشحال ناراحت بوده و آش درست کرده یه ۱۲ درصد که خوشحال بوده باهاش درست کرده اوکی ولی این به ما نگفته بود فقط روز اول گفته بود که روز دوم هم به اون آش بده خب همین الگو رو ادامه میدیم ۴۸ صدم که آلفاش باشه دوباره و زمانی که ناراحتیم با چه احتمالی تو ناراحتی میریم شش دهم با چه احتمالی آش درست میکنیم هشت دهم خب میشه ۶ ۸ تا ۴۸ ۴۸ صدم ۲۳ صدم اینور هم با احتمال صفر می‌رفته روش دیگه کسی نیست همین خودشو داره خدمتتون عارضم که با چه

احتمالی احسان عرض به حضور شما روز دوم خوشحال می‌شده ولی آش درست می‌کرده با احتمال چهاردهم خوشحال می‌شده با احتمال سه دهم آش درست می‌کرده از اینور با احتمال ۱۰۰% از اینور خوشحال می‌شده با احتمال ۳۰% آش برامون درست می‌کرده پس سه دهم ضرب در یک ضربدر ۱۲ میشه ۳۶ هزارم ۴ ۳ تا ۱۲ صدم ضربدر ۴۸ صدم یه عددی میشه با هم جمع میزنیم ۹۰۰ ها حالا باز اگه گفته بودم با چه احتمالی احسان در واقع روز اول و دوم به ما آش میده میشه جمع این دو تا ها ۲۳ صدم به علاوه ۹صدم و دوباره بی هم بهش اضافه می‌کنیم دوباره ردیف بعدی اضافه میشه ردیف بعدی هم اضافه میشه این دفعه احتمالش اوج میگیره چون خوشحاله باقالی احتمالش بیشتره اینجا هم که اگه ببخشید اگه بیاد تو خوشحالی بیشتره اینجا هم اگه خوشحال باشه که ۷۰ درصد برامون درست میکنه و در نهایت چی عددش شده ۱۳ صدم سه صدم این یعنی اینکه احسان اگر هر سه روز ناراحت باشه با احتمال

روز اول آش روز دوم آش روز سوممون باقالی میده و با احتمال ۱۳ صدم چی روز اول آش روز سوم آش روز دوم آش روز سوم باقالی میده در حالی که روز آخر خوشحاله و در کل اگه بهمون گفتن با چه احتمالی حالا اون قبلی روز آخر ناراحت باشه در کل بهمون گفتن چه احتمالی داره میشه چی جمع این سه صدم و ۱۳ صدم در کل ۱۶ صدم احتمال داره که احسان به ما این الگو رو بده ها و حالا بعدا اگه باید یادتون باشه که مثلا این احتمال که برای این الگوی سه گانه غذاهایی که آشپز ما درست میکنه وجود داره خب بچه ها تونستم مفهوم آلفا رو جا بندازم یا نه برادر کاظمی یه باقالی بهمون بدهکاری حالا خوشحال باشید دفعه دیگه حالا چرا می‌خواستم چیزو بگم امیرعلی رسایی فرد بگم امیر علی در واقع یکی از جملات زیبا و ترجمه یکی از آیات قرآن رو توی استاتوسش نوشته بود ولا خوف علیهم ولهم یزنون که خب

توی قیامت حالا برای بهشتیان احتمالاً اتفاق میفته اونجوری که وعده داده شده و اونجا این بود که دیگه اگه رفت تو استیت خوشحالی تا ابد خوشحال باقی می‌مونوند اینم دلیل بود که میخواستم شوخی باهاش بکنم خدمتتون عارضم که اینم شد ماجرایی که در مورد آلفا میشد گفت خب حالا یه تیکه شو میتونم به خودتون واگذار بکنم فقط برای اینکه صرفاً سرعت بگیرن و معادل این یکی ممکن بود آب بگه چرا از اول رفتی آخر ها من میخوام یه ادعایی دیگه بکنم یه چیزی تعریف کن که از آخر بیام اول و همچنان برام کار بکنه میگه اوکی من یه چیزی به نام بتا برات تعریف میکنم و این بتای یک کمی یه کوچولو تعریفش متفاوته احتمال بیان ریاضیش اینه میگه اگر شما تو استیت iیم بدونید تو لحظه تیام بدونید کدوم استیتید ها یعنی بدونم تو آییم هستم خب با چه احتمالی از این به بعدشو میدونم

پس چه غذایی بهم میده یعنی تو لحظه تی به علاوه دو تا تی بزرگ میدونم چی بهم میده میگه اسم اینو میزارم بتای اندیس تی آی ها پس این چی شد وقتی میگن مثلاً بتا دو پنج یعنی چی یعنی احتمال اینکه من توی زمان تی مساوی با ۲ در استیت پنجمم باشم و در ضمن از این به بعدمو بدونم آبزرویشن چین تا لحظه آخر خب اینو شروع میکنه از آخر میاد اول و برای اینکه انجامش بدید مجدداً اون شبیه قبلی یه گراف داره که هر کدوم از این بتای لحظه بعد رو در احتمال انتقال اون استیت آی به جی وصلش کنید در حالا بی معادلش ضرب بکنید اینا رو با هم جمع بزنید به تای ستون قبلی به دست میاد و برای اینشیالایزش اینو فکر کنید انشالله جلسه بعدی اگه کسی مشکل داشت رفع اشکال میکنیم فکر کردنش با خودتون میگه لحظه ستون آخر همه بتا رو باید یک بزاری ستون تی بزرگ

همه اینا رو با یک شروع بکن با این الگو بیا عقب ما تو ستون صفرم آلفا با پی صفر پی آی ها شروع کردیم اومدیم جلو و ستون آخر برای اون معیار شد اینجا برعکس میشه اینجا با یک همه رو شروع میکنه میاد سمت چپ ستون سمت چپ‌ترین معیار میشه برای محاسباتش و میگه در نهایت پی آی برابر بتا صفرها رو که حساب جمع بزنی همون در واقع باز دوباره احتمال میده و شما بین فوروارد و بکوارد یکیش انتخاب کنید کافیه یعنی نیازی نبوده که یا فوروارد یعنی هم فوروارد هم بکوارد برید به همون جواب منجر میشه این مثال قبلی همون احسان و این دفعه با بکوارد هم حل شده اینو بر عهده خودتون میزارم که از یک شروع کرده بتا رو اومده عقب و چجوری حسابش کرده در نهایت توی ستون صفرم یه بتا صفر صفر ۱۶ صدم و یه صفر بدست اومده ۱۶ صدم ضرب در یک به علاوه صفر ضرب در صفر میشه ۱۶ درصد همون ۱۶ شد همون ۱۶ درصدی شد که تو آلفا بدست اومد و هیچ

پس برای پاسخ به سوال اول که اینکه یه احتمال یه دنباله به شما بدن بگن برو پیدا بکن با چه احتمالی توسط این مارکوف مدل ساخته میشه شما یا الگوریتم در واقع جلو رو یا عقب رو برید و در ضمن نرید سمت اون الگوریتم پیور اولیه که خیلی حجم محاسباتش وحشتناک بالا بود یعنی اینم برید طبیعتاً دقیقاً به همون جواب میرسید و ما هم همین کارو کردیم ولی خب تعداد محاسباتتون می‌بینید خیلی خیلی زیاد میشه این اتفاقیه که در مورد سوال اول میشد بیانش کرد خب خدمتتون عارضم که یکم کند رفتیم جلو ولی بالاخره تلاش کردم با حوصله زیادی اینو بگم و حالا ما بعدا توی مسئله شماره سه مون که مسئله خیلی جذابی هم اصلا مدل رو نداشته باشیم فقط یه مشاهده داشته باشیم خواهید دید که باید از تلفیق الگوریتم جلو و عقب رو بریم یعنی هم آلفا برامون مهمه محاسبه بشه هم بتا محاسبه بشه حالا بهتون میگم چجوری از تلفیق آلفا و بتا میریم مدلون

استخراج می‌کنیم ولی برای مسئله شماره یک یا جلو رو یا عقب رو کارو در می‌آورد برامون و وایستیم اینجا به نظرم یعنی مسئله دوم که بهمون بگن اگر من بدونم مثلاً تو ده روز متوالی احسان آش آش مثلا چه میدونم کوبیده باقالی پلو فلان فلان بهم داده احتمالاً محتمل‌ترین حالت‌هایی که احسان میتونسته از لحاظ روحی داشته باشه چی بوده اینو باید بذاریم جلسه بعدش انشالله بحث میکنیم محتمل ترین حالت شدنی حالا بهتون میگم چون اگه برید از الگوریتم های گریدی استفاده کنید یه دفعه میبینید یه چیزی بهتون میده که نشدنیه مثلا رباتتون از نقطه یک پریده ۲۰ در حالی که باید رعایت بکنید که حتما اون گ حفظ بشه اینو می‌ذاریم جلسه بعدی و انشالله در ادامه میگیم که اوکی من یه مشتی مشاهده بهم بدن چجوری میتونم این آ و بی و پی یا این لاندا رو در بیارم خودم که دفعه دیگه بتونم سوال های یک و دو رو خودم حل کنم اونا

تا اینکه به نظرم درسو نگه داریم خب ولی چند دقیقه‌ای در مورد پروژه‌ها صحبت بکنیم خدمتتون عارضم که الان با توجه به اینکه خب تاریخ دیگه اواخر اردیبهشته ما پروژه درسیمون چیزی که براش در حال حاضر لحاظ کردیم خب قراره ده نمره از امتحان پایانی رو داشته باشه و به خاطر همین انتظارمون اینه که یه پروژه جوندار خوب انجام بشه که حتی برای خودتون بتونه منجر به یه مقاله حتی کنفرانس ژورنالی هم بشه چقدر خوب خواهد بود خدمتتون عارضم که به نظرم که از پسش برمیاد چون ابزارهای لازم رو دارید تا به این لحظه اما چی کارهایی میشه کرد خب توی پروژه من اجازه بدید تا همین الان از چند تا از بچه ها پروپوزال دریافت کردم بعضیشون دانشجوهای خود ما اند که قراره بخشی از پایان نامه ارشد یا دکتراشون تو این در واقع درس ببرند جلو بعضی از دوستان هم که با بنده نیستند ولی درختاشونو فرستادن و یه حرف های اولیه زدیم حالا چکش کاریش خواهیم

خواهشو دارم از همه زحمت بکشن تا یکشنبه آینده همه یه درخت اولیه را آماده کنند حتی اگه تغییر کرد که میشه چی میشه تقریباً اواخر اردیبهشت ما تحویلش خب یه ارائه دور هم خواهیم داشت انشالله که تا حد امکانم بهتون وقت میدیم من اگه اشتباه نکنم چیزی که اول ترم نگاه کردم حداقل تا ۱۵ مرداد رو میشه وقت داد اگر بشه بیشتر وقت داد شاید بیشتر بهتون وقت بدیم یعنی اینکه بریم مثلاً تا اواخر مرداد یا اوایل شهریور مثلا این کار بکنیم ولی فعلا شما تا ۱۵ مرداد حساب بکنید بیشتر حساب نکنید و برای اینکه پروژه رو انجام بدید خب باید حالت یک گزارشی براش بنویسید اگه کدی چیزی زدید ضمیمه کنید و اونو ارائه بدید تو کلاس خب طبیعتاً ارزیابی میشن کیفیتش هم نحوه نگارشتون و همون اتفاقی که توی پایان نامه هاتون انجام میشه یه دور حالا اینجا تمرین میشه خب اما موضوع ها رو چیکار کنیم ما با توجه به ابزارهایی که

حوزه هوش مصنوعی تا الان یاد دادیم استفاده از شبکه‌های mlp ساده شبکه‌های cnn شبکه‌های مدل‌های مخفی مارکوف و یا تلفیقی از همه اینا شما می‌تونید یه کاری رو انتخاب بکنید چه بهتر که تو حوزه رباتیک اجتماعی باشه ولی اگه نبودم من نمی‌تونم به شما خورده بگیرم و اگر کسی سمت و سوی پروژه ارشدش یا علایقش یه سمت دیگه است ولی میتونه از این ابزارها استفاده کنه برای من قابل قبوله وقتی که چک بشه البته و تاییدش بگیره من از دوستانی که حاضر هستند حالا آقای قدمی مرتضی میخوام یه لحظه دست بالا کنند صحبت کنند که میخوان چیکار کنن یعنی همون ایده که برای موضوع ارشدشون بودو بیان بکنند تا یکی دو تا سمپل داشته باشیم این و و بعدشم یه چند تا کلید واژه هم من بهتون میدم فعلا برای چیز در واقع حدس اولیه و نقطه اولیه مون که بتونید این کارو انجام بدید حالا علی علی آقا اگه هستی و مرتضی دستتون

علی یه صحبتی بکن شما در مورد پروژت که چیکار می‌خوای بکنی که حالا بچه‌ها بشنون و حس و حال بگیرن که مثلاً ما چه چیزهایی تو ذهنمون صدام هست بله خب حالا پروژه ارشدم میگم یه زیر مجموعه از اینو می‌خوایم بریم انجام بدیم بله بله حالا تا به اینجا این بوده که تبدیل یعنی کار اصلی تبدیل متن بوده به زبان اشاره که حالا یا توسط ربات اجرا میشه یا حالا یه فیلم شبیه به واقعیت تولید بشه از اون توسط شبکه های حالا جزئی تر هم بخوام بگم حالا مدلی که میخوام استفاده کنم مثلا ترنسفورم که ورودی همون متن مون رو میگیره که حالا حالا یه سری کارها باید روش بشه دیگه این کد بشه و از اینج کارها خروجیش

کار میشه کرد دیگه یا دنباله از اون مختصات اسکلتی که زبان اشاره باید اجرا بشه می‌تونیم می‌تونه باشه اون خروجیمون میتونم کلمات جدای زبان اشاره باشه یعنی یا میتونه ترجمه متن به متن باشه میتونم ترجمه متن به دنباله از حرکات باشه حالا اون قسمت دومش هم حالا یا پیاده سازی روی رباته یا هم تولید ویدیو از اون چیزه دیگه اون دنبال حرک دنبال است که مثلا توسط حالا ویچال ریلیتی توسط آواتار کامپیوتری اتفاق بیفته یا یا فیلم های شبیه واقعیت شبیه واقعیت توی بله بسیار عالی دقیقا بچه ها این چیزی که مثلاً آقای قدمی تو ذهنشون انجام بدن که حالا کل البته تقریبا کل تز ارشد ش خواهد بود تز جذاب برای ما و خیلی هم کاربردیه برای اینکه ارتباط به وجود بیاد بین افراد

در واقع با مشکلات شنوایی و همینطور افراد سالم اینه که خب یه سیستم هوش مصنوعی که یه ربات اجتماعی باشه احتمالاً بیاد چیکار کنه این کاری که گفتن و انجام بده خب زبان اشاره رو مثلاً یه سری دنبال حرکاتو بگه بعد اون دنباله از کلماتو بگه اون دنبال حرکاتشو تولید کنه و نشون بده و حالا بعداً گام‌های برعکسش هم هست یکی جلوش این کارو انجام داد درک کنه و به متن یا صوت تبدیل کنه و یه جورهایی توی افق مثلا کلان و رویاییش این باشه که یک ربات مترجم زبان اشاره به وجود بیارید حالا نه لزوما فقط زبان اشاره بلکه بین هر دو زبانی میتونه اتفاق بیفته در زبان‌های هم حرکتی هم نوشت گفتاری نوشتاری خب این چیزی بود که کاملا مورد قبول ماست توی اسکوپ این درس میشینه الگوریتم های هم که میخوان استفاده کنن نه تنها اون چیزایی که تا الان درس دادیم ایشون خاطر کارش هم مجبوره با شبکه های ترنسفورمر آشنا بشه که یه پله خفن تر از

بسیار بیشتری دارند حافظه بسیار بسیار قوی تر و بلندتری دارند برخلاف آرنا که حافظه‌های خیلی بلندی نداشتند یه کوچولو بهتر بودند ولی بازم همچنان نمی‌تونستن برن تا کلی بی‌نهایت قبل خودشونو حفظ بکنن ولی ترانسفورمرا که اساس کار حالا مثلاً ترجمه‌های زبانی الان مثل گوگل ترنسلیت و اینا هستن و ۲۰۱۷ توسعه پیدا کردن بسیار مدرن و به روز استفاده کنه یا یه جایش برای تولید حرکات توسط یک انسان مثلا فرض کنید فیک خودش بسازه شبکه های توسط شبکه های گنگ که تلفیقی از الگوهایی که داره علاوه بر اینکه گن میره برای خودش یاد میگیره و جز کارش گذاشته تو راهش از سی ان ان و آر استفاده میکنه و این مدلی می‌خواد این کارو انجام بده البته خب این پایان نامه کارشناسی ارشدشونه این پله پله اضافه‌تریه مرسی علی جان حالا مرتضی هم بگه میخوام فقط صرفا دو تا نمونه تو ذهنتون

پارسا شمام دستو بالا بکن لطفاً اگه هستی و امکان میکروفون داری برای شما هم بعدش صحبت خیلی ممنونم ازت مرتضی بفرمایید سلام استاد وقتتون بخیر وقتت بخیر پروژه ارشد من قراره که ربات رسا بتونه این قابلیت داشته باشه که زبان اشاره رو به صورت تطبیقی به کاربرش آموزش بده و رویکرد مون هم استفاده از روش کانتینرینگ که یه جورایی زیر مجموعه هم میتونه باشه برای پروژه این درس حالا نظر خودم این بود اگر نیاز داشته باشم با چکش کاریش میکنیم آره قسمت اول کار یعنی همون پیاده سازی الگوریتم کانتینیو لرنینگ برای اینکه ربات بتونه حرکت حرکات مربوط به کلمات زبان اشاره ایرانی رو متوجه بشه از طریق دوربین نه از طریق

و بتونه تشخیص بده در طول زمان هم بتونه این دیتای ترینینگ خودش رو اضافه بکنه و به روز بکنه که میشه اون در صفحه برای بچه‌ها بخوایم بگیم اینه که ربات جلوی یک نفر ایستاده دوربینش فعاله و وقتی یه نفر با دستش علائم زبان اشاره را اجرا میکنه ربات باید این دینامیکو که دید بگه که چه کلمه‌ای اجرا شد خب در حالت و حالا هی شاخه‌های دیگه داره که چی که بتونه عرض به حضور شما کلماتشو دادهگانش را ببره بالاتر تعداد لغاتی که بلده درسته و حاشیه های دیگه هم در نظر گرفته و برعکسش هم که میشه اون فاز دوم پروژه هم که فکر کنم فرصت دیگه نیست و مثلا گفتیم با هم بحث کردیم شاید حتی برای شناسایی علائم زبان اشاره نه فقط حرکات دست بلکه حرکت لب هم لحاظ بکنید درسته بله یعنی اون دینامیک لب آدم هم بگیره حالا دلیلش اینه که تو زبان

فقط حرکت دست کافی نیست و بعضی از کلمات با وجود که دستشون یکسانه لبشونه که تعیین کننده است که طرف چی داره میگه و خب این میتونه کمک کن باشه و دقتو ببره بالاتر خیلی ممنونم پارسا شما یه مقدار توضیح بده می‌خوام فقط بچه‌ها گرا داشته باشن خیلی ممنون مرتضی علی تا این لحظه پارسا شما بفرمایید سلام خدمت همگی من در مورد پروژه درس بگی خوبه حالا از کاربردهای دیتاکشن توی حوزه های مختلف خبر داشته باشید یکی از کاربردش روی فاز های هستش که دیت برداری از انسان یعنی توی کاربردهای در واقع انسان و درگیر با انسان هستش نمیشه دیتای زیادی جمع آوری کرد بعد سراغ دیتاهای افزودنی میرن و خب روش‌های خیلی مختلفی داره

و اینکه توی حوزه‌های سیگنال یعنی تایم سری کلاسیکیشن داده‌های سری زمانی یه سری روش‌های متنوع‌تری هم هست از آگمتیشن روی صرفاً ایمیل خب اینا توی ادبیات هست و من حالا خودم قصد دارم توی این پروژه روش‌های مختلف این آگمنتیشن رو با استفاده از یک شبکه دیپ که حالا عملکرد میشه و مقایسه میشه با استفاده از داده های افزوده و بدون اونا قیاس کنم و یه رتبه بندی و صوتی بین عملکرد روش های مختلف روی دیتا ست مشخصی نتیجه بشه دستت درد نکنه پارسا تو احتمالا شب هات سی ان ان بیستن درسته بیسشون بله ولی حالا قصد دارم از بلوک استفاده کنم سعی خط بشه اطلاعات اون روز که گفتم آخرین بار این چیز

بود کامپلستیم ماژولارم بهش فکر کن خب یعنی فقط نرو سمت ماژول‌هایی که صرفاً کانولوشن یا ال اس دی هستند تلفیقی‌ها رم یه نگاهی بندازی ضرر نداره چون تمرکزم روی این بخشه الان چیزایی که بچه‌ها دارن میرن جلو اگرچه ظاهرهاشون متفاوت اما قراره از همین بسترهایی که تو این درس با همدیگه تمرین کردیم انشالله بتونن موضوع خیلی جذابی در بیارن همین سه تا چیزی که الان بیان شد اگه خوب اجرا بشه هر سه تاش حداقل تا آخر تابستون یه مقاله کنفرانسی خواهد شد و خب بچه های کارشناسی ارشد مون میدونن دیگه اگر یه مقاله کنفرانسی اکسپتی بین المللی داشته باشند نیم نمره به پایان نامه ش روز دفاع کمک میکنه و فقط سابمیتی مهم نیست یعنی بهتره که پیشنهاد ما اینه که اگر میخوید برید همین تابستون بدید یکی از گزینه های پیش روتون هم کنفرانس اکرامه که تاب یعنی تابستون معمولا تو مرداد یا شهریور بعضاً تا آخر شهریور تمدید میشه مهلت ارسال مقالات چه

آبان ماه معمولا برگزار می‌شود تا مثلاً اواسط مهرماه اواخر مهر ماه نتایجش میاد که مقالتون پذیرفته شده یا نه ایندکس می‌کنه و خب یکی از بهترین کنفرانس‌های رباتیک داخلی هزینه‌های ثبت نامشم کاملا معقوله یعنی خارجی‌ها مثلاً ۳۰۰ ۴۰۰ دلارند ۴۰۰ دلار ۱۲ میلیون تومنه ولی اینا مثلاً ۴۰۰ هزار تومان ۵۰۰ هزار تومان که هم آدم می‌تونه خودش بده هم از دانشگاه کمک بگیره یا از اساتیدش یا حالا تقسیم بندی بشه بین تمام نویسندگان در مورد موضوع بچه ها من اون کارایی که چیز باشه تمام شد الحمدلله خدمتتون عارضم که این جشن فارغ التحصیلی باشه و از الان به بعد دیگه در خدمتتون هستم خرجش یه ایمیل زدن و هماهنگ کردنه تقریباً هر روز دانشگاه هستم ولی بهتره که هماهنگ بکنید برای اطمینان بیشتر روزهای یکشنبه سه شنبه خب کلاس داریم قطعا هستم بعد خود کلاس میتونه یه زمان مناسب باشه نفری یه ربع ۲۰ دقیقه نیم ساعت وقت بذاریم و صحبت کنیم مثلاً چهار و نیم

بمونم اضافه‌تر دانشگاه مثلاً دو سه نفر اونجا وصل کنیم و روزهای دیگر هم چه مجازی چه حضوری اگر فرصت داشته باشم هماهنگ می‌کنیم در خدمتتون هستیم و هیچ مشکلی نداره شما شما درخواستتونو بدید تو ایمیل با هم بحث می‌کنیم حالا برای خانم هاشمی هم خدمتتون عارضم منم اگه باز ایده به ذهنم خورد خدمتتون میگم ولی توصیه‌م اینه که ایشون هم اگه می‌تونن تو حوزه های کاگنیتیو خودشون باقی بمونن که انشالله بتونه در واقع فتح باغی باشه برای ورودشون به پایان نامه دکتراشون انشالله و ولی بقیه بچه ها هر جوری که راحتید حالا فرشاد برامون فرستاده شد یه صحبت اولیه داشتیم رامت داریم نهاییش میکنیم با آقای چیز بابا داریم صحبت میکنیم حالا قراره صحبت بکنیم انشالله و سایر دوستان بعضی هاشون مثلا یکی دو تا از دوستان هستن نمیدونم خانم چراغی شما دسترسی به میکروفون دارید و توی کلاس دیگه نیستید امکان صحبت دارید دیگه بشه یکی دو دقیقه هم شما هم صحبت

خانم یارندی توی چه حوزه‌ای دارید کار می‌کنید البته می‌دونم چون چهار به بعد یه کلاس دیگه‌ای دارید ممکنه در واقع الان حضور نداشته باشید و دسترسی نداشته باشید آن چراغی سلام وقت شما بخیر خانم یارندی نیستن خودشون به نمایندگی از ایشون توضیحاتی بدید همون پایان نامه ایشون رو توضیح بدید حالا ما خیلی کلی بگم روی پردازش صدا داریم کار میکنیم میخوام شبکه های مختلف حالا بچه ها خودشون اون فیلم را ببینند بیشتر آشنا میشن شبکه های مختلف میخویم روی داده های فارس و اینا امتحان کنیم ببینیم دقت چطوری میتونیم افزایش بدیم توضیح بدید چیه اصلا فارسا یه سری داده های آقای هستند که حالا جمع آوری شدن این فارس مخصوص زبان فارسیه و یه سری مثلا ما الان

داریم از بچه‌ها داده برداری را انجام میدیم بچه‌های دبستان از پیش تعیین شده قرائت کردن و صداشون ضبط شده بچه ها نیستند بیشتر حالا بزرگسالن آره ما خودمون می‌خوایم از همون جملاتی که اونا خوندن از روی بچه‌ها داده برداری می‌کنند بعد حالا اینا بعدا جدا میشه لغت‌هاشو برچسب زنی میشه و اینا برای شبکه استفاده کنید برای ترینینگتون هنوز داریم روش کار میکنیم ولی همین ال سی و اینا هستند دیگه احتمالا شما میزنید که داریم الان در موردش صحبت میکنیم و هم ال اس تی میخو زد بله حالا البته آماده اش هستند ما میخویم یه جوری باشه که روی داده های جدیدش کنیم آره خیلی تو خود مث زدن کدش و اینا نیستیم یه بخشش همینه و در نهایت هم که حالا

هر چقدر که وقت بشه بعداً روی حالا راستم و سیستم راست می‌خوام روی ربات‌هام پیاده سازی چیزی میگه صوتشو به نوشته تبدیل کنند درسته بله حالا یه بخش صحت گفتارم هست دیگه که بله بله تمارین به بچه‌ها داده میشه باید ببینیم چقدر خوب اجرا کردن حالا برای بچه‌های مبتلا به نارسا خوانی قراره این اتفاق صورت بگیره درسته بله مثلا حالا الان خودش هم اگر ران کنیم روی همون دادا یه سری خروجی ها بگیریم مثلا میگه کجا چه واجی را جا انداختن و چی درستش بوده چی غلط گفتن انشالله با فرض اینکه مدل خوب بشه بله مدلتون باید این قابلیت داشته باشه بسیار عالی در همین حد بچه ها اینا شد مواردی که هست حالا اگه منم بخوام یه تقلبی بهتون برسونم کلا این اصطلاح ای آی توی رباتیک یا سوشال رباتیکس رو سرچ بزنید اگر هیچ

ندارید اگر پروژه‌های ارشدتون معلومه دوست دارید زیر بخشی از اونا کار کنید قبلا عرض کردم خدمتتون با هماهنگی با استاد محترم راهنماتون حتماً می‌تونید اون کارو بکنید مثلاً آقای کاظمی اون روز به من گفت من می‌خوام تو دیپارل کار کنم من مشکلی ندارم اتفاقاً کاملاً هم باز به اسکوپ درس ما میخوره ورژن خفن‌ترای اچ ام آی مان دیگه که استیت‌ها تعدادشون نامحدوده ما الان استیت‌ها با تعداد محدود داریم صحبت می‌کنیم و خدمتتون عارضم که کلا ای آی توی سوشال رباتیک و سرچ بزنید ژورنال های مختلف ممکنه به کارتون بیان اینا رو تایپ میکنم خوب ممکنه بتونید ایده بگیرید یکی اینترنشنال ژورنال سوشال رباتیکس یکی از فوق معروف ترین ژورنال های حوزه کاری ماست و خب اینکتش بالاست اینپکتش نزدیک پنجه و خدمتتون عارضم که از ۲۰۱۱ به اینور همیشه کیو وان بوده یه ترنزککشنیه خدمتتون عارضم ترنزکشن تی اچ آر آی بهش میگن

هیومن ربات اینتراکشن میشه خیلی اسمش شبیه منه یعنی طاهریه دیگه خودی که میگم همین خانم ویچه که یکی از نویسندگان کتاب هیومن ربات اینتراکشنی که من روز اول بهتون معرفی کردم و خوب میتونید توی چیز بخصوص اوپن اکسس شده پول دادن بخاطر همین احتمالا پی دی هاش آدم های معروفی هم بعضا توش پیپر دادن از چیز بوده کرسین دان ها داده براین اسکز داده عرض به حضور شما فکر میکنم خانم سینتی برزیل پیپر داده باشه و اینا رو نوشته یه جاهایی حتی موس پاپیولرش نوشته الان ایشون دانشجوی چیز استاد دانشگاه کارنگی میلان دانشجوی بست تو یل بود

عرض به حضور شما تو دانشگاه کالیفرنیاست و با دانشجوهاشون پیپرایی دادن و میتونید از اونجا نگاه کنید آیانه هاوارد چیزه که استادای اگه اشتباه نکنم جورجیا تکیا یکی از دانشگاه تگزاس شاید تگزاس باشه یادم نیست و خب این خانم در واقع تو این حوزه خیلی آدم چیزی معروفیه عرض به حضور شما در کل اینجوریه که شما میتونید از این ژورنال ها استفاده کنید مثلا یه دونه امروز کتاب برام ایمیل شده بود کلبریتی سوشال ربات اینا همه میتونن ایده بدن بهتون خب تو حوزه صحبت ربات ها رفتار ربات ها تعامل با بچه ها شناسایی حالت های چهره شناسایی حالت های هیجانی شناسایی و مث آنالیز کیفیت تقلید حرکات وقتی یه سری تسک بچه داده شده و و

اینا همه می‌تونن الگوهای اولیه باشند حالا انشالله فکر بکنید تا یکشنبه یا نهایتاً سه‌شنبه ایده‌های اولیه‌تونو بیارید که ما خیلی دیر نشه برنامه‌مون و بتونیم با همدیگه صحبت داشته باشیم و من خیالم راحت باشه از این ۱۶ ۱۷ نفری که هستند حداقل ۱۰ تاشونو موضوع‌هاشونو به سمت فیکس شدن ببریم که دیگه بعدش چی بعدش انشالله موضوعات نهایی کنیم شما دو ماه دو ماه و نیم حداقل وقت داشته باشید رو موضوعاتتون کار کنید و یه دور تمام این مهارت های که داشت تمرین بکنید تا امیدوارم همه اینا دیگه تو ذهنتون نهادینه بشه آقا خیلی ممنون بابت حضور تشریف فرماییتون خوش و خرم باشید انشاالله به شرط حیات و کاهش آلودگی یکشنبه به صورت حضوری در خدمتتون هستیم خدا یار و نگهدارتون باشه و اگر موردی بود در خدمتتون هستیم

E:\courses\LangChain Project\main root\data\SCR_Session20_transcript_part1.txt

خوب به نام خدا دوستان عزیز و ارجمند عرض سلام و ادب و احترام خیلی خوش آمدید به ادامه درس رباتیک اجتماعی شناختی ما اواسط مبحث هیدن مارکوف مدل‌ها هستیم مدل‌های مخفی مارکوف تا الان آشنا شدیم که برای مدل کردن یه سری پدیده‌های دینامیکی پدیده های سیکوئنشال یا ترتیبی که ممکنه یه چیزی وجود داشته باشه به نام استیت که ما اطلاعی از وضعیتش نداشته باشیم سنسور ما یا خود ما نتونیم واقعا اونو ببینیم اما میخویم اونو تخمین بزنیم و دوست داریم از اون اطلاعات داشته باشیم میشد یه همچین مدل های ارائه داد مدل های که خدمتتون عارضم به اصطلاح یه سری استیت وجود دارند که تعدادشون متناهی و n تا در نظر گرفتیم و از این استیت ها یه سری ابزرویشن بیرون میاد در هر مرحله ما این آبزرویشن ها را که سبز رنگ ها باش میبینیم گفتیم که کامل‌ترین

نیاز داریم تا بتونیم در واقع این فرایند استوکستیک کلاً مدل تصادفی رو ارائه بدیم دونستن ماتریس‌های آبی و پی آ انتقال حالت‌های بین استیتا بین همدیگر هستش بی حالت‌هایی که از آ بشه تو هر استیت یه مشاهده ای انجام داد و پی هم اینه که وقتی لحظه اول بهتون میگن اون مدلتون کجاست بگید که خب از کجا با چه احتمالی شروع بکنم که مثال های مختلفی براش زدیم سه تا مسئله مهم و تعریف کردیم امروز امیدوارم این مسئله شماره سه که مسئله جذاب باشه رو برسیم خب مسئله اول این بود که اوکی من اگه آ و بی و پی رو داشته باشم یعنی مدلم به صورت یک تا معلوم باشد و بهم بگن که من یه مجموعه آبزرویشن های متوالی او یک او دو تا او تی بزرگ دارم با چه احتمالی این اتفاق افتاده o1 تا او دو تا ot پشت سر هم اتفاق افتاده ها اینو بهم بگید چند اینو جلسه قبل حلش کردیم

به دردمون می‌خوره شما فرض کنید که ۱۰ تا مدل مارکوف ارائه دادید برای ۱۰ تا چیز مختلف یه داده جدید میاد می‌خواید ببینید یک مشابه کدومه میرید این احتماله رو یک بار با مدل اول یک بار با دوم تا مدل دهمتون حساب می‌کنید هر کدوم بیشتر احتمالاً متعلق به این بوده حالا این کجا کاربرد داره توی آنالیز حرکت‌ها می‌خواید ببینید این حرکتی که کاربر انجام داد مثلاً علائم زبان اشاره شماره یک بوده دو بوده یا فلان بوده مثلا فرض کنید این علائم زبان اشاره آ بعد یه همچین حرکتی حالا به سمت راست فکر می‌کنم باید می‌رفتم آبی میشد به زبان اشاره در واقع ایرانی خب و این مثلاً نماد ر هستش این نماد ای این نماد دال و و و و اینکه یکی اینو اجرا بکنه شما بگید که کدومشو اجرا کرد برای هر کدوم یه مدل مخفی مارکوف دارید و چیکار میکنید میدید به اون مدل احتمال رو می‌سنجید ماکسیمم انتخاب میکنید یا مدل‌های دیگه‌ای مثل گفتیم تو داستان در واقع چیزی که اسیرمون کرد امیر علی

بالاخره خوشحال و ناراحتی توی چیز توی اون آشپزیه داستان آشپزیه که اگر در واقع امروز به ماکارونی داد فردا مثلاً باقالی پلو دو روز پشت سرش آش داد من باید حدس بزنم که بالاخره تو این چند روز ناراحت بوده یا خوشحال اینا چیزایی بود که بررسیش کردیم برای اینکه این کارو بکنیم جلسه قبل یه پارامتری تعریف کردیم به نام پارامتر آلفا که این پارامتر آلفا میتونست توی زمان های مختلف روی استیت های مختلف اتفاق بیفته خیلی شبیه این آبی بود فقط یه فرقی که داشت این بود که پی او یک تا او تی شو داشت اگه تی بزرگ باشه اینجا تی بزرگ و اینجا یه چیزی اضافه هم داشت میگفت که در لحظه تی شما تو کدوم استیت قرار دارید ها همین این پارامتر کمکیه حالا میبینیم که چقدر به ما کمک میکنه برای حل بخش های مسائل الف به جیم حالا که میخویم بررسیش کنیم اینو محاسبه‌شو گفتیم

گفتیم که اگر آبی و پیو داشته باشید چه جوری می‌تونیم اینو آلفا رو پیدا بکنیم خدمتتون عارضم که گفتیم برای اینکه اون این پی آبی رو پیدا بکنیم میتونستید از این سری استفاده کنیم این سری رو خودش به دو بخش میشکست یه بخش های در واقع ماتریس بی میومد تو کار یه بخش های ماتریس آ میومد تو کار و در کل همه اینا در همدیگه ضرب می‌شدن و تمام حالت‌هاش سری بسته میشد گفتیم ارزش نداره اینو حساب بکنید چون تعداد محاسباتش خیلی زیاده تو اردر تی در n به توان تی برای اینکه اینو کمش کنیم یه پارامتر به نام آلفا رو آوردیم تعریف کردیم و مفهوم فارسیش هم این شد مفهوم فارسیش این شد که احتمال اینی که من در زمان تی در استیت iیم باشم و در ضمن آبزرویشن از لحظه یک تا تی همینی باشه که من بهتون میگم ولی هیچ قیدی نمی‌ذارم که استیتام در لحظات قبل از در واقع تیام چی باشد خب این قید رو

فقط می‌بینید که فرقش با اون آبی این بود که یک کیوتی مصاحبه آی اضافه شد بعد می‌دونیم که اینو اگه روش سیگما ببندیم به ازای آیه‌های مختلف می‌تونیم به این آبی برسیم یعنی روی این بنفشه بیام آیه‌های مختلف احتمال بگیرم ببندم به این آبیه می‌رسم حالا این بنفشه محاسبش راحته را دسته و این کارو می‌تونم انجام بدم گفتیم که اگر ریکرسیو بخوام برم اول باید آلفای لحظه یک رو تعیین کنم آلفای لحظه صفر رو بخوام تعیین کنم آلفای لحظه صفر میشد احتمال بودن در هر استیت حالا هر آلفایی داشته باشم آلفای ستون بعدی رو چجوری پیدا میکنم از جمع آلفای ستون قبلی در جی های مرتبطشون در بی جی حالا مشاهده بعدی که اینا روش حرف زدیم و در نهایت یه جدول پیدا میکنید به ازای تمام تی ها به ازای تمام اس ها خب اینجا تی اینجا اس که مثلا اگه گسسته باشند اینجا از یک دو تا در واقع ان بزرگ

ام بزرگ میره که ما اینو با اندیس جی کیو جی نشون میدادیم اینجا از تی مساوی با یک میره تا تی بزرگ اوکیه شما به ازای تمام اینها باید بیاید آلفای تی آی ها را پیدا بکنید این ستون اول ستون دوم تا الی آخر و برید آخر به ستون آخر که رسیدید جمع جبری تمام عددهای ستون آخر معادل چیه این پی آبی هستش و شما میتونید اینجوری پیدا بکنید و برید گام‌های بعدی الی آخر این شد مسئله شماره ۱ گفتیم به جای اینکه از نقطه یک برید آخر یه چیز دیگه‌ای تعریف کردیم به نام پارامتر کمکی بتا خب نمیدونم کسی رفت فکر کنه روش که این چیه یا نه خب پارامتر بتا حرفش اینه میگه این پی مشاهدهداتتونو از لحظه تی به علاوه یک تا تی بزرگ تا آخر داشته باشید کیوتیتون ولی آی باشد خب

حرفش اینه میگه با چه احتمالی شما در لحظه مثلاً پنجم تو استیت شماره ۳تونید مثلاً عصبانیتتونید در حالی که از لحظه ششم تا بیستم می‌دونم که مثلاً بهم چه غذایی دادید این احتمالش چقدره ها این پارامتر بتا رو تعریف می‌کنه اگرچه تو مسئله شماره یک خیلی به کارم نمیاد ولی تو مسئله شماره ۳ کاملاً ضروریه و وجودش تعریفش در واقع بسیار ضروریه حالا برای اینکه این کارو بکنید من انتظار داشتم خودتون برید نگاه کنید چند حالت وجود داره یا متوجه شدید چی شد یا متوجه نشدید اگه متوجه نشدید میتونید معیارتون هم فرموله که اینجا هست بذارید و فرض کنید این درسته و ازش استفاده کنید چون ممکنه شما خیلی کار تخصصی نخواید بکنید اما اگه متوجه شدید یا میخوید عمیق تر متوجه بشید چه به وجود اومده یکی از راه‌هاش اینه که یا برید منابع بیشتری بخونید یا چین رول براش بنویسید یعنی احتمال o1 تا او تی بزرگ و به دو بخش

او یک تا اوتی کوچیک و اوتی به علاوه یک کوچک تا اوتی بزرگ بشکونید و برید با اون حالا آنالیزاتون انجام بدید آخرین اسلایدم این کار این آخرین اسلایدش این کارو کرده نشونتون میدم خب ولی اگر میگم خیلی متوجه نشدید عیب نداره و یکی از نکته‌های ریزش اینه که اینیشیالایزش چیکار می‌کنید ما آلفای لحظه اول اومدیم چیکار کردیم با پی کوچیک ها در واقع معادل کردیم که یعنی لحظه اول رو داشتیم فرمول ریکرسی هم داشتیم میتونستیم بریم داینامیک پروگرم کنیم دو رو از روی یک سه رو از رو دو الی آخر پیدا بکنیم تا هر زمانی هم دلمون میخواد بریم جلو این بتای ماجرا داره اینیشیالایز کردنش اگر دیده باشید اینه که توی لحظه آخر همشو یک تعریف میکنه حالا این یعنی چی اینو کسی میتونه بگه یعنی چی چرا باید این اتفاق بیفته میگه آقا بتا تی بزرگ یک یکه بتا تی بزرگ دو یک یعنی بتا لحظه آخر

عرض به حضور شما اینی که عصبانی باشید تا لحظه آخر اینکه خوشحال باشید چرا اینه مفهومش مگه معادل چی بود یه بار برای خودمون بگیم احتمال این بود که از در واقع مشاهداتمون همونی باشه که اونا به ما دادن در ضمن توی لحظه در واقع تی تو استیت چیز باشم تو استیت مورد نظر باشم مثلاً تو یک باشم دو باشم الی آخر و مشاهدات از تی به علاوه یک تا لحظه آخر اونی باشه که اونا میدن مگه نه اینکه بتای تی یا کلا اندستی نماد لحظه آخرمه این حرفش اینه که میگه برو نگاه کن توی تی به علاوه یک تا لحظه آخر مشاهداتی که اونجا دیده رو بگو خودش مشاهده دیده نشده میگه با چه احتمالی اگر شما الان اینجا باشید بعد هیچ مشاهده نمیبینید میشه یک ها اینم توجیهیه که حالا امیدوارم اشتباه نکرده باشم یعنی فارسی گویش اینه اینیشیالایز کردنش اینه که ستون آخر رو یک بذارید عقبی بیاید

اومدنشم با این فرموله شدنیه و بعدشم در لحظه اونجا تو آلفا از ستون آخرش می‌رفتید اون پی آبیه رو پیدا می‌کردید این آبی منظورم اینه اینجا اگه از بتا برید از ستون اولش حالا باید برید اینو پیدا کنید و دقیقا به یه جواب میرسه حالا یه نکته دیگه خیلی جذاب که اینو سعی کنید فعلاً بدون اثبات از ما قبول بکنید اینه این پی آبیه نه تنها برابر بود با رادیکال های آلفای لحظه آخر آی ها یعنی برو ستون آخر آلفا رو بخون همه رو با هم جمع بزن بلکه یه فرمول دیگه داره میگه در هر تی دلخواهی که هستی بیا آلفا تی آی رو در بتا تی آی ضرب بکن روی آی جمع ببند باز به همین آبیه میرسی یعنی برو در اگه دلتون خواست از در زمان یک این کار بکن در زمان دو این کار بکن تا در زمان آخر بچه‌ها چرا این فرمول اولا این یکی سمت چپی چرا برقراره

چون بتایی‌ها تو لحظه تی بزرگ چند بودند همه یک بودن یعنی اینکه مثل که هر آلفایی داشته در یک ضرب میشد و این فرموله پس صحتش برقراره حالا اگه این چرا برقراره باز فعلا صبور باشید حالا یا بهش میرسیم و متوجه میشید یا نه تنها چیزی گرافی بخوام نشونتون بدم اینه که از لحظه یک تا تی اگه بخوام برم جلو من به دو تا بازه در واقع یک تا تی کوچیک میشکونم و تی کوچک تا تی بزرگ بعد میگم که حالا اینجا تو لحظه کیوش میتونه انواع چیزا باشهq لحظه تی میتونه از اس یک باشه تا چی اس ان دیگه یا کیو یعنی همه این حالت مختلف رو با خودش بگیره بچه ها آلفای آی در لحظه تی نمادی از ببخشید تی کوچک نمادی از این بخش که بخش چیز اتفاق بیفته مستطیل سمت چپ اتفاق بیفته از اینجاش نم

مستطیل سمت راست اتفاق بیفته اونجا می‌گفت لحظه آخر مشاهدت اس تی باشه اس مورد نظرت باشه اینجا میگه یه لحظه قبل از اینکه بری تو مستطیله اس تی باشه از اون به بعد آبزرویشن‌ها رو داشته باشی حالا اینجا اینجوری میشه که آلفای تی آی در بتای تی آی اگه ضرب بکنید و روی آی هاش ما ببندید چی میشه شما میتونید به اون احتمال آبیه برسید توی هر کدوم از زمان‌ها می‌تونید این کارو انجام بدید میتونید تو تیم مساوی یک مساوی دو تا تیم مساوی تی بزرگ انجام بدید خب پس این این احتمال از چند روش مختلف به دست اومد اگر از آلفا برید بهش میگن فوروارد اگر از فقط بتا برید بهش میگن بکوارد اگر از تلفیق اینا برید بهش میگن فوروارد خب خدمتتون عارضم که اینو نگه داریم این آلفا بتا رو با هم لازمش داریم و فعلا در این حد بدونید که اینا هست پس من با داشتن مدل کاملم آ بی و پی ادعا می‌کنم که می‌تونم جدول آلفا و جدول بتا را از

۱ تا تی بزرگ از استیت ۱ تا n بزرگ یا ام بزرگ حالا بسته اینکه با چه حرفی نشونش بدید پیدا بکنم کسی با این مشکلی داره یا نه من این ادعا رو دارم که اگه آ و بی و پی معلوم باشد من میتونم این جدوله رو براتون تشکیل بدم حالا ببینم این جدوله چه جوری به کارم میاد این اوکیه که جدول رو میشه تشکیل داد ریکرسی گفتیم میشه دیگه آلفا را از ستون اول شروع کنید برید به چهار از ستون آخر تمام همه محاسبه میشه خب گام دوم مسئله دوم بهش میگن مسئله دیکودینگ خب مسئله دیکودینگ حرفش اینه میگه که اگر بهتون بگن که فلان آشپز همین امیر علی که نبود ما کارا نیست ماکارونی آش آش ماکارونی قورمه سبزی بهمون داده احتمالاً تو چه استیت های بوده خب برو بیشترین احتمالی که میشده از استیتش گرفت تا اونو تولید کنه برامون به دست بیار ببین ما همه قبول داریم که این میتونسته هر روز خوشحال باشه این الگو رو به ما بده میتونستم هر روز

روز ناراحتشم شانس باقالی پلو دادن وجود داشت ها ولی میگم برو نگاه کن کدوم حالتش که محتمل‌ترینه و در ضمن شدنیه نه اینکه یه چیزی بگی که اصلا اتفاق نتونه بیفته مثلاً تو حرکت ربات یه دفعه از استیک یک بگه مثلاً از اینجا بازه اونجا بوده بعد بگه که گام بعدی رفته طبقه بالا در حالی که اصلاً شدنی نیست خب باید یه همچین اتفاقی هم بیفته اینو میگه چیکارش کنیم میگه ببین یه حالتش اینه که بیاد تمام حالت‌های ممکنو بنویسی با این آبیه بری چیکار کنی یعنی احتمالاتشو هی حساب بکنی یعنی مثلاً بگی یک بار من میدونم خوشحال خوشحال خوشحال خوشحال بوده بشم دیگه ماکارونی ماکارونی باقالی پلو داده این احتمالش دیگه یه بار ناراحت ناراحت بوده بعد اینو داده یه بار خوشحال خوشحال ناراحت بوده ولی تمام حالت هاش حساب بکنم ببینم کدوم ماکسیمم ها و بگم این حالت جوابه در حالی که این دوباره اصلاً افشنت نیست و اردر محاسباتیش جوریه که کمر کامپیوتر

شما محاسبه میکشه و یه راه حلی که بهتون پیشنهاد میدن یا راه حلی به نام الگوریتم ویتربی خب که می‌تونه بیاد برای شما این احتمالو بشینه کنه یا همون الگو رو بره پیدا بکنه چه‌جوری این اتفاق می‌افته نمی‌خوام غرقتون کنم تو ریاضیات مسئله ولی می‌خوام یه سری هینت و کلید واژه بهتون بدم که وقتی می‌خونید راحت باشید الگوریتم بیتربی بسیار مراحل پیشرویش به آلفا شبیهه چه بود آلفا ستون یک رو تشکیل میدادیم ستون دو و و و الی آخر اونجا تو آلفا چیکار میکردیم میگفت وقتی میخوای بری آلفای ستون بعدی رو پیدا بکنی خب این گراف را بیارم میگفت بیا این کارهایی که میگم بکن برو این آلفا تی یک یعنی سطر ستون قبلی باشه در a معادل یک جیش ضرب بکن به علاوه آلفا دو بعدی در آی دو جی تا آخر جمع بکن میتر بی اینو میگه میگه

آلفا یک تی و در آ یک جی ضرب بکن اینو برای خودت نگهدار آلفا ۲ تی رو در آ۲ جی ضرب بکن نگه دار همین کار تا آخر بکن ماکسشو فقط بگیر نمیخواد جمع بزنی همین الان بهترین مسیر را انتخاب بکن برو دیگه ها و ماکسشو انتخاب کن تمام بقیش همینه بقیش همینه یعنی مدل آلفا است اینیشیالایز کردنش کاملاً شبیه آلفاست یعنی ستون اولش مثل آلفا اینیشیالایز میشه فقط وقتی که میخواد انجامش بده میگه ستون دوم که میخوای حساب ببند رو اونا یکی یکی حساب بگیر و فقط ماکس رو نگه دار ها همین کار برو تا آخر تا ماکس کلش بدست بیاد حالا بهتون میگم چجوری برید مسیر بهینه رو پیدا بکنید اینجا دو تا پارامتر کمکی بچه ها میخوام تعریف کنم یادتونه سری قبلی گفتم آ و بی و پی تنها نیستند من یه سری آگزلری پارامترها یا پارامترهای کمکی میخوام تعیین کنم تا الان آلفا و بتا رو تعیین کردم که تابعیت از چی بودن زمان بودن و استیت بودن در مورد آبزرویشن فعلا یعنی

آبزرویشن‌های داده شده اینو چندندن الان می‌خوام دو تا پارامتر کمکی دیگه تعریف کنم به نام دلتای تی و آی که کاملا شبیه آلفاست ولی گفتم به جای جمع ماکس می‌بندن و یه سای می‌خوام تعریف کنم که این سایه قراره براتون سیو بکنه کدوم خونه کدوم استیت ماکسیمم رو داشت دلتای چیکار میکنه بیشترین احتمال داره سیو میکنه عددش احتمالاتیه ولی اون سایه چی میگه میگه کجا همچین اتفاقی افتاده تو استیت چندم این اتفاق افتاده پس دو تا پارامتر کمکی دیگه اینجا اومدن وسط و این کار بخوام انجام بدم دیگه بقیش کاری نداره الگوریتمی میتونه برای شما این کار انجام بده میگه بیا ماکس رو بگیر برو جلو این بچه ها اینو داشته باشین میگه در واقع این ماکس را حساب بکن در بی فلان ضرب بکن تا دلتای ستون بعدی رو پیدا بکنی و فرقش هم با اون اینه که یکیش مجموع بود یکیش بیشینه حالا سوال حل میکنیم کاملا متوجه میشی و خدمتتون عارضم علاوه بر این دلتا میگه به یه پارامتری به نام

احتیاج داری و اونم چیه و اونم حرفش اینه که کی‌های این اتفاق افتاده بچه‌ها اینجا می‌خوام ببینم این تفاوت شما از قدیم بلد بودید یا نه یه جا نوشته مکس فلان یه جا نوشته rg bac فلان زیرش نوشته آی این دوتا فرقشون چیه اون مث چیکار میکنه همون عددی که جلوشه رو ماکس می‌گیره می‌ریزه تو دلتا اونی که نوشته rg مکس یه چیزی زیرش یعنی چیکار کن یعنی برو نگاه بکن به ازای چه این ماکسیمم میشه یعنی وقتی ماکسیم شد خود این کروشه رو نریز تو سای برو اندیسشو برام بریز میگه برو نگاه کن کی ماکسیمم ولی بگو چندمی بود که اینه اونو برام سیو کن این فرق مکس و آرک مکس و این کار اگه انجام بدید به راحتی می‌تونید مثلاًتونو حل کنید حالا بریم سر مسئله قبلی گفته بود که یک در واقع آشپز داریم که دو تا غذا بلده برامون درست کنه دو تا استیت هم داره ناراحت و خوشحاله فرض کنید که از

ناراحتی اگه شروع کرد احتمال ۶۰ فرداشم ناراحته به احتمال ۴۰ درصد خوشحاله ولی اگه رفت خوشحال شد دیگه چی به احتمال ۱۰۰% روزای بعدی هی خوشحاله خوشحاله حالا میگه وقتی ناراحته به احتمال ۸۰ درصد به شما نون خشکم نمیده به ازای ۲۰ درصدتون چلو کباب میده ولی وقتی خوشحاله به ۷۰ درصدتون چلو کباب میده به ازای ۳۰ درصد بهتون نون خشک ها میگه که اگر یه روز اومد نون خشک نون خشک چلو کباب داد بهتون یا آبی داد با بیشترین احتمال کدوم حالت ها رو داشته یعنی سه روز شما باید بگید بین خوشحالی ناراحتی چی بوده خوشحال خوشحال ناراحت بوده خوشحال خوشحال بوده ناراحت ناراحت خوشحال بوده کدومشه اینو باید برید پیدا کنید با ویتربی میگه به راحتی پیدا میکنم میگه دلتا رو برو جدولشو تشکیل بده مثل آلفا ستون اول برای جفتش چی یک ضربدر چی می‌ذارید به اصطلاح اون پی آیش میذاید اینجا پی آیش به اصطلاح ۱۰۰ بود اینجا صفر درصد پس دلتای یک یک حالا یا دلتای صفر صفر حالا اینجا

محاسبه کن بعدیش میگه چه جوری محاسبه میشه میگه شما با احتمال ۶۰ درصد تو استیت خودت باقی می‌مونی و با احتمال ۸۰ درصد به من آ میدی درسته چون قرار بود آ آبی بده دیگه پس ۶ ۸۰ ۴۸ ضربدر یک میشه ۴۸ صدم اینجا هم یه فلشی بود گفتیم نرس نکشیدن چرا نکشیده بودن چون امکان احتمال رفتن از s1 به اس صفر وجود نداشت اگه داشت باید میکشیدید بعد اینجا فرض کنید میشد ۱۲ صدم اینجا شده ۴۸ صدم کدومو می‌نوشتی تو عددا جمع نمی‌زدید ۴۸ همین ۴۸ فقط می‌نوشتید تمام شد جدول دلتا داره تشکیل میشه همین کار برای چی اس یکی انجام میدید اینجا میگه اگر از حالت یک شروع کنم با احتمال ۴۰ درصد میرم خوشحال میشم ولی با احتمال ۳۰ درصد نون خشک بهتون میدم میشه ۱۲ صدم اینجا احتمالش صفر بود پس ماکسش ۱۲ صدمه حالا بین این دو تا دوباره میخوید برید بعدی خب

این یکی دوباره با احتمال ۶۰ درصد ۸۰ درصد مثل این تو آ باقی می‌مونید اینجا چی اینجا رو بهم بگید میگه با اگه از آ بخوام برم تو بی با احتمال ۴۰ درصد میرم با احتمال ۳۰ درصدم در واقع نون خشک بهتون میدم ۴۸ صدم خود قبلیم بوده زرد می‌کنم یه عددی میشه اینو داشته باشید نگه دارید یه جای دیگه هم میگه با احتمال ۱۲ درصد از استیت دو می‌خواستید شروع کنی با احتمال ۱۰۰% تو اون استیت می‌مونید با احتمال ۳۰ درصد غذای نوع آ رو بهم میدی اینجا میشه چقدر ۳۶ هزار درسته بین این دو تا ماکس بگیر بین این دو تا عددی که گفتم عدد ۳۶ ۳۶ هزار شد اینجا شش صدم یا ۶۰ هزار شد اینجا ۶ صدم برنده میشه و اینجا فقط ۶ رو نگه مید یعنی بقیه رو پاک میکنید و میندازید دور حالا مسیری که دارم میرم جلو کاملاً مسیر دوبلیه یعنی کاملاً استیت ها جوری اند که من دارم از آی آی جی تبعیت میکنم تو خط نزدم یعنی اینکه اگر یه استتی نتونه بره یه استیت دیگه خودش

صفر لحاظ میشه و من دیگه اصلاً نمی‌بینمش مثل الان استیتای پایین به بالا وصل نیستن دیگه ها دلتای بعدی هم تشکیل دادم دلتای بعدی هم تشکیل میدم حالا میگه چه جوری اینایی که تشکیل شد دلتان حالا اون سایه کدومه بچه‌ها الان سایه مسیر بیشینه است میگه ببین از یک شروع کن بعد برو ۴۸ صدم بعد ۲۳ صدم بعد ۶۰ صدم محتمل ترین حالتی که به شما نون خشک نون خشک چلو کباب بده اینه که ناراحت ناراحت خوشحال بوده حالتای دیگه هم بوده میتونسته خوشحال خوشحال باشه ولی این محتملتره اوکیه پس اینم وقتیه که شما اینجوری مدل می‌کنید اینم شد مسئله دوم با الگوریتم ویتر وی با دو تا پارامتر کمکی دلتا و سایت چیکار کردم اینو حلش کردم که اینجا اومده مقایسه کرده گفته آلفا رو دلتا رو با هم کشیدم توی دیاگرام یعنی تو یک صفحه که با هم ببینید فرقشون اینه که اینجا ماکس میگرفت اینجا جمعشو می‌گرفت خب و این دو تا دو تا چیز متفاوتن و اما بریم

به ازای استیتا که میرید جلو خب دو تا احتمال هی داره در هم ضرب میشه اولاً احتمال اینکه از این استیت استیت بعدی باید با چه احتمالی اون غذا رو برامون تولید میکنید یعنی یه کلی عددهای زیر یک در همدیگه ضرب میشن ها صد تا استیت برید جلو اردر عدداتون دو به ۱۰ به توان منفی دوست خب یه همچین چیزایی و خاطر همین ممکنه که نرم افزارها کامپیوتریتون کم بیارن پیشنهاد میکنه میگه از لوگاریتم به اینا استفاده بکنید خب میگه چون ما برای اون اصلا مهم نیست عددش چنده میگه من فقط می‌خوام ماکسیمم بگیرم دیگه نهایتاً یکی هم ازت میپرسه میگه حالا این احتمالش چند بود که از ناراحت ناراحت خوشحال برسیم به اون نقطه اینم براش حساب می‌کنید اگه دلتون بخواد با اون حالت الف ولی ممکنه عدد خیلی مهم نباشه مثلاً عددش بشه یک ده هزار یک صدم درصد این اتفاق میفته ولی ماکسیمم دیگه بالاخره و خب اینجا میگه از لوگ اینا استفاده کنید و

اینجا ضربا به جمع تبدیل میشن اگه دلتون می‌خواد می‌تونین اسلایدم ببینید و اگه خواستید خودتون کد بنویسید من پیشنهاد می‌کنم اینو بنویسید نه اینکه بیاید یکی یکی در همدیگه ضرب بکنید چون مثلاً با مطلب اینا مشکلات عدیده برمی‌خوریم و اما جذاب‌ترین مسئله که ما حالا منتظرش بودیم حقیقت من که خیلی منتظرش نبودم قبلا بلد بودم شما هم که بعید می‌دونم خیلی منتظرش بوده باشید با هم تعارف نداشته باشیم ولی مسئله مسئله جذابیه حداقل به درد در واقع مثلا بین دوستامون خانم یارندی میخوره اینجا که توی پایان نامه همون پروژه کارشناسی ش دارن ازش استفاده میکن و ممکنه دوستان دیگه که تو مدل های دینامیکی کلا یه سری سیگنال ها مثل حرکت ها و فلان و اینا بخوان آنالیز بکنن داستان اینه میگه اگه من یه سری مشاهده بهت بدم مثلاً ۱۰ بار این حرکت اینو انجام دادم ۲۰ بار هم حرکت اینو انجام دادم به من بگو که برای هر کدوم چه مدلی با آ و بی و پی میتونم در بیارم خب بچه‌ها اینجا

اتفاق می‌تونه بیفته خب یه اتفاق اونیه که من قبلا دو سه جلسه قبل خدمتتون گفتم ولی سوسکی صداشو در نیاوردم الان می‌خوام اعتراف بکنم خب البته نذاشتما فقط مسئله رو ساده‌تر از اون چیزی که بود براتون جلوه دادم اگه یادتون باشه یه مثال براتون زدم گفتم یه آدمی هست که پیپها رو ریجکت میکنه یا اکسپت میکنه بعضی وقتا خوشحاله بعضی وقتا ناراحته مثال پوکر رو براتون زدم و گفتم که اومده ۱۶ روز داره به ما داده یعنی بهمون داده نمونه ۱۶ روزشو داده که من عصبانی بودم یا خوشحال بودم ریجکت کردم یا اکسپت و شما می‌خواید آ و بی و پی رو در بیارید این خیلی راحت بود به این مسئله میگیم مسئله سوپروایز یا مسئله با نظارت یعنی من داده دارم من نمونه استیت های که نباید ببینم و ۱۶ روزشو بهم تقلب رسونده ها و من دارم از روی اینا آ و بی و پی رو پیدا کردم اصلاً کار سختی نیست درسته چه

مثلاً فرض کنید که ماتریس آ داشت چی میگفت میگفت از خوشحالی به خوشحالی چند بار رفتی از خوشحالی به ناراحتی چند بار رفتی از ناراحتی و خوشحالی از ناراحتی و ناراحتی دیگه می‌خواستی در بیاری می‌رفتی نگاه می‌کردید می‌گفتید آقا اولی ناراحته بعدی ناراحت اولی ناراحت بعدی ناراحت پس دو تا دارم ناراحت به ناراحت رفتم یه دونه ناراحت به خوشحال رفتم یه دونه ناراحت به ناراحت اینا رو بشمارید ناراحت به خوشحال چند تا رفته تو چند تا مثلا ناراحت به خوشحال خب خدمت تو عارضم که کدوم بود اینجا هشت تا تو ده تا یعنی هر وقت که ناراحت اولی بوده تو ده تا نمونه که بغل ماست هشت تاش فرداش هم ناراحته درسته پس من می‌تونم درای ماتریس آ رو اینجا پیدا کنم از اینی که الان ناراحته پیپر و اکسپت کرده یا ریجکت کرده می‌تونم چیو پیدا کنم ماتریس بی رو پیدا کنم تو استیت های مختلف درسته و از اینی که چند بار بار اول خوشحال بوده تو

چند بار ناراحت بوده چی می‌تونم پیو پیدا کنم و تمام آبی و پی رو دارم و فلان اما یه سوال اساسی میمونه ممکنه مسئلتون جوری باشه که شما هیچ وقتی استیتا رو نبینید براتون مهمه که مدلش کنید ولی هیچ وقت کسی نیست بهتون نشون بده اصلا راهی ندارید و اونجا با یک مسئله آن سوپروایزد ها یا بدون معلم مواجهید ما تا الان توی بخش‌های قبلی هوش مصنوعمون اصلاً در مورد آنسوپروا صحبتی نداشتیم و این اولین باره که می‌خوایم روش صحبت بکنیم ها و اینی که اگر این اتفاق افتاد چیکار کنید درسته خب خدمتتون عارضم بچه ها اینجا دو تا پارامتر دیگه احتیاج دارید خب به نام گاما و کیسی که دیگه این آخریاش قول بهتون میدم این آخریاشه و اگر اینم تعریف بکنید چی میشه دیگه میتونید هر کاری با مدلتون بکنید خوشبختانه

گامائوکسی از آلفا و بتا به دست میان یعنی شما اگه آ و بی و پی رو داشته باشید بلدید آلفا بتا و پیدا بکنید من ازتون تایید گرفتم و میتونید از روی در واقع چیست آلفا و بتا گاما و کیسی رو پیدا کنید حالا این گاما و کیسه چی هستند مفهومش اینه اولاً گاما خودش تابعیتی از در واقع دو تا چیز خودش داره یه دونه‌شم می‌شه مشاهده حالا میارم از رو صحبت می‌کنیم براتون خب خیلی خدمتتون عارضم که اول اومده کیسی رو گفته اینا گاما و کیسی رو تعریف می‌کنیم اول اجازه بدید کی سی رو بگم بعد گاما رو بگم کیسی میگه احتمال که در زمان آی خب در زمان تی مساوی با آی خدمتتون عارضم ببخشید در زمان تی توی استیت iیم باشید و در زمان یکی بعدیش برید جیوم خب اگر

واحداتتون همونیه که من گفتم یکمی مضحکه‌ها تعریفش خب یعنی ممکنه براتون سوال بشه چرا میگه آقا من بهتون گفتم که در واقع چیست آشپز برای من ماکارونی ماکارونی چلوکباب فلان فلان درست کرد اینا آبزرویشن‌ها رو از اول تا ته بهتون دادم احتمال اینی که توی روز پنجم ناراحت و روز ششم خوشحال باشد چقدره یکمی عجیبه ممکنه بگید آقا قبلش قبلش چی بعدش اصلا مهم نیست برام روز پنجم ناراحت روز ششم خوشحال میگه من به این پارامتر می‌گم کیسیه آیه کیسیه تی آی و جی در روز تی ام تو استیت آی باشم روز تی به علاوه یکم تو استیت جیوم باشم به این میگن کی سی فلان درسته یه پارامتر دیگه تعریف می‌کنم به نام گامای تی آی میگم احتمال اینکه در روز تیام تو استیت iیم باشم دیگه فرداش

E:\courses\LangChain Project\main root\data\SCR_Session20_transcript_part2.txt

باز دوباره با همین مشاهدات یعنی باید روزهای قبلش بهم گفته باشن چه نوع غذایی درست کرده یکمی عجیب غریب ها یعنی به نظر میاد کاربردی نداره در نگاه اول شما از من می‌خواید که من بهتون بگم روزهای قبل و بعد چی درست کرده ولی اصلا براتون مهم نیست که روزهای قبل و باید تو چه استیتی بوده فقط اون روزی که روزه در واقع تیومه براتون مهمه که تو استیت باشه به این میگن گامای تی آی اوکیه حالا یه چیزی شهودی قبول دارید سیمای روی کیسه تی آی و جی اگه رو جیش سیما ببم گامای تی و آی بهم میده اینو قبول دارید یا نه این حرفش چیه میگه آقا میگه شما فرض کنید روز آییم قراره خوشحال باشید میگه احتمال اینکه روز آییم خوشحال باشید چیه میگه احتمال که روز آییم خوشحال باشم فرداش ناراحت باشم به علاوه احتمال روز خوشحال باشم به علاوه فرداش خوشحال

فرداش خنثی باشم دیگه درسته پس سیگمای روی کیسی‌ها به شما گاما رو میده خوبیش همین شد پس کیسی و گاما به همدیگه ربط پیدا کردن اوکیه کسی شد هم امروز و هم اون روز مورد نظر رو باید بدونید هم فرداشو باید بدونید استیج چی بوده کل آبزرویشن باید بهتون بدن گاما چی میگه میگه فقط اون روز تیامو باید بدونید استیج چیه کل آبزرویشن رو باید بدن این احتمال به کارمون میاد حالا چجوری به کارمون میاد برای پیدا کردن ماتریس های آ و بی و پی که ندارمشون ولی این سری یه سری مشاهده بهم دادن یه مشت حرکت انجام دادن یه مشت سورت ضبط کردن گفتن اینا سلامه اینا خداحافظه بعد می‌خوام بگم برو برای سلام بگو آبی و پیش باید چند باشه برای خداحافظ باید چند باشه از رو مشاهداتم باید اینو پیدا بکنم خب برای اینکه این کارو بکنم میگه شما چیزش اینه کاست فانکشنش تو ذهنش اینه میگه باید این احتمال بیشینه کنید میگه

کجا رفت احتمال مشاهداتتونو باید بیشینه کنید یعنی اگر اگه اینجام ننوشته عیب نداره الان اینجا یه جای دیگه بهتون نشون میدم توی پاورپوینت بهتون عارضم میگه اگر شما تا مشاهده داشته باشید من می‌خوام آ و بی و پیمو جوری پیدا کنم که پی احتمال در واقع دی به شرط تتا تتا همون لاندا است حالا اینجا تو نوتیشنش از یه اسلاید یکی دیگه برداشتم خب آ و بی و پی چند باشد که احتمال مشاهدات هم حداکثر شود اوکیه خب این میگه که در حالت عادی نمیخوام وارد ریاضیش بشم فقط همین قدر بدونید که وقتی داده‌هایی که سیو کردید مستقل بوده یعنی ۱۰ بار این حرکت رو سیو کردید یا ۱۰ بار سلام گفتید سلام اول به دوم به سوم هیچ ربطی نداره اینی که ماکسیمم بشه احتمالش یعنی احتمال اول در دوم در سوم در دهم ماکسیمم بشه اینو قبوله خب برای اینکه این اتفاق بیفته باید اینو بازش کنید و الی آخر من فرمولش بهتون میگم خب

و حالا می‌تونیم رو جزئیات بیشتر بحث کنیم بچه‌ها فرمولش اینه میگه که شما اول بیاید وقتی یه مدلی می‌خواید در بیارید مثلاً از ۱۰ تا سلام دارید می‌خواید آبی و پی براش در بیارید یا ده بار این حرکت کردید مدل اول یه سری آ و بی و پی رندوم تعیین کنید با سایز یکسان با سایز معلوم سایزی که باید باشند آ ان در ان باشه بی ام در ان باشه به تعداد مشاهدات به تعداد در واقع چیزا خدمت‌تون عارضم که ابزرویشن ها که میرفت جلو و پی هم که باید باز ان در یک باشه دیگه ها یا یک در باشه میگه اول اینشیالایز کنید اینا رو چجوری برید پیدا کنید میگه با اون آ و بی و پی که دارید قبول دارید میشه آلفا و بتا رو پیدا کرد میشه دیگه حالا یه چیزی هست بالاخره یا غلط یا درسته بسته میشه آلفا رو پیدا کرد دیگه بیاید گاما و کیسی رو تشکیل بدید گاما و کیسی رو چجوری تشکیل بدیم اینجوری میگه با داشتن

آلفا خب با داشتن در واقع آلفا و بتا کیسه آی و جی تی میشه این عبارت آلفا تی آی در بتا تی بعلاوه یک جی در آی جی بی جی به علاوه یک تقسیم بر یک چیزی اوکیه حالا یا براتون مهمه بفهمیم چیه یه بار براتون مهم نیست و تو کدها استفاده می‌کنید من یه بار شفاهی بهتون میگم این چه اتفاقی داره میفته وقتی میگه من میخوام احتمال کی سی آی و جی رو پیدا کنم کی سی چی میگفت میگفت احتمال اینکه روز i ام توی استیت روز تیوم تو استیت و روز تی به علاوه یکم تو استیت جی باشم درسته قبول دارید قبل اینو من می‌تونستم با آلفای تی آی مدل کنم بعدش هم با بتای تی به علاوه یک جی مدل کنم بین روز تی و تی به علاوه یک من با احتمال جی از استیت iیم میرم تو جییم با احتمال بی جی

صورت کیسی درسته مخرج کیسی چی می‌ذارند چیزی می‌ذارن که از جنس احتمال بشه یا نرمالایزش کنه ها درسته که جمع مثلاً کیسه‌ها از جنس احتمال بشن میگه که سیمای آلفا تی بتا تی آی ها آی از یک تا ان میشه چی میشه مخرج کسی بچه‌ها این یک کسی یادشه این چی بود اون پی آبیه بود اول کلاس گفتم که میتونستید یاد تو هر زمان دلخواهی دلتون میخواد بزارید یا تی اول یا تی آخر یا تی وسط مسا و اینو لحاظش بکنید بچه‌ها این چیزی که اینجا بدست میاد کی سی آی و جی تو زمان تیی‌امه خب و اینو می‌تونید پیدا بکنید کی سی آی و جی رو پیدا بکنید اگه روی جی اش سیما ببندید گامای آی ها در تی ها بدست میاد گاما و کیس ها رو که داشته باشید با این فرمولی که خدمتتون ارائه می‌دیم می‌تونید چیکار کنید آ و بی و پی رو پیدا بکنید

میگه که این کارو بکن برو گاماها رو جدولشو داری خب گامایی که من براتون نوشتم گامای دو تا پارامتر بود یکی تی بود خب یکی چی بود یکی استیت بود اینجا یه حرف سوم بغلش نوشته به نام ان حدس می‌زنید این انه چیه شماره مشاهده ۱۰ بار بهش گفتید سلام ها این میگه چیکار کن این میگه این کارو بکن میگه فرض کنید ۱۰ بار بشه سلامو دادید خب مثلاً مشاهده اول ان مساوی با یک خب من فقط آبزرویشن ها رو دارما خب فقط آبزرویشن ها رو دارم چیزو ندارم استیت ها رو اصلا ندارم مثلا فرض کنید چیز برای من مهره‌ای که در آورده قرمز قرمز آبی سبز بوده مسئله چیه مثلا قبلا گفته بودیم فرض کنید که مثلاً سه تا چیز دارم سبد دارم اینا به عنوان استیت مطرحن که من اصلا نمیبینمشون تو هر کدومشون مهره‌های قرمز

آبی و سبز وجود دارد اینم چهار تاش بکنم که این سه تای این چهار با چهار سه تا رنگ این و چهار تا سبد اون یکی نباشند می‌خوام عمداً یکی نباشه و تو همشون قرمز آبی اینا هست ولی تعدادش فرق می‌کنه مثلاً ممکنه اینجا هفت تا قرمز سه تا آبی باشه اینجا ۶ تا قرمز ۴ تا آبی باشه اونجا پنج تا قرمز پنج تا آبی باشه اوکیه خب مشاهده اول به من میگن من قرمز قرمز آبی سبز رو دیدم مشاهده دوم اعلام میکنه طرف بدون اینکه بهم بگه کدوم از این سبدا برداشته میگه آبی قرمز قرمز سبز دیدم مشاهده سوم بهم میگه قرمز قرمز مثلاً قرمز سبز دیدم مشاهده چهارم میگه سبز سبز سبز آبی قرمز قرمز دیدم حالا طولش حتی میتونه یکی نباشه چهار تا مشاهده دارم میگه چجوری بیا اون پی رو پیدا بکن ها من الان چند تا پین باید چند تا درایه داشته باشه بچه ها چهار تا سبد دارم

متعلق به کدوم بود به استیت بود ۴ تا باید درایه داشته باشه نماد اینکه احتمال اینکه من سمت کدوم سبد میرم یک یا دو یا ۳ یا ۴ خب میگه اول هرچی دلت میخواد هرچی دلت میخواد برو آقا من مثلاً میگم فرض کنید پی و میگیرم این مثلاً ۲۰ ۲۰ درصد ۲۰ درصد ۳۰ درصد ۲۲۰ ۴۰ و ۳۰ ۷۰ ۴۰ درصد باقی موندشم چیزه جوکه بود دیگه حالا خب بچه ها میگفت ۷۰ درصد آمادگی دارن ۴۰ درصد با حالا خدمتتون عارضم که اینو فرض کنیم به عنوان پی در نظر گرفتم خب اینو به عنوان پی در نظر گرفتم خب میگه برو چیکار کن شما با این پی و آ و بی اولیه که حدس میزنید چیکار میکنید میتونید چی میتونید برید به اصطلاح آلفا و بتا رو پیدا کنید طبیعتاً تی سی رو زتا و گاما رو پیدا کنید اوکیه میگه برو چیکار کن میگه برو

نگاه کن گاماهای لحظه اولو با استیت آیوم خب روی تمامشون جمع بزن یعنی باید برید به ازای تمام این چیزا به ازای تمام این مشاهداتمون اشتباه که نگفتم نه یه لحظه فقط خودم قاطی نکنم به ازای من الان یه لحظه فرض کنیم یه دونه است من اینو خودم الان درستش بکنم فرض کنید فعلاً یه مشاهده داریم که ادامه داره خب بعدش حالا جمعش می‌کنیم خدمتتون عارضم که یعنی تعمیمش میدیم این این سیک ما روی nش به ازای تعداد مشاهداتشه خب گامای آها آها این چیکار کرده این چیکار کرده اومده

گاما رو به ازای تک تک مشاهدات پیدا کرده حالا یادم اومد اینجا اومده گامای در واقع به ازای تمام زمان‌ها به ازای تمام استیت‌ها برای مشاهده اول حساب کرده این میشه گامای تی و یک آی یه بار دیگه گاما رو چیکار می‌کنه برای ۲ حساب میکنه و الی آخر با همون آ با همون بی با همون پی که من اول حدس زدم اوکیه اینو قبول دارید که میشه حساب کردی‌هاشون هم میشه حساب کرد خب میگه بزار تو این فرموله حالا فرمولش یه بار باز می‌کنیم خواهید دید که چی داره میگه میگه برو گاماهای اول و به ازای استیت iیم برو تو مشاهدات مختلف جمع بزن تقسیم بر n بکن پی آی بهتون میده یعنی یه بار آیش بزارید مثلا یک سبد اول یه بار دو یه بار سه بار چهار پی یک پی دو تا پی چهار پیدا میشه درسته یه بار دیگه پی آی نیو چرا نوشتم نیو چون من قبلاً یه پی داشتم رفتم از روش گاما رو پیدا کردم از رو گامای پی جدید رو میخوام

بزرگش می‌کنم چشم چشم خدمتتون یه بار دیگه میگم من اول یه پی یه آ یه بی داشتم اینیشیالایز کرده بودم اوکی از روی این آبی گاما و کیسی‌های ان و جی و توی زمان‌های تی به ازای تک تک مشاهدات پیدا کردم اینو قبوله میزارم تو این فرموله میگم پی جدیدم چی میشه پی جدیدم دوباره باید همون تعداد درایه داشته باشه مثلا تو این مسئله سبدا چهار تا باید داشته باشه میگه برو با این گاماهایی که پیدا کردی بر اساس اون قبلیا بیا چیکار کن اصطلاحا تیش یک بزار به ازای آی های مختلف یک بار آی یک یک بار دو یک بار سه بار چهار به ازای تمام ان این جمع بزن و در تقسیم بر n بکن پی های جدید پیدا میشن درایه هاش آی جی نیو چجوری پیدا میشه میگه برو کی سی آی و جی رو توی زمان های مختلف تی و

مشاهدات مختلف n داشته باش دو تا سری ببند روی کی و کی یک بار روی تیاشون سیکما ببند یک بار روی تعداد مشاهده سیگما ببند چرا رو جای نبسته می‌خواد درایه آی جی اش پیدا شه اوکیه پس منطقاً رو این نمی‌بنده و وقتی که رو تیم سیکما می‌بنده و رو ان سیکما می‌بنده حرف حسابش چیه میگه یک بار برو کیسی ببین اینجا تی تا مشاهده دارم دیگه خب میگه برو یک بار کیسی یک در واقع به اصطلاح یک مثلاً یک و دو رو برام پیدا بکن خب بعد میگه ممکنه از حالت یک به حالت دو رفتن زمانی اتفاق افتاده که از تو از تو تی دو به سه رفته باشم میگه آقا اینم برو باهاش جمع بزن فرقی نداره میگه من برام مهم نیست که کی اتفاق افتاده ها کیسی سه یک و دو میگه ببین من یک و دوش برام مهمه مهم

پیپر ریجکت می‌کرد ما کاری نداشتیم ناراحتیش چندم بود می‌گفتیم ناراحتی که بعد ناراحتی میاد کیه درسته میشمردیم تمامشو اینجام همینه بعد در ضمن رو ان که سینما می‌بنده یعنی چی یعنی تمام مشاهداتم مثلاً ممکنه پنج تا تو مشاهده اول اینو ببینم شش تا تو همه رو جمع بزن خب اوکی این الان صورتش تعیین شده ولی مخرجش برای اینکه از جنس احتمال بشه باید چی بشه باید نرمالایز بشه دیگه نرمالایز کردنش میگه با این اتفاق میفته با این در واقع سیکما n از یک تا n سیکمای در واقع تی از یک تا تی منهای یک روی گاما این کار بکنید نرمالایز میشه پس کیسی و گاما یکیش تو صورت یکیش تو مخرج این اتفاق میفته فقط یه چیزی بچه‌ها اینجا فکر می‌کنم احتمال قطع به یقین تی بزرگه تی منهای یکه دلیلش اینه که کیسی با خودش و یکی زمان بعدیش تعیین می‌شد یعنی باید تی منهای یک می‌نوشت که بشه بین

تیم منهای یک و آخری خب چون اگه الان که نوشته تی یعنی چی یعنی زمان آخر و یکی بعدش اگه دقت کنید باز تو مسئله پیپر ریجکته من اون استیت آخریه رو دیگه لحاظ نمی‌کردم چرا لحاظ نمی‌کردم چون بعدش کسی نبود درسته نمی‌گفتم وقتی آخریه خوشحال بعدیش چیه جانم تعریف چی خوب آها تعریفش تیم مرسی تعریف اینو اون دو تا از دو تا اسلاید مختلف اومدن خب آره اینجا تعریف کرده مرسی مرتضی جان ولی توی چیزی که نوشته بودیم از تی و تی به علاوه یک بود بزرگ از دو شروع شده دلیلش اینه که دو منهای یکه دیگه آره از یک بشه بله مرسی آره این درسته پس الان پس این درسته این اصلاحیه نمیخواد اینجا گاما چطور گاما ولی نه گاما باید تا چی بره گاما تا تیم منهای یک باید بره گاما تا تیم منهای یک منطقیه ها

می‌گفتیم سیکمای روی کیسی‌های ستون بد گامای قبلی رو بهتون میده درسته اینجوری نرمالایز میشه این تمام درایه‌های آی آی جی نیو براتون پیدا میشه و این کار برای بی هم با این فرمول انجامش میدید میگه برو چیکار کن برو بشمار چند بار ایکس تی ان ام میشه کا مثلا شما میخوید بی کا رو پیدا بکنید خب میگه برو بشمار چند بار ماکارونی خوردی چند بار ماکارونی رو به چشم دیدی این آی یعنی بشمار هر یه دونه که باشه اینه در چی ضرب کن در گاماش ضرب بکن روی زمان و روی تعداد مشاهدات سیما بگیر برای صورت تو مخرج هم نرمالایزش باید بکنی روی این گامای سیما میگیره تا اون اتفاق نرمالایز شده بیفته و در واقع ده های بی هم از جنس احتمال بشن خب اتفاقی که میفته چیه شما با مجموعه مشاهداتتون و آ و بی و پی لحظه قبل به چی رسیدید به آ و بی و پی جدید

این چرخه رو هی تکرار می‌کنید تا زمانی که آبی و پی دیگه درایه‌هاشون خیلی تغییر نکنه بچه‌ها به این اتفاق توی ماشین لرنینگ که من پریدم و نیازی هم نداره الان بخوام بازش کنم بهش میگن اکسپکتیشن مکسیمیزیشن معادل فارسیش میشه امید بیشینه کجا داشتیم قبلاً حالا توضیح میدم کوتاه چیه جلسه بعدی هم باهاش کار داریم کجا داشتیم قبلاً توی محاسبات عددی بعضی وقتا اتفاق میفته که شما وقتی می‌خواید یه چیزی رو اپت کنید اول یه حدسی میزدید بعد میرفتید یه پله پیدا بعدشو پیدا می‌کردید دوباره از این حد از این یافته جدید انقدر استفاده می‌کردید تا چی تا به نقطه اپتیمومتون برسید خب اینجا چیکار میکنه میگه ببین این مسئله‌ای که من درجا بخوام بهینه سازی کنم و آ و بی و پی بهینه رو پیدا بکنم کار سختیه چیکار می‌کنم اول یه آ و پی حدس میزنم میرم از در واقع گام

یا انتظاراتم میگم اگر آبی و پی این بودن انتظار داشتم که گاما و کیسی چی باشند امید ریاضی یا انتظارم این بود که این اتفاق بیفته بعدی میگه چی با این گاما چه جوری می‌تونم به ماکسیموم آ و بی و پی برسند این میگن ماکسیمیزیشن اینو تو ماشین لرنینگ کلاً ماشین لرنینگ کلاسیک این اصطلاح رو میشنوید فقط هم اینجا استفاده نمی‌شه حالا یه چیز دیگه هم داره ساده‌تره اون جلسه آینده میگم خدمتتون که اینجوری می‌تونید به چی برسید به آ و بی و پی جدیدتون برسید و حالا دیگه شما می‌تونید با وجودی که هیچ دیدی ندارید که استیتاتون چی اند خب این خیلی جذابه ها برید چیکار کنید برید آ و بی و پی رو پیدا کنید علی بفرمایید آها سوالی خوبیه اولین چیزی که ما فرض می‌کنیم فیکس می‌کنیم اینه که تعداد استیت رو من قبلا فرض کرده بودم که

ناحیه یه پله اضافه‌تر روش می‌ذارم میگم تعدادشم می‌دونم خب مثلاً می‌دونم پنج تاست ولی نمی‌دونم دقیق چیه خب یه پله دفعه دیگه جلسه آینده سعی می‌کنم بهش اشاره کنم فرض کن متناهیه ولی تعدادشو ندونی یه معیار اضافه می‌کنن به نام بی آی سی مثلاً یکی از راه‌هاش که میگه یه بار برو با یه استیت فرض کن یه بار با دوتا با سه تا باید برو پیدا کن بهینش کجا اتفاق میفته خب ولی این فرض رو تا ابد توی مدل دارم که تعداد استیت ها نمیتونه نامتناهی باشه یه چیزی آبزرویشن اینجا متناهی بود یا نامتناهی آبزرویشن ها متناهی بود مثلا گفتم رنگ قرمز و آبی و سبز درسته من جلسه آینده بهتون میگم آبزرویشن ها رو اجازه میدن نامتناهی باشه هیچ عیب نداره مثلاً بهتون میگم ربات بتونه از ایکس مساوی یک تا ایکس مساوی ده جابجا بشه خب یعنی تو یک و نیم هم باشه تو دو سه دهم هم باشه خب ولی ولی استیت ها رو

عرض می‌کنم که ببخشید اگه استیتو اگه این موقعیت بگیریم که نه اینکه گفتم نه این که مثلاً زمینی که داره زیر پاش عکس می‌گیره پیوسته بیفته یعنی توش کاشی و فرش و اینا همه با هم اجازه داشته باشن بیفتن فقط این نباشه که کاشی تنها یا فرش تنها باشه خب یا مثلا تو ماکارونیه مثلاً غذای من درآوردی اون بده مثلاً یه ماکارونی قورمه سبزی بهمون بده خب ولی فرض بر این می‌ذارم که یا خوشحاله یا ناراحته ولی بینابین اینا نیست چون اگه بشه دیگه از خارج میشه ورژن مدرنش هم کلا دیگه آر ال بیس اند دیگه خب حالا ما کاری نداریم جز محدوده کاری ما نیستند اگه خواستید بعدا خودتون آنالیز بکنید بچه‌ها این چیزایی که گفتم به بیان عامیانه و شفاهی همینایی که اینجا نوشته و اگر اذیت شدید در مورد خوندن فرملاشون هیچ نگران نباشید با همون در واقع سادگی که بحث کردیم برید جلو من این اطمینان رو دارم شما اگه دلتون بخواد خودتونم می‌تونید الان کد بزنید یعنی که مشاهده بهش بدید مثلاً پارسال نمی‌دونم

نمونه کارات هست یا نه مثلاً اینکه ۱۰ بار مثلاً یکی راه بره توی hm در بیاری که بگی این hmm راه رفتنه نمی‌دونم اینو تو داری یا تحویلیان داره یا هیچ کدومتون ندارید خب ندارید ولی آره مثلا فرض کنید که ۱۰ تا تو راه رفتن رو بگیری ده تا هم نشستن و بگیری بعد برای راه رفتن یه مدل مارکوف در بیاری برای نشستن هم یه مدل که داده بیست و یکمی که اومد نگاه کنید به کدوم نزدیکتره حالا شما که قطعا دیگه دارید دیگه خب برای اینکه بدونید مثلاً تو صوت که میگه چه کلمه داره بیان میکنه شما به ازای تک تک کلماتتون مثلا باید مدل در بیاری و هی بهش بدید و این براتون بگه که به کدوم مدل شبیه تره این اینو جلسه آینده بخوایم انشالله صحبت بکنیم که اگر چیزه پیوسته بود مشاهداتمون اجازه داشت پیوسته باشه باید چیکار کنیم و کلیات بحث ما امروز تمام شده است خب من فقط چیزی که باقی میمونه خدمتتون عارضم که به اصطلاح من الان از

چند تا منبع دارم استفاده می‌کنم این فرصتو باید به من بدید که یکپارچه‌شون کنم خب یعنی تو ذهنمه مثلاً اسلایدهای آقای دکتر ویسی رو بزارم معیار چند تا اسلاید بینش اینزرت می‌کنم که شما بهتر متوجه بشید مثلاً همین اسلایدی که چه جوری از مشاهدات آبی و پی می رو پیدا کنید من یکی از این اسلایدی که دیدم تمیزترین یکی از تمیزترین‌هایی بوده که دیدم خب حالا یه سری یکی دو تا توضیح اضافه میدم بعدش دیگه کلاس تمامه اگه کسی در مورد پروژش صحبت داشت در خدمتتون هستیم خب خدمتتون عارضم تمام این چیزایی که ما استفاده کردیم از یه مقاله فوق معروفی نوشته آقای رابینه اومده که در واقع چیزه فارغ التحصیل ام آی تی بوده و سال ۹۰ تقریباً ۸۹ ۱۹۸۹ ۹۰ میلادی منتشر شده ۳۰ صفحه هستش توی یکی از ترنزکشن ها آی تریپلیه و تمام اینایی که گفتیم از رو این بوده اگر شما تو پایان‌نامه‌هاتون یه روزی خواستید از اچ ام استفاده کنید احتمالاً به ذهنتون می‌خوره برید

ترجمه کنید این تقلبو بهتون برسونم این کارو بارها کردن ملت من خودم یکیشم خب ولی نه کلشو نه ۳۰۰شو این تو پایان نامه‌هایی که تا سال ۲۰۱۵ انجام شدن اصلاً روش‌های دیپ وجود نداشته هرکی می‌خواسته مدل دینامیکی بزنه عموماً و اینو همه ترجمه کردن همه این هست خب بعداً اگه دلتون خواست می‌تونید از فارسیش استفاده کنید و این مثال‌های مختلف رو زده ۳۰ صفحه اومده تمام حالت‌هایی که می‌شده حرف بزنه رو که ما صحبت کردیم سه جلسه روش بررسی کرده نوتیشن هامون هم تقریباً همون بود تقریبا و خوب میتونید برید مطالعه بفرمایید این براتون بارگذاری کردم که یکی از چیزهامونه یکی از مقاله های یعنی رفرنس های اصلی حوزه هیدن مارکوف مدله و من تو این فاصله از چند تا اسلاید استفاده کردم یه دونه هیدن مارکوف مدلی که جزوه استنفورد بوده مثلاً یه مثالشو مثلاً فرض کنید باز از این خواستم نشونتون بدم

گفته که فرض کنید که شما سوپروایز میخوای آبی و پیو پیدا کنی یعنی داده رو دارید خب گفته فرض کنید که هوا یا گرمه یا خنکه بعد شمام بستنی یک یا دو یا سه رو می‌خواید بخورید استیته مثلاً اینه که بستنی چی خوردید خب آبزرویشن که هوا گرمه یا خنکه خب حالا یا بالعکس بستگی داره کدوم سوال چی باشه بعد گفته اگر این سه تا مشاهده رو بهتون بدن برید برام پی رو پیدا کنید مثلاً نگاه کنید وقتی مشاهداتمون کامل یعنی هم ابزرویشن رو بهمون میدن هم استیت بهمون میدن چقدر راحته میگه ببین سه تا مشاهده داری یعنی سه تا شماره یک داره دیگه نگاه کن تو این شماره یکش چند بار یک تکرار شده تقسیم بر سه کن چند بار دو تکرار شده چند بار سه پی پیدا میشه چند بار سه تکرار شده بچه‌ها یک بار احتمال پی اندی سه چند میشه سه تا مشاهده دارم یک بارش سه بوده یک سوم با چه احتمالی چیز ببخشید پی هات با

با چه احتمالی کلد اول اومده چند تاست دو سوم تمام شد این پیش پیدا شد حالا می‌خواید آ رو پیدا کنید بی رو پیدا کنید میگه ببین با چه احتمالی شما بستنی شماره یکو خوردید اگر هوا گرم بوده باشه اینا مثلاً برای پیدا کردن بی با چه احتمالی اگر امروز هات باشه فردا هم هاته ها اینا استیتا الان هاتکولدن که شما نمی‌بینینش شما بستنی خودتونو میدونید چی خوردید یا یکی بهتون میگه من این بستنی خوردم شما تخمین می‌زنید که هوا اون روز چجوری بوده که اینا رو خورده خب و اینجوری شمرده فقط گفته آقا من چند بار از سه رفتم به ۳ یه بار یه بار رفتم تقسیم بر چند باید بکنم چند بار بوده که با هات شروع شده نگاه من یه بار از هات به رفتم چند بار بوده کلاً هات بوده توش یعنی یکیش یکیش از هات به هات رفتن معادل چیه معادل کیسی است اونی که اولش هاته معادل چیزه گاما است درسته چند تا الان هات به

چند تا هات کلاً شروع داشتم سه تا ۱ ۲ ۳ درسته خب مثلاً مثال بعدی باز ببینیم پی کلد به شرط کلد باز میگه چند بار کلد داشتی اینو دیگه حساب نکنیدا این این ته ماجراست خب یه بار کل داشتم که بعدش کلد اومده یه بار دیگه کل داشتم بعدش کل اومده یه بار دیگه کل داشتم بعدش هات اومده سه بار کل داشتم که بعدش یه چیزی اومده چند بار کلد به کلد بوده دو تا طبیعتاً اگه یادتون باشه راستی این قیدا رو لحاظ بکنید بچه‌ها مجموع پی باید دراش چند میشد مجموع پی باید یک میشد ماتریس بی درایه‌های ستون ستونش باید چند میشد یک میشد توی آ چی باید یک میشد مجموع سطراش خب بخاطر همین وقتی خواستید اینیشیالایز بکنید این رو لحاظ بکنید که اگه مثلاً سه تاشو لحاظ کردید چهارمی دیگه دست شما نیست دیگه بقیش تعیین میشه و اینجوری میتونید تعیین کنید حالا ما یه پله خفن‌ترش رفتیم گفتیم اگه بهمون حتی ندن استیتا رو چیکار کنیم که

الگوریتمی که اسمش هست بامبلش خب این الگوریتمی که بهتون گفتم اینا اینجا چه جوری آ و بی و پی نیو رو پیدا بکنید بهش میگم بامبلش یا بامبلچ حالا از این الگوریتم شما میتونید مدلتون استخراج بکنید این کل حرفایی بود که امروز می‌خواستیم بزنیم خدمتتون و یه توضیح هم بدم من انشالله چون نرسیده بودم تا الان تمرین سری آرنو جدا بدم تمرین آرن و اچ ام یکیش می‌کنم خب یعنی یه تمرین سه بهتون میدن که مثلاً بعضی از سوالاش آرن باشه بعضیاش hml باشن اینجوری تعداد سوالاتی که تو هر کدوم میاد کمتره به نفع شما میشه و ولی تعیین می‌کنم احتمالاً مثلاً میگم این سوال از آ حل کنید این سوالم از اتمه آقا انشالله سه‌شنبه که پس فردا باشه یه باز سورپرایز دیگه براتون دارم یه کد جذابی زدیم خودم خودم حال کردم یعنی با این رفیقمون آماده کردیم امیدوارم شما هم براتون جذاب باشه و انشالله مبحثو با این پیش می‌بریم که اگر آبزرویشن

پیوسته باشند باید چیکار کرد یه بدهکاری هم به شما دادیم تو آرنت تهش که گفتیم که حالا اگه بخواید همین چیزی که مثلاً یکی بهتون میگه سلام چطوری بعد شما نمی‌دونید سلامش از کجا تا کجا شروع شد چطوری از کجا تا کجا پیش رفت و اینو بخواید در واقع مدل سازی بکنید نیازمند این بود که شما الگوریتم‌های ویتربی و این بامبلشو بلد باشید حالا می‌تونم اگه فرصت بکنم برگردم اون اسلایدا رو تکمیل کنم پس ما یک یا دو جلسه دیگه انشالله تو هیدن مار مدل باقی میمونیم و بعدش هم میریم سمت دیگه بخش‌های پایانی درسی ما هوش مصنوعی یا رها می‌کنیم به اندازه کافی روش وقت گذاشتیم و اگه موردی بود در خدمتتون هستیم مرسی پارسا جان در خدمت هستم اجازه بده من سوال چیز از بچه ها خداحافظی بکنم دوستان عزیز مجازی مون میتونید تشریف ببرید حضوری هایی هم که می‌خوان تشریف ببرن می‌تونن ببرن من پاسخگوی

E:\courses\LangChain Project\main root\data\SCR_Session21_transcript_part1.txt

به نام خدا دوستان عزیز و ارجمند درس رباتیک اجتماعی شناختی عرض سلام و ادب هم خدمت عزیزان حاضر در کلاس هم دوستان عزیزی که به صورت غیر حضوری تو جمعمون حضور داریم خوشحالیم که در خدمتتون هستیم احتمالاً شما خوشحال‌ترید که به انتهای ترم داریم نزدیک میشیم و خب منم دارم تمام تلاشمو می‌کنم که اون موارد ضروری که توی ذهنم بود و توی اینترنت خدمت تو بگم اعتراف میکنم این درسه خیلی فشار برام آورد نه خاطر خود درس شاید بخاطر اون مسئولیت اجرایی که دانشگاه تقریباً ۲۰ فروردین به ما داد و هنوز در واقع پس لرزه هاش هست و کارهای باقی مانده داره که خوب انتظار معاونت محترم آموزشی دانشگاه از بنده اینه که خودم تمامش کنم که منطقی همه ولی این اعتراف هم

که خیلی بهم خوش گذشت من توی درس شما واقعاً بهم خوش گذشت یعنی حس می‌کردم تمام مواردی که تا این لحظه آماده کردم یه حس و حال یه هیجان خوبی توشونه و اینو مثلاً حالا درس‌هایی که من عموماً تدریس می‌کنم حالا یا این هیجان‌ها رو بعضاً دارن خودم برای خودم به وجود میارم ولی می‌تونم اعتراف کنم این مثلاً از یه درسی مثل استاتیک برای من خیلی جذاب تره کلا پویا تره برای خودم آره برای خودم این حس و حال خوب داره و امیدوارم برای شما هم داشته باشه حالا انشالله به موقعش به کمک فکریتون احتیاج دارم که اگه عمری باقی باشه حالا سال‌های بعد بخواد ارائه بشه کجاهاش می‌تونه چه تغییراتی بکنه بالاخره مجموعه زمان ما محدوده و مواردی مثل تعطیلی‌های تقویمی و انواع اتفاقای که میفته سبب میشه همیشه سه یا چهار جلسه رو شما تو طول ترم از دست بدید یعنی حداکثر روی ۲۶ جلسه نباید بیشتر حساب بکنیم یعنی با این حساب برنامه ریزی بکنیم خوبه که بعداً حالا فیدبک

مواردی که قبل از کلاس می‌خواستم بگم بله خیلی ممنون امیرعلی بابت چیزت یادآوریت خودمم اینجا نوشتم من دو سه تا مطلب قبل از اون بگم خدمتتون من برای خودم دیشب یه سری عناوین پیشنهادی پروژه درس رباتیک اجتماعی نوشتم البته عناوین پیشنهادیه بالا پایین میشه داشته باشه بعضی هاشون خیلی ممکنه در نگاه اول کار داشته باشه بعضی هاشون نه بشه مثلاً بیشتر عمق بهش داد و اینا حالا به صورت خاص با شما کار دارم یعنی تقریباً پازل تو چیدم خب اون چیزی که می‌خوامو و یه چیزی حول و حوش 2۲2 تا عنوان حالا ۲۰ تا عنوان شما فرض کنید هفت هشت تاتون که تا همین الان آلردی موضوعاتتون تعیین شده و نهایی شده است بالاخره هفت هشت تای دیگه ۱۰ تای دیگه هم هستن که شاید منتظر موضوع پیشنهادی از جانب بنده اند من در خدمتتون خواهم بود ولی اجازه بدید بعد از ساعت چهار و نیم خب یعنی ما تا چهار و نیم کار خودمون رو داشته باشیم من بعد چهار و نیم میرم تو آزمایشگاه رباتیک مستقر میشم این سامانه هم روشن می‌ذا

که بچه‌هایی که در واقع امروز قرار بوده باهاشون صحبت کنم حالا محمدرضا آقا محمد قبلا قول داده بودیم علی قرار شد صحبت کنیم و اینایی که پروژه‌ها رو بیشتر علیرضا باز نمی‌دونم اگه صحبتی داشته باشید اگه بخوایم صحبت‌های قبلیتون رو بشنویم من در خدمتتون هستم خدمتتون عارضم که ولی اگه کس دیگه‌ای هم می‌خواد صحبت بکنه من سعی میکنم امروز تا ساعت شش یا شش و نیم بعد از ظهر باشم در خدمتتون که نفری ۲۰ دقیقه یا نیم ساعت وقت بذاریم حتی بتونیم واقعا مثلا بین چهار تا شش نفر رو جمع بکنیم و این خیلی در واقع یه باری از رو دوش من هم برداشته میشه و حس میکنم که اوکی یعنی تا این لحظه بالاخره گام به گام مناسب رفتیم جلو که شما هم انشالله مسیر پیش روتون رو بدونید این مسئله اول در مورد در واقع عناوین پروژه هاست خدمتتون عارضم که دیگه حالا مطلب فعلی به ذهن ما خورد یکم در مورد چیزی که میلاد اشاره کرد آقا ما قرار شد

کارگاه برای شما بزاریم یکی کارگاه آشنایی با ربات‌های مختلف آزمایشگاه بود حالا در حد ساده بچه‌ها بدونن چون ممکنه بعضیاتون بخواین که پروژه‌هاتونو تهش رو اون تست بگیرین و این شانس مقاله دادنتونو بیشتر می‌کنه تا اینکه فقط بخواید یه کد کامپیوتری زده باشید و نهایت نهایت رو وب کم لپ تاپتون تست بگیرید اینا ارزش کمتری برای جامعه علمی داره خدمتتون عارضم که من پیشنهادم همین چهارشنبه های در واقع پیش رو نه البته فردا یازدهم و هجدهم یعنی تا همون پایان در واقع ترم که به صورت فکر میکنم رسمی و غیر رسمی اعلام شده تا ۱۸ خرداد اجازه دنبال شدن کلاس ها وجود داره ما چیکار کنیم ما هم تا اون تاریخ بریم جلو هر دو حضور اختیاریه خب پیشنهاد من اینه یازدهم انشالله چهارشنبه هفته بعد جلسه آشنایی با ربات ها باشه تو ذهن یه بازه سه تا

ساعته رو شما بذارید پیشنهاد فعلی و ۹ تا ۱۲ یا ۱۰ تا یکه هر کدومو شما می‌پسندید و اینجام دوستان می‌تونن نظر بدن تو چت باکس بنویسن ما می‌تونیم انتخاب بکنیم یک روزشو بذاریم انشالله برای آشنایی با ربات‌ها یک روزشم می‌ذاریم برای آشنایی با راست ربات اپریتینگ سیستم توی راست بی زحمت لپ تاپ‌هاتونو بیارید من بهتون خواهم گفت یعنی از طریق بچه‌ها که مسئول هندل کردن اون ورکشاپ دارن اینه که خدمتتون عارضم اینو چیز داشته باشیم اینو داشته باشیم که لپ هاتون رو بیارید اگه لازم شد راست روش نصب کنید یعنی از اون لحظه نصبشو با هم برید جلو حالا اینکه نیازی هست لینوکس نصب بشه یا اینکه نه وچال ماشین نصب بکنید و روی ویندوزتون در قالبچال ماشین اینو نصب بکنید اینا اینا چیزاییه که می‌تونید از بچه‌ها بپرسید ضرر نداره یاد گرفتنش و میتونه

کلی ابزار کار باشه براتون در آینده جان آره حالا ما تو کامپیوترهای آزمایشگاه یا همون بالاخره ۱۷ ۱۸ نفر هستیم احتمالاً چند نفر نمیان ۱۲ تا بیان ما ۶ تا کامپیوتر داشته باشیم که نصب شده باشه روش برای ما کفایت میکنه حالا من آره کلی کاره حالا همون دیگه باید بگم که سید رمضان حسینی یه روز بیاد یکشنبه مثلا هفته آینده بیاد این هماهنگی انجام بده که آیا نیازی شما نصب بکنید یعنی پروتکل نصبشو یاد بده یا اینکه نه بگه که آقا ما خودمون رو سه چهار تا سیستم میزنیم بعد دوتا دوتا یا سه تا سه تا بیاید پای کامپیوتر های بشین اونجا تمریناتون رو انجام بدید ولی بعداً برای خودتون نصب کنید کدوم راست راست یک الان اولویتمونه بازم از بچه ها میپرسم ولی تا الان کارهای ما بر اساس راست یک بوده ولی راست دو جدید اومده ولی خب اونقدی در واقع

جاگیر نشده و خب حالا جا داره انشالله که در آینده نزدیک بهش ورود بکنیم طبیعتاً مسیر و خط شکنی بکنیم بت شکنی بکنیم بریم و این راست یکو شروع بکنیم انشالله راست دو هم بعداً سوئیچ کردن توسط خودتون شدنی و اینم یادتون باشه اگر تو رزومه‌هاتون بعداً کار کردن با راس و اینا وجود داشته باشه جاهایی که تو حوزه‌های رباتیک کار می‌کنن خیلی جدی می‌گیرن شماها رو یعنی اون توانمندی که لازم دارند آفیس و پاورپوینت و اینا طبیعتاً نیست اولویت ش کار کردن با ربات ناوم معمولاً می‌ذارن یه ربات ساده فراگیر که خیلی جاها تو آزمایشگاه رباتیک توی سراسر دنیا پیدا میشه همینطور راست اگه یاد بگیرینش توی حوزه رباتیک در واقع آدم شناخته شده تر و بهتری است با این اوصاف بچه ها ۹ تا ۱۲ خوبه چون الان یه نفر تو چت باکس هم خانم احمدی نوشتن نه تا ۱۲ رو ترجیح میدن اونایی که می‌خواید بیاید دیگه اونایی که نمی‌خوان بیان هم که هیچ دلیلی نداره تو نظرسنجی ها شرکت بکنن و اگه ۹ تا ۱۲

و هجدهم بزاریم ببینید من برام مشکل نداره که ممکنه شما بگید ما به خاطر تعطیلی چهاردهم پانزدهم ممکنه اون هفته بخوایم بریم شهرستان خب من هیچ مشکلی ندارم اگه توافقتون اینه که بیفته یه هفته بعدش ولی اطلاع ندارم اولین امتحاناتون کیه مثل تیر آره خب پس با این اوصاف میگی چیکار کنیم نمیدونم میخوید یکی یازدهم رو برگزار بکنیم یازدهم برگزار میکنیم برای همون تا همون خود دهم یازدهم انشالله در مورد دومش تصمیم می‌گیریم اگه تشریف دارید همون هجدهم می‌ذاریم اگر هم نه که چیزه دهم آها اینم هست حالا اینو البته تو نظرسنجی ها کمتر گفتم لحاظ کنم من الان اطلاع ندارم از زمان کلاس هاتون آیا روز دیگه به جز چهارشنبه مثلاً روزهای زوج و اینا براتون شدنیه من اطلاع از کلاس هاتون ندارم

کسی هست شنبه دوشنبه اوکی نباشه نه اوکی فعلاً فعلاً کلیاتشو بگیرم چه ساعتی کلاس داری که نمی‌ذاریم طبیعت سیستم وی کلاس اینجا یه تئوری جذاب و جنجالی مطرح باشه این کارگاهه و میتونه تو بازه ۹ تا ۱۲ یا مثلا یک تا چهار باشه الان همه با این داستان اوکی اند یا حتی یه فاصله بین اینابین مثلاً ۱۰ تا دو مثلاً حالا یه ساعت هم شماره تماس فاصله کارگاه دومی رو نه کلا خانم احمدی دوستان دارن میگن که قبل یازدهم ما برگزار کنیم چون دهم که سه شنبه باشه ولی چند روز تعطیلی پشت سرمه و این بچه ها براشون در واقع مناسبه که تشریف

منازلشون و شاید خود شما یکی از کاندیدای رفتن خونه باشید تا ۱۲ شنبه دوشنبه عالی نقطه عالی خوبه بچه‌ها ۹ تا ۱۲ شنبه دوشنبه کسی هست نتونه دست بالا تو اینجا که شما نمی‌تونید ۹ تا ۱۰ خب می‌ندازیم ۹ تا ۱۰ مثلاً میندازیم ده تا یک اینم اوکیه حالا خانم یارندی البته شماره کارشناسی این داستانو داریم دیگه متاسفانه حالا یه کاری بکنیم اگر بتونید توافق بکنید یکیشو تا قبل دهم بریم همون مثلاً بذاریم ۱۰ و نیم تا یک و نیم مثلاً روز روز دوشنبه نهم درسته خوبه آره دوشنبه بهتره نهم که من با بچه ها هماهنگ کنم دوشنبه نهم تو گروه هم میشه نظرسنجی بذاریم خانم احمدی چشم و اینو چیز کنیم اینو انشالله بذاریم برای اون کارگاه ها چی شد کار دارید نهم نمی‌تونید خب

نظرسنجی میزاریم خب ببینیم اگه چهارشنبه برنده شد چهارشنبه بند برام مشکل نداره می‌تونیم بذاریم می‌ذاریم بعدش اگه دوستان بخواید تشریف ببرید خونه کی میایید اگه تعطیل شد دیگه نمیایید تا امتحان خب همون پس بهتره اینور بزنیم شنبه الان هفتم یه کاندیداست درسته شنبه هفتم دوشنبه نهم چهارشنبه یازدهم مثلاً من اینو تو نظرسنجی تو گروه می‌ذارم انتخاب امکان انتخاب چیزم میدم بیش از یک گزینه را میدم جانم من نیستم خودم من تلگرام نمیام واتسپی تا بیا تو نظرسنجی میزارم نظرسنجی بزار پنجشنبه این هفته من یه لحظه تمرکز کنم پنجشنبه آخه بچه ها میترسن چهارشنبه بعضا میان برای کاراشون پنجشنبه ماها خودمون میزاریم وقت میزاریم عموما سعی میکنیم برای کارهای خونه دیگه خب همینجوریش

شنبه نهم دوشنبه یازدهم چهارشنبه چی گفتم ۷/۹ ۱۱ شنبه دوشنبه چهارشنبه رو انشالله نظرسنجی می‌ذاریم بی‌زحمت مشارکت کنیم دیگه رای گیری کی برنده می‌شه آره اینو که کدومو نمی‌تونید هم میشه گذاشت آره بعدم کسانی نظر بدن لطفاً که می‌خوان بیان خب ما حالا سابقه داریم یعنی امتحان میخواستیم بگیریم یکی بلند شده بود میگفت آقا امتحان تغییر ندید بعدا معلوم جز کلاس نبوده و آره اینجوریا بود و ما این ماجرا مسابقات زیاده خب خدمتتون عرضم پس با همین دو تا مقدمه بریم جلو خیلی هم وقتمون یه مقدار تنگه ببینیم امروز چقدر میرسیم بگیم من بچه ها تخمینم اینه که ممکنه ممکنه یک جلسه اضافه تر ازتون بخوام تشریف بیارید خب یعنی

مجازی یک جلسه نسبت به هجدهم یعنی ما الان امروز کلاسمون امروز چنده خرداد ۳ خرداده ما ۸ و ۱۰ و انشالله کلاس داشته باشیم ۱۵ که تعطیله ۱۷ هم داشته باشیم اگه کارمون شد اونجایی که می‌خوام و رسیدم که تمام اگه نرسیدم ممکنه انتظار داشته باشم یک جلسه یا یک و نیم جلسه مثلاً فیلمی ارسال کنم یا بگم که مجازی تشریف بیارید و ادامه بدیم اونم با توجه به اینکه می‌فرمایید اولین امتحانتون حداقل یه ماه دور خب فاصله خوبی وجود داره بع ما که میان ترمینال نداشتیم اینا به نفع خودتون میشه ابزارهای کارتون رو میده جانم خب مجازی برگزار میکنیم مشکل نداره خب پس اینم شد از این ماجرا خب با این حساب بچه‌ها اجازه بدید که بریم صفحه نمایش به اشتراک بذاریم و پای کار خودمون خب بچه‌ها جلسه گذشته ما

سر اون سه تا مسئله معروف که تو مدل‌های مخفی مارکوف ما مسئله ارزیابی محاسبه در واقع احتمال مشاهده رو که حالا اسمشو گذاشتیم مسئله ارزیابی و دو جلسه قبل به صورت جدی بررسی کردیم جلسه گذشته رو دو تا چیز وقت گذاشتیم یکی مسئله دیکودینگ یافتن بهترین دنباله بود که روشی به نام ویتربی معرفی شد خدمتتون و یه روش هم بود به نام روش آموزش مدل که خیلی خیلی برای ما جذاب بود حتی از این ویتربینی هم بیشتر و اون این بود که وقتی که یه سری مشاهده به شما میدن شما چجوری میتونید در واقع مدل مارکوف ارائه بدید خب و اینا رو بررسی کردیم و خب راه حلش این بود که ما از قدیم با علاوه بر پارامترهای آ و بی و پی با آلفا و بتا آشنا شده بودیم گفتیم که برای ویتر وی به دو تا پارامتر کمکی دیگه به نام دلتا و سای احتیاج داریم دلتا میومد ماکسیمم احتمال از رفتن از حالت یه یعنی روز تیوم زمان تی به تی به علاوه یکم

در می‌آورد یعنی ماکسیموم‌ها رو در می‌آورد که تو پارامتر دلتا می‌ریختیم و یه پارامتری به نام سای تعریف کردیم که تریس بک بکنیم از آخر بیایم اول میتونیم بهترین مسیر یا محتمل‌ترین مسیر ممکن را شناسایی بکنیم و بگیم که اوکی اگر دنباله‌ای از مشاهدات تو تیروز به ما بدن بگن احتمال زیاد استیتا چی بوده چیکار بشه این شما این خروجی در واقع الگوریتم ویتربی که یک الگوریتم اتفا یعنی یک مسیر شدنیه رو بهتون پیشنهاد میده رو انتخاب کنید و مسئله آخر هم مسئله در واقع مدلینگ بود که وقتی یه سری مشاهده بهتون میدن چجوری ما بیایم مدل رو استخراج بکنیم آ و بی و پی رو تعیین کنیم که گفتیم دو حالت وجود داره یا اینکه شما داده هاتون در واقع حالا من با این لفظ براتون آوردم داده هامون یا در واقع سوپروایزن یا آن سوپروایز سوپروایز یعنی اینکه اون مجموعه دادگانی که به شما داده استیت هم بهتون دادن هر یه جوری بوده که استیت هم

داده شده ولی خیلی از وقتا این اتفاق نمی‌افته بماند معلوم چی هست خب یعنی توصیف فیزیکی نداره لزوماً یعنی شمایی که باید برای خودتون یه لیتنت اسپیستون یه چیزی تعریف کنید که حالا انشالله بگید که این با این تعبیر فیزیکی معادل باشه تقریباً و مسئله سوپروایز اگه باشه راحت‌تر بودیم ولی ما با مسائل روبرو هستیم که عموما آن سوپروایزن یعنی بهمون فقط آبزرویشن دادن هیچ خبری نیست حالا گفتن برو مدل رو در بیار طبیعتاً کار سخت‌تری داریم ولی الگوریتم به نام باولش معرفی کردیم خدمتتون که این کار میکنه که اینجا براتون این تعبیررو اینگونه هم نوشتم نوشته اگر دادگان جوری باشد که هم چیز رو بهتون داده باشن هیدن استیت و هم آبزرویشن رو بهشون میگن کامپلیت دیتا یا دادگان کامل اگر نداده باشند فقط آبزرویشن رو داده باشن این کامپلیت که با این تعابیر یا سوپروایز سوپروایز ممکنه شما چیکار

مشاهده بفرمایید خب اینو که دیدیم خدمتتون عارضم روی اینا بحث کردیم گفتیم که اگر در واقع چیز داده شده باشه کامل مسیر داده شده باشه شما با این روابطی که اینجا وجود داره میتونید آبی و پی رو پیدا بکنید و اینم به این ربط داشت که برید نگاه کنید آبزرویشن ها و استیت ها خودشون چه جوری بین هم تغییر کردن و فلان این اتفاقات رو بشمارید این آیه نماد شمردنه میگه بشمار چند تا داده داری که در واقع توی مشاهده انوم تو زمان تی منهای یکت استیتش آی زمان بعدی شده جی اینا رو بشمار روی در واقع تی و روی تعداددادگان آموزش جمع ببند بعد باید نرمالایزش کنی که از جنس احتمال بشه تقسیم بر این مخرج رو بکنی این ده آی جی رو به شما میده همینجوری b ik و پی آی رو میتونید پیدا کنید وقتی دادگان کامله وقتی دادگان ناکامل بودن داستان پیچیده تر میشد و خدمتتون عارضم که

الگوریتمی که بهتون ارائه دادیم این بود گفتیم که اینجا پی آ و حالا ماتریس بی و تخمین اولیه بزنید یه اینشیالایزیشن بکنید بعد از یک روشی به نام اکسپکتیشن مکسیمیزیشن که دو مرحله‌ای ولی ایترتیو انجام میشه برید جلو تا زمانی که انشالله به نقطه مناسب برسید و تو اون اینجوری بود که بعد از اینکه مدل اولیه رو دارید از روی اون آلفا و بتا رو پیدا کنید از روی آلفا بتا گاما و زتا رو پیدا کنید گاما و زتا نه تنها تابعتی از خدمتتون عارضم شماره دادگانی که الان دارید بررسی میکنید هم دارند زتا در ضمن به استیت بعد هم ربط داره نه تنها الان کی بعدی چیه که اینا رو براتون تعریف فیزیکی کردیم گفتیم زدتای آی و جی تی یعنی اینکه احتمال اینکه شما تو استیت تی حالا یا تی منهای یک توی استیت آییم باشه جاتون بعدی برید تو جیوم و آبزرویشن ها کلتون هم بهتون داده باشن ولی اصلاً مهم نیست

قبل تی یا بعد تی به علاوه یک استیتتون چیه یا گاما این بود که احتمال اینکه توی لحظه تعاریفی داشت که معادل فیزیکی داشت و چی و ما روابط اینجا خدمتتون ارائه دادیم که میتونید در واقع تو هر لحظه برای هر در واقع دیتا ستتون گاما و زتا رو پیدا کنید و توی اینا رو بیاید جمع بزنید هم روی تی ها هم روی اینکه آبزرویشن چندمتونه و چیکار کنید و بیاید آ و بی و و پی رو پیدا بکنید مدل ارائه بدید اما کاری که امروز می‌خوایم بکنیم یه پله بالاتره اون سوالی که مرتضی به خوبی پرسید جلسه قبل و حالا امیرعلی هم زحمت کشید یادآوری کرد اینه که ما در مورد اینشیالایز کردن پی آ و بی اولیه چیکار باید بکنیم شما می‌تونید کاملاً رندوم شروع کنید ولی ماجرا اینه که بابلش ثابت میشه که هر ایتریشنش نسبت به قبلی حتما بهتر میکنه اوضاع رو ولی ممکنه شما رو تو لوکال مینیمم گیر بندازه و خیلی خیلی مهمه که شما

آبی اولیه مناسبی داشته باشید تا به جواب خوبم برسید یادمون باشه دست و بال ما رو بستن و استیتا رو به ما نشون نمیدن بعد می‌خوان با چهار تا مشاهده ۵ تا مشاهده ما یه مدل دینامیکی درست حسابی دربیاریم و این اوضاع رو سخت می‌کنه و به خاطر همین مهمه که شما اگه می‌تونید تو همون دادگان آموزشتون چند تاشو لیبل بزنید و سوپروایز عمل کنید یعنی چند تا لیبل بزنید یه پی اولیه از این الگوریتم قبلیه مدل قبلیه در بیارید حالا با اینتیتیو برید جلو تا انشالله به جواب بهتری برسید ولی یادمون باشه که ما اینجا یک فرضی کردیم که چی که مشاهدات ما گسسته است خب ما این شرط رو با همدیگه کردیم که چیزای ما استیت های ما حتما گسسته است یعنی تعدادشون متناهی و شماره هاست خب که اگه میخواد نامتناهی بشه دیگه داستان متفاوته کلاً دیگه آر ال و اینا میاد وسط کاری نداریم فعلاً از hm خارج میشیم ولی در مورد آبزرویشن ها ما این شانس

الان بهتون میدیم و در موردش صحبتم می‌کنیم که چیکار کنیم که چی که اگر فضای آبزرویشنمون نامتناهی باشه یا پیوسته باشه چیکار کنیم حالا می‌خوایم ازش مثال بزنیم تا در بیاریم بچه‌ها این این پاورپوینتو من سعی می‌کنم با پاورپوینت آقای دکتر رئیسی مرج کنم جاهایی که لازمه خب برای اینکه شما عقب نمونه این متریال‌ها رو داشته باشید در اختیارتون قرار میدم میتونید به این مسیری که چگونه از مثلاً چین رول استفاده شده تا این اثبات شده که چرا تو فرمول در واقع محاسبه آ و بی و این گاما و اینا آلفای فلان بتای فلان آی فلان ظاهر شده اینجا نوشته شده یه نمونش دنبال کردنش سخت نیست ولی اگر دنبال نکردید هیچ ایرادی نداره خب خدمتتون عارضم اما بریم سر ادامه ماجرای خودمون خب ادامه ماجرا قبلاً حرفمون این بود که فضای چیز فضای گسسته باشه اما ما می‌خوایم در مورد چیزی صحبت کنیم آها اینم راستی یادم باشه بگم بچه ها تو مث تو اینz تای

تو مخرجش سیگمای آلفا اندیستی بتا اندیستی ولی تو صورتش چیه آلفا اندیستی به تو اندیس تی به علاوه یک ها اینا رو دقت کنید اگه یه روزی می‌خواید کد بزنید دقت کنید به این نوتیشنا چون مثلاً اگه این بتای تی به علاوه یک چون هستش این دو تا پارامتر بینش ظاهر شدن باز به اون چین روله یا مراجعه کنید یا اینکه خودتون بنویسید بهش می‌رسید هیچ نگران نباشید اینا دنبال کردنش شاید نوشتنش بار اول برای ماهایی که به صورت رسمی چیز پاس نکردیم احتمالات کار آسونی نباشه ولی دنبال کردنش از روی منابع معتبر کار خیلی سختی نیست خب و این مواردی که میشه پیداش کرد و دنبال کرد اما بریم سر ماجرای بعدی که می‌خوایم در مورد آبزرویشن های پیوسته صحبت کنیم بچه‌ها من یه مقدار مجبورم یک کمی در واقع چیزی صحبت کنم یعنی بی جزوه صحبت کنم و یه مقدار خودمونی صحبت کنم امیدوارم بتونم در واقع جا بندازم براتون ما توی پرتاب تاس

چه چیزی داشتیم ما می‌دونستیم که خروجیمون که یه متغیر تصادفی ایکس باشه میتونه عدد ۱ ۲ تا ۶ رو داشته باشه و در ضمن هیچ وقت بینابینش نمیاد شما احتمالاً نشنیدید کسی بگه من تاس انداختم ۵.۲ اومده ولی آخر و در ضمن اونجا وقتی که می‌خوان اینو بررسی بکنن با پی بزرگ یا احتمال اون بررسی می‌کنن و اگه تا سالم باشه یا تاس فری باشه میگن احتمال هر کدوم از اینا چیه ۱/۶ این چیزی که از گذشته باهاش آشنا هستید این فضاییه که ما الان تو آبزرویشن ها توی حالت گسسته ازش یاد کردیم توی مسائلون گلدون‌های رنگی رنگ چیزا در واقع به اصطلاح گوی ها گسسته بود مثلاً سبز و آبی نماد یک و دو بود تو تاس و سکه اون عددهایی که رو میشن یا شیر و خطی که رو میشن گسسته بود توی آشپزی که داشت برامون می‌کرد طرف فرضمون بر این بود یا قمه سبزی داره درست میکنه یا ماکارونی یا آبدو خیار بالاخره

چک می‌کردیم اما آیا واقعاً ما همیشه تو دنیایی هستیم که متغیرهای تصادفمون گسسته اتفاق می‌افتند یا نه کافیه یه کوچولو با آمار آشنا باشید تا پاسخ این سؤالو خیر بدونید و دوستان عزیز ما حالا توی جاهای مختلف با دروس مختلف می‌تونن آشنا شده باشنای محترم مثلاً تو درس اندازه‌گیری با ما بودن و این فضا رو دیدن فرض کنید که خدمتتون عارضم به شما میگن که قد افراد ما میخویم رصد کنیم خب قد افراد یه متغیر پیوسته است و شما اگه ۱۰۰ نفر ۱۰۰۰ نفر یا بخواید آمار بگیرید اینکه مثلاً بچه‌های کارشناسی شریف قدشون چه الگویی داره ها چه مدلی می‌شه براش ارائه داد یا بعضاً بخواید برای خانم و آقا هم حتی اینو جدا کنیم چه کارهایی می‌شه انجام داد اینی که برید دادگاه بگیرید و بیاید بهترین مدلی که ممکنه روش فیت کنید خب اونجا ما بچه‌ها با یه متغیر مواجه میشیم که x بتونه پیوسته تغییر بکنه حالا یه چیز داره مراحل اثباتی داره اینه که

میگم که مثلاً فرض کنید که قد آدما رو گرفتید خب قد آدما یه عدد پیوسته است مثلاً فرض کنید که عرض به خدمت شما می‌تونه از مثلاً چه می‌دونم یک و نیم متر شروع بشه بره تا یک و شصتم شش دهم مثلاً بشمارید چند تا بودن بعد ۱.۶ تا ۱.۷ بشمارید چند تا بودند و الی آخر ادامه بدید و به یه همچین الگوهایی میرسید الگوهای هیستوگرامی که بشمارید چند تا توش وجود داشتن نرمالایز کنید هیستوگرام و تعدادشو بر تعداد کل تقسیم بکنید تا عددی که بهتون میده نمادی از درصد حضور اون افراد باشن و خب ما از این میتونیم به یک مفهومی برسیم به نام چیتی فانکشن یا تابع چگالی احتمال چجوری این اتفاق می‌افتاد تو این در واقع چیزی که من اینجا رسم کردم خود ارتفاع ستون ها نمادی از احتمال وقوع اون پدیده بود می‌گفتن با چه احتمالی قد آدم‌های این دانشگاه تو مقطع کارشناسی بین یک و هفت

هزار نفر داده گرفتید و مثلاً ۱۰۰ نفر اینجوری بودن ۱۰۰ تقسیم میشه یک دهم ۱۰% اوکیه ولی یه نمودار دیگه‌ای ارائه میدن خدمتتون عارضم به جای اینکه بخوان از ارتفاع ستون‌ها احتماللو پیدا کنن می‌رن از مساحت ستون‌ها ارتفاع پیدا می‌کنند و اینجوریه که عددی که روی محور وای نوشته شده رو بر دلتا ایکس اینجا تقسیم میکنن خب که بعداً که در دلتا ایکس ضرب کنید بشه چی بشه همون عدده و اینجا الگویی که داره باز همینه به خصوص وقتایی که دلتا ایکس‌هاتون ثابته درسته فقط عدد محور وایتون متفاوت میشه مثلاً اینجا اگر مثلاً دلتا ایکس یک دهم بود احتمالتون هم مثلاً یک دهم بود شما یک دهم تقسیم بر یک دهم میکردید عدد یک بهتون میداد حالا یا احتمال اینجا مثلاً ۱۰ بود اونجا یک دهم بود میشد یک دهم تقسیم بر یک صدم بهتون میداد و باز همین الگوها رو بهتون میده ولی این دفعه دیگه چی مساحت هر

نماد احتمال وقوع بین اینجا تا اینجاست و حالا اگه بیاید از این نموداری که عرض کردم یه منحنی رسم بکنید شما به یه تابع پیوسته‌ای می‌رسید که من با پی اکس نشونش میدم با پی کوچک اکس و نه پی بزرگ و به این میگن تابع چگالی احتمال یا دنسیتی فانکشن خب حالا ما اینو کجا داشتیم خب اینو کجا داشتیم شما توی مطلب خب احتمالاً با دستور رند آشنایید خب دستور رند برای شما چیکار می‌کنه یه عدد بین صفر تا یک میده و مثبت هم میده درسته خدمتتون عارضم خیلی هم مضحکه اگه هممون مطلب باز کنیم بار اول رندوم بزنیم به هممون اولین نفر همین عدد رو میده خب فرض کنید که من بزنم مثلاً آ مساوی با رند ۱۰۰ و یک خب یعنی ۱۰۰ تا عدد رندوم به من بده و چیکار کنم و بیام هیستشو رسم بکنم مثلاً بگم که آ و ده حالا با

اینستاگرام بیا برام اینو رسمش بکن این به شما میگه بگو اوکی من تو ۱۰۰ تا عدد اولی که تعیین کردم انقدرش بین صفر تا یک دهم اینقدرش بین یک دهم ولی آخر هنوز به نظر میاد الگویی دیده نمیشه اما اگه عدد من زیادش بکنم یعنی من اگر آ رو بگیرم رند ۱۰۰۰۰ و ۱ و باز هیست آ رو رسم بکنم این دفعه یه اتفاق جالبی که میفته اینه که ببینید تقریباً داره عددا رو یکسان میده یعنی تعداد دفعاتی که از صفر تا یک دهم انتخاب میکنه با یک دهم تا دو دهم تا الی آخر با همدیگه چیه با همدیگه برابره پروبابیلیتی دنسیتی فانکشن یا pdf که این برادرون برای خودش در نظر گرفته تو دستور رند خب که خیلی هم برای ما شدنی و قابل حسه اینه که یک مستطیل خب که فعلا گفته بود بین صفر تا یک ولی شما میتونید بین هر دو تا عددی بگیرید و از دو طرف هم به صفر رسیده این همون پی اکس کوچیک منه که از منفی بی نهایت تا بی نهایت ادامه داره و این

ماجرایی که داره اونو تشکیل میده خب اتفاقی که می‌افته اینه که ما گفتیم مساحت زیر نمودار p کوچیک dx از یه جایی تا یه جای دیگه‌ای می‌شه چی احتمال وقوع پدیده وقتی که ایکستون بین آ تا بی باشه ها که متغیر تصادف اتفاق براش بیفته طبیعتاً pdf این ویژگی رو داره که انتگرال منفی بی نهایت تا بی نهایتش حتما حتما چنده حتما حتما یکه در ضمن چون ما هیچ احتمال منفی نداریم همیشه چیه باید مثبت باشه پس امروز مسا صفر یا نامنفی باشه پس تمام توابع px پیوستهه‌ای که شما پیدا بکنید اصلاً ارائه بدید از تو لوپ لوپ در بیارید خودتون دلتون بخواد که اینو داشته باشید که از منفی بی نهایت تا بی نهایت انتگرالش یک بشه و همه جا نامفی باشه این می‌تونه یک تابع چگالی احتمال باشه حالا سوال بعدی به وجود میاد دستور رند برای من می‌تونه چیکار کنه بیاد توی بازه‌های مساوی اعداد تو بازه‌های مساوی عدد مساوی به تعداد مساوی انتخاب

E:\courses\LangChain Project\main root\data\SCR_Session21_transcript_part2.txt

ولی من اگه یک تابع پیچیده‌تری مثل این قرمزه داشته باشم باید چیکار کنم ها چه جوری می‌تونم یه تاسی که میندازم اینجوری باشه که این در واقع کامپیوتر یا اون کدی که برای من داره اینو حل می‌کنه احتمال اینا رو وقوع اینارم در نظر بگیره یعنی احتمال الان هاشور خورده بیشتر از احتمال این یکی هاشور خورده بنفشه هستش دیگه درسته پس اگه من بهش بگم صد بار عدد انتخاب کن احتمال این شده باشه مثلاً هفت دهم احتمال این شده باشه دو دهم انتظار من اینه که ۷۰ بارشو بره برام مثلاً از این بازه انتخاب کنه ۲۰ بارشو از این بازه نه یاد یکی یکی بگیره این اتفاق بچه‌ها پدیده آسونی نیست شما نیازی نیست دنبالش باشید دلتون می‌خواد سرچ بزنید روش‌های تحلیلی که تقریباً لزوماً وجود نداره یعنی یه سری انتگرال‌هایی هستن که باید این کارا رو بکنید برای هر پی دی اف دلخواهی که براتون بیاد اونجوری تاس بندازه و بگه که لزوماً جواب یعنی جواب چیز نداره بسته نداره اینا رو با روش عددی حل میکن چون غصه نخورید مثلاً فرض کنید که

مهمترین و معروف‌ترین چیزی که وجود داره اینجا من فقط ببینم که سوالی هم پرسیده یا نه نه وجود داره تابع چیز خدمتتون عارضم که تابع توی مطلب این کارو براتون می‌کنه یعنی رند ان و حالا اگه بزنید مثلاً بزنید ۱۰۰ تا بهم بده بریز تو آب به جای رند خب و هیستشو بگیرید یه سری اتفاقای جالبی میفته اولاً برخلاف رندوم عادی خودمون اجازه بدین اینو ببندم چی شد در یک خب اینو بگیرم خدمتتون عارضم که اگه ۱۰۰ تا بگیرم میبینید که اول اتفاقی که افتاده برخلاف رند عدد منفی هم بهم داده بعد میتونه این عددا بره حتی بیشتر و بیشتر هم پخش بشه و اگر این تعدادشو زیاد بکنم یه الگوی جالبی داره و از یه شکلی تبعیت میکنه که شما احتمالا یه جایی

بالاخره قبلاً دیدین و بهش میگن تابع به اصطلاح توزیع احتمال زنگوله‌ای یا نرمال که فرمولی که برای این اشاره میشه من اجازه بدین اینا رو از اینترنت استفاده بکنم که دیگه نرمال بزنم روابطشو ببینیم خدمت شما عارضم که یه همچین فرمولی داریم fx کوچیک همون پی ایکس منه که یک تقسیم بر سیک ما رادیکال دو پی در ای به توان منفی یک دوم ایکس تقسیم به توان دو اما اینا چی اند ایکس بین منفی بی نهایت تا بی نهایت میتونه تغییر کنه و اون پدیده تصادفیتون رو که فرض اگر یک دونه متغیر فقط داشته باشه رو تو اون جا میدید تو این فرمول دو پی همون سه و4 خودمونه رادیکال میگیرید یه عدده اکسپوننشیال میو میانگین سیکما انحراف معیاره و اگه تو این فرمول بذارید شما به این نمودار میرسید اما این نمودار زنگوله‌ای ویژگی‌های جذاب و جالبی داره ویژگی‌هایی که داره اینه

خیلی خلاصه و صریح براتون بیان می‌کنم خدمتتون عارضم که این اگر شکلشو در نظر بگیریم ویژگی‌هایی که میشه براش گفت ایناست یکی اینکه این تابع فقط تابعیت از دو تا پارامتر داره یعنی یه تابع پیوسته از دو تا پارامتر براش تعیین کنید یکتای یکتا معلوم میشه یکی میانگین یا میوه یکی انحراف معیاره تمام بقیش دیگه عدد ثابت‌هایی بودن یا اکسپوننشیال‌هایی بودن که درش ضرب شده بودن دوم اینکه تقارن داره خب حول نقطه میانگینش تقارن داره سوم اینه که خدمتتون عارضم که میانگینش مثبت منفی یک انحراف معیارش احتمالش میشه ۶ مثلاً خه‌ای درصد آ مثلاً می‌گیم حالا می‌گیم نزدیک ۷۰ درصد ۶۷ بگید ۶۵ درصد بگیرید خب یه همچین چیزی بگیرید خدمتتون عارضم حالا دقیقش دو تا ۳۴ درصد میشه ۶۸ و خورده‌ای درصد میگم یعنی بعضیا که به خاطر بسپارن ۶۵ ۷۰ این عددا رو تو ذهن خودشون در نظر می‌گیرن شما اگه بخو

یک نرمال دیستربیوشن داشته باشید واقعا احتمال اینکه داده‌هاتون مثبت منفی یک انحراف معیار از میانگین اینور اونورتر باشند ۷۰ درصده احتمال اینکه مثبت منفی دو انحراف معیار اینور اونورتر باشید چقدره ۹۵ درصد ۹۵ درصد داده‌ها باید بیفته تو میانگین مثبت منفی دو انحراف معیار یعنی چی یعنی اگه از یک داده‌ای اطلاعات عمومی دارید که این از در واقع نرمالی میکنه میانگین انحراف معیارش اینقدره شما از هر ۲۰ تا داده‌ای که می‌گیرید ۱۹ تاش باید توی میانگین مثبت منفی دو انحراف معیار باشه ها یعنی دیگه اگه افتاد اونورتر دیگه اوتلایر احتمالاً و به احتمال ۹۹ و خورده‌ای درصد هم شما تو میانگین مثبت منفی سه انحراف معیار می‌افتید ما کیا می‌تونیم نرمالیشن رو برای پدیده‌های فیزیکی اطرافمون چیز کنیم لحاظ بکنیم تقریباً همیشه شما هر وقت هیچ ایده‌ای ندارید یه پدیده فیزیکی چه توضیحی داره نرمالیستشن فرضش کنید مگر اینکه اطلاعات تکمیلی داشته باشید که نه

فرض کنید احتمال توزیعش یکسان بوده یا اسکیوت بوده به یه سمت بیشتر متمایل بوده ولی آخر به سمت چپ یا راست اینا چیزایی که وجود خارجی داره ولی هر وقت ایده‌ای ندارید خیلی از پدیده‌های طبیعی و فیزیکی و یا داده‌هایی که توی سنسورها و ابزارهای اندازه‌گیریتون توی کاراتون میگیرید میشه با در واقع یا واقعا نرمال دیستربیشن هستند یا واقعاً با نرمال دیستشن میتونید مدل بکنید خب حالا اینکه این اتفاق میفته فرض کنید که من بگم که قد آدما رو می‌خوام لحاظ بکنم به جای اینکه بگم کوتاه قد یا بلندقد ها به جای اینکه از این پارامترهای کیفی گسسته استفاده کنم بیام از چی استفاده کنم این چیز پیوسته استفاده کنم و یا خدمتتون عارضم که فرض کنید که من تو مسئله خودم که می‌گفتم بهتون می‌خوام مثلاً یه میوه بهتون بدم تحویل من یه آشپزیم که بسته به اینکه امروز حالم خوب باشه یا بد باشه می‌خوام یه میوه بهتون بدم خربزه بدم هندونه بدم

فلان فلان هندونه رم خودم خیلی دوست دارم پس اگه خوشحال باشم این کارو می‌کنم ولی ممکنه یه در واقع سامانه هوش مصنوعی بیشعوری بیاد مثلاً به جای اینکه براش مهم باشه به شما بگه هندونه یا خربزه بهتون میدم بگه ببین من انقدی باکلاسم که چیز وزن میوه رو بهت گزارش میدن دیگه خودت ببین چیه خب وزن میوه که گزارش میده پیوسته است بعد شما ممکنه مدل کرده باشید و دیده باشید که اوکی اگر مثلاً از یه جایی بالاتر بود هندونه است از یه جایی پایین تر بود پرتقال و مثلا همین دو تا میوه رو داریم نهایتا از یه جای پایین تر بودم خیار این سه تا رو میخوام توضیح کنم خب یه همچین چیزایی مدل دارید و می‌تونید تخمین بزنید که چه اتفاقی میفته خب یه مدل جذاب‌تر و پیچیده‌تر اینه که چرا فقط یه دونه متغیر تصادفی داشته باشم که بخوام پدیده‌مو باهاش توصیف کنم شایدم بیشتر از یه دونه فیچر داشته باشم که بتونه جذاب‌تر برای من این کارو بکنه ها یعنی مثلاً ممکنه من اگه خربزه و هندونه رو بذارم وسط و فقط وزنشون رو بگیرم بعد قیمه‌ها رو تو ماستا بریزم یعنی اینجوری باشه که اوکی خربزه ها گردلی ها باشن

اینجا بیفتن بعد هندونه‌هام بیشتر اینجا افتادن ولی یه جاهایی هم با چی با این خربزه‌ها چی دارن تلاقی دارن اونجا ممکنه یکی بگه آقا برای چی فقط وزنشو تنها می‌گیری همون سامانه هوش مصنوعی کم عقل تو که می‌تونی بیا وزنشم برام چیز طولشم برام در نظر بگیر و این دفعه پارامترهایی که میان وسط میتونه چی باشه دو تا فیچر باشه یعنی طول میوه باشه و وزن میوه باشه و این‌ها حالا دو تا پارامتر تصادفی ایکس یک معتقد تص ایکس باشد و اگر این دفعه رسمش بکنیم میبینید اوضاع بهتر میشه و خربزه و هندونه‌ها مثلاً خیلی بهتر تفکیک میشن درسته اینجاها وزنشون تلاقی داشت ولی طولشون جوری بود که چی تفکیک پذیری مناسبی داشتن پس ما برای این ما مدل‌های بهتری ارائه میدیم حالا اگر رفتیم بالای یک بعد شدیم معادل دیستربیوشنمون اسمش چیه کسی شنیده مالتی وریت گا دیستربیوشن خب

مالتی وری ایت یعنی اجازه میده به شما که بیش از یک یارو داشته باشید و خدمتتون عارضم که اگر تو دو بعد نگاه کنید خب یه تو سه بعد نگاه کنید این جزوه اندروینگه فکر کنم خدمتتون عارضم که یه محور محور محور ایکس دو همون متغیر تصادفی محور وای هم چیه پی کوچیک یا پی بزرگ پی کوچیکیه که اگه انتگرال بگیرید توی بخش های از ایکس یک یک تا ایکس یک دوم ایکس دو یک تا ایکس بتونه احتمال وجود رخداد اون پدیده رو تو اون بازه به شما بده خب و اونجا فرمولش فرقی که میکنه بچه ها اینه که حالا من بیارم یکی از اینایی که اینجا نوشته خدمتتون عرضم فورش اگه بیام تو خود چیز عادی گوگل فکر کنم راحت تر برام مینویسه فکر کردم خیلی سریع پیدا میشه برام ننوشته می‌خوام ننوشته بیارم تو چیز ویکی پدیا

خدمتتون عارضم که اینجام به ظاهر با دوتا متغیری که دارم میشه چیزش کرد در واقع رسمش کرد این حس بهتون نمیده ببینم فرمولش یه جا پایین‌تر بهتری ننوشته آبرومونو بردی ویکی پدیا خب حالا باز این بهتره خب خدمتتون عارضم فرمولش خیلی مشابه اون یک دونه‌ایه فقط یه تغییراتی می‌کنه اولاً اینکه ما چون ایکس یک ایکس دو تا ایکس ان داریم برای بیش از یک دونش میانگین اون میشه چی یک بردار میشه ها یعنی مثلاً برای نارنجی ها اینجا میانگین بردار خربزه خب یه ایکس یک داره یه ایکس دو داره که من اینو اسمشو میزارم می یک که یه ایکس یک بار داره یه ایکس دو بار پس من به تعداد متغیر تصادم چی دارم میانگینام درایه داره خب و اینجا که واریانس رو تعریف میکردم یعنی میومدم اختلاف تو یک بعد اختلاف تک تک داده‌ها رو از میانگین می‌گرفتم توان دو می‌رسونم جمع میزدم رادیکال می‌گرفتم تقسیم

برای دو بعد مفهوم معادلش چیه چی داریم کواریانس داریم ماتریس کواریانس داریم اونجا میگه چیکار کن با سیکوا نشونش میدن اشتباه نکنید جمع نیست اگر دو تا درایه داشته باشید کواریانستون دو در دوئه اما این درایه‌هاش چیو بهتون میگه میگه سیکمای ایکس ایکس رو برام بگیر خیلی شبیه چیزه تامسور تنش های ما همون ممان اینرسی های ما میگه داده های ایکس فقط ایکس هاشون ایکس یک هاشون با هم بگیر خب انحراف معیارشو بگیر بزار اینجا انحراف معیار ایکس دو ها رو با هم بگیر یعنی اصلا به ایکس ها کاری نداشته باش بزار اینجا انحراف معیار ایکس یک ایکس دو یا ایکس دو ایکس یک بگیر که فرقی با هم نداره و شبیه ماتریس های متقارن میشه یعنی کلاً ماتریس متقارن میشه که سبب میشه حالا مقادیر ویژش مثبت باشه انواع ویژگی های خوب ماتریس متقارن داشته باشید تو جبر خطی بلدید و اینجا با چی نشون داده میشه

تابع به صورت یکتا با این بردار میو و بردار کواریانس به صورت یکتا معلوم میشه و بازم انتگرال زیرش از منفی بی‌نهایت تا مثبت بی‌نهایت تمام ایکس آی هایی که منتقل تصادفی هستند چیه باز یک خواهد بود خب خدمتتون عارضم که به این میگن در واقع حالا گاسین‌های چند بعدی و اینجا چیزی که توش ظاهر میشه اینه که اولاً توی مخرج اینجا و اینجا در واقع به جای اینکه ما قبلا یک سیگما داشتیم اینجا قدر مطلق سیگما نوشتیم یعنی دترمینان سیگما میاد تو مخرج دترمینان اون ماتریس دو در دو یا n در n اگه n تا متغیر تصادفی داشته باشید و توی بالاش هم اینرس یا منفی یکش ظاهر میشه اینجا هم در واقع چیزه دیگه ایکس رو اگر ستونی بگیریم یعنی ان در یک بگیریم ایکس منهای میو چند در چنده میو n در یک ایکس هم n در یک n در یک باقی میمونه ترنسپوزش میشه چی یک در n

در سیکما ضرب بشه سیکما اندر ان منفی یکشم اندر انه بعدیش ایکس منهای میو ان در یکه در کل چی بهم میده یک در یک بهم میده و این اکس بهش که بگیرم یک در یک پایینم یه عدد باز دترمینان عدد رادیکال عدده یه عدد پی بهم میده ها پس یه عدد یک در یک به ازای تمام ایکس یک تا میده این بچه‌ها نماد احتمال نیست خب نماد توزیعشه یعنی مثبت منفی اپسیلون تا اینور اونورترش اگه کسی افش بالاتر باشه یعنی احتمال وقوع مثبت منفی اپسیلون تا اینور اونورترش بیشتر از کسیه که چی پیش پایین تر باشه ها احتمال وقوع یک پدیده اونجا مثلاً اگه قد یک و هفت دهم مثبت منفی پیش مثلاً عدد بالاتری نسبت به قطع یک و نیم بهتون بده این احتمال اینکه آدمای یک.۷ مثبت منفی عدد کوچیکی پیدا بکنید بیشتر از اینکه یک و نیم مثبت منفی همون مقدار کوچیک رو بخواید پیدا بکنید خب اون مقدار

احتمال اینکه قد یکی رو بکشید بیرون قدش دقیق ۱.۷ باشه چند طبق شما نمی‌تونید تو یک فضای پیوسته یک نقطه رو انتخاب کنید یا تو یک صفحه خط انتخاب کنید اینا احتمالاشون صفره شما میگید احتمال اینکه قدش بین ۱ و ۶۹ تا ۷۱ باشه چقدره اوکی میشه اون انتگراله خب ولی حالا ما از از هم پی کوچیکه یه جا استفاده می‌کنیم حالا برسم انشالله خدمتتون میگم خب اینم شد پس یک دونه گاسشن حالا می‌خوام برم سر حرف اصلیم می‌خوام در مورد چی صحبت کنم جی ام ام یا گاسین میکسر مادلا صحبت کنم آقا از کجا معلوم اگه من قد آدما رو بگیرم خب چی بهم بده واقعاً بره روی قله بزنه بهم بده ها شاید شاید اگر من ۲۰۰۰ تا فرد رو بگیرم که هزار تا خانم و هزار تا آقا باشن

اینجوری باشه که این خانوما مثلاً قدشون اینجاها در واقع بیشتر متراکم باشه اگرچه اینجاها هم دارد و آقایون مثلاً چی جلوتر متراکم باشه ولی اینجاهام داشته باشه اوکیه خب شما می‌تونید برای قرمزه یه چی در بیارید یه پروبلیتی دنسیتی فانکشن در بیارید خب که احتمال اینکه کجا ماکسیمم میشه اینا رو بهتون نشون بده راستی یکی دیگه از ویژگی های جذابش میانگین میانه و مد نرمال یک جا می افتند دقیقا همون وسط میفتن در حالی که شما در حالت عادی پروکشن های عجیب غریب و من درآوردی در بیارید این اتفاق نمیفته میانش یه جا میفته میانگینش یه جا مد هم که میتونه بیشتر از یکی داشته باشه و یه اتفاق دیگه چیه یه همچین احتمالی برای این میفته بچه‌ها این در واقع انتگرال زیرش باید چی باشه یک باشه دقیقا درسته پس اگه دهنش گشاد شد یعنی انحراف معیارمون زیاد شد باید چی باشه ارتفاع پی میاد پایین خب ولی معنیش هیچ معنی بدی

انتگرال زیرش ثابت من مجبورم اینو بیارم پایین تا اون لحاظ بشه و خب اگه یه جا شارپ‌تر باشه این به همدیگه نزدیکتر میشه میره مقدارش بالا دیگه حد مقدار حدیش هم چیه تابع دلتاست تابع ضربه که میره تا بی نهایت ولی دیگه ضخامتش چنده صفره خب خدمتتون عارضم که یکی میگه حالا من می‌خوام بیارم شما رو تو این فضا ما قبلاً توی فضایی که ربات گفتیم از زمین عکس میگرفت گفتیم آقا یا تو تصویرش می‌خواد کاشی بیفته یا فرش بیفته سوال اگه دوتاش بیفته چی یه کوچولو از فرشه و یه مقدار کاشی بیفته چیکار کنیم ها یا فرض کنید من به عنوان آشپز می‌خوام میوه تحویل آدما بدم خب یکی معیارو می‌ذاریم که اوکی میوه‌ها رو به پرتقال سیب و نارنگی می‌شکونه یعنی گسسته میشن خروجی های من ممکنه یه سامانه هوش مصنوعی اسم اینا رو نگه بگه من طول و وزنشو به شما میدم خب و حالا می‌بینیم که هم خیار من می‌تونم داشته باشم هم سیب می‌تونم داشته باشم با پیک‌های

انحراف معیارش فلان الی آخر میگه که شما بیا مدل مخلوط گاوصی درست کن از بیش از یک گاسین بچه‌ها طبیعتاً این مدل دقیق‌تری بهتون میده از اینکه شما با یه گاسین فقط تقریب بزنید با یه گاسین شما دو تا پارامتر بهش میدادید میو انحراف معیار تموم میشه دیگه یکتا معلوم بود ها اینجا احتمالاً پارامتر بیشتری باید بهش بدید و مدل تنوع بیشتری داره و به جای اینکه من این مدل قرمز یا سبز رو بردارم یه مدل جدیدی ارائه میدم که اینجوری باشه و این پی دی اف من باشه خب برای اینکه این پی دی اف باشه اولین شانسش اینه که باید چه اتفاقی براش بیفته چی انتگرال زیرش باید یک باشه پس طبیعتاً شما اگه بخواید نرمال نیستشن اول و با میو یک و سیما یک و نرمالستروشن دو رو با سیکما دو و می دو با همدیگه جمع بزنید تا بخواید به

برسید برای اینکه انتگرال زیرش یک باشه اینو در یک پی ۱ و p۲ ضرب می‌کنید با همدیگه جمع می‌زنید اسم اینتون میشه اون پی جدیدتون که این دفعه نه فقط تابعیتی از میو یک بلکه میو دو و سیگما یک و سیکما دو مدل مدل پیچیده تر و دقیق‌تره یه قید باید وجود داشته باشه اون قیده چیه توی پی آی ها چی میشه گفت جمعشون باید یک باشه اگه جمعشون یک نباشه انتگرال زیرش صفر نمیشه یعنی وقتی یه داده به شما گزارش میدن خب و شما این مدل رو در آورده باشید و مثلاً بگید که من یه n1 دارم یه نرمشن قرمز رنگ دارم با احتمال ۷۰ درصد بعدی ۳۰ درصد بعدی فلان خب این وقتی یه داده بهش میدید دو تا چیزو بهتون میگه یک بهتون میگه که اولاً من این اجازه رو بهت میدم که داده‌ای که داری بهم گزارش می‌کنی بتونه متعلق به همه باشه مثل من متعلق به همه شما اینکه بتونه آقا

متعلق باشه به گروه هندوانه ۳۰ درصد خربزه بالاخره خربزه‌ای داریم که توی وزنی و اینا و طولش شبیه هندونه‌ها باشه خب این احتمال وجود داره براش که این داده‌ای که میاد بالاخره ممکنه خربزه باشه با احتمال ۳۰% احتمال هندوانه ۷۰ درصد و وقتی هم تو هندونه افتاده چقدر حالا خودش به میانگین هندونه‌ها نزدیکه ها و اینجا میشه در واقع پی کوچیک رو براش محاسبه کرد و این نمادی از چیه نمادی از در واقع سیکمای حالا بعضیا با سی آی ها بعضی ها با پی آی ها تو یک منابع مختلف از نرمالی دیستربیشن های مختلف با می آی ها و سیما آیی‌ها گزارش می‌کنن این می‌شه چی گاسن میکسر مادل شما طبیعتاً اگر من چند بعدی باشم اینجا به جای میو و سیگما چی می‌نویسم یکی بردار میو که خودش n تا درایه داره به تعداد متغیرهای تصادفی مثلاً توی مسئله هندونه همون میوه‌ها هم طول بود هم وزن بود ممکن بود رنگش حالا طیف رنگیش یا

در واقع چیز ماتریس کواریانسش مطرح بود که ان در انه یعنی شما ان تا برای میو درایه داشته باشید n در n تا برای چی دارید برای سیگما حالا با همه این توصیفات بریم اگه یک پدیده اینجوری باشه چه جوری میشه مدل مارکوف مخفی مارکو براش ارائه داد من خیلی تلاش کردم این مقدمه‌شو یعنی به زبان عامیانه بگم اگر اینجوری باشه شما باید چیکار کنید شما باید آبزرویشن‌هاتون که قبلاً بود یه ماتریس بی بود جمعش میشد یک این دفعه دیگه ولش کن اون ماتریسه رو بذارید کنار یک تابع پیوسته است که نمادی از پی کوچک است هرچی بیشتر باشه یعنی احتمال وقوع اونجا بیشتر خواهد بود خب یه همچین چیزی و خدمتتون عارضم دیگه به جای او تی بهتون بگن که من مثلاً هندونه دیدم یا خربزه چی بهتون میگه به شما وزن میوه رو میده طول میوه رو میده درسته ولی اینو بذارید توش می‌تونید احتماللو پیدا بکنید لازمش اینه که پس

الان چی بر عهده ما میشه برای اینکه بی رو تعیین کنیم تعیین سی جی کی‌ها تعیین میو جی کی‌ها تعیین سیکما جی کی‌ها یعنی اولاً چند تا گاوصند داری اون اولش تعیین می‌کنی مثلاً می‌گیم آقا من می‌خوام مدلمو با سه تا گاوصند مدل کنم سه تا میوه دارم خب میگه که ببند باید بگی هر کدوم از گاوصینا میانگینشون چنده ماتریس کواری چنده اینو باید برام پیدا بکنی در ضمن احتمال وقتی من یه عدد بهت میدم شما باید به من بگی با چه احتمالی کجا میفته ها سافت نگاه کنی به داستان هارد نگاه نکن جان آره دوتاش دیده میشه برای میوه‌ها ممکنه به جای اینکه بهت بگه میوه‌ای که بهت دادن چیه ماشین تو خروجی بهت بگه میوه‌ای بهت داده که وزنش انقدره طولش انقدره یه عدد پیوسته است بهت نمیگه هندونه یا

شما تخمین می‌زنی که احتمالاً این کدومه خب و بهترین مدلو در میاری پس شما فرض می‌کنید که من ام ام بزرگ تا توزیع دارم خب و چی و وزن‌های تلفیقم که سی جی کی ها باشه به تعداد ام تاست و باید ام تا از این تابع‌های نرمال دیسکریپشن با همدیگه جمع بزنم تا چی بهم بده تا این بی رو بهم بده درسته خب من اجازه بدید امروز کم بگم چون ساعت ۱۴ دقیقه مهمان خواهیم داشت انشالله البته اگه بتونم تشریف بیارن خاطر همین یه دور تا آخرش می‌رسم ولی انشالله جلسه آینده سعی می‌کنم هم برگردم یه مرور بکنیم هم اون بخش اون آر اگه برسم تکمیلش کنم در مورد این چیزهای پیوسته پس توی پارامترهای پیوسته شما باید سی میو و سما جیk ها رو پیدا بکنید یعنی سه تا اگه داشته باشید سه تا میو می‌خواید که خود میوها حالا باید ببینیم بردار چند در چند یعنی تمام پارامترهاشو باید تعیین کنید سه تا سیک ما یعنی در

سه تا سی می‌خواید که خودش ان در یکه و بعدش که اینو داشته باشید این دفعه باز میشه گاما و زتا اینا رو براش تعریف کرد و مدلو درآورد با روش بامبلش فقط یه فرقی داره گاما اونجا تابعیت تی و آی بود یعنی چی یعنی می‌گفت با چه احتمالی تو زمان تی توی استیت آیومید مثلاً عصبانی هستید درسته اینجا یه حرف اضافه تر میزنه میگه با چه احتمالی توی زمان تی تو استیت که هستید هیچی توی تلفیق ی‌امید این دیستربیوشن ها بود که کیتا بودن با ضریب پی جمع می‌شدن با همدیگه پس اینجا یه پارامتر دیگه بهش اضافه میشه گاماش اینجوری پیدا میشه که آلفای تی جی در بتای تی جی تقسیم بر جمع روی این آلفا ضربدر یه عبارتی میشه این عبارت بچه‌ها تمش احتمالاتیه یعنی مخرجش نرمال کننده صورته صورت می‌گه با چه احتمالی متعلق به دسته کی هستید وقتی که تو استیت

هستید مخرج میگه چی جمع بزن تمام حالت‌های ممکن می‌خوام نرمالایز کنم می‌خوام از جنس احتمال بشه گاما خب و اینجوری میشه چیکار کرد در واقع پارامترهای مجهولمون چیا بودن توی بی گفتیم سه تا پارامتر مجهول وجود داره یکی سی جی کی یعنی ضریب‌های تلفیق یکی میو جی کی میانگین‌های هر کدوم از دسته‌هام و سیگمای جی کی که این سیگما جمع نبودا نماد ماتریس کواریانس بود که خودش n در انتها داشت اینا رو باید برید با این روش‌ها پیدا بکنید طبیعتاً باز مثل حالت قبلی باید یه آ و بی و پی اولیه حدس بزنید برید باهاش یه گام جلوتر اینا رو در بیارید و این چرخه اکسپکتیشن ماکسیمایزیشن رو ادامه بدید گاما باش و تعیین کنید اینو تعیین کنید اینو تعیین کردید گاما رو باهاش بدست بیارید آلفا بتا گاما بعد از گاما اینو تعیین کنید و الی آخر و برید جلو تا به یه مدل برسید که انشالله مفید باشه حالا این کجا کاربرد داره کاربردشو خدمتتون بگم خدمتتون عارضم که یکی از

فوق برجسته‌ای که تو این زمینه کار کرده آقایی به نام سیلوین کلینون خب سیلون سیلوان کلینون خدمتتون عارضم که ایشون خب سوئیسیه و در حال حاضر توی در واقع یکی از زیر مجموعه‌های دانشگاه ای پی اف ال کار می‌کنه دانشجوی خانم و شخصی بوده به نام خانم اودبیلارد خب و اینا واقعاً آدم‌های برجسته‌ای بودن خانملارد یکی از افراد فوق معروف این حوزه در دنیاست دانشگاه ای پی افl در دانشگاه آزمایشگاه لاسا کار میکنه الش مخفف لرنینگه من ایشون رو دیدم توی کنفرانس های باهاشون صحبت داشتم خانم بیلارد یه دانشجویی داشت به نام سیلوان کلینون که کلینون یکی از در واقع فوق برجسته ترین آدم های حوزه در واقع این هیدن مارکوف مدل تو دنیا و کلاً ارائه مدل های حالا توی تعداددادگان کم برای استخراج مدل های دینامیکیه

که حالا زیر مجموعه میشن از حوزه‌ای به نام لرنینگ دیمانستریشن یا یادگیری از طریق مشاهده و این آقا من یه مصاحبه‌ای باهاش داشتم به صورت آفلاین که انشالله فیلمشو بعد این جلسه براتون بارگذاری می‌کنم اگه دوست داشتید ببینید از اون آدمایی هم که حالا غیبتش نباشه کلاً با دیپ لرنینگ‌ها رابطه خوبی نداره یعنی کلا معتقد یعنی به این سیستم‌های کلاسیک خیلی خیلی باورش بیشتره و اعتقاد داره که حالا حالاها اینان که کار می‌کنن و یه مجموعه کدهای جذابی رو تو مطلب نوشته یه مطلب کار خوف و خفنه که من مجموعه کداشو براتون می‌ذارم یکی از کداش تو حوزه خب و چیکار کرده اومده من اینو می‌خوام به عنوان تمرین خدمتتون بدم انشالله حالا بعداً زحمتشو بکشید انجام بدید اینه که اومده مثلاً از هر حرف انگلیسی پنج تا شش تا چیزو نوشته مثلاً پنج تا جی نوشته ایکس وایشو سیو کرده بر حسب تی خب گفته اینا جی اند این پنج تا جی اند خب حالا مثلاً یه مدل براش دربی

براش در بیارید که این باشه خب اتفاقی که افتاده آبزرویشن‌های ما پیوستن یعنی ایکس یک و ایکس دو همون چیزایی که من رو صفحه میبینم محور مختصات افقی و قائم پیوسته است دیگه قبوله اون چیزی که من دارم میبینم آبزرویشن پیوسته است پس از این مدل تبعیت می‌کنه بچه‌ها تو مطلب کدشو زده من یه مجموعه دستوری مجموعه فایل‌هایی بهتون میدم بنده خدا هم نوشته آقا نوشته بین بین اللهی اگه استفاده کردید به این پیپر هم ارجاع بدیدا بعداً بالا نکشید کدا رو خدمتتون عارضم که یکی از کارهایی که کرده کلی دمو گذاشته و کلی فانکشن گذاشته که شما برید از صفر بخونید این چجوری hmش تعریف کرده خب دمویی که در مورد hm گذاشته دو تا تغییر به شما اجازه میده بدید یکی اینکه چه حرفی رو میخوای بهت نشون بدم مثلاً الان جی من جی رو انتخاب کردم و گفته چند تا استیت بخواید داشته باشم حالا می‌خوام رو این صحبت بکنم یکم کیفی بعد انشالله یکشنبه آینده روش جدی‌تر صحبت می‌کنیم خدمتتون عرضم این که ران بکنید خب ران می‌کنه به شما ماتریس پی رو گزارش میکنه

یعنی چی یعنی حتماً حتماً باید از چند شروع کنی از استیت ۱ شروع کنی هیچ شانسی برای اینکه از استیت ۲ شروع کنی نیست برای نوشتن جی خب می‌گفته آقا هرچی جی من دیدم نوشتن ملت از اون گوشه بالاش مثلاً شروع می‌کنن نمی‌دونم وسطش اینوری بعد اونوری برن خب این نمونه‌هایی که بهش داده اینجوری بوده دیگه مگر اینکه شما نمونه‌های دیگه‌ای بدید بهش یعنی عمداً یه جی دیگه‌ای بسازید که دو تیکه نوشته باشید خب خدمتتون عارضم ماتریس a رو بهتون میده که گفته پنج تا استیت دارم بچه‌ها این استیتا در ظاهر توجیه فیزیکی ندارند خب حالا بهتون میگم چیکار کرده پنج یه ماتریس شده ماتریسش اولاً بالا مثلثی شده یعنی پاییناش همه صفرن یعنی چی یعنی اینکه وقتی رفتید استیت بعدی نمیتونید برگردید عقب خب پایین مثلث یعنی وقتی به دو رسیدیدی دیگه نمی‌تونی بیای عقب خب به سه رسیدی نمی‌تونی بری دو یک ولی وقتی توی استیت هستی این شانس رو بهتون داده که چی یا تو

یکی بعدش اگه سرعت داده بردارتون خیلی کند باشه یا شما خیلی سریع بنویسید این شانس وجود داشت که شما بپرید دو تا یا پنج تا بعدشم بریدا خب ولی مدل‌هایی که بهش داده اینجوریه و یه چیزهای گرافیکی جذابی می‌کشه اصلاً فوق العاده جذاب من اینا رو تو تزم استفاده کردم دیگه ننوشتم اینا رو از اول خب بفرمایید سوالی هست ببین اینجوریه که میاد براتون میگه من پنج تا جی کشیدم خب میگه اولاً استیت رو براتون کشیدم اولاً رویش اینه که یک به دو میره دو به سه سه به چهار با این احتمالات هر چی پر رنگ تر یعنی احتمالش بیشتر هر چی هم کمرنگ تر بشه یا به صفر بره یعنی دیگه این خطه اصلاً امکان وقوع نداره و خدمتتون عارضم که حالا میگه چیکار کن میگه آبزرویشنام چی هستن اینجا این پنج تا آبزرویشن های که اینجا آبزرویشن چیکار میکنه یه فرض میکنه میگه آقا من تعداد گاوصین های که آبزرویشن ها باهاش تشکیل میشه رو به تعداد استیت ها میگیرم مثلا گفتم پنج تا استیت میگم مدل‌هایی هم که در هر لحظه دارم

۵ تا میوه دارم اوکی یعنی چی یعنی من جی رو چکوندم به پنج تا قسمت یکی بالا یکی این دومیه سومیه که موسم روشه چهارمی و پنجمیه خب میگه که هرکی هرچی نوشته خب بسته به اینکه چوب تو چه تی بوده داشته از یکی از اینا تبعیت می‌کرده مثلاً فرض کنید زمانی که تی ۱ ۲ ۳ بوده ضریب پی یا سی آی جی این آبیه نزدیک یک بوده درسته بعدی شما شانس اینی که شما تو لحظات اول تو این چهارمی باشید نداشتید تقریبا ولی توی مثلاً تیی‌های پنج به بعد مثلاً چی قرمزه فعال میشه ها بیشتر پی هاش میان بالاتر چون ما اگه یادتون باشه گفتیم اون سیا و میوها و سیم‌هایی که می‌خواید چیز کنید به ازای تک تک استیت‌ها باید چیکار کنید مدل ارائه بدید ما الان پنج تا استیت داریم یعنی پنج پنج تا ۲۵ تا در واقع از این سی و میو و سیگما باید شما تع

E:\courses\LangChain Project\main root\data\SCR_Session21_transcript_part3.txt

و گفته که این احتمال وجود داره اینو براتون می‌کشه حالا این تغییر رو شما برید بدید من ادامشو ادامه بحثمونو می‌ذارم انشالله جلسه آینده من فقط فکر می‌کنم انشالله مهمانمون باید اومده باشن تو این لحظه بهشون اگه اومدن دسترسی بدم فعلاً تشریف ندارن نه خب سوالتون جواب میدم چشم بفرمایید بله استیتا رو می‌کشید تو مطلب شما این کدشو بچه‌ها دموش کنید متصل آها خب حالا اینجا به این ربط داره یکی نپرسیده چرا پنج تا ست گرفتی ۱۰ تا بگیر ۱۰۰ تا بگیر اتفاقایی که می‌افته اینه اولاً این منحنی های که نشون داده احتمال ۹۵ درصد نشون داده خب یعنی چی یعنی گفته اینجا اگه میانگین باشه خب این آبزرویشن‌هامونه با احتمال ۹۵ درصد داده های آدما اینجا افتادن توی تی های اول

احتمال خیلی کمی رفتن و خارج شدن خارج شدن ازش حتی شما اینو داشته باشین میتونید اینجا هم داده داشته باشید احتمالش کمه درسته خدمتتون عارضم که اینی که پیوسته تر باشه این اتفاق می‌تونه بیفته یکی ممکنه بگه آقا جی برای چی پنج تا استیت داشته باشه بیا بریم یه بار دیگه مدلشو ترین کنیم و ببینیم نوشته که من حدوداً بنده خدایی که باید بیاد چه پیامی داده به ما ببین من الان بهش می‌نویسم الان بیاد اینم بیداره یا نه می‌تونید حدس بزنید که این باید یه جای نامناسبی باشه خدمتتون عارضم که چیزه این استیت رو من الان میام مرتضی تغییر میدم دو تا چیز شما اولین چیزهای ساده‌ای که می‌تونید تغییر بدید اینه که استیت رو به جای پنج تا بکنید ۱۰ تا خب و یه بار دیگه کد و ران کنید

چرا نمیاره به من اجازه بده را کنم چی شده قاطی قاطی کرده یه بار دیگه اوپنش کنم خب ببین این کلی دمو گذاشته فقط ببینید چه کارهایی کرده جی ام ام زده جی ام آر زده اصلا من برای تزم استفاده می‌کردم دیگه خودم نزدم اینا رو یعنی از این کداش استفاده کردم همه جی شو خب و البته بهش ارجاع دادم دیگه بعد که پیپر دادیم خدمت شما عارضم که من این مدله رو تعداد استیت هاشو میکنم ده تا ران میزنم این دفعه مدل به احتمالاً بهتری میشه چرا نشد چرا پنج تا شد نامبر آف استیت ببخشید نامبر سمپل کد مردم خراب کرد نامبر آف استیت باید ده تاش کنم نامبر سمپل پنج تا بود ای بابا چرا چرا نمی‌

خیلی کد ارزشمند اینا کنارتون باشه ضرر نمی‌کنید اینو ۱۰ تا بزنم ران کنم الان ده تا مستطیل میکشه درسته ولی توصیفش توصیفش لزوماً خوب در نمیاد مثلا مستطیل اولش شده همون گوشه بالا سمت راست جی یعنی سریع میره تو بعدی رها میشه و حالا سوال بعدی اینه که خب اوکی خدمتتون عارضم که چند تا باید بگیریم چند تا استیت باید بگیریم ما که نمیدونیم این چند تا استیت براش خوبه یه معیاری تعریف می‌کنن به نام بی آی سی خب یا بیژین اینفورمیشن کرایترون خب اینم باز برای خودتون یه نگاهی بندازید تا انشالله یکشنبه بیشتر روش بحث کنیم بی آی سی حرفش اینه که

یه کاسپانککشنی تعریف میکنه میگه برو نگاه کن اون کی اپتیموم میشه این کاسماکتنه هم به تعداد استیت‌ها ربط داره هم به تعداد پارامترهای مدل ربط داره هم به احتمال که به دست میاره و اینجا حسابش می‌کنه مثلاً یه بار به سه تا ده میره میگیره مثلا فرض کنید که من میخواستم بگم که آبزرویشن هم خوشحالی و ناراحتی آدم باشه به جای خوشحالی و ناراحتی می‌خواستم عکس از لبش بذارم چون حداقل تعداد که به ذهنتون میخو چند تا بود چند تا بذارید عکس عکس آدم استیت نیست آبزرویشن نهایی میخوید ببینید که این ربات اینو گرفته و میخواد ببینه خوشحاله طرف یا ناراحته حداقل چند تا رو می‌ذارید حداقل دو تا رو بذارید که یکیش نماد مثلاً خندان بودن یکی نماد چیز باشه آره فرض کنید آره عکس گرفت آها باید بهتر می‌گفتم مثلاً موقعیت لبو مثلاً اگه می‌گرفتیم جانم

الان خب جایی که خیلی هم مهم بکنه برای خودش خب مثلاً اینجا ببینید تو مطلب این الان جی براش مهم شده اینجا مثلاً اینجاش براش مهم شده یا اینجا این گوشه الان براش مهم شده شده استیت شماره مثلاً هشتم خب و اینکه ولی ولی ممکنه خیلی کوتاه توش بمونیدا در حد یه فریم دو فریم بیشتر توش ولی خب شما خواستید این اتفاق بیفته و اینا مواردیه که میگه شما داده‌هاتون از این ۱۰ تا خارج نیست یه سری نرمالیزیشن شما اولش باید انجام بدیدا مثلاً تمام ایکس و وای های اول همه جی هاتون رو صفر بکنید یه شیفت بدید که همه از صفر و صفر شروع بشن خب یعنی این انتظار رو برای آره اینو داشته باشید که شروعشون یه جا باشه و بره حالا حول و حوش یه اتفاق براشون بیفته و برید نگاه کنید چقدر اسکیل این‌وریه یعنی تسک نیست اینو میدیم خودتون انجام بدید بعداً یعنی خودتون مثلاً الفبای فارسی رو مثلاً پنج تا حرفشو

۵ تا دونه بنویسید ده تا دونه نمی‌خواد مثل دیپ لرنینگ ۱۰۰ تا و هزار تا پنج تا دونه ب پنج تا پ بنویسید بعد یه مدل برای پ در بیاد یه مدل برای ب بعد یه دونه یه چیز جدید بنویسید اینو چی بهتون میگه پ است یا ب است یا مثلاً جیم حالا ه است یا عین مثلاً خب نه من یه کد بهتون میدم که ایکس و وای بهتون میده ایکس و وای نوشتن پینتتون رو بهتون میده اینو خودم بهتون میدم آره من اینو من خودم بهتون میدم یه کد نوشتیم ما که وقتی شما با پت می‌نویسید یعنی یه محیط پینتوری هستش که ایکس و وای توش بنویسید یعنی یه چیزی بنویسید ایکس براتون سیو میکنه شما پنج تا عین بنویسید پنج تا ب بنویسید بعدش ببینید یه مدل در بیارید برای یه مدل برای ب در بیارید احتمالاً هم بیاید میدید به این بی وجداننا برید خودتونم تلاش بکنید خب آره خب عیب نداره عیب نداره قبوله قبوله ولی یه بار تمرینی بکنید دیگه حالا بدونید بین

کار خودمون مهمان عزیزمون که احتمالاً تشریف آوردن من در واقع بدون فوت وقت اگر تشریف دارند که دارند عرض سلام و ادب دارم خدمتشون تغییر نقش بهشون میدم و ازشون می‌خوام اگر آماده هستند دوربینشون روشن بکنید تا خودتونو در واقع یه معرفی داشته باشید در کنار هم خب حسین جان سلام سلام حال شما خوبه صبح شما بخیر آقای دکتر حسین حاجی میرس صادقی از دوستان گذشته مان من از نزدیک ایشونو هرگز ندیدم خدمتتون عارضم که چند بار فقط مزاحمشون شدم خدمتتون در حد توان خودم معرفی میکنم بعد واگذار میکنم به خود حسین حسین الان ونکوور کاناداست ساعت ش تقریبا چهار و نیم صبحه محبت کرده بیدار شده برای ما و

۵ صبحشونه و آره خیلی بامرام بچه‌ها ما الان دو گروه داریم حسین امروز هوای تهران خیلی آلوده است کلاس‌ها هایبرید شده یعنی یه عده مجازی و تو این سامانه هستند حضوری تو کلاس هستند نزدیک ۲۵ تا آدم حداقل هستیم خدمتتون خیلی خوشحالیم که وقتتو گذاشتی برای ما صبح زود بیدار شدی و دوست داریم که یه چند دقیقه‌ای باهات هم کلام بشیم خیلی ممنون لطف کردین سلامت باشید خیلی خوشحالم که اینجا هستم دست شما درد نکنه دعوت کردید زنده باشید بخاطر بابا از شب ممکنه که صبح بیدار شدم دمت گرم بچه ها ما همین دارن طرح افطار تا سردشون بیشتر معمولا کار میکنه خدمت شما عارضم که حسین جان شما فارغ التحصیل کارشناسی دانشکده مهندسی برق از دانشگاه تهران هستید البته

دانشگاه تهران بودیم با آقای دکتر نیلی نجاری و درست میگم و آقای دکتر مرادی کار کردید ارشد شما تو حوزه به کارگیری ربات نائو در شناسایی حالا یه سری کارهای تقلیدی بود اگه دوست داشتی خودت بعداً توضیح بده و دکترا میدونم سایمون فریزر کانادا بودید توی شهر ونکوور الان بگو کجایی چیکار میکنی و یه مقدار در ارشدت برامون صحبت بکن خیلی ممنون من ایران که بودم لیسانس و فوق لیسانسم مهندسی برق بودم ولی گرایش کنترل بودن و توی دانشگاه تهران کنترل قسمت فوق لیسانس خیلی میتونه نزدیک به هوش مصنوعی بشه بخاطر همین پروژه که من توی فوق لیسانس داشتم در مورد ماشین لرنینگ در کاربردهای رباتیک بود که کلیتش بیشتر یادگیری تقلیدی بود به این معنی که

ربات به صورت مختلف میشه یاد داد که کاری را انجام بده یکی از راحت‌ترین کارا اینه که دقیقاً به ربات نشون بدی که چه کاری باید انجام بشه مثلاً همون حرف جی که شما کشیدین رو یه بار براش بکشین یا حتی از اون بالاتر دست دقیقا ربات هیومن رو میگیرید و اون حرکت رو باهاش انجام میدید و اون سعی میکنه همونو تکرار کنه این تکرار کردن دقیق اون چیزی که اتفاق افتاده رو بیشتر بهش میگن یادگیری مثلا لودبل ولی یک سطح بالاتری از یادگیری هم هستش که ما میخویم یه مفهوم رو دقیقا به وجود بیاریم مثلا همین حرف جی که شما نشون دادید یه شی یه دونه در واقع شیپی داره که ممکنه شما همیشه از نقطه بالا شروع کنید و همون حرکت رو انجام بدید ولی یه مفهوم جی هم

این حالا یه حالت حتی ساده تری از مفهوم های لول هست ولی حالت‌های پیچیدش اینه که من بخوام مثلاً خوشحالی ناراحتی یا نمیدونم حتی مفهوم های مثل عشق و اینها رو بخوام به یه ربات ربا یاد بدم این یه مفهوم خیلی دیگه عمیق میشه تعریف عین به عین نداره اونجا مثلا ما اینو میگیم که کلا میخواستیم یادگیری رو بر اساس فانکشنال افکت های یک عمل یاد بگیریم یعنی مثلا اگر یک کسی یه کاری را انجام میده افکتش تو دنیا چهه که حالا از چه مدلی استفاده کردی برای اینکه کارتو بسازی آره از همین مارکو مادرا استفاده کردیم که بی

چون که برعکس اون چیزی که شاید به نظر برسه یادگیری تقلیدی حالا حداقل توی ربات هم نیاز داره به اینکه شناسایی اون عمله یعنی بتونی هم تشخیص بدی که این عمل کدوم یکی از عمل‌هایی بوده که قبلاً یاد گرفتید و بعدش اجرا شه خب یعنی اول باید اصلا اونو بتونیم شناسایی کنیم و بعد بتونیم بازسازی حالا توی همین کاری که من میکردم با هیدلا خوبی ش اینه که هر دو تا کار میتونن برای شما انجام بده هم میتونم باهاش یه کاری رو شناسایی کنید هم میتونید ابسترکتش کنید چون خود یک عمل ممکنه مثلا یک تراژکتوری که یک ربات انجام میده از خیلی نقاط تشکیل شده ولی یه مار ممکنه پارامترهای کمتری داشته باشه برای طیف گسترده ای از

حرکت شبیه به اون تراژکتوری ممکنه شما جی رو با شکل‌های مختلفی نزدیک به هم ولی متفاوتی انجام داده باشیم ولی هیدن مارکو مادر اینو میتونه ابسترکت کنه و تو اون پارامترهای خودش صرفاً یاد بگیره حتی تولیدشم بکنه خیلی ممنون حسین جان آره بچه‌ها حالا امروز درسمون تو این زمینه به یه جایی رسوندیم که اینا بتونن خودشون کار بکنن ولی بازم یه اشارهارکی باید هفته آینده بکنم که ببین من اجازه بده بازخوانی یه خاطره رو داشته باشم من حوالی سال ۹۳ با شما تماس گرفتم یعنی رفتم دانشگاه تهران میخواستم ببینم کیا تو چون بخشی از کار من مدل سازی تقلید حرکت بچه ها بچه های طیف اوتیسم بود و جلوی ربات نائو قرار می‌گرفتند نائو باید اینا رو ارزیابی میکرد یعنی یه سری حرکت در اختیارشون قرار میداد بچه ها انجام میدادند بعد باید ناوم می‌گفت چقدر خوب این کار کردید و فلان خدمتتون عارضم رفتم دانشگاه تهران و یه آمارکی

بچه‌ها ببینیم که کی ربات نئو کار کرده شما رو معرفی کردم تشریف نداشتی کسی که اونجا نشسته بود خیلی ازت تعریف کرد و یه شماره ایمیل ایمیلی از شما به من داد و من بهت ایمیل زدم تقریبا بدون اینکه شما منو دیده باشی من شما رو دیده باشم پایان‌نامه‌تو برام فرستادی کارشناسی ارشد خدمت عارضم که من شایدم اون روزا حوالی ده یازده شب یه روز اومدم دانشگاه برای اینکه از هیاهوی مثلاً خوابگاه و فضا دور باشم اومدم نزدیکای دفاع پروپوزال دکترام بودم تا سه چهار صبح نشستم خوندم هیچی نفهمیدم خب و خدمت عارضم که اون زمان من اصلاً آمار احتمال پاس نکرده بودم اصلا نمیدونستم دارید در مورد چی صحبت می‌کنی و فکر می‌کردم کلاً یه فضا یه در واقع ماجرای فضاییه یعنی اگه دو تا پایان‌نامه دیگه مثل شما دستم رسیده بود اون زمان مطمئن باش ترک تحصیل می‌کردم و رستگار می‌شدم احتمالاً حالا الان افتادیم در واقع تو این وادی و خدمت شما عارضم که داریم میریم جلو عرض به حضورت یکی از جاهایی که من واقعا مرید

اون لحظه و هیچ وقت البته شما اینو متوجه نشدی و برام عجیب بود منتظر بودم شاید امروز این فرصت به وجود اومد ازت بپرسم صفحه در واقع اصطلاحا هفتاد و چند پایان نامهته ۹۷ ۹۸ پایان نامهته اونجایی که وقتی می‌خواد ربات یه کاری رو در واقع خوب انجام دادی این علامت نشون میده ولی وقتی اشتباه انجام داد یا شما بهش اخم می‌کنی سینه می‌زنه چرا آخه یعنی از کجا به ذهنت خورد واقعا یعنی شاید تنها چیزی که از اون پایان نامه فهمیدم اون روز همین بود آره اینا بومی سازی کردیم ولی واقعیتش اینه که شاید بچه ها یه مقدار کانتکس نداشته باشن اونجا که میگفت که میخواستیم بعضی مفاهیم مثل خشم و ناراحتی اینها رو به وجود بیاریم واقعیتش اینه که ربات چون کانشس حداقل ما نمیدونیم که چجوری میتونه داشته باشه صرفا میتونه یک رابطه بین حرکات و یه سری

مفاهیم بیرونی یه افکت‌های بیرونی به وجود بیاره اینجا همینطوری بود که اگه مثلاً یه کاری میکرد خوشحال میشد میتونست بفهمه که این مفهومی از خوشحالی رو داره اون نمی‌فهمه که حالا خوشحالی یعنی چی فقط میفهمه که مثلاً این یه مفهومی که با مفهوم عصبانیت فرق داره و از روی چهره آدما میفهمید که چجوری باید این مفهوم این مفهوم ها را اصلا تشخیص بده و تو کتگوری های مختلف حسین خیلی ممنون ازت من اجازه دارم پایان نامه تو پی بچه هامون به اشتراک بذارم چون یک منبع به نظرم بسیار غنی است همین مدل ها رو داره هم تحلیل صوت در حد ساده داره تحلیل حالت چهره را در حد ساده داره و این خیلی خیلی میتونه بهشون کمک کنه به خصوص الان که درسش گذروندن با روش هاش آشنا میشن با اون تئوری های تلفیق شما و خانم ویلارد که اون زمان حالا به روز بود دیگه حوالی ۲۰۱۲ اینا مثلا به روز بود الان خوب دیگه دیپ لرنینگ اومده اینا رو دریده

خدمت شما عارضم که این سوالم بپرسم حالا اینم خدمت دوستان بچه‌ها میگم بعدش شما جواب سوال بچه‌ها با توجه به اینکه ما داریم به ساعت چهار و نیم نزدیک میشیم اگه کسی دلش میخواد میتونه تشریف ببره ولی دو تا مسئله در نظر داشته باشیم چند دقیقه دیگه کنار آقای دکتر چیز هستیم حسین حاجی میر صادقی دارم فامیلتو چیز میکنم حسین امید رابطه داری نسبتی داری امیدی که دور هستیم این استاد دانشگاه ریاضی ماست خدمتتون عارضم که در خدمت آقای دکتر هستیم فقط دوستان عزیز اگر کسی میخواد در مورد موضوعات پیشنهادی که من دارم برای پروژه بشنوه و یا اینکه میخواد در مورد پروژش با من صحبت کنه من بعد از کلاس پنج دقیقه بعدش میرم تو آزمایشگاه مستقر میشم سامانه رو روشن می‌ذارم می‌تونید باقی بمونید نوبتی با هم صحبت کنیم الان سه چهار نفر البته اینجا هستند من عنوان پروژه‌هامو میتونم تند تند بیان کنم ولی هنوز تایپش نکردم اگر میخوید تایپش کنم فردا پس فردا میتونم بهتون تو سامانه درس افزار

تحصیلات تکمیلی‌ان مشغول انجام پایان‌نامه‌هاشونن شما هم که احتمالاً نزدیک به یک دهه است الان کانادا هستی داری اونورا کار می‌کنی و می‌خوام ببینم که مواردی که الان بچه‌های ما یاد گرفتن مثل مثلاً هیدن مارکوف مدل ها کلا مباحث ذیل ماشین لرنینگ یا دیپ لرنینگ به صورت خاص الان براشون کار وجود داره یا نه چهه آیا این کاری که دارن می‌کنن بچه‌ها عوضه یا خروجی داره ازش قراره میشه نون خورد یا یه همچین اتفاقی بیفته الان که بیشترین نون رو متاسفانه از همین ماشین لرنینگ میشه خورد یعنی واقعیتش اینه که اینجا ب خصوص توی کانادا و شهری که من هستم که ونکووره بیشتر برای کارهای کامپیوتری کار هست و حالا به خصوص اینکه کس که معمولا میخوند به عنوان دیتا ساینتیست یا ماشین لرنینگ ریسرچ انجینیر وارد میشن حتی اگر رشته شون مهندسی

یعنی تغییر میدن یعنی همینو میخواستم مثال بزنم البته شهر به شهر فرق داره‌ها ولی ونکوور که یوبی سی مثلاً sfu هستند واقعا اینجوریه که اکثر دوستای من که حتی مکانیکم می‌خونن دو تا حالت داره یا همون کارشون رو ادامه میدن ولی واقعاً ۵۰ درصد اینا هستن که سعی می‌کنن کارشونو عوض کنن و بیان به عنوان کامپیوتر وارد بازار کار بشن و یه چیزی هم که داره فقط من متوجه شدم اینه که حالا ممکنه یکی از همون اول هم کارهای کامپیوتری کارهای مکانیکی توی دوره دکترا فوق لیسانسش انجام داده باشه اگه مرتبط با رباتیک باشه بهتره که سعی کرده باشه توش یا کامپیوترژن استفاده کرده باشه برای با دیپ لرنینگ و اینا یا ریفرسمنت لرنینگ که از این دوتا بتونه حالا هر کار دیگه که میخواد واردش بشه رو استفاده بکنه چون

برای چیزهای جنرال‌تر کمتر کار وجود داره ولی اگه کامپیوتر ویژن یا رینفرس مل لرنینگ کار کرده باشند بیشتر براش کار وجود داره اگرچه که بازم یه سختی هایی این وسط هستا نمی‌خواستم بگم خیلی ها خوب بازم دوباره همون در زمینه مکانیک ادامه میدن مطمئنا تو آمریکا کارهای بیشتری هست ولی واقعیتش اینه که تو ونکوور اینجوریه که حتی کسایی که مکانیک میخونن یا رشته های دیگه آخر امکان بیان دیتا بشن یا ماشین مشغول چه کاری هستین و کجا تشریف دارین من بعضی از فارغ التحصیلیم سه سال اوراکل بودم ولی بعدش الان یک انستیتوت ای آی هست آر که همش همه ماها مثلاً حدود صد و خورده ای نفر همه فقط ماشین لرنینگ کار میکنه و برای بیشتر البته کاربردهای فایننس و

اینجور چیزا هستش که حالا از مثلاً از استاک مارکت میتونه گرفته باشه تا اینکه آدما چقدر میشه وام داد در این زمینه‌ها بیشتر کار میکنه ولی خیلی همش لرنینگه کاری که من میکنم ولی اونایی که دیتا ساینس کار میکنن از چیزای دیگه ماشین لرنینگ هم استفاده سازی هاشو آیا با لایبری های معروف مثل کراس و پایتورچ و تنسور فلو میزنید یا نه خودتون از صفر کدا رو بالا میارید نه نه حتما کسی که کار میکن حتما یکی از این سه تا فریم ورک استفاده میکن معمولا تو آکادمیک پاپیولاررتره که پای تور شد اگه بخوان آکادمیک و اینداستری با هم باشه ولی اگر بخواهیم اینداستری فوکس تر باشهسرفلو میریم جلو ولی پای حالا ویدیوهاش در اختیار بچه ها قرار دادیم اگر کسی دلش بخواد ببینه خب خیلی ممنونم حسین من سولامو پرسیدم بیشتر یعنی دوست دارم اگه بچه ها

سوالی هست می‌تونید بپرسید بچه‌ها یا بپرسید من جواب میدم یا در واقع وصل شید به سامانه یا از دوستان در واقع حاضر مجازی اگه کسی سوالی داره از آقای دکتر می‌تونید بپرسید دغدغه‌ای دارید تو این زمینه‌ها یا به مسیرتون شک دارید جایی که دارید میرید و دوست دارید که چکش کاریش بکنید ممکنه بتونن پاسخگوتون باشن کسی اگه سوالی داره دستشو بالا بگیره من در خدمتتون خب بچه نه این چیز کرد گفت نه ما هنوز انگیزه مون بالا اینجوری گفت گفت راه برای تا ناامیدی جا زیاده خب مثل که فعلا بچه ها کسی سوالی نداره حسین جان خیلی ممنونم ازت ممنونم وقت گذاشتی خوشحالم کردی که تشریف آوردی تو این جلسه از کلاسمون بودی و منم با اجازت این موادی که در اختیار دارم از همون منابع تحقیقاتی شما را در اختیار بچه ها قرار میدم و

چون منبع فارسیه و همین مسیری که امروز تدریس کردیم و با جزئیات زیاد تو صد و خورده‌ای صفحه بیان می‌کنه خیلی خیلی می‌تونن دید بگیرن و الگو داشته باشند آقا فقط امیدوارم بتونی خوب بخوابی چون الان دیگه خوابتو خراب کردی ولی واقعا اگه دیده باشین اون موقع هم که شما گفتین من یه مقدار دیدم که شما این همه برای من انرژی گذاشتید با من تماس گرفت خواهش میکنم شما شما محبت کردید که قبول کردید توی ساعت نامتعارف کنار ما باشید ما این موجب خوشحالی انشالله اگر تشریف آوردید ایران حتما اطلاع بدید با هم در تماس خواهیم بود و میزبان شما در آزمایشگاه رباتیک اجتماعی شناختی باشیم چشم حتما خیلی ممنون باشید خدا نگهدار شما خدا نگهدار خب بچه ها خیلی ممنون بابت حضور تشریف فرماییدتون من کاری ندارم اگر

در مورد پروژه هست بیاید آزمایشگاه حضوریها مجازی‌ها هم اگه دلشون می‌خواد تو سامانه بمونن من اگه لازم باشه عناوین پروژه‌ها رو خدمتتون میگم خوش خرم باشید خدانگهدار

E:\courses\LangChain Project\main root\data\SCR_Session23_transcript_part1.txt

به نام خدا دوستان عزیز و ارجمند درس رباتیک اجتماعی شناختی عرض سلام و ادب و احترام در خدمتتون هستم با فصل آخر درسمون با عنوان طراحی تعاملات انسان ربات و نحوه ارزیابی مطالعات میدانی و مداخلات بالینی در ابتدا در مورد ضرورت وجود این فصل دقایق صحبت خواهیم کرد بعد در مورد نحوه تصمیم گیری و طراحی و پیاده سازی مطال یک کلیاتی بیان میکنیم در زیر بخش سوم این فصل به صورت تومان در مورد بخشی از نکات ریز و جزئیات اجرای مطالعات تعامل انسان ربات برای شما صحبت می‌کنیم و همینطور نحوه نگارش مقالات کنفرانس یا ژورنالی رو در این حوزه با همدیگه مرور خواهیم کرد که امیدواریم بتونیم مجموعه صحبت های که عمدتاً بر حسب

خدمتتون بیان بشه براتون مثمر ثمر باشه در انتشار کارهایی که شما در این زمینه انجام میدید و در نهایت هم شما را با تست‌های معنادار آماری آشنا خواهیم کرد شما برای اینکه بتونید نشون بدید آیا مطالعه که انجام دادید اثربخش بوده و جامعه جهانی و جامعه علمی تو دنیا چه زمانی میتونه بپذیره که این اتفاق افتاده به هر حال باید یه سری آزمون های آماری معناداری که مورد پذیرش همه هست و انجام بدید و نشون بدید که مطالعتون اثربخش بوده یا نبوده خدمتتون عارضم که من ابتدا میخواستم این فصل رو کاملاً بر حسب تجربه و به صورت دلی و دلنوشته ارائه بدم خدمتتون اما جستجوهای چند هفته اخیر هم خوشبختانه جواب داد و من تونستم توی دست نوشته های خانم کرسین دانهان و همینطور

دیگه‌ای که در حاشیه‌اش پیدا کردم یک ساختار سیستماتیک برای اون چیزی که تو ذهنمه رو در بیارم و همینطور در حوزه ارائه آزمون‌های آماری هم از یکی از جزات آقای دکتر خدایگان استفاده خواهم کرد خدمتتون عارضم جهت اطلاعتون همچین فصل‌هایی عصاره‌ای از چندین درس دو یا سه واحدی که در دانشگاه های دیگه مثل دانشکده های روانشناسی روانشناسی بالینی و یا توی دانشکده علوم پزشکی آمار ارائه میشه و خب خلاصه از درس های به نام های روش تحقیق آمار و احتمال کاربرد آمار احتمال و مجموعه از این قبیله که طبیعتاً خب اون عزیزان و دوستان توی رشته های خودشون در قالب چندین درس چند واحدی تو کل طول ترم اون

و باید بپذیریم ما که می‌خواهیم در قالب یک فصل فقط به اینا اشاره بکنیم باید خیلی عصاره و چکیده باشه و طبیعتاً جزئیات زیادی رو از این فصل‌ها عامدانه و آگاهانه اصلاً نمی‌رسیم بیان بکنیم و در صورت نیاز باید هر کدوم از شما عزیزان حسب نیازتون به اون موارد مراجعه بکنید و البته بنده هم در حد توان در پیشبرد این مراحل شما در خدمتتون هستم اگر سوالی داشته باشید بعد از حالا دیدن این فصل و ورود به مطالعات رسمیتون تو حوزه اچ آر آی اما چرا این فصل وجودش اولا ضروریه ما برای انمین بار میخویم به مهمترین اسلاید این درس و مهمترین پیام این درس مجدداً مراجعه بکنیم ما اون زمان برای شما بیان کردیم که تو حوزه رباتیک اجتماعی

وقتی می‌خوایم یه کاریو انجام بدیم و عموماً یک نیاز در جامعه شناسایی می‌کنیم که یه مشکلی وجود داره و ما می‌خوایم با سامانه رباتیک یه جوری اینو مشکل رو یا کاملا یا به صورت جزئی رفعش کنیم برای این کار گام اولمون در واقع دسترسی به اون وسیله یا رباتی بود که بتونه این کارو بکنه که یا مجبور بودیم بخریم یا طراحی کنیم و بسازیم که در ابتدای درس با این حوزه تا حدودی آشنا شدیم و عمده تلاش های ما بعد از اینکه حالا اون وسیله مورد نظر ما یا ربات ما تهیه شد این بوده که با الگوریتم های کنترلی هوش مصنوعی آنها را توانمند بکنیم که به رفع اون نیاز در جامعه بتونه برای ما کمک بکنه و عمده وقتمون رو ما تا اینجای درس روی این مبحث گذاشتیم ولی یادمون باشه گذروندن این دو فصل فقط سبب شده که به شما خوش بگذره و برای اینکه واقعاً نشون بدید که برای مملکتتون برای

جامعه جهانی کاری کردید شب و راحت‌تر بخوابید و یا اینکه واقعاً این ایده‌ای که در ذهنتون داشتید که پیاده‌سازی مثلاً این الگوریتم‌های کنترلی هوش مصنوعی می‌تونه اون نیازی که شما شناسایی کردید در جامعه رو رفع کنه یا نه ناچارید که وارد مطالعات میدانی مداخلات بالینی بشید و باید از اون تکنولوژی ویژه اون افراد و جامعه هدفتون به صورت مستقیم استفاده بکنید و مقبولیت اونو بسنجید آیا این چیزی که شما طراحی کردید و ساختید اصلا مورد پذیرش جامعه هدف هست یا نیست و اگه هست چقدره و حالا اگه مقبول بود چگونه میشه وارد مطالعات میدانی یا مداخلات بالینی شد و تو حوزه های آموزش توانبخشی یا مواردی از این دست نقش آفرینی کرد و حالا بعد از اینکه تازه اون دوره ها هم تمام شد چه میتونیم نتایجمون رو گزارش بکنیم تا مطمئن باشیم که اثربخش بودیم و جامعه جهانی هم

از ما بپذیره و گروه‌های مختلف و مجلات و کنفرانس‌های مختلف حاضر به چاپ همچین در واقع انتشارات و نوشته‌هایی باشد خب به بهانه برگزاری کنفرانس رباتیک اجتماعی یا i سی اس آر که هر ساله عموماً در اواخر نوامبر یا اواسط دسامبر برگزار میشه و امسال هم قراره به میزبانی شهر فلورانس ایتالیا به صورت هایبرید برگزار بشه ما وارد یک فصلی میشیم به نام نحوه طراحی و اجرای مطالعات و خوب قراره که بر اساس تجربیاتی که بنده از سال ۹۳ تا به امروز به دست آوردم و به شکل پیوسته حتی در این کنفرانس هم شرکت کردم مطالب خدمتتون بیان بکنم که به شما کمک بکنه اگر کاری تو این زمینه شروع کردید تلاش بکنید که منجر به انتشارات

در مجلات معتبر یا کنفرانس‌های این حوزه بکنید خدمتتون عارضم که اولین سوالی که به وجود میاد اینکه ما چگونه باید شروع بکنیم من ازتون خواهش می‌کنم یه لحظه ویدیو رو متوقف کنید برای خودتون فکر کنید اگر می‌خواستید یک مطالعه اچ آر آی انجام بدید چه مراحلی رو باید طی بکنید فرض کنید اصلا فعلا دسترسی به نه رباتی دارید نه انسانی دارید و فقط یک ایده خام دارید و اگر شما بخواهید روی کاغذ بنویسید چه مسیری رو برای خودتون طی میکنید برای خودتون فکر می‌کنید فکر بکنید و بعد حالا با این مواردی که به صورت فشرده خدمتتون میگم سعی کنید تطبیق بدید خب برای اینکه یه مطالعه اچ آر آی رو ما بخواهیم شروع بکنیم اولین کار ما اینه که ما اصلا چه نیازی را احساس کردیم و پرسش پژوهشی اصلی ما چیه عبارت ریسرچ کوسشن

برای بچه‌های بالین کار یا بالینگر خیلی خیلی متداوله اما برای بچه‌های رشته‌های فنی مهندسی می‌تونی یه مقدار غریب باشه حالا توی بخش نحوه نگارش مقاله بهش اشاره خواهیم کرد ما چه نیازی رو می‌خوایم برطرف کنیم چه پرسش پژوهشی رو می‌خوایم جواب بدیم مثلاً سوال توی ذهن ما اینه من این کاری که کردم ربات پیاده کردم آیا می‌تونه اثربخشی بهتری نسبت به مثلاً معلم عادی داشته باشه برای بچه های طیف اوتیسم یا نه مثلاً مجموعه بازی های که طراحی کردم توسط فلان ربات آیا میتونه این اثربخشی بیشتری داشته باشه یا نه این میشه چی این میشه پرسش پژوهشی یا پرسش پژوهشی اصلی شما خب برای اینکه این کار اجرا بکنید شما نیاز دارید که این روی یک سری آدم پیاده کنید تو حوزه های کاری ما خب که ما اسمشون رو پارتیسپنت یا آزمودنیذاریم انواع سوالات تو حوزه های آزمودنی به وجود میاد من چه

تعداد از اینا رو نیاز دارم خدمتتون عارضم نوع مطالعه چی باید باشه که حالا روش صحبت خواهیم کرد چند تا گروه باید آدم بیارم یا توی هر گروه باید چند نفر جا بدم و حتی چه جوری باید این آزمودنی‌ها رو استخدام کنم در خدمت خودم بیارم و وارد اون مجموعه بیارم از چه رباتی می‌خوام استفاده کنم یا از چه ربات‌هایی می‌خوام استفاده کنم تو این کارم چه نوع تسک ها و عملیات های یا کارهایی رو می‌خوام توسط ربات برای آزمودنی ها انجام بدم و به عبارتی پروتکل مطالعه ام چی هستش حالا این کار را انجام دادم چه باید ارزشیابیش بکنم راه های مختلفی برای ارزشیابی وجود داره که با اینا حالا آشنا میشیم برای اینکه این ارزشیابی را انجام بدم به چه تجهیزاتی نیاز دارم ها حالا شامل کامپیوترها میتونه باشه انواع

میتونه باشه وسایل ضبطی صوتی تصویری و الی آخر من در چه محیطی قراره مطالعمو برگزار بکنم آیا تو یک محیط واقعی مثلاً فرض کنید ربات بردم توی راهرو یه مدرسه گذاشتم و کاملا مطالعات عادی آدما رو توی مدرسه یا توی مثلاً فروشگاهی گذاشتم ولی آخر دارم بررسی میکنم توی محیط آزمایشگاه هستم با شرایط کنترل شده که خودم لحاظ می‌کنم و یا توی محیط های مجازی هستند که به خصوص با شیوع ویروس کرونا این نوع مطالعات هم در واقع جلب توجه کردن و آدم ها و محققین به این فضاهای مجازی هم رو آوردن و در نهایت سوالات فرعی دیگه که خوب حالا تو شرایط اضطراری یا شرایط غیر مترقبه چه میتونم ماجرا را هندل کنم و به چه تعداد و چه نوع دستیارانی نیاز دارم و

خدمتتون عرضم که فرض کنید فرض کنید که شما برای همه این سوالات پاسخ دارید و راهشو بلدید که ما حالا قراره تمام این آیتم‌ها رو توی بخش سوممون با همدیگه مرور کنیم آیا الان آماده شروع هستیم پاسخ خیر شما برای اینکه بخواید شروع بکنید همچنان باید به دو آیتم استاندارد جهانی دیگه توجه داشته باشید یک کسانی که قرار با سابجکت کار کنند که این سابجکت ها میتونن انسان یا حیوان باشند تو اشل بین المللی حتماً حتماً باید دور های نحوه کار با افراد رو یاد بگیرند و گواهی ارائه بدن و دو برای این مطالعاتشون که تو ذهن دارن یه سری فرم ها آماده کنند و کدهای اخلاق بگیرند تا بتونن ورود بکنن پس

ما اول اول هر کاری به شکل کاملا اجباری باید بریم در واقع هیومن ریسرچ اتیکس رو توی اون مجموعه‌ای که هستیم پاس بکنیم دورشو بگذرونیم و گواهی ارائه بدیم و بعد از اینکه این کارو کردیم که تازه شرط لازم و نه کافیه ورود به یه سری مطالعات کلاً میدانی و بالینیه حالا باید چیکار کنیم تمامی متریال های موجود در مورد اون کارمون آماده بکنیم جزئیات بسیار بسیار زیادی داره که حالا روش صحبت خواهیم کرد این که ما قراره برای هر آزمودنی چه اتفاقی رو رقم بزنیم چه چیزی رو قراره تجربه کنه چه میخویم بیاریمشون چند نفر رو میخویم بگیم بیان چه سنسورهایی میخویم استفاده کنیم آیا خطری اونا رو تهدید میکنه یا نه و و و و اینو سابمیت کنیم به یک گروهی که ریش

مجموعه ما هستند و باید کد اخلاق به ما بدن و اجازه برگزاری همچین مطالعه‌ای اصلاً برای ما صادر بکنند تا ما چیکار کنیم بتونیم شروع بکنیم و تازه یادتون باشه بعد از اینکه اون اپرووال رو گرفتید حالا میتونید به آزمودنی‌های اصلی و رسمی‌تون بگید بیان شبیه مثلاً گواهینامه گرفتن که اول باید آیین نامه رو پاس بکنید ولی خب هنوز اجازه ندارید مثلاً پشت ماشین بشینید حالا باید برید یاد بگیرید گواهینامه‌تونم بگیرید تا تازه اجازه داشته باشید حالا برونید توی کشور خودمون و خب یه حقه که البته میشه زد و خیلی از مجموعه های در واقع حالا مطالعاتی با ما همراهی میکن تو این زمینه و استاندارد جهانی هم هستش اینه که تا قبل از اینکه کد اخلاق صادر بشه شما میتونید تکنیکال ایمپلمتیشن هاتون رو پیش ببرید جزئیاتشو

ببرید و اگر هم لازم شد در حد یه تعداد محدودی آدم اونم از خودتون و دوستاتون که قرار نیست در نهایت جز مطالعه باشند تست‌هاتونو بگیرید تا باگای ماجرا در بیاد و بعد از تصویب شدن و گرفتن اون اپرووال بتونید چیکار کنید کار اصلیتون رو پیاده سازی بکنید خدمتتون عارضم اینجا رو بر اساس تجربه خدمتتون میگم من دو تجربه فرصت مطالعاتی داشتم در خارج کشور در دانشگاه امریکا و همینطور دانشگاه در ایالت کنتیک امریکا خدمتتون عارضم که من توی هر دو مجموعه قرار بود که با کمک ربات ها به بچه های طیف اوتیسم توی مطالعه از اون قبیل درگیر بشم و حالا کمک رسانی بکنیم و تو هر دو مجموعه بعد از ورودم در جا از من خواسته شد که دوره های اینترنتی و غیر حضوریه نحوه کار با هیومن سابجکت ها رو یاد بگیرم و گواهی

قبل از ارائه این گواهی اصلا اجازه نداشتن اون تیم منو به لیست تیمشون اضافه بکنن و خب ما در بدو ورودمون حالا هر دو گواهی در دو دانشگاه مختلف ظرف مثلاً دو سه روز گرفتیم حالا شاید چون تجربه داشتم توی حضور دومم حتی یک یک و نیم روزه و همون یعنی فردای حضور هم من این گواهی رو گرفتم و دورشو پاس کردم و دادم و امتحاناشو دادم و نمرات حالا درج میشد در نهایت برای شما صادر میشه که اینو ارائه بدید به پی آی یا کارفرماتون که خب ایشون بتونه شما رو به لیست آدم ها اضافه بکنه و گام بعدی گرفتن کد اخلاقه که تو دانشگاه آمریکایی اومد با نام آی آر بی ترمیشن ازشون یاد میشه آی آر مخفف اینستیتوشنال ریویو بوه یا همون کمیته اخلاقی ایمنی خودمون میشن یه جورایی که باید از جزئیات کار شما

خیلی خیلی در واقع رقم اعشار دقت بدونن تا به شما اجازه بدن که مطالعتون انجام بدید این مطالعه وقتی که می‌خواید انجامش بدید باید مجموعه‌ای از فرم‌های استاندارد رو برای اونا بارگذاری بکنید عنوان مطالعتون چیه دقیقاً چه اتفاقی قراره برای آدما بیفته چند نفر میان چه پرسش‌نامه‌هایی دارید چه ابزارهای سنجشی دارید آیا سنسور خاصی به بدن آدما وصل میشه آیا مثلاً کاری برای انسان‌ها می‌کنید که ممکنه براشون خطر زا باشه مثلا تزریق انجام میدید داروی خاصی به خوردشون میدید یا اینکه نه چه میدونم از این اتفاقات نیست و در کنارش در واقع باید حتی یه پوستر هم آماده بکنید که من وقتی که میخوام آدم ها رو استخدام بکنم و بیارم یعنی در این مطالعه بخوان شرکت کنند آزمودنی ها عرض به حضور شما چه خوام اطلاع رسانی بکنم از چه کانالی آیا این پوسترها کاغذی اند توی سلف و نمیدونم توی راهرو دانشکده ها قراره زده بشن

در این حد جزئیات شما باید بیان بکنید تا اونا اجازه بدن در دانشگاه‌های غربی شما حتی اگه بخواید آدم بیارید به ربات سلام بکنه بره و اینو یافتشو توی مطالعه‌تون بخواید استفاده بکنید حتما باید کد اخلاق داشته باشید و یکی از کارهایی که اساتید حوزه های اچ آر ای توی خارج کشور انجام میدن همون ابتدای کار بچه‌ها رو مجبور می‌کنن که سریع ایده‌هاتونو بزنید شروع کنید فرم های آی سابمیت بکنید و بعدش حالا به اون جزئیات فنیش بپردازید خب ما توی کشور هم داریم کسانی که کدهای اخلاق میدن کمیته های اخلاق مختلف داریم در دانشگاه شریف مطمئن نیستند ولی خوب دانشگاه علوم پزشکی عموما این دارند شما میتونید در واقع ریسرچ پییشنتون رو از اونجا بگیرید یا اینکه مثلا آی پی ام توی ایران این کار را انجام میده این صفحه از وبسایتشونه که هم در مورد حالاستراکشن و دستورالعمل صحبت کرده و هم نمونه

از فایل‌هایی تو این زمینه رو گذاشته که شما بتونید برای مقاصد خودتون تکمیل کنید مثلاً نمونه‌ای که ما قبلا تو حوزه ای جی انجام داده بودیم با آقای معماری و حالا دوستانشون این permion رو گرفته بودیم قبلاً و خب اینجوری اجازه داشتیم که دیگه آدم بیاریم ازش تست بگیریم تست‌های بگیریم و پذیرفته بودند که این اتفاقا رقم بخوره خدمتتون عارضم که من اینجا مجبورم یه چند تا حاشیه برم یک در مورد حقوق آزمودنی ها ما باید یه صحبتی برای شما داشته باشیم آزمودنی یا پارتیسیپل یا سابجکت حالا عموما انسان ها یا سایر جاندارانی هستند که آزمایش های پژوهش قراره روشون انجام بشه ما اگر توی حوزه انسان داریم کار میکنیم که عموماً هم همین کار داریم میکنیم تو سوشال رباتیک من ترجیح میدم حالا مثل خیلی از کسان دیگه از کلمه پارتیسپند استفاده کنم به جای سابجکت و مواردی رو باید در مورد

این آزمودنی‌ها یاد گرفتی تو همون دوره‌های در واقع یادگیری نحوه کار با اینا باید آشنا بشید اهم مطالبشم اینجا آوردم جهت اطلاعتون که چه مواردی سبب نقض حقوق آزمودنی‌ها میشه که شما باید ازش اجتناب کنید یا نسبت بهش آگاه باشید یکی اینکه شما هیچ وقت حق ندارید در مورد نوع آزمایش یا اثراتش به آزمودنی ها دروغ بگید و باید کاملاً اطلاعات دقیق بهشون بدید هیچ وقت حق ندارید اونا رو مجبور بکنید که در آزمایش های شما شرکت کنند این حق آزمودنی هاتون دارند هر وقت دلشون می‌خواست حتی بی دلیل از آزمایش شما کناره گیری کنند و شما باید اینو بپذیرید خدمتتون عارضم که نباید اونا رو تو شرایط خطر قرار بدید در ضمن زمانی که میخوید ارائه اطلاعات بکنید توی مجلات یا کنفرانس ها یا پایان نامه هاتون نباید اطلاعات نادرستی از یافته هاتون در این زمینه بدید رعایت حریم

ما در این آزمون از مثلاً بدون ذکر نام از پارسال ریاضی استفاده کردیم یا چه میدونم از آقای گل جهان در سال ۲۰۲۲ مثلاً استفاده کردیم اینا چون سبب میشه که بالاخره اون فرد دقیقا شناسایی بشه باید این حریم‌ها حفظ بشه خدمتتون عارضم که تمامی استانداردهای مربوط به سلامت ایمنی باید رعایت بشن و نباید از افراد آسیب پذیر به عنوان مثلا آزمودنی تو پژوهش ش بخواد تو جامعه حالا خودتون میدونید دارن در مورد چی صحبت می‌کنن بخواد به هر دلیلی استفاده بشه و خب اینا مواردی که باید کاملاً لحاظ بکنید لازم است بدانید دو ما اینه که یه فرقی بین کلمه کانسنت و اسنت یاد بگیرید ما در طول اون سابمیت کردن پروتکل ها

یکی از فایل‌هایی که باید ارسال بکنیم و تاییدشو بگیریم و بعداً هم در اختیار آزمودنی‌ها و خانواده‌هاشون قرار بدیم فرم‌های رضایت نامه است فرم‌های رضایت‌نامه توی انگلیسی به دو معنای کانسنت یا اسنت فرم تقسیم می‌شن اینا رو تجربه‌تون می‌گم کانسنت فرم‌ها اگه سرچ هم بزنید می‌بینید که بعضا معنای لغوی اینا یک معنی میدن یا معنای مشابهی میدن ولی کانسنت فور زمانیه که شما مستقیم خود آزمون در واقع تعهد نامه بگیرید یعنی اون شرایط قانونی سن قانونی و آگاهی کامل از لحاظ شناختی قرار داره که اون فرم برای شما امضا بزنه مثلا فرض کنید که میخوید ببینید که بازی کردن با یه ربات مثلاً چقدر جذابه و از افراد ۱۵ ساله به بالای سالم میخوید که بیان خب به خودشون فرم رضایت میدید امضا بزنن ولی اگر مثلاً طیفتون یا یه طیفی از یه سنی پایین تر یا مشکلات شناختی

به هر دلیلی خود شرایط تایید رو نداره باید اون متولیش اینو برای شما امضا بزنه و تایید بکنه مثل پدر مادرش یا آموزگار معلمش و اینا رو تو در واقع بیان استاندارد جهانی بهشون اسنپ فرم میگن که خب این حالا بیشتر بدانید دوتون بود که لازم بود یاد بگیرید و بعداً اگه تو این حوزه‌ها باهاش مواجه شدید به اصطلاح جا نخورید یه معضل جدی یک موضوع من خودم دوست دارم دلی بیانش کنم معضل جدی که وجود داره حداقل با ذائقه من تو این زمینه سازگار نبوده و من همواره با این داستان از روز اول مشکل داشتم این بوده که توی مطالعات اچ آر یه کلا مطالعات بالینی که نیازمند گرفتن کدهای اخلاق داره چه حالا کار کردن با انسان ها چه حیوانات مهمترین مسئله اینه که همون ابتدای مطالعه باید همه چیز با دقت بسیار

بسیار زیادی مشخص باشد و بر این برخلاف بعضاً ذائقه بچه‌های مهندسی که میرن تو کار و حالا دوست دارند که یه سری شاخ و برگ هم به کاراشون بدن و اینجا مثلاً فلان نمودارم اضافه و کم می‌کنن نمی‌کنن و الی آخر اما یادمون باشه ما تو مطالعات یا مطالعاتی که قراره با آدم‌ها برگزار بشه به صورت خاص تو همین بخشی که می‌خوایم یافته‌های انسانی‌مون رو گزارش بکنیم همون اول اول باید دقیقا تعیین کنیم چه پرسش یا پرسش های پژوهشی داریم که به دنبالش هستیم این پرسش ها تعدادشون زیاد نیست یک دو سه دیگه نهایتاً مثلاً چهار تاست تو یک مطالعه سناریوی دقیق اجرای پژوهشتون چیه بعضی وقتا تا دقت دقیقه باید شما سناریوتون رو بنویسید یعنی اینکه از لحظه ای که کودک وارد اتاقتون میشه قراره چه چیزی رو تجربه کنه تا لحظه‌ای که میره و مثلاً تو این ۲۰ دقیقه چه جزئیاتی رو قراره تجربه بکنه و

چگونه می‌خواهید مطالعات خودتونو چیکار کنید ارزیابی بکنید و اثربخشی‌شو مطالعه کنید یعنی یک چه ابزارهایی نیاز دارید و بعدش با چه روش‌هایی آماری می‌خواهید چیکار کنید این کارا رو انجام بدید اینو یادتون باشه توی گرفتن کدهای اخلاق باید همه اینا معلوم باشن همون اول و از یه منظر بده در واقع اینجوریه که شما باید با جزئیات بهش فکر کرده باشید و نمیتونید پست کنید به بعدا موکول کنید ولی خوبی هم داره که خیالتون راحت میکنه سختی رو که می‌کشید دیگه طبق این فرمون و پروتکل میرید جلو این جایی که بچه ها مهندسی خیلی باهاش در واقع مواجه نبودن از قبل و بعضا میرن جلو و تو اون شاخ و برگ ها به این به ذهنشون میخوره فلان مثلا ران هم بگیرن فلان نمودار هم اضافه کنند ولی یادمون باشه ما تو اینجا به محضی که یه سری مطالعه رو شروع کردیم اگر یهو مثلاً جلسه ششم از دهم به ذهن

بخوره که می‌شد فلانم گرفت ولی تا الان دادشو نداشته باشیم دیگه کاری از دستتون برنمیاد و البته جامعه جهانی اینو پذیرفته که خب همون اول وقتی که در واقع این کدهای اخلاقی گرفتید فقط با اینا برید جلو اینجا دیگه تجربه خودتون یا پی آی و مافوقتونه که داره با شما کار میکنه که بهتون بگه این پروتکلی که شما دارید کد اخلاقشو میگیرید احتمالا منجر به مثلا فشار مقاله یا یک پایان نامه درست درمون میشه یا نه و این یکی از معضلات کار ما همیشه لحاظ میشه یا لازم است بدانید سه گذاشتم اسمشو گذاشتم آیا می‌دانید ولی واقعیت منظورش همون لازم است بدانید که ما توی شریف یه نوشتاری داریم به نام اخلاق در پژوهش ۲۸ صفحه هستش توسط کارگروه سلامت در پژوهش دانشگاه شریف منتشر شده و قراره تو اون معی

رعایت اخلاق در پژوهش و آموزش و ترویج آن در میان کلاً پژوهشگران به خصوص دانشجویان تحصیلات تکمیلی بده و این انتظار و دانشگاه داره که شما اینو مطالعه کرده باشید یعنی این خیلی گناه بزرگی حتی اگر اسم اینم نشنیده باشید ولی اگر اسمشو شنیده بودید تا الان بهش مراجعه نکرده بودید سعی کنید در اولین فرصت بهش مراجعه بکنید تا موارد غیر قانونی مثلاً انتشارات و الی آخر رو بدونید یا یه سری جاها پیشنهاداتی که اونجا ارائه شده رو مطالعه بفرمایید که همه در همین راستاست و خوب خیلی خیلی خیلی با کارهایی که ما داریم الان در موردش صحبت می‌کنیم سنخیت و همخوانی داره اما بریم سر زیر فصل سوممون توی زیر فصل سوممون من قبول دارم اول باید بگم با جزئیات زیاد چه مطالعات باید انجام بشه بعد در مورد نگارش مقالهش صحبت بکنیم اما اینا رو تلفیق کردم همیشه دوست داشتم که این تجربه رو منتقل کنم به افراد و خوشبختانه عرض کردم تونستم یه سری مطالب سیستماتیک هم

پیدا بکنم که رنگ و بوی علمی‌تری به ماجرا بده و هم هدفمند حرفا بره جلوتر و هم به صورت ساختار یافته‌تر باشه ما می‌خوایم در مورد ساختار مقالات حوزه چارای برای شما صحبت بکنیم اگه بخوام یک نگاه کلی داشته باشم خب مقاله با ابسترکت رو چکیده شروع میشه بعد مقدمه داره و یه سری مطالبی داره که می‌خوایم در موردش صحبت کنیم و در نهایت هم با مراجع حالا به صورت عمومی به پایان میرسه شما عموما تو درس سمینارتون با این حوزه آشنا شدید حتی ممکنه بعضیاتون تو این زمینه کلاً در کلی مقاله داشته باشید مقالات علمی بین المللی یا ملی توی ژورنال ها و کنفرانس های حالا معتبر داشته باشید و طبیعتاً سبب میشه که کلی از حرف های بنده برای شما تکراری بشه و هر جاشو دوست نداشتید میتونید جلو بزنید و برید جلو من بنایی ندارم با جزئیات زیاد در مورد نحوه نگارش مقاله صحبت کنم من فقط می‌خوام

درس کلی اون جاهایی که خاکی میره و میتونه مطال یه فرقکی با پیپر های عمومی حوزه مهندسی داشته باشه اونجاها فوکس کنم و تمرکز کنم و حالا خواهید دید و خب این در واقع فایلم در اختیارتون قرار داره هر وقت دلتون خواست اگر نیاز دیدید و صلاح دیدید میتونید بهش مراجعه بکنید خدمتتون عارضم که مقاله در حالت کلی با یک بخشی به نام اینتروداکشن شروع میشه البته قبلش اول اولش ابسترکت داریم ابسترکت همون اول بگم موردی که درسته اول میاد ولی آخر آخر نوشته میشه و شما باید تو ابسترکت خیلی کوتاه بین ۱۰۰ تا ۲۵۰ کلمه بسته به اینکه اون ژورنال یا کنفرانس محدودیت های داره باید بنویسید دقیقا چیکار کردید چی پیدا کردید و نتایج کلیدی تون باید ذکر بشه یه اشتباهی که بچه ها ما بعضا میکن حداقل خودم خیلی موافقش نیستم اینه که باید حتی یافته های عددی هم

معلوم بشن یعنی اینکه ما مثلاً دیدیم با مثلاً سطح معناداری انقدر که اختلاف معنادار بین گروه‌های الف و ب وجود داشت یا نه یا مثلاً دقت شبکه ما مثلاً بالا بود و اینا نه مثلاً عدد بگید نزدیک ۹۵ درصد بود یا مثلاً بیش از ۹۲% بود و الی آخر یعنی این چیزا رو به صورت کمی حتی بیان بکنید خب خدمتتون عارضم که بخش بعدی که حالا اینجا تفسیرهای متفاوتی توسط افراد داره رو من اینجا با همدیگه جا دادم بخش های که باید بیان بشه یک مقدمه است که قراره تو اون خوب اهمیت موضوع و معرفی کلی از حیطه بیان بشه چرا این حوزه که شما دارید بررسی میکنید مهمه و داستان تو این حوزه از چه قراره خدمتتون عارضم که باید انگیزه های مطالعه تو این زمینه بیان بکنید و البته تلاش کنید که هم داور و

E:\courses\LangChain Project\main root\data\SCR_Session23_transcript_part2.txt

خوانندگان تهیج کنید که دوست داشته باشند تو این حوزه با شما راه بیان بررسی کارهای مرتبط و گذشته دیگرانه که باید توصیف کنید کارهای گذشته را به صورت شفاف ارتباطشو با کارهای خودتون بگید و حتی باز اینجا ما پیش مثلاً انتظار داریم که طرف اهم یافته های حتی کمی اون مقاله قبلی را هم بیان بکنه و اگر هم نیاز بود با زبان احترام آمیز نقطه ضعفش بیان کنه مثلا بگه که این مطالعه این فرض هم داشته که فلانه مثلا این فرض کرده که مثلاً جنسیت در این آزمون تاثیری ندارد در حالی که مثلا اشاره میکنید تفاوت مطالعه ما با اون نفر اینه که اینم داریم در نظر میگیریم فرض کنید یا اینو داریم در نظر میگیریم یه همچین ماجراهایی و آیتم شماره سه که اینجا بیان شده و تقریبا اولین تفاوت

مهم و برجسته با مقالات حوزه مهندسی بیان کردم معرفی پرسش یا پرسش‌های پژوهشیه باید توی پرسش‌های پژوهشی خدمتتون عرضم خیلی شفاف و واضح بیان کنید با یک جمله پرسشی که تو این مطالعه دنبال چی بودیم و یا دنبال چه سوالاتی هستین سوالاتتون باید خیلی شفاف باشه خدمتتون عارضم که خودش میتونه دو گونه داشته باشه میتونه عرض به حضور شما پرسش های پژوهشی تون از جنس های با نام کانتوری باشند اگر اشتباه نکنم که مثلا تو بک گراند و توی عرض به حضور شما کارهای دیگران بعضا خروجی هاش پیش بینی شده و شما قراره که یافته های اونا رو تایید یا رد بکنید یعنی اینکه یه عقبه خوبی پشتش وجود داره یه دید اولیه وجود داره ولی شما مثلا میخوید بگید که من میخوام با این مطالعه نشون بدم

درست نیست یا اگر این در واقع جزئیاتو بهش اجازه اضافه بکنیم فلان تغییر تو این یافته به وجود میاد یا میتونه اکسپلوراتوری یا کاوشگرانه باشه که خیلی تو این زمینه داده‌ها در دسترس نیستند و خدمتتون عارضم که شما فقط می‌خواید یک مطالعه اکتشافی داشته باشید حالا بعضی از در واقع مقالات این سه تا رو کلاً با هم تو اینتروداکشن مینویسند ولی بعضی از ژورنال ها به خصوص ژورنال های حوزه های بالینی حوزه های روانشناسی حوزه های علوم شناختی یه حوزه های پزشکی است شما انتظار دارند که اینا رو سکشن سکشن یا ساب سکشن کنید تو اینتروداکشن یعنی اینکه ری جدا بنویسید و حتی ریسرچ کوسشنز هاتون هم جدا بیان بشه خدمت شما عارضم که ما گفتیم که یک مسئله را باید تعریف بکنیم همون اول من یه نکته هم اینجا بگم معمولاً

علاقه دارند که برن چیزهایی رو پیدا بکنند که مدلش تو دنیا انجام نشده یا منتشر نشده ها اینی که بگن این کارو که داریم می‌کنیم مدلش نیست ولی یادتون باشه بچه‌ها این شرطه شرط کافی نیست برای اینکه مقاله‌تون حتماً اکسپت بشه یعنی اینکه صرفاً یه کاری تو دنیا انجام نشده باشه و شما اولین بارش باشید کافی نیست و باید شما یه جوری اهمیت بالا و تضمین پذیرشش هم برای خودتون چیکار کنید بالاتر ببرید با بیان بهتر با بیان شفاف تر حالا این معنیش البته این نیست شما حق ندارید کارهایی بکنید که به ظاهر در واقع کم اهمیتن مثلاً من یه مثال براتون بزنم تو این درس شما با کار آقای مشاغلی آشنا شدید که توی اون قرار بود وقتی که انسان ربات به یک مجموعه انسانی که بیش از یک انسان توشه وارد بشه به کی نگاه کنه خب نحوه نگاهش چجوری پخش شه این خودش میتونه جزئی از یک پروژه بزرگتر باشه

مبنی بر اینکه رباتی که بخواد بره تو یک مدرسه کمک دستیار آموزشی باشد باید چه مهارت‌هایی داشته باشد این یکی از اوناست پس می‌تونید مثلاً با این حالا بیان که اوکی اون مسئله مهمیه و یکی از راه‌هاش توانمند کردن ربات‌ها برای مثلاً این حوزه هستش بتونید اهمیت موضوعتون رو به آدم‌ها در واقع تحمیل بکنید خب یا قانعشون بکنید که این موضوعی که دارید بررسی می‌کنید مهم و مفیده یا مثلاً فرض کنید بحث لب خوانی که شما تو تمریناتتون باهاش آشنا شدید خوب میتونه جز از یک پروژه بزرگتری باشه برای مثلاً یک رباتی که بتونه زبان اشاره ایرانی رو شناسایی بکنه و در ضمن بتونه به صورت حالا در لحظه مترجم اون زبان هم باشه و خب اینا ماجراهایی که یه دفعه اهمیت یک موضوع میتونه برای شما بالاتر ببره پس بچه ها یادمون باشه وقتی میخویم یک مقاله بنویسیم توصیه که من همیشه به دانشجوهام میکنم میگم که اینتروداکشن شما باید

قصد پاراگراف داشته باشد پاراگراف اول اهمیت موضوع و حوزه مورد بررسی شماست اینکه چرا این حوزه‌ای که دارید بررسی می‌کنید مهمه من بریده از بعضی از مقالاتمو از این اسلاید به بعد گذاشتم نه به این علت که کار من خیلی پر اهمیت بوده اتفاقاً بالعکس می‌خوام بگم من هم تونستم با این دیدگاه مقاله منتشر کنم پس اینا آزموناشو پس داده و شما میتونید از این الگو بگیرید یا حتی بهترشو یاد بگیرید از کارهای بنده و دیگران به خصوص آدم های اهلش توی دنیا و خب تلاش کنید مقالات خودتون رو بنویسید ما همیشه پاراگراف اولمون اهمیت موضوع مثلاً اینجا در مورد یه مقاله بوده ویژه به کارگیری تکنولوژی برای بچه های طیف اوتیسم که خب اول یه آمارکی از بچه های طیف اوتیسم دادیم که چرا مثلاً جامعشون چه نیازهایی داره چقدر تعداد جمعیت ش زیاده و چه کمک های نیاز دارند حالا بعدش ورود کردیم به مسئله مون و بعدش در اهم پژوهش انجام شده دیگران رو باید بگید که میدونید اسمش لیتر ریویو و

خلاصه یافته‌ها و حتی نقطه ضعفاشونو می‌تونید با بیان احترام آمیز بیان بکنید که اینو خود شما بهتر از بنده بلدین و بعدش باید مسئلتون تو پاراگراف سوم به شکل دقیقی تعریف کنید این همون جایی که می‌نویسیم این دیس پیپر این اتفاق قراره بیفته این دیس ریسرچ ایندیس استادی همچین کلید واژه های کنار خودش داره و توی بیان تعریف مسئلتون باید مثلاً پرسش‌های پژوهشیتون رو تو این حوزه های مطرح کنید انتظار دارند مثلا فرض کنید من تو یک مطالعه نوشته بودم میخویم این کار بکنیم بعد نوشتم که تفاوت ویژه ما با اون مطالعه اینه که این اتفاق توش افتاده یا توی مقاله دیگمون مثلاً نوشتیم که ما دنبال یافتن مثلاً پرسش های پاسخ های اکتشافی به پرسش های پژوهشی زیر هستیم که مثلا خودش چهار تا پرسش پژوهشی بوده ای بی سی دی و ای مثلاً آیا یک ربات اجتماعی به عنوان یک دستیار معلم قابلیت آموزش

الفبای موسیقی دارد یا خیر و اینجوری رفتیم جلو چه میدونم اینا پرسش‌های پژوهشی‌مون بوده که مطالعه ما جوری طراحی شده که به این پرسش‌ها پاسخ بده حالا در مورد این جزئیاتش مجدد در آینده صحبت می‌کنیم خب خدمت شما عارضم که ما بچه‌هایی که حالا با این درس‌های روش تحقیق آشنا هستند یا تو حوزه‌های بالینی کار کردن و الی آخر ممکنه دیده باشن که توی زیجموعه پرسش های پژوهشی یه چیزایی به نام فرضیه‌های هایپاتسس هم مطرح میشه خب فرضیه یک گزاره است که این دفعه سوالی نیست و حدس شما را از پاسخ به اون پرسش پژوهشی بیان میکنه مثلاً فرض کنید اینجا گفته بودم آیا مثلاً به کارگیری ربات تو آموزش موسیقی اثربخش هست یا نه مثلاً می‌تونم فرضی اینجوری مطرح کنم فرضیه یک به کارگیری ربات های اجتماعی میتواند سبب آموزش الفبای موسیقی به بچه های طیف اوتیسم شود

فرضیه من باشه خب یه همچین چیزی خدمتتون عرضم بچه‌ها توی مطالعاتتون شما زمانی از فرضیه‌ها استفاده کنید که تعداد پارتیسیپنتاتون زیاد باشن خب اگر مطالعتون خیلی اکتشافیه و در ضمن تعداد پارتیسپنتالتون مثلاً ۳ ۴ ۵ زیر ۱۰ تاست زیر حتی ۱۵ تاست میتونید از نوشتن فرضیه به نظر من اجتناب بکنید و فقط به پرسش و پژوهشی کارتون رو جمع بکنید و در ضمن بیان بکنید که این مطالعتون از جنس های اکسپلوریه خب ولی اگر نه تعداد مثلا افرادی که درگیرند زیاد شدن و اینا میتونید کاملا فرضی هاتون هم بیارید و در ضمن باید یادمون باشه بعدا باید هم به پرسش های پژوهشی پاسخ های شفافی بدیم با توجه به یافته هامون بگیم ما بالاخره چی رسیدیم چیزی نرسیدیم ما تو شرایط خودمون به این رسیدیم و الی آخر و با دیگران حالا مقایسه بکنیم همینطور در مورد فرضیه‌هامون صحبت بکنیم خب خدمت شما

مجبورم من یه سری در واقع اتفاقات و رقم بزنم و یه سری حاشیه‌هایی رو بگم که بتونیم ادامه بدیم یکی تو مطالعات کلاً آماری و حالا به صورت خاص شما بشنوید مطالعات میدانی تو حوزه ما یه مفهومی داریم به نام وریبلز یا متغیرها که این متغیرها میتونن چی متغیرهای مستقل یا متغیرهای وابسته باشه متغیرهای مستقل متغیر های هستند که عامدانه و آگاهانه توسط شما دارن منیپلیت و تغییر میکن و اصلا هدف شما این بوده یعنی شما یه سری چیزها رو می‌خواید تغییر بدید یا یه شرایطی رو برای پارتیسپنت ها و آزمودنی هاتون به وجود بیارید تا ببینید که برای دیپندنت وریبل ها چه اتفاقی میفته ها و ببینید که آیا اون کاری که شما کردید تونست رو اون چیزی که شما می‌خواستید

سر خودشو بزاره یا نه حالا اگه بخوام مثال بزنم من دو تا مثال آوردم شاید ده‌ها مثال خودتون میتونید هی اینجا اضافه بکنید مثلاً فرض کنید که شما نوع مثلاً چه می‌دونم این روند درمانی که به وسیله یک دارو یا به وسیله یک ربات برای یک مریض تجویز کردید و به عنوان ایندیپندنت وریبل ببینید میزان پیشرفتش یا میزان بهبودش مثلاً تو حوزه سلامت و به عنوان متغیر وابسته ببینید یا مثلاً غذایی که به حیوونتون دادید و به عنوان متغیر مستقل ببینید و اینکه مثلاً چقدر سبب شده که اون حیوون وزن بگیره متغیر وابسته باشه که مثلاً اینجا میتونه دو گونه ای و بی و مثلا غذا بدید بعد ببینید که کدومش اثربخش‌تر بوده و همچین چیزایی رو می‌خواید مطالعه بکنید خب خدمت شما عارضم من اینجا یه پرانتزی باز بکنم خب ما در واقع

به اصطلاح کلمه چیزو نوشتم اکسپریمنت رو نوشتم مثلاً یک معادلشو اگه اینجا بزاریم حالا آزمونگر یا آزمایش یعنی منظورم از اکسپریمنت میاد ولی معادلشو موازیشو آبزرویشن بزاریم خب شما تو مطالعاتی که مبتنی بر آبزرویشن فقط مطالعه فقط مشاهده می‌کنید کاری انجام نمیدید خب اگه گروهی که مثلاً از قبل بیمارند از قبل سیگار می‌کشیدن و و و میخوید در واقع یه سری داده برداری بکنید خودتون کار خاصی نمیکنید ولی تو مطالعات ما عموما که از جنس اکسپریمت ما عامدانه یه چیزی رو تغییر میدیم و شرایط رو به اون آزمون تحمیل میکنیم تا اون چیکار کنه بیاد برای ما عرض به حضور شما حالا همراهی کنه با ما در نهایت ببینیم که روی متغیرهای وابسته ما تاثیرگذار بود یا نبود این ماجرایی که در مورد متغیرها میخویم بگیم و البته تو کارهای آماری خب

به شدت برای ماکاران و مجبورم الان تعریفش کنم یکی در مورد شرایط کنترلی به اصطلاح مطالعاتمونه خدمتتون عارضم که ما عرض به حضور شما می‌تونست ما کاندیشن‌های مختلفی رو می‌تونیم داشته باشیم یکی اکسپریمنتال کاندیشن یکی کنترل کاندیشن یا شرایط کنترل بهش میگن تو شرایط اکسپریمنتال خدمتتون عارضم که به اصطلاح گروه یا گروه های توی مطالعه ما که میان اون کاندیشن در واقع آزمایشی ما را تجربه می‌کنند و قراره مطالعات اصلی روی این انجام بشن ما بهشون میگیم اکسپریمنتال کاندیشن یا حالا گروه آزمون اسمشو اجازه بدید بذاریم تو فارسی که خوب عرض به حضور شما مثلاً فرض کنید که چه میدونم میخویم ربات انسان نما را ببریم یک بار مثلاً تم درونگرا بره با یه عده

مثلاً چیز بکنه رفتار و برخورد بکنه بعد یه بارم با مثلاً برونگرا رفتار بکنه بعد مثلاً ببینیم که خب اوکی مقبولیت این بین آدما چطوره و مثلاً میزان واقعی بودنش چطوره یا مورد پذیرش بودنش چطوره خدمتتون عارضم که تعداد این متغیرهای مستقلی هم که حرف ازشون آوردم توی یک مطالعه زیاد نیست شما یادتون باشه اگر کلا متغیرهای مداخله گرتون هی زیاد و زیادتر بکنید دیگه از شاید برای خودتون جذاب تر باشه هیجان انگیز تر باشه برای اون کودک یا آزمودنی ولی نمیتونید به یک پرسش پژوهشی جواب بدید جامعه جهانی انتظار داره که شما لاک پشتی برید جلو یعنی اینکه تا حد امکان خیلی از شرایط فیکس کنید فقط یه دونه تغییر بدید و ببینید که حالا این یکی آیا سبب شد که اون اتفاقی که شما می‌خواید رقم بخوره یا نه این در واقع تو حوزه تحقیقاتی این اتفاق میفته فرق داره با حوزه مثلاً چه میدونم کارهای

فروش یا مثلاً بری تو مارکت و بخواید رباتتونو بفروشید اونجا فقط مهم جذابیتشه و تمام تلاشتونو می‌کنید هرچی تونستید جا می‌دید که چیکار کنه که بچه رو خوشحال کنه اگرچه ممکنه بالاخره نفهمید که به خاطر کدوم اتفاق این مثلاً بچه خوشحال شد خدمتتون عارضم که من در مورد متغیر مستقلم اینجا یه توضیح باز بکنم حالا اینجا که صحبت کردم که به اینجا ربط داره به اکسپریمنتال کاندیشن ها ما معمولا توی مطالعاتمون تعداد متغیر مستقلون زیاد نیست یکی دو تاست خب به هر کدومش میتونه حالت های مختلف داشته باشه که ما بهش میگیم لول های متفاوتی داره مثلاً فرض کنید که شما یکی از متغیرهای مستقلتون یا تک متغیر مستقلتون اینه که افرادی که اومدن مثلاً فرض کنید که زیر هشت سالن بین هشت تا ۱۵ سالن یا بالای ۱۵ سالن این میشه متغیر مستقل شما سن بوده تو این آزمون تو این مطالعه و شما سه لول یا سه سطح

ممکنه شما نه تنها سن بلکه مثلاً جنسیتم لحاظ بکنید یه کاری رو دارید انجام می‌دید می‌خواید ببینید که روی آقایون یا خانم‌های زیر ۸ سال بین ۸ تا ۱۵ و بالای ۱۵ سال چه اتفاقی می‌افته اینجا شما دو متغیر مستقل دارید که یکیش سن یکیش جنسه یکیش سه لول داره یکیش چی دو لول داره خب که حالا این دو ضرب در سه سطح مختلفی که گفتم اینا کاندیشن های مسئله ما این کلمه کاندیشن میشه در واقع سطوح مختلفی از متغیرهای مستقل که میتونه آزمودنیتون تجربه بکنه شما در کنار گروه آزمون میتونید یک گروهی داشته باشید به نام گروه کنترل که اینا هیچ در واقع اکسپریمنتال کاندیشن که شما بالا داشتین رو تجربه نمیک مثلا فرض کنید که میخوید ببینید آموزش ریاضی با ربات مثلاً اثربخش

ترمیشه نسبت به معلم انسانی یا نه شما یک پروتکلی برای طراحی می‌کنید که با ربات به آدم‌ها با توسط با ربات به دانش آموزان بخواهید ریاضی یاد بدید یه گروه هم می‌گیرید که با معلم عادی ادامه میدن و شما می‌خواید ببینید که چی شما می‌خواید ببینید که میزان پیشرفت اینا رو بتونید بالاخره با اونا مقایسه کنید یا مثلاً فرض کنید که می‌خواید یک سال مثلاً با بچه‌های طیف اوتیسم فرضا کار کنید و ببینید که این کارتون با ربات ها سبب افزایش مهارت شناختی شده یا نه خب اوکی اگر برید با ربات کار کنید عموما میبینید که بله این اتفاق افتاده ولی از کجا معلوم به خاطر گذا یعنی رشد سنیشون این اتفاق نیفتاده باشه و چقدر به خاطر شما بوده اینجا مثلاً باز انتظار دارم که شما یک گروه کنترل داشته باشید که با ربات باهاشون کار نکنید و اجازه بدید به زندگی عادی خودشون ادامه بدن و عرض به حضورتون که حالا یه سری پیش آزمون و پس آزمون بگیرید تا ببینید که میزان

گروه کنترل داشته چقدر بوده میزانی که بچه‌های گروه اکسپریمنت داشتند چقدر بوده و بتونیم مقایسه کنید و بگید خب آیا حالا بین اینا تفاوت معنادار آماری وجود دارد یا نه خب خدمتتون عارضم که این مثال‌هایی که باز اینجا وجود داره مثلاً اگر شما تو مطالعه‌تون قراره که دو ربات ای و بی رو نشون بدید به آدم‌ها و حالا یه سری متغیرها رو لحاظ بکنید مثلاً ببینید که چه میدونم بچه ها تو آموزش زبان دوم مثلاً چقدر پیشرفت داشتن و فلان بچه های که ربات ای یا بی یا حالا هر دو رو ممکنه ببینن اینا گروه های اکسپریمنتالن و بچه هایی که هیچک از اینا رو نمیبینن و فقط یک معلم انسانی در عادی دارند که ببینیم بالاخره این با گذر زمان چقدر به زبانشون اضافه میشه اینا چی اند گروه کنترل برای ما حساب میشن که بالاخره ممکنه آزمون شما نیازمند این باشه که گروه کنترل هم داشته باشید من حالا دیزاین منظورم به حوزه آزموننی هامونه که مطالعتون

مطالعاتمون از جنس بیت بین پارتیسپنت دیزاین یا پارت دیزاین باشه دیزاین صحبت از مطالعاتی داره که قراره گروه‌های مختلفی بیان و هر کدوم یه کاندیشن رو ببینند مثلاً فرض کنید شما دو گروه رو میارید یه گروه قراره بیاد کار با ربات تجربه کنه یه گروه دیگه قراره کار با وی آر رو تجربه کنه و قراره چیکار کنید در نهایت شما بتونید این دو مثلا ابزار با هم همدیگه مقایسه بکنید و گروه یک هیچ وقت مثلا دی آر رو نمیبینه گروه دو هیچ وقت ربات رو نمیبینه که خب اینا میشن از جنس مطالعات بیتبین خب یا بین گروهی خب یه مسئله که اینجا پیش میاد اینه که به هر حال شما چجوری میخوید نمونه برداری بکنید مثلاً فرض کنید تو کد اخلاقی که نوشتید نوشتید من ۳۰ نفر آدم ۴۰ نفر آدم میخوام بیارم و ۴۰ نفر تقاضا دادن که بیان و عرض به حضور شما که شما می‌خواید اینا رو به دو گروه ۲۰ نفره تقسیم کنید باید کاملاً

آگاهانه اینا رو چیز کنید عرض به حضور شما عادلانه تقسیم بکنید بین گروه‌های مختلف نباید حب و بغض خاصی داشته باشید برای اینکه فلانی مثلاً ربات نمی‌دونم جذاب‌تره فلانی پسر خالمه باید بیاد بخش ربات اون یکی باید بره وی آر و بعضاً توی کدهای اخلاق لحاظ میشه که برای حفظ مسائل اخلاقی بعد از اتمام مطالعه برای اینا و اونا چند جلسه هم مثلاً فقط جهت سرگرمی کار با اون یکی دیگه ابزار بزاریم که خوب این در واقع مسئله کامل تری و این توی حالا مطالعات بالینگ ممکنه دیده باشید یا شنیده باشید یه مطالعه دیگه ما داریم به نام ویدین پارتیسپ دیزاین و اون اینجوریه که یک هر پارتیسیپل یا هر آزمونی تمامی شرایط رو میبینه مثلا اینکه میاد یک بار مثلاً غذای ای رو میخوره یک بار غذای بی رو میخوره و میخواد حالا نظر بده روش یا یک بار میاد فاز ربات رو میبینه یک بار فاز وی آر رو میبینه و نظر

اینجا یه مسئله دیگه‌ای پیش میاد که باید حواستون جمع باشه و اون مسئله در واقع ترتیب اجرایی موارد و میگن شما باید شرایط کانتر بالانس رو به وجود بیارید برای افراد کانتر بالانس شرایطیه که شما میاید ترتیب اجرای اون لول‌ها رو به صورت تصادفی برای آدما عوض می‌کنید تا بعداً اگر مثلاً گروه ربات از گروه وی آر بیشتر شد بتونید محکم تر صحبت بکنید و بعدا بهتون نگن نه این ممکنه دلیلش این بوده باشه که ربات اول اجرا شده و مثلاً سبب بوده که این براش جذابتر باشه یا بالعکس اون بازی که دوم اجرا شده سبب شده که طرف قلق بازی دستش بیاد و اونو در بیاره و خاطر همین باید شما کلا شافل کنید رندوم نصفشو مثلاً اول اجرا کنید نصفش دوم اجرا کنید اینا مواردی که باید لحاظ بشه و یه نوع مطالعات همشون میگن میکس مادل فکتوریال دیزاین که توش هر دو گونه بیتتوین و ویدین میتونه وجود داشته باشه

خودتون فکر کنید اگه دوست داشتید ویدیو رو متوقف کنید و بعدش ادامه بدید یا اینکه حالا به هر حال به صحبت‌های بنده گوش بدید اینه که کی ویدین خوبه و کی بیتین خوبه ببینید همونطور که دیدید ویدینگ جاهاییه که باید در واقع اشخاص بتونن بین دو تا چیز یا حتی بعضا بیش از دو تا چیز دقیقا مقایسه انجام بدن خب و خب لازمه که همه چیو ببینند ولی باید حواسمون باشه که خدمتتون عارضم ممکنه تعداد در واقع چیزهای ما خیلی خیلی زیاد باشه یعنی تعداد گروه هامون خیلی خیلی زیاد باشه اگر بخواهیم همه افراد همه چی رو ببینن تعداد آزمایش هامون میره بالا حتی ممکنه خستگی ناشی از درگیر شدن در تمام شرایط و لول ها روی نتایج شما به شکل معناداری اثر منفی بذاره از اون و

بیت بین‌ها در واقع چیزه دیگه جاهایی که ما مثلاً باید حواسمون باشه ممکنه نخوایم طرف بفهمه ما داشتیم چیو عوض می‌کردیم یعنی اگر می‌بردیمش توی ویدین ممکن بوده مثلاً روش اثر بذاره یه سری بایس به وجود بیاره و خب اونجا در واقع این شرایط رقم میزنیم یا اینکه از لحاظ دسترسی به منابع انسانی منابع مالی که بخواهیم آزمایشمون رو برگزار بکنیم همینطور زمانی محدودیت های داریم و به این در واقع شرایط رو میاریم حالا حالت های دیگه هم وجود داره مثلاً تو بیت پین پارتیسپس مث شما ممکنه بخواید عملکرد دو گروه مثلا کلاس ای و بی و توی درس استاتیک با همدیگه مقایسه کنید ولی مثلاً ویدین میتونه این باشه که میخوید نمرات میانترم و فاینال اون کلاس رو با همدیگه مقایسه کنیم یعنی ببینید که در واقع داره چه اتفاقی میفته اینا تو نوع ارزشیابیشون حالا همونطور که بعداً براتون خواهیم گفت متفاوت

خواهند بود و طبیعتاً بعضی از جاها ما ترجیح میدیم هر دو رو داشته باشیم یعنی اینکه به هر حال بخشی از مطالعه‌مون تو گوشیش بیتوین و بخشش بی دین باشه که اینا رو بهشون گفتیم میگن میکس مدل فکتوریال دیزاین بعضی از متغیر دیگه‌ای هم می‌تونن وجود داشته باشن حالا خیلی نمیخوام روش برم مثلا متغیرهایی که الو تو وری اند کارشون نداریم خیلی مثلا فرض کنید یه مطالعه روی اینترنت دارید مثلاً به نوع مرورگری که طرف داره استفاده میکنه اصلا کاری نداره خب حالا از کروم استفاده کنه نمیدونم فایرفاکس استفاده کنه و الی آخر هیچ براتون مسئله نیست اگرچه متغیر ولی شما اینو لحاظ نمی‌کنید پیشنهادی که بچه ها براتون دارم اینه که اگر توی بیتبین هستید خدمتتون عارضم تا حد امکان تلاش کنید خانم ها و آقاهاتونو یکسان بگیرید تعدادشو یعنی اگر جنسیت جزء فاکتور اصلی مطالعه‌تون نیست

حداقل برای اینکه اصطلاحا نشون بدید عدالت رعایت کردید تعداد خانم آقا را تا حد امکان برابر بگیرید یه سری جاها محدودیت‌هایی خواهید داشت مثلاً تو بچه‌های طیف اوتیس می‌خواید کار کنید خب تعداد پسرهای مبتلاتیسم مثلاً بین ۴ تا ۵ برابر دخترهاست و واقعاً هم دسترسی شما مثلاً به خانم‌های مبتلاتیسم سخت‌تره و خب بخاطر همین این ماجرا رو ما تا حد امکان تلاش میکنیم رعایت بکنیم که داورها به ما چی کمتر گیرند خدمت شما عارضم که من دوست دارم تو بخش انتهایی در واقع اون گام اولمون که اینتروداکشن ریسرچ کو ها باشه اینم به صورت دلی اضافه بکنم یه ذائقه شخصیم که تا الانم در واقع نتیجه بدی ازش نگرفتم این بوده که من همون انتهای اینتروداکشنم یا قبل از ورود به بخش متدولوژی و الی آخر هم

تلاش می‌کنم یک فهرست تصویری از اون چیزی که قراره اونا تو اون مقاله ببینن یا تو مطالعه ببینن و ارائه بدم که یه فلوچارت شکیل مثلاً سیستماتیکی باشه که شما بتونید چیکار کنید دنبال بکنید مطالعه از کجا برید و به کجا برسید و به چه چیزهایی اینجا قراره با همدیگه مقایسه بشن این میشه فاز اول ماجرا فاز بعدی ما که البته حالا این شماره چهارش لزوماً چهارم نیست حتی قسم نخورده شده با این نام شما استفاده کنید بیشتر گرا دارم بهتون میدم فاز رباتیکس ایمپلمتیشن و به خصوص زمانی مهم میشه که شما رباتتون رو خودتون ساخته باشید یا یک تغییر اساسی سخت افزاری یا نرم افزاری مثلاً تو حوزه معماری شناختی براش به وجود آورده باشید که چی که این در واقع شروع کار شماست و اساس کار شماست و این حتما باید تو یک سکشن جداگانه بیان بشه ولی اگر از مثلاً

ربات‌های استاندارد موجود تجاری و استفاده کردید یا پروتکل‌هایی که استفاده کردید پروتکل‌های دیگران مشابه دیگران بوده توی حالا مطالعات قبلی خودتون یا دیگران استفاده شده می‌تونه اینجا بیان نشه و بره جاهای دیگه‌ای بیان بشه که حالا پیشنهاد داده آرتیفکت اسمشو بذارید ولی میتونید باز اونجا اسم دیگه انتخاب کنید ولی میشه اینجا الان بیان نشه و خب در مورد عرض کردم دیگه اهم تغییرات اساسی که هست استفاده میشه که مثلاً اینجا نمونه از مسیر طراحی ربات رسا رو میبینید که تو اون مقالهش ذکر شده بوده فاز بعدی که فاز بسیار بسیار مهم و ضروری برای ما فاز متد متدولوژی یا روش تحقیق که خودش زیر بخش های مختلفی میتونه داشته باشه شما بچه ها اینجا به بیان عامیانه و ساده باید تمامی چیزهایی که رعایت کردین و با جزئیات

بیان بکنی به گونه‌ای که افراد دیگه تو دنیا اگه بخوان کارتونو تکرار بکنن بتونن این کارو بکنن یعنی شرایط آزمایشگاهیتون ربات‌هایی که استفاده کردید تعداد آزمودنی‌هایی که آوردید شرایط آزمودنی‌ها شرایط رباتتون پروتکلتون و و باید با جزئیات زیاد اینجا بیان بشه خب که خب این حالا میتونه اسمش اکسپریمنتال ستاپ باشه میتونه متدولوژی باشه میتونه اورال دیزاین باشه یا زیرج های از اینا خدمتتون عارضم که من چیزهایی که توش پیشنهاد میدم اینست یکی خودم تا جایی که بتونم ساختار مثلاً کارهای آموزشی بالین رو میکشم یعنی جای ربات جای معلم جای دوربین ها جای اپراتور الی آخر خدمت شما عارضم که در مورد خود سناریوش هم ممکنه کلی گویی بکنم اهداف پشتش بگم و همینطور حالا اهداف جزش میتونه همون اول یا

سابسکشن دیگه‌ای تو همین زیر بخش بیان بشه خدمتتون عارضم در مورد آزمودنی‌ها باید صحبت بشه من چند خطی اضافه در مورد اینا صحبت می‌کنم ولی یادتون باشه شما حداقل چیزهایی که باید در مورد آزمون معرفی بکنید یکی تعدادشونه خدمتتون عارضم که آقا و خانم بودن میانگین انحراف معیار سنشونه و اینا رو باید لحاظ بفرمایید ولی بعضی وقتا شرایط پارتسپنتاتون خاص بوده یا مطالعاتتون کیسدی یا سینگل سابجکت دیزاین یعنی با تعداد نفرات کم داره میره جلو بد نیست که اطلاعات دموگرافی یا اطلاعات جزئی از اون پارتیسپنتاتون هم ارائه بدید مثلا من پی یک تا پی4 اسمشون رو گذاشتم چه سنی داشتن و چه اختلالی داشتن یه گرایی دادن به مخاطبین تا در جریانشن اینجا در مورد نحوه ورود و خروجشون میتونید صحبت کنید معیار ورود و خروج پارتیسپنت چیست که حالا یه چند خط دیگه

صحبت خواهم کرد و همینطور در مورد به اصطلاح نحوه کنترل ساختار و جلساتتون در حضور حالا اون فناوری به خصوص ربات‌های اجتماعی دیگه که چه جوری باید باشن حالا اجازه بدید در مورد اینا صحبت بکنیم استادی پروتکل که همون در ابتدای این متد یا اکسپریمنتال ستاپمون میاد تقریباً سوپر سوپر مهم‌ترین بخش ماجراست البته وقتی که معلوم باشه نوشتنش هم خیلی ساده است تو مقاله چون شما معمولاً آماده کردید برای گرفتن کدهای اخلاق اینا رو از قبل نوشتید از صفر صفر تا انتها رو مشخص کردید جزئیات بسیار زیادی ازش بیان کردید ساختار جلساتتون رو گفتید اینه که کودک از لحظه که میاد جلو ربات میشینه جلسه چقدرش ساختار یافته است چقدرش غیر ساختار یافته یعنی اینکه مثلاً فرض کنید تو پروتکل تو مینویسید ۳۰ ثانیه من صبر میکنم اگر کودک به ربات سلام نکرد ربات سلام بکنه

E:\courses\LangChain Project\main root\data\SCR_Session23_transcript_part3.txt

اگر کودک از جلو ربات رفت باید این اتفاق بیفته گام اول مثلاً معرفی ربات توسط خودش به مدت دو دقیقه است این کارا رو انجام بده این محاوره‌ها اتفاق بیفته ۱۰ دقیقه استراحت بدیم برگرده گام اول مثلاً آموزش موسیقی توسط ربات‌ها فرض کنید که الفبای نواختن نت‌های مثلاً ساز بلزه اصلاً مهم نیست که نوت چی می‌نوازه بعد ریتم شناسیه و و این پروتکل رو نوشتید خب خدمتتون عارضم که یادتون باشه اینا رو گفتم برای کمیته اخلاق هم فرستادید و حق ندارید تا قبل از اینکه کمیته اخلاق تایید بکنه شما به صورت رسمی و جدی آزمودنی بگیرید برای کارتون ولی این حق دارید همونطور که عرض کردم هم بخش های فنی کارتون رو ببرید جلو تا قبل از اینکه کمیته اخلاق نظر نهاییش بده و هم یه سری ران های آزمایشی بگیرید روی دوستان خودتون رو خودتون که مشکلات کار در بیارید چون یادتون باشه که اینا وسط برنامه

اتفاقات غیر مترقبه می‌افته ربات خراب میشه داغ می‌کنه دوربیناتون خاموش میشن بچه اون روز همکاری نمی‌کنه و و و شما باید آماده باشید که تا حد امکان بتونه شرایط هندل بکنید یا اگر قابلیت هندل نداشته باید چیکار کنیم به عنوان لیمیتیشن و محدودیت بعداً بیانش بکنید در مورد پارادایم های کنترلی ربات‌ها توی جلسات دو پارادایم خیلی لب لب بومی اینا یکی ویزارد عضو یکی که مخفف جادوگر شهر عضو باشه به استایلی اشاره میکنه که یک نفر به نام ویزارد یا جادوگر یه جای دیگه نشسته حالا یا تو همون اتاق گوشه موشه هاست یا پشت شیشه‌های پلیسیه یا توی اتاق دیگه که داره با دوربین اتفاقات رو میبینه و دستورات لازم رو برای مثلاً ربات ارسال میکنه و خدمتتون عارضم که علیصول مثلاً اون کسی که مخاطبی که جلوتون نوشته نشسته

آزمودنی که نشسته به خصوص معمولاً کودکانم هستند متوجه نمیشن که ربات توسط کس دیگری کنترل میشه خب این چه خوبی داره چه بدی داره بزرگترین حسنش اینه که شرایط در واقع پیش روتون خیلی غیر قابل پیش بینی یعنی انواع اتفاق ممکنه بیفته بچه بره ربات هول بده بشینه باهاش بازی بکنه نکنه و و و شما متناسب با رفتارهای بچه به کنترل جلسه ادامه میدیم ولی خوب دیگه رد و بویی از خود رباتیک بودن و هوش مصنوعی اینا تو کار نیست از اون و رویای آدما اینه که از ربات های فولیات و ناموس یا کاملا خودکار استفاده کنند که معمولا این جلسات با شکست مواجه میشه توی حوزه های اچ آر آی شما نمیتونید یه ربات داشته باشید که همه چی رو بلد باشه از قبل و در واقع از قبل پروگرم شده باشه و هوش لازم و دانش لازم بهش منتقل شده باشه که معمولاً

بهترین کار اینه که بین این دوتا رو بردارید یعنی یه جاهایی از ربات شما با اون تکنیک‌هایی که یاد گرفتید هوشمند کنید ولی یه جاهاییش هم تحت نظارت کنترل خودتون بذارید و به خصوص برای حوادث غیر مترقبه و غیر قابل پیشبینی که نمی‌تونید از پسش بر بیاید خدمتتون عارضم خیلی سلیقه ای این پاراگراف رو عین از یکی از حالا صفحات پایان نامه یکی از صفحات پایان نامه پایانی پایان نامه دکترام خدمتتون اینجا عینا اوم که یه دیدگاهی که به نظر من همچنان تو مسیر تعریف موضوعات پژوهشی راهگشاست و ما توی گروه تحقیقاتی مون تو آزمایشگاه خودمون معمولاً وقتی پایان نامه ارشد دکترا برای بچه ها تعریف میکنیم آگاهانه یا ناآگاهانه اینو در نظر می‌گیریم یعنی من بعضی وقتا به بچه ها نمیگم ولی تو رویه فکری که بچه ها رو میندازن اینو لحاظ می‌کنم من اینو اون زمان نوشتم نوشتم پس از انجام این رساله ما معتقدیم که جهت گیری فعالیت های مهندسی بهره گیری از ربات ها توی حوزه

توانبخشی می‌بایست به سمت توانمندسازی ربات‌ها تو دو مقوله ارزیابی خودکار و یا توانبخشی تطبیقی بره یعنی اینکه ربات یا ماشین تا حد امکان بتونه خودش شناسایی بکنه و نمره دهی بکنه رفتارهای مخاطبین پیش روشو و بعدش بتونه چیکار کنه متناسب با رفتار حال حاضر و همچنین گذشته‌اش تصمیم بگیره که چگونه با کودک رفتار بکنه و خوب همچنان معتقدم که این مسیر یک مسیر راهگشاییه خدمتتون عارضم که اینجا نمونه از عکس های از اتاق درمانی که در مرکز مطالعات کودکان دانشگاه یل بنده حالا فرصت مطالعاتی بودم خدمتتون گذاشتم اینجا اون شیشه های پلیسی که یا ارزیاب پشتش میشست و یا پدر مادرا رو اجازه میدادن و اونجا تو اون اتاق کودک

ربات‌ها و وسایل دیگه قرار داده که اینجا همون اتاقی باشه حالا این ستاپ آزمایشگاهی ماست که ربات تبلت و الی آخر داره لحاظ میشه سنسور کینکت یه نفر آزمایشی نشسته که مطمئن باشه تو میدان دید دوربین قرار داره دو سه تا دوربین وجود داره این یکیشه این دوربین حرارتیه که حالا برای اون منظور مثلاً استفاده می‌خواست بشه و میخواستن حالت در واقع احساسی آدما رو از روی گرادیان دمایی که روی پوست صورتشون وجود داشت شناسایی کنند که بدونن عصبانی هست یا نیست و فلان تو طول مثلا جلسه که حالا در موردش صحبت میکنیم اینم اتاق در واقع چیز بود مانیتورینگ اتفاقات داخل به اصطلاح اتاق بالینی بود که خب یه نفر هم اینجا نشست و کنترل میکرد فیلم ها رو ضبط میکرد اگه لازم بود به هر حال کارهایی انجام میداد یا مث اینجا کدی رو برای ربات ارسال میکرد و فلان و خب این نمونه هایی از مواردی که باید خدمتتون بیان میشد خب گام بعدی در مورد پارتیسپنت

تو این در واقع زیر عنوان مطالب متعددی میتونه در موردشون مطرح بشه اینکه چگونه اینا رو اصلاً بیاریم تو ماجرا که خب خودش می‌تونه توسط فلایر یا یه سری پوستر باشه میتونه از رو شبکه‌های اجتماعی پخش شده باشه و در واقع گونه‌های مختلفی داشته باشه تا حد امکان میگن تلاش بکنید که عرض به حضور شما جامعه آماری وسیع تری داشته باشید مثلا فقط چه میدونم به یه ورودی خاص توی دانشکده بسنده نکنید و در ضمن یادمون باشه ما باید معیارهای ورود و خروج داشته باشیم یعنی اینکه چه پارتیسپنت های حق شرکت در مطالعه رو دارند و چه کسانی ندارند این را باید تعیین کنیم مثلا سن شناخته ش از این عدد پایین تر باشه فرض کنید حق نداره بیاد یا حق داره بیاد نمیدونم اگر این اختلالات داره یا این دانش رو داره حق داره یا حق نداره بیاد مثلاً فرض کنید اگه تو اوضاع

دانشکده بچه‌های دانشکده کامپیوتر برق و مثلاً مکانیک نیاریم تو مطالعاتتون چون اینا دانش‌های گذشته دارن تو این زمینه و ممکنه روی نتایج شما اثر بذارن و به هر حال باید این موارد رو لحاظ بکنید مورد دیگه که در مورد حالا پارتیسپنت ها خیلی جزئیات میشه در موردشون گفت اینکه احترامشونو نگه دارین اینکه باید این حق رو بهشون بدید که هر زمان دلشون میخواد از مطالعه خارج بشن اینکه باید شما فرم های رضایت حتما حتما ازشون بگیرید و یه ماجرایی که وجود داره اینه که بعضی وقتا شما کارهای فکر میکنید من اینو عمدا قبلا نگفتم مثلا شما یه کاری دارید یه چیزی رو دارید آنالیز میکنید زمانی که دارید فلایر رو پخش میکنید با جزئیات زیاد نمیگید چون اگه طرف بدونه ممکنه که رو نتیجه اش روی نتیجش اثر بذاره مثلاً شما آگاه عامدانه میگید من می‌خوام اینو بسنجم خب بعد این اثر میذاره یه چیز دیگه

مطرح می‌کنید خب که دقیق دقیقم نتونه صورت سوال رو عیناً بفهمه اینجا باید بعد از اتمام در واقع کار حالا استاندارد بین‌المللی اینه که دیبری فینگ کنید و یه در واقع متن دیگه باید در اختیارش قرار بدید بگید که این اتفاق افتاد مثلاً ما اینو آگاهانه بهت نگفته بودیم درست حسابی ولی الان لازمه بدونی یا اینکه مثلاً ما اونجا بهت گفتیم ربات داره خودش انجام میده کارا رو ولی نحوه کنترلش ویزارد عضو بوده یعنی اگر قبلش میگفتید یه سری مثلا میتونسته رو نتایجش اثر منفی بذاره ولی الان اعتراف میکنیم که چی که این اتفاقات نیفتاده و یه نفر از بیرون کنترل می‌کرده و اینجا مجدداً باز تو عرف بین المللی باید چیکار بشه از طرف دوباره فرم رضایت گرفته بشه اگر فرم رضایت رو امضا نزد دیگه شما حق ندارید از داده قبلیش استفاده کنید چون طرف راضی نبوده ولی اگر راضی شد حالا یه جورایی دوربین مخفی شما دیگه لو رفت و ایشون هم

داد حالا حق دارید که این کارا رو بکنید خدمت شما عارضم که سوال بعدی اینکه چند نفر بیاریم این برای این پاسخ یک کار آماری یه مقدارم طاقت فرسا و خسته کننده رو اعصابی وجود داره به نام آنالیسس که میگن حداقل تعداد افراد یک مطالعه باید چند تا باشن که لازمش اینه که شما یه شناخت آماری داشته باشید روی مطالبی که اینجا درج کردن و یا از یه سری از تکست بوک ها یا در واقع نرم افزار استفاده کنید من خیلی نمیخوام الان در مورد این صحبت کنم به این سواله دو گونه پاسخ میدم یکی میگم اگر میخوید خیالتون راحت باشه تقریباً سعی کنید تو مطالعاتتون بالای ۲۰ تا پارتیسپتو بیارید اگر میخوید یک کار حالا گروهی رو داشته باشید گروپس و فلان یعنی هر گروهتون حداقل ۱۵ تا ۲۰ تا رو داشته باشه ولی اگه دارید کیس استادادی بررسی میکنید خب سه تا چهار تا پنج تا ده تا ممکنه چاپ بشه ولی به هر حال نوع آنالیزتون فرق می‌کنه و نمی‌تونید از اون

آماری که می‌خوایم حالا در آینده خدمتتون بگیم استفاده بکنید از اونورم نرم‌افزاری به نام نرم‌افزار جی پاور وجود داره که از این کارها برای شما انجام میده که شما نخواهید تو اون فرایند طاقت فرسا بیفتید ولی خب چون شما مطالعه رو انجام ندادید هنوز خیلی از داده‌ها رو ندارید و باید تخمین بزنید و خود این به هر حال مسئله حالا علامت سوالی جلوشه و عرض کردم بیشتر به عنوان یه طرح مسئله گذاشتم حالا اگه کسی خواست میتونه خیلی بیشتر و بیشتر وارد این حوزه بشه عمیق تر بررسیش کنه اما بعد از اینکه شما در مورد پروتکلتون صحبت کردید در مورد پارتیسپنت و تعدادشون شرایطشون صحبت کردید در مورد نحوه ورود و خروجشون صحبت کردید معیار وج خروجتون در مورد نحوه کنترل جلسه تون صحبت کردید که و بالاخره ویزارد عضو بوده چی بوده فلان بیسار خدمتتون عارضم که در ادامه شما ممکنه که به هر حال هنوز باید تو بخش متد و اکسپریمنتالتون یه سری چیزا بنویسید بعضی هاش

هنوز دو مورد ضروری وجود داره یکی پروسیجر و یکی مژرمنتاتونه پروسیجر یعنی با جزئیات بسیار بسیار زیاد بگید در اون جلسه چه اتفاقی افتاده حالا یا بالا تو پروتکل توضیح دادید یا اینکه نه اونجا فقط کلی گویی کردید و گذاشتید اینجا بیارید که دقیقا چه اتفاقاتی داره میفته و فاز بعدیش اینه که در واقع چه چیزهایی شما می‌خواید ارزیابی کنید و آنالیز بکنید ها که خود این در واقع شامل ابزارها هست یعنی اینکه مثلاً من ویدیو ضبط کردم می‌خوام آنالیز بکنم پرسشنامه آوردم در واقع چیز انجام دادم مصاحبه انجام دادم الی آخر یا اینکه در کل بعدش تازه چه می‌خوام با چه ابزاری اینا رو آنالیز بکنم حالا داده ها رو گرفتید چجوری میخوید اینا رو کم می‌سازی کنید یا بحث های کیفی روش انجام بدید که اینا همه توی حوزه هایژت یاژرس

بعضیا میگن اینا رو جدا کنید که من خودم معمولاً جدا می‌کنم یعنی پروسیجر رو از مژرت جدا می‌کنم من معمولاً اسم مژرزمم اسیستنت تولز میزارم یا ابزارهای سنجش میزارم حالا چیزای دیگه‌ای هم داره که دیگه حاشیه هاست و میتونه آپشنال و اگه شرایطش وجود داشت یا لحاظ نیاز بود و بالا توضیحات کافی وجود نداشت میتونید اینجا تکمیل تر کنید من اگه بخوام مثلاً مثال بزنم از این زمینه تو حوزه در واقع پروسیجر اون اتفاقاتی که تو جلسات افتاده مثلا نمونه های از مقالاتی که قبلا توی حوزه دادیم مثلا یه جدول کشیدیم که کودک مثلا تو سشن یک تا مثلاً هشتم یا دهم قراره چه میدونم چه فضایی رو تجربه کنه راستی اینم بگم بچه ها اگر کار بالینی دارید می‌کنید یعنی فقط مقبولیت نیست که یه لحظه و یک جلسه کودک بیاد یه چیزی رو ببینه و بره و مثلاً یه مجموعه آموزشی براش اتفاق بیفته به هیچ عنوان تعداد جلساتتونو زیر ۱۰ ۱۲ تا نذارید که

توی بخش انتشارش به مشکل نخورید یعنی اگر تعداد جلسات آموزشتون کمتر باشه زیر ۸ باشه احتمال اینکه بگن این به هر حال شما ممکنه یا اثری نبینید که خب تقصیر شما لزوماً نبوده اگر مطالعه ادامه داشت ممکن بود ببینید یا اینکه اثری ببینید و اونا بگن نه این اتفاق کاملاً شانسی بوده یا شما صداقت ندارید یا مثلا دارید اورستیمت میکنید بیش از حد غلو میکنید الی آخر به خاطر همین برای اینکه در واقع این زمینه ها را استانداردش رعایت کنید پیشنهاد من برای شما هست این هم نمونه های از اون اتفاقاتی که از حالا نمونه مثلاً جدیش نمونه تصویریش از اینکه ربات قرار بوده چه رفتارهایی و خودش نشون بده یا بچه ها قرار بوده چه فضایی رو تجربه بکنن اینا همه چیزایی که تو حوزه پروسیجرز میتونه مطرح بشه خدمتتون عارضم تو حوزه تو حوزهژرز هم من مهمترین ابزارهای سنجش برای شما تو حوزه اچ آر آی بیان میکنه بیشتر هم عرض کردم با نگاه

پرسپکتیو میتونه تو حوزه سلف اسیسمنت بشینه که خود اینا زیر مجموعه زیادی دارند و خیلی برام مهم نیست که اصلاً اون ابزاری که دارم استفاده می‌کنم بالاخره جز کتگوری ۱ تا ۲ یا پنجه فقط دارم آیتم بار خدمتتون معرفی می‌کنم البته ممکنه بعضی هاشون تعریفشون جوری باشه که یکیشون تو دو تا از اینها بتونه جا بشه مهمترین ها این بخش پرسشنامه کوسشنران که خود پرسش‌نامه‌ها می‌تونن دو گونه داشته باشن یا پرسشنامه های استاندارد از قبل آماده باشند یا اینکه خود شما آماده کردید خدمت شما عرض کنم که حالا اسسمنت های که شما به صورت شخصی از رفتار ربات یا از ربات انجام میدید از شرایط انجام میدید یا از نحوه اجرای تسک ها انجام میدید که باز دوباره پایین هم یه همچین چیزی مجدد تعریف میشه خدمتتون عارضم که گزینه دوم میتونه مصاحبه یا انترویو ها باشه گزینه سوم میتونه ارزیابی های رفتاری باشه حالا در مورد این چند خطی صحبت

یا می‌تونه استفاده از در واقع ابزارها و سنسورهای مختلف تو حوزه‌های سایکوفیزیولوژیکال باشه و یا اینکه متریک‌ها و معیارهای میزان صحت انجام یک کار باشه اینا در مثلاً عناوینی که میشه برای متریک‌های شما یا اسیسمنت تولزهای شما گذاشت تو حوزه استنت همونطور که عرض کردم پرسشنامه یکی از فوق متداول ترین هاست که معمولا آدم ها سمت پرسشنامه های استاندارد از قبل تعیین شده میرن باید حواستون باشه به میزان اعتبار نتایج و بایاس های که وجود داره من یه علامت تعجب گذاشتم ولی بعد این علامت تعجب خودش یه دنیاست که پرسش‌های یک پرسشنامه اگر خودتون دارید طراحی میکنید باید چه جوری باشد تا روی افراد تاثیر نذاره یعنی افراد از روی شرم خجالت به هر حال ممکنه توی فرهنگ خاص

جوری پرسش‌ها جواب میدن اینا رو رفتارهاتون اثر نذاره خب مثلاً اینکه آیا با سیگار کشیدن موافقید یا اینکه مثلاً در یک سال اخیر چند سیگار کشیده اینا دو تا سوال متفاوته یعنی شاید اولیه حتی در حالی که طرف مثلاً سیگار می‌کشیده در واقع یه جور دیگه جواب بده یا حتی سوالاتون اگر رفت تو حوزه‌های باور طرف یا اتفاقات واقعی زندگیش اینا متفاوته یعنی میگه شما آیا اعتقاد دارید به این یه نوع پاسخ میتونه داشته باشه که خودت چیکار کردی پاسخ میده خب اینکه مثلاً اعتقاد داشته باشم سه بار در روز مسواک بزنم خوبه ولی حالا خودش چند بار میزنه مثلاً خودش اینا پاسخ های متفاوتی میتونه داشته باشه و اینا مواردی که باید لحاظ بشه این زیر مجموعه بایاس ها میشینه که خب میتونن کاملاً تأثیرگذار باش و اگه داورها ملا نکته‌ای باشن می‌تونن به این چیزهای شما گیر بدن یعنی جزئیات ببرن زیر سوال و باید حواستون به اینا باشه و خب اگه لازم شد

دقیق‌تر و جزئیتر ببینید که دیگران چه کارهایی کردند و منتشرش کردن و از چه حدی از استاندارد یا چه کفی از استاندارد لازمه تو در واقع حوزه انترویو یا مصاحبه با افراد باز دوباره همین اتفاق میفته خدمت شما عارضم شما بعد از جلسه می‌تونید با افراد یا پدر مادراشون و اینا مثلاً مصاحبه انجام بدید و یه سری موارد رو بپرسید خب مصاحبه کجا خوبه کجا بده خب به نظر میاد که چون دارید حس و حال آدم ها رو میپرسید اونا میتونن هر چیزی بگن و شما هیچ وقت خیلی نمیتونید صحت سنجی کنید مثلا میپرسید که آقا خوشحال بود یا ناراحت بودی و طرف بگه خوشحال بودم در حالی که مثلاً ناراحت بوده باشه و خب این که اگه اینجوریه که مضره کجا میتونه مفید باشه اتفاقاً مثلاً مادره یه چیزایی تو زندگی بچه اش خارج دیده که مثلاً میخوید ببینید آیا مثلاً مطالعه بالینی شما تاثیری گذاشته رو رفتارهای بیرون کودک یا نه و این جاهایی که شما نمی‌بینید اتفاقاً و حالا اون

خدمتتون عارضم که خود اینترویوها می‌تونه ساختار یافته غیر ساختار یافته باشه یعنی اینکه برای همه یک سری سوال از قبل تعیین شده و مشخص و کوتاه جواب وجود داشته باشه شما چند ساعت در روز این کارو می‌کنید فلان فلان یا اینکه نه حالا توضیح بده مثلاً بگو که دیروز رفتی از اینجا چه اتفاقی افتاد بعد این دیگه ما رفتیم خونه مادربزرگش بعد مثلاً در مورد ربات برای بچه صحبت کرد حالا باید دوباره از قبل و از جمله ای که اون میگه دوباره شما یه سوال دیگه استخراج کنید که نحوه تحلیل اینا رو خوب با چالش مواجه میکنه که من الان از بحث ما خارجه ولی یه کار کاملا تخصصی تحلیل محتوای مصاحبه ها بعضی از کنفرانس های قدیم حوزه رباتیک اجتماعی می‌پذیرفتن و و بعضا از شما درخواست می‌کردن که نتیجه مصاحبه ها رو به صورت مکتوب بیار یعنی تحلیل خاصی روشون نداشته باش فقط مثلا بیان بکن که مادر یک مادر دو چی گفته یا اشتراک مثلاً بچه هایی که

شرکت کردن چه جملاتی رو بیان کردن و فلان ولی خب عرض کردم به هر حال نوع تحلیل خاصی رو می‌طلبه تحلیل‌های رفتاری خدمت شما عارضم که میتونه چیز باشه میتونه مثلاً از فیلم‌های جلسات استخراج بشه میتونه خیلی دادگان غنی و جذاب و ارزشمندی باشه اینه که شما خیلی کاری به بیرون نداشته باشید و اینکه بیرون تو زندگی بچه چه اتفاقی افتاده مثلاً برای شما معیار نباشه شما فیلم های خودتون چیکار می‌کنید تو جلسات میاید ارزیابی میکنید و یه سری نمرات کمی به بچه میدید مثلا اینکه بچه چند بار با ربات صحبت کرده چند دقیقه بهش نگاه کرده چند بار به سوالات ربات جواب داده یا درست جواب داده یا مثلاً و و و انواع نتایج چند بار مثلاً در فاصله زیر یک متری از ربات و در نزدیکی حریم ربات قرار داشته خب اینا هی میشه کم می‌سازی کرد از فیلم ها در بیاد یه چالشی که اینجا به وجود میاد و رو تجربه بهش رسیدن و توی مقالات هم بعضا داورا بهش گیر میدن

ابیلیتی و اونجا اینجوریه که میزان توافق کد کننده‌ها یا نمره دهنده‌های مختلف روی فیلم‌ها از شما می‌خوان و میگن که اولاً حق نداره یک نفر فقط فیلم‌ها رو ببینه خب و در ضمن یه پله بالاتر میرن میگن حتی خود برگزار کننده مطالعه مثلاً اگه پایان نامه شماست بهتره که این کار را انجام ندید ولی معمولا این اتفاق نمیفته چون شما باید برید به یه عده پول بدید از بیرون که این کارا رو براتون بکنن و خب کسی یا شما پولشو ندارید یا کسی انگیزه این کار نداره و به اندازه کافی دل نمیده و خب اینجا خودتونید وجدانتون که چقدر دارید صداقت به خرج میدید توی تحلیل های که دارید انجام میدید ولی ماجرا اینه که اونا به فقط شما تنها هم راضی نمیشن میگن همیشه یک نفر دومی باید وجود داشته باشه که از حداقل ۲۰ تا کل فیلمو ببینه و برای خودش اون شاخص های شما نمره بده و شما چیکار کنید کلیشن بگیرید

همبستگی بگیرید ببینید چقدر دادگانی که بین شما و اون وجود داشته همخانه و معمولا اگر همخوانی از یه عددی بالاتر باشه بالای ۷۰ باشه پیرسون استفاده می‌کنند احتمالاً با فرمولشم آشنا هستید از قدیم مطلب حساب می‌کنید درباره ضرب و تقسیم ساده است خدمتتون عارضم که این مثلاً میان دیگه میانگین اون نفرات گزارش می‌کنن مثلاً فرض کنید شما برای میزان موفقیت بچه یه نمره از سد دادید اون یکی دیگه کدره یه نمره دیگه داده و خبلیشن شما مثلا بالای فرض کنید ۸۰ درصد شما میانگین نمرات به عنوان نمره نهایی حساب میکن تو مقاله و اونو معیار قرار می‌برید جلو خدمتتون عارضم که تحلیل فیلم ها بسیار بسیار بچه ها زمان بره عرض کردم خیلی میتونه غنی باشه ولی فوق العاده وقت گیره یعنی عرض به حضور شما زمانی که تو یل بودیم یادمه که

روانشناس استخدام کرده بودند حالا چه میدونم فرض کنید ماهی ۲۰۰۰ دلار به اینا حقوق می‌دادن که فیلم‌های جلسات اینا رو با اون پروتکلی که اون رئیسشون تعیین می‌کرد نمره دهی کنه و اینا بتونن توی مقالاتشون استفاده بکنن یعنی برای این کار آدم‌ها رو هایر می‌کردن استخدام می‌کردن حقوق می‌دادن و جز وظیفه اون فرد بود که ثانیه به ثانیه فیلمو ببینه و تحلیل بکنه به خصوص کار زمانی بغرنج تر میشه که تو یک ثانیه چند تا کار باید با هم ببینید یعنی اینکه مثلاً ببینید بچه به کجا نگاه کرده و در ضمن مثلاً چیزی گفته یا نگفته آیا رفتار کلیشه‌ای داشته یا نداشته رفتار ناسازگارانه داشته یا نداشته و اینا مثلاً فرض کنید جز کاراتون بوده و جز مجهاتون بوده که می‌خواستید توی ارزیابی رفتاری استخراج بکنید و خب این چالش میکنه کار فاز بعدی استفاده از سنسورها و در واقع ادوات و حسگرهای ضبط سیگنال های حیاتی بدنن مثل ضریب ضربان قلب سیگنال ای جی ای سی جی ام جی الی آخر و خب

اضافه به بدن آدم وصل کنید که حالا بعضی از طیف‌ها اصلاً با این داستان مشکل دارند کاملا باید اینا توی پروتکل اول بیان بشه مطمئن باشین که خطری نداره برای آدم‌ها خدمتتون عارضم که یه بزرگ‌ترین حسنشون اینه که اینا چیزن مردم معمولاً آگاهانه نمی‌تونن دستکاری کنن داده‌های اینا رو خب و طرف اگه حتی مثلا یه لبخند تصنعی هم به لب داشته باشه ولی مثلا زبان قلبش بالا باشه استرس داشته باشه شما ممکنه از سنسورهای دیگه بتونید متوجه بشید تا حدودی و ولی خوب معمولا ادوات گرونن داده ها میتونن نویزی باشن تحلیلشون داستان داره و سین کردن دقیق زمانی که داده ها شروع شده با اون مثلاً چیز یعنی پروتکل شروع شده با داده های که ضبط شده بسیار بسیار حائز اهمیت و اختلال در

هر کدوم می‌تونه ماجرا به وجود بیاره خدمتتون عارضم که و عنوان آخرم متریک‌های مبتنی بر کیفیت کیفیت عملکرد افراد توی تکالیف مختلف بوده که شما بعضا میتونید حالا یا خودتون تعریف کنید یا از استانداردهای دیگران نظیر مثلا کارهای گذشتگان استفاده کنید که چجوری میتونم این رفتار رو نمره دهی کنم مثلا فرض کنید که میخوید به تقلید بچه های نمره بدید خب از ۱۰۰ می‌خواید نمره بدید یا از یک می‌خواید نمره بدید چیکار می‌کنید یکی از راه‌هاش اینه که بشمارید از مثلاً ۱۰ تا ۲۰ تا نمی‌دونم ۱۰۰ تا چیزی که در اختیارش قرار گرفت تکلیفی که بهش ارائه شد چند تاشو درست انجام داد درصد بگیرید چون این پروتکل رو شفاف باید بیان کنید یا ارجاع بدید به کارهای دیگران که تو این حوزه استفاده کردن و بگید که منم دارم از این استفاده میکنم حرف پایانی تو این زمینه تو حوزه

هر کدوم از این آیتم‌هایی که گفتم میتونه مزایا و معایب خودشون داشته باشه و اتفاق جذاب کاربردی در واقع عقلانی اینه که شما همزمان از بیش از یکی از اینا استفاده بکنید و چقدر جذاب‌تر که بتونید بین اینا کوریلیشن هم بگیرید یعنی اینکه مثلاً از پرسشنامه استفاده کردید بعد مثلا طرف گفته که چه میدونم مادر ادعا کرده که ارتباط بچه‌ش قویتر شده با آدم‌های دیگه بعد مثلا برید شما تو فیلمم اینو ارتباطه رو یه جوری نمره دهی کنید یه چیزی که مشابه اونه و مثلاً ببینید تو طول زمان مثلاً کورولیشن وجود داره یا نه یعنی پیشرفتی میبینید تو این بین داده‌ای که توی پرسشنامه گرفتید یا توی بیوییر گرفتید یا نه یا مثلاً اگر ادعا کرده خوشحال بوده و شما مثلاً فرض کنید که یه در واقع مچ بندی داشتید که میتونسته سیگنال حیاتی بدن رو به گونه‌ای ضبط بکنه قضاوت بکنید که خب چقدر از این واقعا

مطالبی که هستش خدمتتون عارضم که من تو حوزه کوسشن را در واقع یه صلاح دیدم که یه اسلاید در واقع جداگانه داشته باشم من دو تا پرسشنامه خاص حوزه سوشال رباتیکس حالا البته به کارگیری تکنولوژی ولی بسیار بسیار تو سوشال رباتیکس متداوله رو خدمتتون دارم معرفی میکنم یکی پرسشنامه گاد اسپیده که توش عرض به حضور شما میزان شباهت ربات به انسان و میزان ادراک مث چیز هوش درک شده توسط مخاطبین و و غیره وجود داره که توسط باتنک ارائه شده و اگه دلتون بخواد میتونید پیگیری بکنید از این لینکی که خدمتتون هست یه پرسشنامه خیلی متداوله تو حوزه سوشال رباتیک دیگران استفاده میکن همینطور یه پرسشنامه دیگه هست به نام یو تی ای یوt حالا یونیفیدس تکنجی که نه فقط لزوما تو حوزه سوشال رباتیکس اما تو حوزه اکسپتنس تکنولوژی به کار

خودش شاخه‌های مختلفی داره مبنا و اساسش نوشته شده از ویکی پدیا می‌تونید دنبال بکنید زیر مجموعه‌اش اگه اشتباه نکنم ۱۱ تا شاخصه خب که لزوماً تو مطالعه شما همه اینا استفاده نمیشه ولی یکی از پرسشنامه‌های جذابیه که آزمونشو پس داده و شما چیکار می‌کنید می‌تونید برید آماده استفاده کنید و این گیر و بورلایی که بهتون گفتم مثلاً در مورد بایاس ها و فلانه میتونه اتفاق نیفته یا کمتر اتفاق بیفته چون دیگران استفاده کردن بارها ازش استفاده شده و دیگه معمولا کمتر آدما به اینا گیر میدن اما چند تا توصیه و ملاحظه به نظرم بد نیست اینجا خدمتتون داشته باشم چون ممکنه که کارهای تخصصی هم انجام بدید مثلاً ربات رو به کار بگیرید تو حوزه توانبخشی بچه های مثلاً مبتلا به دیفلکسی ها یا مثلا آموزش زبان اشاره بچه های ناشنوا خب اونجا اگه لازم شد شما باید متناسب با اون زمینه های تخصصیتون برید پرسش نامه های دیگه رو هم شناسایی و انتخاب بکنید تا حد امکان بچه ها خودتون نرید ترجمه کنید پرسشنامه رو چون

پرسشنامه به زبان مثلاً انگلیسی اگه باشه فقط ترجمه لفظ به لفظش و بعدش استفاده‌اش از نظر اونایی که نکته‌این تو این حوزه تو روش‌های تحقیق قابل قبول نیست میگن که شما اول باید روایی و پایاییش هم بررسی می‌کردید بعد میومدید استفاده می‌کردید شما ترجیحاً برید از چی تا زمانی که مجبور نشدید از پرسش‌نامه‌های ترجمه شده استفاده کنید مثلا ما تو کارهای قبلیمون از یو تی به زبان فارسی استفاده کردیم یعنی میتونیم به اون ارجاع بدیم اگر هم یکی ازتون پرسید این کیف فارسی شده میگید آقا مقاله قبلی حالا دیگه مگر اینکه طرف گیر بده که آقا روایی پایاییش بررسی شده تو زبان مقصد یا نه که دیگه خب اونجا ماجرا جدی تر میشه و مربوط به کمک یه سری افراد دیگه‌ای که آماردونن و باگر اند و این کارها میتونن بکنن مثلاً احتیاج خواهید داشت ولی در حالت کلی ممکنه بتونید اصطلاحا بجهید از این ماجرا و در ضمن بعضا نیاز میشه که تو اون حوزه کاری شما یا پرسشنامه نیست یا شما نیازمند پرسشنامه

سوالات اضافه‌تر هستی طراحی پرسشنامه اختصاصی شدنیه ولی نکات و جزئیات مربوط به خودشو داره از بحث امروز ما کاملاً خارجه و شما میتونید پرسشنامه‌هاتونو به هر حال طراحی بکنید الگو بگیرید از پرسشنامه استاندارد تو طیف‌های لیکرت باشه مثلاً از کاملاً مخالفم مخالفم بی نظرم موافقم کاملا موافقم مثلاً پنج تا در واقع سطح و لول براش بگیرید از یک تا پنج نمره بدید و مثلاً یه سری سوال بذارید جلو کاربر ولی شاید بهتر از اینکه کل پرسشنامه بخواد توسط خودتون طراحی بشه شاید شاید باز یه گزینه بهترش این باشه که بخش های از پرسش یعنی کارتون از پرسشنامه استاندارد باشه بخش های خودتون و من یادمه مثلاً یه کاری خانم دکتر مریم علی مردانی تو یکی از دانشگاه های هلند انجام داده بودن همین بود که مثلاً تو حوزه سالمندان می‌خواستن کار کنن یه پرسشنامه استاندارد داشتن چند تا سوال هم خودشون درورده بودن بعد دلایل اینکه این سوالا رو خودشون اضافه کرده بودن و البته جدا آنالیزش کرده بودن و نوشته

E:\courses\LangChain Project\main root\data\SCR_Session23_transcript_part4.txt

گرفته بودم با دادگان قبلی یا نه و اینجوری مثلاً توجیه کرده بودن چرا من کلاً پرسشنامه رو دارم از صفر طراحی می‌کنم بچه‌ها این عکسی از اتاق باز دوباره بالینی ما در دانشگاه ییل یه اتفاق جالب که اینو عامدانه و آگاهانه گذاشتن وجود این ساعت هستش این ساعته در نگاه اول شاید به نظر شما برسه که داره زمان گزارش میکنه ولی بیشتر از این برای سین کردن داده های ویدئو و سنسورها بوده یعنی اینکه مثلاً فرض کنید که چه میدونم از صفحه لپ تاپ داشته فیلمبرداری میشده سنسوری که به مچ بند دست بچه بسته بوده مثلاً دادگان داشته می‌گرفته و این اتاق هم داشته از عملکرد کودک فیلمبرداری می‌شده برای اینکه اینو سینک کنن داده‌هاشو این ساعت بزرگ رو داشتن که تا دقت ثانیه چیکار می‌کرد عرض به حضور شما زمان به آدم

به دست میاد خب نمونه‌هایی از باز کارهایی که تو پیپر خودم از متولولوژی یا پروسیجر داشتم و اینجا مثلاً ازژرمن تا پروسیجر داشتم خدمتتون میارم مثلاً تو بخش اسیسمنت تولزا معرفی کردم مثلاً من تو فلان مطالعه‌ام یه بخش ارزیابی انسانی هیومنسمنت دارم که توش مثلا با پروتکل آزمون است گرفته میشه با پروتکل خودش ۲۱ مثلا سوال که به ترتیب معلم با این پروتکل میره جلو و کودک یه نمره از ۲۱ کسب میکنه پرسشنامه ها مثلا پرسشنامه گاردز بوده تو شدت مثلا نشانگان اوتیسم پرسشنامه assp بوده توی میزان مهارت های اجتماعی بچه و و و و تمام ابزارهامون نوشتم و در نهایت اینکه چه می‌خوام ارتباط بین این بگیرم نوشتم خدمتتون عارضم که مثلاً نحوه نمره دهیم هم نوشتم مثلاً فرض کنید من توی فیلم ها میخواستم

گیس شیفتینگ یا تناوب نگاه استخراج بکنم نوشتم چه جوری نمره دادم یعنی بعداً تو اون جداول آدمو می‌بینن بدونن که عرض به حضورتون از کجا باید برن پیگیری کنند چه جوری نمره دهی داده شده یا مثلاً توجه اشتراکی باز چه جوری نمره دهی داده شده مثلاً یه نمره بین صفر تا یک یا صفر تا صد در اومده و اینا رو شفاف بیان کردم که اگه دلش میخواد به هر حال داور بیاد و اینجا با هم بحث کنیم یا وجود دارد از دیگران الگو میگیرید یا مجبورید خودتون تعریف بکنید و باید امیدوار باشید که کسی که بررسی می‌کنه اینو بپسنده در نهایت بعد از اینکه متدولوژی تمام شد شما باید در واقع ارائه نتایجتون رو داشته باشید پیپر های بالینی دوست دارن سکشن های ریزالت دیسکاشن رو از همدیگه جدا بکنن ما تو مهندسی بعضا دیدیم مینویسن ریز دیسکاشن انتظاری که میره تو بخش ریزالت باید صرفا در واقع نتایج

کیفیتون بیان بشه ولی تبیین نشه خیلی بحث و بررسی نشه یعنی فقط بگید که من تی تست گرفتم تی ولیوم رو حساب کردم این شد پی ولیوش این شد خب یا مثلاً فقط صرفا نشان میده که بین گروه یک و دو تفاوت معنادار آماری وجود دارد ولی توضیح اینکه چرا وجود دارد چرا به این نتیجه برسه دیگران چی گفتن و فلان و فلان اون میره برای در واقع یه سری از ژورنال ها تو بحث دیسکاشن ولی ما تو مهندسی ریزالت دیسکاشن بعضا با هم مینویسیم یعنی همون لحظه که به هر حال نتایج عددی میاری همونجا زیرش تحلیلامون هم انجام میدیم مقایسه با دیگران انجام می‌دیم و باید یادمون باشه که حتماً حتماً باید تو دیسکاشن ریسرچ کوسشن ها و هایپات جمع بندی بشن ما اول سه چهار سوال پرسیدیم باید یکی یکی به اینا جواب بدیم مثلا میگیم در کل این جمع بندی حاصل شد که پاسخ پرسش اول این است تو شرایط آزمایشگاهی ما اگر چیز فرضیاتی داشتیم هم این فرضیه تایید شد یا رد شد یا نه بی جواب موند و الی آخر یا فعلا صحبت زیادی

نمیشه در موردش کرد اینا رو باید حتما داشته باشید اما یک سوال اساسی به وجود میاد خب حالا این نتایج عددی که ما گرفتیم از این یا پرسش‌نامه‌ها یا فیلم‌ها الی آخر چه جوری نشون میده که مطالعه ما اثربخش بوده یا نبوده و چه جور تحلیل‌های آماری معتبری میشه ارائه داد که باید در ویدئوی بعدی با ما همراه باشید تا بتونید اینو ببینید و در نهایت هم کانکلوژن یا جمع بندی ماجراست دیگه تو جمع بندی پایانی خدمتتون عارضم که شما باید از اهم اون چیزهایی که دیدید و باهاش مواجه بودید و اون چیزی که یاد گرفتین و مشاهده کردین رو بیان بکنید و دیگران چه میتونن از این استفاده بکنند حالا اینجا ما یه آیتم دیگه داریم به نام لیمیتیشن فیوچر ورک یه عده مثلا ترجیح ش اینه که اینو قبل کانکلوژن بزارن یعنی محدودیت هاشون و کارهای آینده شون رو

جداگانه تو سکشن جدا بیان کنند بعضیا لیمیتیشنو اینجا می‌ذارن فیوچر ورک رو جدا می‌نویسند و حالا حالت‌های مختلف وجود داره که خیلی در واقع چیز مهمی برای ما الان نیست و ما باید اینو لحاظ بکنیم که می‌خوایم به چی برسیم اما این پایان بخش در واقع صحبت‌های امروزمونه در واقع این صرفاً یه سری از اون مطالبی که توی ریز دیسکاشن های مقالات گذشته خود بنده واسم وجود داشته شما نتایج باید ارائه بدین ستون ها نمودارهای ستونی گراف ها که مقایسه می‌کنم مثلاً حالت ربات بدون ربات و یه سری جداولی دارید که ممکنه الان ازش هیچی ندونید اینکه اف چیه پی چیه که ما قراره تو ویدیو جداگانه برای شما صحبت کنیم و اینم مثلاً جداولی که از تحلیل های محتوای فیلم ها به وجود اومده بسیار بسیار سنگین و وقت گیر و کلافه کننده بوده مثلاً شما فرض کنید که بنده مجبور بودم نزدیک

۹۶ ساعت فیلم و ثانیه به ثانیه ببینم تا در نهایت حالا یه مثلاً اکسل بلند بالایی استخراج بشه تا از اون اکسل‌ها بتونم این پی ولیوهایی که اینجا می‌بینید رو حساب بکنم و مثلاً خودش چند ماه کار بوده این جدول خدمتتون عارضم که اینا میشه دیگه فازهای انتهایی مقاله و در نهایت هم که خودتون می‌دونید بخش تغییر تشکره بخش‌های جداگانه‌ای که مهمترینشون کانترست یا تضاد منافع است و در نهایت به اصطلاح منابع و مخذه توی یادتون باشه از همه کسانی که بهتون کمک کردن از اسپانسر های که پول این مطالعه رو دادن از خدمتتون عارضم افرادی که کمکتون کردن از دوستاتون یا آزمودنی هایی که شرکت کردن خانوادشون تقدیر و تشکر بکنید بخش های پایانی مثل کانفلیکت آف اینترست یا حالا چیزهای دیگه روز به روز داره غنی تر میشه مثلا فرض کنید که بعضی از ژورنال ها

کنفرانس از شما می‌خوان میزان کانتریبیوشن افراد را بیان بکنید که چقدر مشارکت داشتند تو انجام کار تحلیل کار نوشتن کار اینکه فاندینگ از کجا بوده دیتا چقدر در دسترس کدهایی که نوشته شده چقدر در دسترسه خدمتتون عارضم که آیا کامپلکس آف اینترستی وجود دارد یا نه و چه اپیکال اپرووالی که داشتید از کجا بوده به چه شماره‌ای بوده و اینا مواردیه که حالا روز به روز داره غنی و غنی تر میشه و به این آیتم ها هی اضافه تر میشه یعنی ژورنال تو بخش اینستراکشن ش دارن مینویسند که هی اینا رو برای ما اضافه بکن مثلا میبینی شما اینو ننویسید همون اول برگشت میزنه میگه اینو اضافه بکن برگردون تا من بفرستم برای داوری خب این میشه پایان بخش صحبت ما اما چی اینجا باقی موند یک مسئله خیلی مهم باقی موند این که من اون یافته های عددی که داشتم که مشتی آشغال جلومه الان چه باید تحلیلشون بکنم چجوری جامعه علمی می‌پذیره که

وجود ربات یا وجود اون سناریویی که تو ذهن من بوده سبب شده که این تغییر ویژه مخاطبینم به وجود بیاد این زیر مجموعه آیتمی به نام آشنایی با تست‌های معنادار آماری که اینو توی ویدیوی جداگانه خدمتتون بیان می‌کنم خوش و خرم باشید خدا نگهدارتون

E:\courses\LangChain Project\main root\data\SCR_Session24_transcript_part1.txt

به نام خدا دوستان عزیز و ارجمند درس رباتیک اجتماعی شناختی عرض سلام در خدمتتون هستم با ارائه مطالب آخرین جلسه درسمون ذیل فصل چهارم که در مورد طراحی مطالعات اچ آر آی و نحوه ارزیابی یافته‌هامون بود به شکل سیستماتیک و توی این فصل می‌خواهیم در مورد تست‌های معنادار آماری برای شما صحبت بکنیم اگر شما درس های کاربرد آمار احتمال گذرانده باشید احتمالا این فصل براتون میتونه کاملا تکراری باشه ولی به صورت متعارف تا جایی که من میدونم بچه های رشته مهندسی مکانیک الزاما این درس رو نمیگذرونند و به همین دلیل با یکی از ضروری ترین مواردی که وجود داره در اطراف ما میتونه تو کارهای تحقیقاتی به خصوص کارهای میدانی و بالینی فوق العاده به کارمون بیاد به صورت متعارف نا آشنا اند و ما باید تلاش کنیم که این مطال

براشون حالا بیان بکنیم دوستان عرض کنم این در واقع مجموعه‌ای که می‌خوام خدمتتون ارائه بدم کاملاً در حد کفایت و مینیماله و به هیچ عنوان وارد هیچ گونه اثباتی نمی‌شم و اینکه روابط از کجا میان اینکه اون توزیع‌هایی که معرفی می‌کنیم در موردش صحبت می‌کنیم دقیقاً چی هستن خارج از محدوده صحبت‌های امروزمونه و سعی می‌کنم در حد کفایت این مطالب بیان بکن هر شخصی که لازم داشت جزئیات بیشتری از اینا بدونه یا توی مسائلی که باهاش مواجه شد به حوزه های خاصی از اینا نیاز داشت خوب ضرورت داره که بره خودش بیشتر مطالعه کنه و حالا در صورت داشتن سوال هم میتونه موارد با بنده مطرح بکنه که اگه در توانم باشه حتماً پاسخگو خواهم بود خدمتتون عارضم اما چرا این زیر فصل رو داریم بیان میکنیم ما جلسه گذشته که مباحث داشتیم اشاره

کردیم رسیدیم به اینکه خب ما توی مطالعات اچ آر آی مون یه سری یافته‌های عددی داریم چه جوری میتونیم یه جوری در واقع اینا رو بیان بکنیم که اثربخشی مطالعه‌مونو نشون بدیم و در ضمن جامعه علمی در دنیا هم اینو بپذیره متناسب با یه سری استاندارد باشه مثلاً صرف اینکه چهار تا بچه آوردیم و یه ایده‌ای داشتیم با ربات اجرا کردیم عملکردشون سنجیدیم و مثلاً فرض کنید میانگینشون شده ۸۰ درصد آیا این اثبات و ضرورتی داره مبنی بر اینکه مثلاً این کاری که ما کردیم فوق العاده اثربخش بوده یا نسبت به حالت های بدون رباتش خیلی موثرتر بوده و فلان و اینا پاسخ این که لزوما بله نیست و باید بهش فکر کنیم اجازه بدید قبل از شروع فصل مون دو تا مطلب حاشیه‌ای رو بیان کنم اولیش طرح یک پرسشه فرض کنید که شما میخوید کیفیت دانشگاه شریف و دانشگاه تهران رو

خدمت شما عارضم که میاید مثلاً درس فرض کنید یه آزمون مشترکی رو در نظر بگیرید فرض کنید مثلاً یه آزمون مشترک ریاضی برگزار شده تو دانشگاه شریف و دانشگاه تهران یا دوتا دانشکده مختلف مثلاً دانشگاه شریف و از یکی از کلاس‌های این دانشگاه مثلاً ۲۵ نفر از یکی از کلاس‌های اون ۳۲ نفر رو انتخاب می‌کنید و نمرات ش نگاه میکنید در جریان هم باشید که تعداد افرادی که تو این دانشکده هستند بسیار بیشتر از این حرف هاست مثلا ممکنه ۲۰۰ تا ۵۰۰ تا هزار تا باشه و فقط اونا رو نمونه برداری کردید میانگین گروه اول فرض کنید در دانشگاه شریف ۱۶.۲ و میانگین بچه های دانشگاه تهران مثلاً ۱۶ و۷ آیا میشه این نتیجه رو گرفت که بچه های دانشگاه تهران از دانشگاه شریف بهتر عمل کردن یا نه

و جامعه علمی در دنیا چه جوری اینو تحلیل می‌کنه اگر تا الان فکر می‌کردید که میانگین یک جامعه یک نمونه از جامعه آماری دقیقاً قراره نمادی از عملکرد کل جامعه باشه این دیدگاه دیدگاه کافی و کاملی نیست ما قراره به این سواله در انتهای این جلسه جواب بدیم این پاسخ اون سوال لزوماً بله نیست و نیازمند درگیر کردن چندین پارامتر اینکه اولا چه تعداد آدم کشیدی بیرون میانگینشون چند بوده انحراف معیارشون چند بوده تو گروه اول تو گروه دوم با داشتن این شش تا عدد حالا یه جوری بیایم ارزیابی بکنیم و تخمین بزنیم که آیا واقعا گروه مثلا دانشگاه تهران از بچه های شریف عملکرد بهتری دارند یا خیر این حاشیه اول بود و اما حاشیه دوم اینه که بنده

ازتون بپرسم خفن‌ترین ژورنالی که می‌شناسید چیه چه جوابی میدید خب ممکنه هر کسی برای خودش حالا با توجه به اینکه تحصیلات تکمیلی هم هستید هر کسی برای خودش یه ژورنالی رو مثال بزنه ممکنه اگر خیلی خیلی به روز باشید زیر مجموعه نیچر یا حالا هر چیز دیگه مشابه یا مثلا فرض کنید مثال بزنید که اینا ژورنال خیلی خفن حالا من کلمه نیچر نوشتم قبلاً نیچس باز کرده بودم اجازه بدید همینو ببینیم ما در مورد این ژورنال اطلاعاتی وجود داریم پ فکتورش عددی نزدیک به ۲۵ که فوق العاده عدد بالاییه که مثلا توی مهندسی ها ما به این عدددا خیلی نزدیک هم نمیشیم خب فرض کنید که ما این سایت رو باز میکنیم و کاملا تصادفی کاملاً تصادفی یه ژورنال ازش بریداریم خب عرض به حضور شما این همه ژورنال های که اخیرا منتشر شدن چون این اوپن اکسسه و نیازی به

خاصی نداره من همینو برمی‌دارم دانلود می‌کنم pdfشو و یه نگاهی بهش میندازیم بچه‌ها من این کارو کاملاً تصادفی انجام دادم نمیگم باهاتون شرط می‌بندم ولی خدمتتون میگم اگر شما به صورت کاملاً تصادفی پنج تا مقاله رو از این ژورنال‌ها باز بکنید همین ژورنال های که اگر مثلاً کسی از دانشگاه شریف فرزند توشون پیپر بده آخر سال جز عملکرد پژوهشی دانشگاه اینا بیان میشه اینا ژورنال های هستند که به قدری معروفن که عرض به حضور شما اینا رو میان در واقع بولد میکن اگر ژورنال کاملا تصادفی اینو باز کنید نمیدونم تا الان سوال شده براتون اینایی که دیگه دارن مثلاً تو خوف ترین جاهای دنیا چاپ میکن و به عبارتی لب مرز ترین کارهای دانش دارند چی دارن تو مقاله هاشون ها مقاله ش که نگاه می‌کنید می‌بینید اولاً هیچ

فرمولاسیون ریاضی عجیب غریب هیچ معادله دیفرانسیل غیر خطی هیچ انتگرال سه گانه و چهارگانه و این چیزهایی که شما تو اذهانتون بوده به عنوان بخش‌های خفن توی دنیا اصلاً وجود نداره ها اما جاش چند تا چیز دیگه وجود داره اولاً عکس‌ها و گراف‌هایی می‌بینید که نشون میده طرف بسیار بسیار توی حوزه کارهای تجربی و انجام آزمایش‌های دقیق خیلی آدم برجسته‌ای بوده و در ضمن فکر می‌کنم تو این مسیری که من داشتم اسکرول دا میکردم با یه سری عبارت های ساده ای که شما توی درس های ریاضی و آمار از قدیم دیده بودین مواجه میشید مثلاً یه عدد مثبت منفی اینقدر درصد حالا با یه ضریب اطمینانی یا بعضاً جلوش نمی‌نویسن که مثلاً شما میتونید پیش فرض ۹۵ درصد فرض کنید ها یا خدمتتون عارضم که با اصطلاح های که کاملا مثلا حالا تصادفی ممکنه چشمتون بخوره

پی ولیو و همچنین حرف‌هایی مواجه میشید یا اف تست پی ولیو و مشابها مثلاً ان و تست یا همچین چیزهایی مواجه میشید چیزی که واضحه اینه که دنیا توی سطح در واقع مرزهای دانشش وقتی می‌خواد یه اتفاق رقم بزنه مبتنی بر آزمایش‌های تجربی اتفاقاً برخلاف تصور عامه شما قبلاً به انتگرال های چندگانه به معادلات دیفرانسیل فوق پیچیده حالا عادی یا پاره ای اصلا احتیاجی نداره و حرفاشو جور دیگه‌ای بیان می‌کنه حالا یه سوال بعدی یا بحران بعدی براتون به وجود میاد که خب منی که کلی سال دارم ریاضی میخونم و فلان چرا این اصطلاحات را نشنیدم و این به نظر بنده یکی از نقاط ضعف در حال حاضر سیستم آموزشی ما توی کارشناسی برای بچه

که بچه‌های ما رو با این موارد فوق ضروری آشنا نمی‌کنه و ما امروز این افتخار داریم که برای خیلی از شما احتمالاً بار اول باشه که این مطالب بیان می‌کنیم برگردیم سر درس خودمون حالا با همه این مقدمه‌ها می‌خوایم در مورد تست‌های آماری شروع کنیم به صحبت کردن بچه‌ها من صحبت‌هامو با توجه به اینکه چند روز قبل متوجه شدم آقای دکتر خدایگان این مطالب رو به صورت فارسی آماده کردن و توی درس دی او ای خودشون درس میدن من با اجازه خودشون از اسلایدهاشون استفاده می‌کنم حالا یه سری جاها ممکنه برای شفاف شدن مطلب صحبت های خودمو بکنم یه سری چیزا اضافه بنویسم یا مثال ها رو فقط براتون بیانی عوضش کنم ولی خواهید دید که در واقع همه این حالا اون کارهایی که چه ایشون انجام میدن چه در واقع حوزه های دیگه همه بینشون مشترکه این حرفایی که می‌خوام بزنم و

مطالبشو از این کتاب برداشته توی دیزاین انالیس آف اکسپریمنت که خب در واقع توی اینجور کتاب‌ها یکی از جاهایی که شما با تست‌های معنادار آماری آشنا میشید صحبت‌ها رو اینجوری شروع بکنیم توزیع احتمالی بسیاری از پدیده‌ها و اتفاقات در طبیعت اطراف ما یا نرماله یا نرمال مدل میشه قبلا در مورد زیاد صحبت کردیم فرض کنید که مثلا ما میخویم چه میدونم یه باغچه داریم میخویم میانگین که توش هندونه کاشتیم میخواهیم میانگین وزن یا میخوایم وزن هندونه های برداشت شده از اون باغچه رو مدل کنیم خب مثلاً فرض کنید که اون هند اون باغچه سالانه کلی هندونه بده و ما شروع کنیم وزن هاش اندازه بگیریم بعد میبینیم که یه سری جاها خیلی زیاده تمرکز حالا وزن های کمتر هم وجود داره هر از گاهی وزن

بیشتری هم ممکنه تک و توک وجود داشته باشه اما چی بیشتر ماجرا کجا تمرکز پیدا می‌کنه یه سری جاهای خاص تمرکز پیدا می‌کنه که همونطور که از قدیم حالا باهاش آشنا بودید اگر در واقع pdf اینو رسم بکنیم یا فانکشن چگالی تابع چگالی احتمالشو رسم بکنیم می‌بینیم که خب در ساده ترین حالت با یک مدل در واقع نرمال یاسین مدل میشه که توی اون دو تا پارامتر خیلی ضرورت داشت که ازش بدونیم یک میانگین بود و دو انحراف معیار بود که چقدر حول این میانگینه پخش اند خدمتتون عارضم که این تابع چگالی احتمال از رابطه ریاضی یک به سیگما رادیکال دو پی ای به توان منفی یک ام در حالا اون متغیر تصادفی تو منهای می تقسیم بر سیکما کلا به توان دو تبعیت میکنه و شکلی شبیه زنگوله داره و خب چند تا ویژگی داره

مثل همه pdf‌ها نه فقط به خاطر اینکه توضیح نرمال داره اینه که انتگرال زیرش از منفی بی‌نهایت تا بی نهایت باید یک باشه یعنی احتمال اینکه پدیده به وقوع بپیونده یک حالا تو مسئله هندونه مثلاً ممکنه ما جرم منفی نداشته باشیم حتی جرم نزدیکای چه میدونم زیر مثلاً ۲۰۰ گرم هم نداشته باشیم از اونور جرم بالای مثلاً ۱۰ کیلو هم نداشته باشیم و خب خیلی سریع این نمودارها به سمت صفر میل میکنه عرض به حضور شما ولی احتمال در واقع انتگرال زیرش یکه و احتمال اینکه مثلا جرم هندونه مون بین یک تا دو کیلو باشه باید شما چیکار کنید باید از اون تابع چگالی احتمال صورتی رنگی که اینجا رسم شده از ایکس مساوی با یک تا ایکس مساوی با دوش انتگرال بگیرید و چی تا بتونید احتمال وقوع اینکه هندونه مثلا جرمش تو اون بازه باشه رو چیکار کنید پیدا بکنید اما این یک در واقع مسئله کلی و فقط محدود به تابع

نرمال نمیشه تابع توضیح نرمال ویژگی جذابی داره و اون اینه که انتگرالش از میانگینش مثبت منفی یک انحراف معیارش میشه ۶۸ صدم یا ۶۸ درصد میانگین مثبت منفی دو انحراف معیارش میشه ۹۵ و خورده‌ای درصد و میانگین مثبت منفی سه انحراف معیارش میشه ۹۹.۷ درصد یعنی اگر توزیعی توی اطراف شما توضیح نرمال باشه و شما میانگین و انحراف معیار اون توزیع را داشته باشید میتونید مطمئن باشید که از هر ۲۰ تا نمونه ای که بردارید حداقل ۱۹ تاش حالا ۲۰ تا تو تعداد کم حالا شاید نشه قسم خورد ولی تو تعداد بالا خدمت شما عرضم از هر ۲۰۰۰ تا ۱۹۰۰ تاش مثلاً چی باشن عرض به حضور شما توی بازه مورد نظر شما قرار میگیند یعنی شما نهایتاً

یک بیستم تو اون بازه نیستید و ممکنه با خطا مواجه بشید که خب این حالا اتفاق جالبیه که تو طبیعت عرض کردم خیلی از پدیده‌ها رو با این مدل می‌کنیم و خیلی هم کار راه میندازه هر وقت هم ایده‌ای هم نداریم بعضا اولین گزینه‌مون اینه که چک کنیم نرمال هست یا نیست یا با نرمال بریم جلو ببینیم حالا چی میشه و البته هم کتاب ها ته این ماجرا رو نون گرفتن یعنی هر چیزی که می‌شده با نرمال مدل کتاب های ماشین لرنینگ کلاسیک مراجعه بکنید میبینید که تمامی فرضهاشون جاهایی که فرضهای نرمال هست روابط نهایی و بسته تا جایی که ممکنه براش ارائه شده حالا خدمت شما عارضم که من اجازه بدید یکم گستاخانه عمل کنم و یه حرف عجیب غریب بزنم اینو از من بپذیرید ما توی توضیح های نرمال وقتی مثلاً می‌نویسن وای مد ان میو و سیما دو نمادی از تابع نرمال

جورایی خونده میشه که وای از این توزیع نرمال با میانگین میو و انحراف معیار سیکما ۲ تبعیت می‌کنه یا تو این از این توضیح پیروی می‌کنه خب خدمتتون عرضم طبیعتاً یکی از حالت‌های خیلی خیلی خاصش اینه که اون میانگین صفر و انحراف معیار یک باشه به این میگن توزیع نرمال استاندارد حالا اجازه بدید ما فرض کنیم تو دنیا فقط یه دونه تابع گوسی وجود داره و اونم تابع گسی نرمال استاندارد باشه خب بقیه چه میتونن به این ربط پیدا کنند میگه کاری نداره شما با یک تغییر متغیری که ما میگیم همه رو به این تبدیل بکن میگه که هر در واقع متغیر شما داری بیا منهای میانگینش بکن تقسیم بر سیگماش بکن میگه که اگر توزیع نرمال داشته بوده باشه این توضیح این در واقع تغییر یافته هم باز یک توضیح نرماله یه توضیح نرمالی داره که این دفعه میانگینش حتماً صفر و انحراف معیارش حتما یکه خب و

به جایی می‌رسیم که در واقع یک تابع واحد برای همه خواهد بود زد مساوی با صفر نماد اینکه شما دقیقاً روی میانگین قرار دارید به جای اینکه مثلاً بگیم وای مساوی با دو کیلوگرم مثلاً برای میانگین وزن هندونه‌ها مثلاً تو اون باغچه ما زد مساوی با یک یعنی نماد اینکه شما یک برابر انحراف معیار دور شدید از اون میانگین زد مساوی با منفی یک یعنی یک برابر انحراف معیار از میانگین کمتری و الی آخر و مجدداً همون اتفاق وجود داره یعنی توی این تابع در پی انتگرال پی کوچک دی زد از منفی یک تا یک همون ۶۸ درصد و و و خب اجازه بدید پس در کل چی شد ما تلاش کردیم فرض کردیم که یک تابع داریم به عنوان تنها تابع در واقع چی توزیع نرمال دنیا و اونم یه ویژگی داره و حول در واقع ایکس مساوی با صفر کاملاً متقارنه

و انحراف معیارشم یکه یعنی چی یعنی اینکه احتمال ۶۸ درصد شما چی داده‌هاتون تو این بازه منفی یک تا یک می‌افتند یا به عبارتی مساحت زیر نمودار باز منفی ۱ تا ۱ ۶۸ صدم در حالی هم که می‌دونیم از منفی بی نهایت تا بی نهایت انتگرالش دقیقاً یکه خب اینو در نظر داشته باشید پس شد ما یه دونه کلاً تابع توضیح دادیم که میانگین صفر و انحراف معیار یک حالا میخویم بریم واریانت های بدیم به این و وارد بحث اصلی مون بشیم خب خدمت شما عارضم که یکی از ویژگی های تقریبا یا کاملا روی اعصاب این حوزه‌هایی که می‌خوایم برای شما صحبت بکنیم ماجرای فوق پیچیده بودن مساحت زیر اینست یعنی شما فرض کنید که اینو بخواید از یه بازه من درآوردی تا یه بازه تا از یه شروع تا انتهای من درآوردی یا یک بازه من درآوردی بخواهید چیکار کنید انتگرال بگیرید

تابعی نیست که به راحتی بشه ازش انتگرال گرفت حتی خود این همچین هم راحت نیست ولی اتفاق خوبی که افتاده اینکه توی منابع مختلف جدول براش ارائه شده و یه پله جلوترش خوشبختانه الانا این کارا رو کامپیوترها به راحتی و در واقع به سهولت برای ما انجام میدن و یه کارای رو اعصابی که شما هی باید می‌رفتی جدول خوانی می‌کردید و تقریبا برای ما بای پس میکنن و این سبب میشه که اصلا این آماری هیچ کدوم با دست انجام نشه خب برای اینکه این اتفاق بیفته جداولی ارائه شده جداول مختلفی هستش که به شما مقادیر انتگرال ها رو میده مثلاً فرض کنید شما میخوید انتگرال زد مساوی با یک تا زد مساوی دو در واقع زیر نمودار تابع گوسی رو تو نرمال حساب بکنید باید چیکار کنید یه جدول ارائه دادن مثلاً به عنوان تابع توزیع تجمعی که انتگرال از منفی بی نهایت نقطه مورد نظر شما رو براتون میده که اون نقطه مورد نظرم فقط تو بخش های مثبت

خیلی چیز راحتیه و اینجوریه که شما مثلاً از این ستون باید مقدار یکان و رقم اول اعشار رو بخونید از این سطره باید رقم دوم اعشارو بخونید بیاد پایین تقاطع بدید و این مساحت مشکی رنگ زیرشو در واقع محاسبه کنید مثلاً زد مساوی با صفر یعنی دقیقاً وسط انتگرال زیرش از منفی بی نهایت تا صفر باید نیم باشه دیگه ها یعنی اینجا صفر/ صفر با صفر دو صفر رو بیاد تقاطع بدید انتگرالش نیمه یا ۵۰ درصد راه اومدید ولی مثلاً اگه رفتید زد مساوی یک رو دقیقا بخونید از زد مساوی با یک یعنی انتگرال از منفی بی نهایت تا زد مساوی با یک تا اینجا را بخواهید بخونید خدمت شما عارضم که اینجا میشه زد مساوی یک اینجا رقم دوم اعشاری صفره میاد تلاقی میدید میشه ممیز ۸۴ ۱۳ یا ۸۴ درصد حالا ممکنه سوال پیش بیاد براتون که شما نگفت ۶۸

داستان چیه من بهتون گفته بودم از منفی یک تا یک چقدره عرض به حضور شما ۶۸ درصده حالا شما الان میتونید اینم حساب کنید که مثلاً بگید خب اگه تا اینجا ۸۴ درصد بخش باقی ماندش چقدره یک من- ۸۴ درصده بعد از اونور به خاطر تقارن شکل از یک تا مثبت بی نهایت با منفی بی نهایت تا منفی یک یکیه اینم دارید این ۸۴ ۱۳ رو منهای اون عدده بکنید تا چی بشه تا این منفی یک بدست بیاد که اونجا عدد ۶۸ درصد تا یک و نیم سیک ما رو بخونید یعنی از من تا یک و نیم رو بخواید بخونید اینجا باید یک و از این و تا عرض به حضور شما ببخشید ۱. صفر۵ رو بخونید چون یک و نیم تو صفحه بعدیش مثلا افتاده ۱.0۵ رو بخونید میاید از اینجا یک تا صفر۵ و بدون اینکه شما بخواهید در واقع چیز خاصی انجام بدید درون یابی خاصی انجام بدید با دو رقم اعشار این جداول ارائه دادن حالا اینجا تا یک و دو دهم آورده ولی واقعا چیزی که جدولشون

ببینید که تا سه و خورده‌ای وجود داره مثلاً دیگه ۳.۶ دور شده باشید تقریباً انتگرالش یک هست یعنی شما از منفی بی‌نهایت تا ۳.۶ برابر انحراف معیار اگه برید جلوتر این دیگه عدد تقریباً یکه یعنی اصلاً دیگه چیزی باقی نمی‌مونه برای بعدی‌هاش و همینقدرم بهتون ارائه بدن کافیه جدول و شما میتونید اینجوری حالا برید محاسبه بکنید پس اینجا اولین اتفاقی که افتاد این شد که توی بخش های این جدول برای زدهای مثبت ارائه شده بود برای زدهای منفی میشه یک منهای در واقع این مقدار به ازای زد مثبتش که اینجا حالا مثلا یه همچین فرمولی بیان شده که عرض کردم چیز خیلی سخت نیست فی منفی زد میشه یک منهای فیz و فی هم نماد تابع توزیع تجمعی نرماله که از منفی بی نهایت تا اون نقطه لحاظ میشه جداولی هم هست از صفر تا اون نقطه لحاظ میشه که ما فعلا بهش کاری نداریم خیلی فرقی نداره همون

در نهایت به دست میاد خب برگردیم سر حرف اصلی خدمت شما عارضم که تا اینجا رو داشتیم من قبل از اینکه ادامه بدم یه درخواستی از شما دارم یعنی اینکه بشینیم با هم یه سری چیزا رو مرور بکنیم اولین چیزی که می‌خوایم مرور کنیم اینه که ببینیم چهار تا توزیع و می‌خوایم برای همدیگه یادآوری کنیم و بشناسیم یا اگر باهاش آشنا نیستیم الان بشناسیمش اولین توضیح تا توضیح چیه نرماله که بهش میگن نرمال دیستربیوشن از گوگل کمک میگیرید خدمتتون عارضم که نرمالی میزنیم چیزی که بهتون میده که همون فرمولی که اینجا درج شده بهتون میده شکل زنگوله اش بهتون داده داره میشه و اگه دلتون بخواد میتونید تو ویکی پدیا نگاه بکنید یا توی بخش های ایمیجش برید حالت های مختلف رو ببینید همون احتمال ۶۸ درصد و نمیدونم ۹۵ درصد و و و الی آخر رو اینجا مشاهده بفرمایید توضیح بعدی اسمشو میزارم تی دیسشن

تی دیستربیوشن رو نمیدونم چقدر باهاش آشنا هستید خب اینجا لازمه که یه سری توضیحات اضافه‌تری بعضاً داده بشه خیلی شبیه در واقع ظاهری شبیه زنگوله است خب و اون چیزی که مشخصه اینه که به نظر میاد یه جورایی باید شباهت‌هایی به نرمالی داشته باشه اگر ویکی پدیاشو باز بکنیم می‌بینیم که عرض به حضور شما یه فرمول فوق وحشتناکی داره که توش تابع گاما به کار رفته و یه پارامتری داره به نام نو که این نشون میده که برخلاف نرمالی که ما فرض کردیم تو عالم یک نرمالستربیشن داریم یعنی با میانگین صفر و انحراف معیاری یک حداقل فرق این تی اینه که یه نوع دیگه‌ای هم داره اضافه تر که سبب میشه چی شکلش احتمالاً فرق بکنه خب شکل ظاهیش بسیار بسیار به نرمالیستشن شبیه ها یعنی اونم شبیه زنگوله

ولی یه فرق اساسی داره اگر این مشکیه رو نرمال فرض کنیم اتفاقی که افتاده اینه که آبی‌ها رنگ‌ها رنگی‌ها آبیه بنفشه نارنجیه توضیح‌هایی هستند که بهشون میگن توزیع تی یا توزیع استودنت t خب که بسیار شبیه نرمال دیستروشن اما یه فرقی دارن اینکه اولاً قله هاشون تو pdf از نرمال دیستروشن پایین تره ولی با توجه به اینکه قرار انتگرال از منفی بی نهایت یک بشه سبب میشه تو نقطه هایی که در واقع اینور و اونور حالا دو انحراف معیار بوده اونا مقدارهاشون بیشتر بشه یعنی چی یعنی اینکه نرمالیستشن میگفت که ۹۵ درصد داده ها باید بین منفی دو تا دو بیفتن یا منفی دو برابر انحراف معیار تا دو برابر انحراف معیار بیفتند ولی توزیع تی این اجازه رو میده که نه مثلا شما چه میدونم

یعنی فقط اونجا تو نرمال می‌گفت نهایتاً ۵ درصد داده‌ها اونور ۲ یا اینور منفی ۲ می‌افتن ولی توضیح تیر این اجازه رو میده که بیشتر این اتفاق براش بیفته و احتمال منفی دو تا دوش کمتر از ۹۵ درصده ها این توزیع یه پارامتری داره به نام نو که بهش میگن درجه آزادی و اونم در واقع به این ربط داره که شما چند تا داده داشتید و دارید توزیع و از روی مشاهدتون از رو چند تا داده میخوید در واقع یه دیسشن برای اونا رسم کنید و این نوع از فرمول n منهای یک بدست میاد و بهش میگن درجه آزادی یا دیگری خب یعنی اگه شما ۱۰ تا داده داشته باشید درجه آزادی شما ۹ و باید بیاید چیکار کنید تی و با نوع نه رسم بکنید ببینید چه شکلی داره اتفاق جالبی که میفته اینه که هرچی اون نو بیشتر میشه تعداد مشاهدات شما بیشتر میشه تی دیستربیوشنتون به سمت نورمات دیستربیوشن میل میکنه یعنی

میره بالا و بالاتر اینوریاشم هی میان پایین و پایین‌تر تا دقیقاً به نرمال برسن اگه می‌خواید بدونید چند باید باشه که خودش باشه عدد ۳۰ خیلی خوبه خیلی نرماله عدد ۶۰ به بالا خیلی خیلی خیلی دیگه نرماله یعنی اصلاً میشه اونجاها دیگه واقعاً نرمال فرضش کرد اگر شما ۶۰ تا مشاهده دارید و ۶۰ تا داده دارید دیگه نیازی نیست به در واقع مراجعه کنید درجا نرمال میتونید فرضش بکنید حالا یه آقایی به نام ویلیام گاست اینو روش کار کرده گفته بود که تو تعداد داده های محدود این توضیح نرمال خیلی خوب کار نمیکنه داده ها از یه توضیحی پیروی میکن به نام توزیع تی زمانی که مقالشو داد اسمش ناشناس داد با اسم استودنت اینو معرفی کرد بعدا بهش گفتن استودنت تیه حالا اینکه چرا استودنت روایت های مختلفی وجود داره اینجا اگه دلتون خواست تو ویکی پدیا میتونید ببینید که چه دلایلی وجود داره چرا از کلمه در واقع

استیودنت استفاده کرد و اسم خودشو به کار نبرد حالا کاری نداریم خیلی تو بحث ما نیست اما حرف حسابش اینه حرف حسابش اینه میگه که اگر شما از یک جامعه آماری خب یک جامعه آماری نرمال داده‌برداری کنید مثلاً ۲۰ تا داده کشید بیرون خب این ۲۰ تا داده برای شما یه میانگینی دارند که ما اسمشو ایکس بار می‌ذاریم این جامعه برای خودش یه میانگینی داره شما ۲۰ تا داده شده در اختیار دارید ولی اگه یک میلیون تا داشتید میانگینش چند میشد ها میگه اختلاف بین عدد این عددی که از ۲۰ تا به دست آوردید با اختلاف میانگین واقعیش تقسیم بر اس تقسیم بر رادیکال n یه چیزیه که از توضیح تی تبعیت میکنه من اجازه خو اینجا یه در واقع چیزی بیان بکنم که شما تو کتاب های آمار قطع خواهید دید و امیدوارم گیج نشید خدمتتون عارضم که مثلا هر توضیحی فرض کنید که یه سری ویژ

مشخصات فوق معروف‌تریناشون میانگین و انحراف معیار ما کتاب‌های آمار علاقه دارند که در واقع میانگین جامعه آماری یعنی کل کل اون جامعه و انحراف معیارشو با حروف یونانی میو و سیگما نشون بدن خب و کلاً پارامترهای جامعه رو با حروف یونانی نشون میدن ولی پارامترهای عرض به حضور شما توضیح های حالا آبزرویشن یا نمونه هامونو مجموعه نمونه مجموعه ابزرویشن ها مشاهداتمون که ما بهش میگیم نمونه و تعدادی از این مشاهدات با همدیگه دسته شدن و یه نمونه رو تشکیل میدن و با حروف لاتین نشون میدن و مثلاً ایکس بار یا اس یا ممکنه سیما هت یا میو هت از این اصطلاح ها استفاده میکن عموما همون ایکس بار و اس ولی بعضی جاها ممکنه سیگما هت ببینید که نمادی از اون یکیه خدمتتون عارضم که پارامتر

سبز رنگ برای ما جذابن برای ما دوست داریم شناسایی بشن نمادی از کل جامعه مورد هدف ما هستند پارامتر قرمز رنگ پارامترهایی که ما با اون تعداد داده‌های محدودی که در دسترس داریم می‌تونیم محاسبه‌اش کنیم ولی سوال اینجاست چه جوری از این قرمزها یه تخمین مناسبی از این سبزها پیدا کنیم این بحثیه که ما امروز می‌خوایم در واقع روش بریم جلو و حالا بگیم که در واقع چه آزمون های آماری وجود داره که دنیا میپذیره اینو اگر این کارا رو بکنید این رویه رو برید جلو ازتون میپذیره که بالاخره با یه درصد خطایی بگید که مثلاً من حدس میزنم که با این اعداد قرمزی که در اختیار دارم سبزها چند خواهند بود خب حالا پس دومین توضیحی که شناختیم شد توضیح تی که یکم جلوتر حالا دوباره تو جزوه باهاش مرور میکنیم خیلی شبیه زنگوله بود یه سری ماجراها داشت و اونجا اینجوری بود که وقتی با مجموعه داده های محدود

E:\courses\LangChain Project\main root\data\SCR_Session24_transcript_part2.txt

داشتیم کار می‌کردیم دیگه ایکس منهای میو تقسیم بر حالا انحراف معیار تقسیم بر رادیکال ان که تعداد داده‌هامون باشه از توضیح نرمال طبیعت نمی‌کرد و یه توضیح دیگه‌ای داره که بهش میگن توضیح تی خیلی روش کار کردن حالا در همین حد فعلاً کفایت بکنه و بمونه بریم ادامه بدیم یه توضیح دیگه‌ای وجود داره به نام کای اسکورد خب دو هم بعضاً بهش میگن حرف یونانی و براش مینویسه توضیح که داره خوب اولا یه همچین فرمولی داره برخلاف تی و برخلاف توضیح تی و توزیع نرمال که از منفی بی نهایت تا بی نهایت توضیح اولا توی چیزه توی ایکس های مثبت فقط دیده میشه خدمتتون عارضم میتونه شکل های مختلفی به خودش بگیره شبیه تdcon که یه پارامتر داشت تغییر میدادیم و اون اسمش بود درجه آزادی و سبب میشد که این درجه آزادی که تغییر بکنه

بالا پایین تر باشه اینجام همینه کای اسکوردم جوریه که یه پارامتر داره به نام درجه آزادی که اونو تغییر بدید شکل میتونه متفاوت باشه و خدمتتون عارضم که می‌تونید بهش حالا مراجعه بکنید که چی داره میگه ما خیلی الان باهاش کاری نداریم اینا شکل‌های مختلف به ازای درجات آزادی مختلف و عرض به حضور شما میتونید در واقع توضیحاتشو ببینید برخفالیستشن که حول یه جایی متقارن بود اینجا اینجوری نیست البته هرچی کا میره بالاتر به نظر میاد میره اون اتفاق براش بیفته ولی این سبب میشه که نمودارهاش در واقع متقارن نباشد و این کا اسک هم اینجوریه که میگه اگر شما از یه توضیح نرمال خب بیاید به تعداد کا تا عرض به حضور شما نمونه برداری بکنید و جمع

توان ۲ اونها رو محاسبه بکنید این کار حالا نمونه برداری بکنید کار انجام بدین این جمعه کیوها از یه توزیعی تبعیت می‌کنند که بهش میگن توضیح کایدو و اگر رسمش بکنید این اتفاق براشون میفته این شکلا براشون میفته که فقط همین قدر بدونیم برای ما که کارمون راه بیفته چون با خود کایدو الان اصلا کاری ندارم خب و معرفیش کردم براتون چون یه چیزی می‌خوام بگم که به این نیاز داره همین نماد از نمادی از اینه که ضد به توان دو به خصوص برای توضیح نرمال استاندارد که انحراف معیارش یک بود این نمادی از در واقع مفهوم و میانگین صفر نمادی از چیزه دیگه محاسبه انحراف معیاره دیگه درسته حالا خدمتتون عارضم که تقسیم بر مثلاً یه عددی میشد برای شما نمادی از انحراف معیار را داشت دیگه اینه که میانگین صفره اومده یه چیزایی از میانگین مثل اینکه کم شدن به توان دو رسیدن جمع شدن و این مثل اینکه توزیع حالا

معیار یا جمع توان ۲ مثلاً داده‌هایی که شما از یه توضیح نرمال بکشید بیرون به تعداد محدود کاتا عرض به حضور شما جمعش از برای خودش یه دیستربیشنی داشته باشه که همچین شکلی داره خب اینو گفتم که بریم سروشن آخون و اونم اف دیستربیوشن باشه بهش میگن تابع فیش تابع فیشر به نظر میاد خیلی شبیه از لحاظ ظاهری حداقل شبیه تابع کا دو جهت اطلاعات اون تابع فیشر بر خلاف کا دو و یا تیستربیوشن که یک دونه پارامتر داشتند به عنوان درجه آزادی یک و با اون یک دونه پارامتر دیگه به شکل یکتا حول صفر مثلاً معلوم می‌شدن این دو تا پارامتر داره یعنی اولا شکل هاش خیلی متنوع تره و دو تا پارامتر باید بدید که به صورت واحد تعیین بشه یک داره یه دی دو داره و خدمتتون عارضم اینکه چجوری محاسبه میشه حالا اینجا نوشته شده باز دوباره اونجا شما لازمه توضیح

ریاضی پشت داستان اصلاً کاری نداریم چون قرار نیست اینا رو خودمون حساب کنیم اکسل مطلب نرم‌افزارهای آماری مثل اینا که حالا مینی تب براتون بیان خواهیم کرد این کارو می‌کنن و ما نیازی نیست بشناسیم فقط چه ربطی به خداش اینه که در واقع می‌توان نشان داد که پارامترهای دو تا پارامتر کای اسکورت که روی هم سوار بشن نسبتشون گرفته بشه توضیحات داشته باشند نسبتشون توضیح فیشر داره خب که این ثابت میشه باز کاری به ما نداره و فقط همین قدر بدونید که این وجود داره حالا میشه و اینو حالا تو کارهای ما که تو انواع معرفیش میکنیم در قالب اف تست دیده میشه و اگر شما تو همون پیپر های که اینجا مثال زدیم دیدید تی تست رو دیدید یا fs رو دیدید داره برمیگرده به اینکه آها یه چیزایی در مورد توضیح های تی دیسربیشن یا ftشن داره میگه و محاسباتشو بر مبنای اونا داره حالا حساب میکنه

تمام اینا رو گفتم که به این نقطه برسیم پس ما چهار تا توضیح معروف نرمال دیسربیوشن کای اسکورت دیستربیوشن و بیان کردیم و گفتیم که دو تا پارامتر داره که درجات آزادی یک و دوش باشند و با اونه که شکلش یکتا معلوم میشه خب برگردیم سر حرفمون و اینکه همین قدر بدونید که آمار کاربرد دارند اگرچه خب طبیعتاً تنها تنها معروف دنیا نیستند شما بی نهایت اولا وجود داره ولی به جز این معروف ها هستند و این که این از همدیگه به همدیگه تبدیل میشن یعنی از یه سری محاسباتی دارند چه میدونم این از بتا توضیح بتا به توضیح گاما چه ربطی دارند و فلان فلان مثلاً یادم رفت خدمتتون بیان کنم توضیح گاما رو نمیدونم کسی یادش هست یا نه مثلاً اگه دلتون خواست برید پلات کنید برای خودتون ببینید نمادی از مثلاً فاکتوریل توی اعداد حقیقیه خب که مثلا تابعی که توی اعداد صحیحش

مقادیرش میشه همون فاکتوریل خودمون ولی بینابینشم یه سری چیزا تعریف شده میگم عرض کردم خیلی به ما ارتباطی نداره کاریشم نداریم ذهن خودتونم مشغول نکنید خب برگردیم سر کارمون فرض کنید که حالا شما توی کاری که دارید انجام میدید با نمونه برداری و توضیح محدود داده مواجهید اینکه مثلاً می‌خواید ببینید آیا استفاده از ربات‌ها و اون مثلاً پروتکلی که شما ارائه دادید میتونه سبب افزایش مهارت های اجتماعی شناختی بچه‌های طیف اوتیسم بشه یا نه آیا می‌تواند یادگیری ریاضی توی یه عده دانش‌آموز زیر ۹ ساله مثلاً مدارس تهران بالاتر ببره یا نه خب ماجرا اینکه جامعه شما کل دانش آموزان و مدارس تهران یا کل کودکان مبتلا به طیف اوتیسم دنیا یا ایرانن و ولی شما دارید چیکار می‌کنید پنج تا ده تا ۱۵ تا نهایتاً ۲۰ تا آدم میارید ها اصلا نه ۵۰ تا آدم میاری و چه میخوید ببینید که

اعدادی که دارید حساب می‌کنید در واقع با چه احتمالی می‌تونن نمادی از جامعه باشند و آیا مثلاً چه می‌دونم استفاده از پروتکل ۱ و ۲ نسبت به هم مثلاً روی بچه‌ها تاثیر گذاشته فرقی داشته یا نه بازم با این تعداد محدود ببینید ولی رو جامعه حرف بزنید یه بار دیگه عرض می‌کنم شما رو تعداد محدود آزمایش انجام میدید اما می‌خواید تعمیم بدید به اینکه آیا برای اون جامعه این اتفاق که من گفتم میفته یا نه این کل چالش معلم اینه خب وقتی شما یه یک نمونه ورداری می‌کنید یعنی n تا داده برارید چیزی که خوب میشه ازش محاسبه کرد میانگین نمونه است که جمع تمام نمونه ها تقسیم بر تعدادش باشه این وای بار همون ایکس بار نمادی از حدس ما در مورد میانگین جامعه است یعنی اگه به من بگن یه عدد بگو که میانگین جامعت حدس میزنی چنده هیچ اطلاعات دیگه در دسترسم نباشه فقط به من بگن یک شانس داری یک عدد داری من همون میانگین که

به نظرم این میانگین جام است اگه این حقو بهم بدن که بگن نه یک بازه بگو بگو که میانگین جامعه تو چه بازه‌ای می‌افته حالا اونجا یه کار دیگه‌ای می‌کنم و میگم ایکس باری که اینجا به دست آوردم مثبت منفی ضریبی که اون ضریب حالا بهشن های تی و اینا ربط داره و حالا میبینیم در ادامه که چجوری میشه با یه احتمالی گفت که میو جامعه تو کدوم بازه میفته مسئله بعدی واریانس نمونه است و اینکه وقتی که شما تعداد محدودی داده داشته باشید واریانسی که میشه محاسبه کرد در واقع این مدلیه که شما وقتی که وای بارها وای ها رو یا تک تک داده های نمونتون رو آبزرویشن مشاهداتتون رو منهای میانگین در واقع اون نمونه ای که داشتید میکنید میانگین که بالای حساب کرده بودید به توان دو میرسونه جمع میزنید دیگه نمیاد تقسیم بر ان بکنید اینو تقسیم بر ان منهای یک

و بهش میگن اس ۲ و خدمتتون عارضم که تخمینی از واریانس جامعه رو دارند یعنی اس ۲ واریانسیه که تخمینی از سیکمادوئه خب و حالا اینکه چرا n منهای یک می‌ذارن باز دوباره خیلی باهاش کاری نداریم فقط در این حد شهودی بهتون میگم که ادعاش اینه که شما آقا n تا داده داشتید رفتید قبلا یک میانگین ازش حساب کردید یعنی اینکه یک بار قبلاً ازش یه سری چیزا حساب کردید یه دونه داده لااقل انگار کمتر دارید و خرج کردید و تعداد داده های مستقل فعلیتون دیگه ان نیست شما تو این در واقع فرمول دارید از یه چیزی به نام وای بار استفاده میکنید که قبلا خود این داده ها استفاده کرده بودید بعد میگه آقا اینجا دیگه مخرجشو n نذار و n من- یک بزار مخرجش که کوچکتر بشه سبب میشه که اس نسبت به اون چیزی که شما فکر میکنید با تعداد داده های کم عرض به حضور شما عدد بزرگتری بشه

و حالا همونطور که تو ادامه نشونتون میدم این نشون سبب میشه که ما محافظه کاری خودمون رو بالاتر ببریم یعنی چون تعداد داده‌هامون محدوده سعی کنیم اصطلاحا کمتر دروغ بگیم یا احتمال اینکه در واقع اشتباه بگیم و بیاریم پایین‌تر و طبیعتا انحراف از استاندارد یا انحراف از معیار هم میشه رادیکال واریانسش که خب با اس نشونش دادیم خدمتتون عارضم که اینجا توضیح تی رو معرفی کرده فرملاشو نوشته و همون شکل رنگی رو اینجا کشیده و گفته که هر هرچی تعداد داده هاتون بیشتر باشه چی میشه عرض به حضور شما شما به توضیح نرمال هی نزدیک و نزدیک تر میشید خدمتتون هم عارضم که حداقل تعداد داده هایی هم که مد نظرمون که ما بتونیم کارمون رو شروع بکنیم باهاش دوتاست یعنی اینکه یک اگه اینجا باشه مخرج و صفر میکنه معنی هم نداره شما یک دونه داده داشته باشید معنی نداره بخواید ازش انحراف معیار بگیرید خدمت شما عارضم که پس اینم از این اینم باز اینجا بگم خدمتتون به محض

داده‌ها بره بالاتر مثلاً بالای ۲۵ ۳۰ تا بشه دیگه این خیلی چیز نداره این عدده با اون سیگما دیگه خیلی فرقی نداره یعنی همون جاییه که باز دوباره تعداد داده‌ها که از ۲۵ ۳۰ و دیگه عرض کردم بدترین حالت ۶۰ عبور بکنه تعداد داده‌های در دسترستون بسیار بسیار اون فرموله با این فرموله همخانه و یه جورایی تیسلیشن به نرمالی کرده ماجرای بعدی هم که در مورد انحراف از معیار میانگین هاست من خیلی سریع اشاره میکنم باز اینم بپذیریم این که میگه فرض کنید مثلاً شما ۲۰۰۰ تا داده دارید مثلا مثلا چه میدونم ۲۰ تا بازه صد تایی شکوندید اینا رو بعد میگه این ۲۰۰۰ تا داده برای خودش خب یه توضیحی داشته ولی اگر اومدید مثلاً ۲۰ تا سبد ۱۰۰ تایی ش کردید هر کدوم از این ۱۰۰ تایی ها هم یه توضیح برای خودشون دارن هر کدوم از ۱۰۰ تا هم یه میانگین دارن میانگین میانگین های اینا میشه همون

کل ۲۰۰۰ تا خب میگه اگر بیاید میانگین‌های این بسته‌هاتونو پلات بکنید و از میانگین‌هاش یه توضیح احتمال رد بکنید که این خاکستریه باشه این توضیح احتماله عرض به حضور شما چه جوری خواهد بود این توضیح احتمال احتمالاً می‌تونید بپذیرید شهودی که باید واریانس خیلی خیلی خیلی کمتری نسبت به حالت عادی داشته باشه که چی من اون ۲۰۰۰ تا داده رو با همدیگه بشینم حساب کنم یعنی فقط بین میانگین ها میخوام ببینم خودشون چقدر با همدیگه فرق دارن تازه این ببینید اینجا هم خیلی اغراق آمیز میانگین نسبت به هم فاصله دارند و اونجا نشون داده میشه که انحراف از معیار میانگین ها میشه چی انحراف توی تعداد داده های بزرگ یا حالا از تقریبا میشه همچین چیزی مدلش کرد که انحراف از معیار در واقع مجموعه مون تقسیم بر رادیکال n تعداد داده هامون باشه با این میشه تقریبش زد و خب حالا

بریم کارو ادامه بدیم خدمتتون عارضم که همونطور که جدولی ما داشتیم که تابع نرمال استربیشن میومد انتگرال زیرشو حساب می‌کرد حالا چه از منفی بی‌نهایت تا اینجا چه از اینجاش تا مثبت بی‌نهایت و الی آخر و تو جداول داده میشد برای در واقع توزیع تی هم همچین جداولی وجود داره شما اصلا نیازی نیست از اون رابطه فوق پیچیده‌ای که در مورد تی وجود داشت بخواید انتگرال بگیرید و عرض کردم اینو نرم افزارها به راحتی هرچه تمام‌تر انجام میدن و خوب خیلی راحت شما میتونید چیکار کنید مثلاً مساحت بخش هاشور خورده مشکی رو چیکار کنید اینجا محاسبه بکنید حالا دو نوع در واقع جدول وجود دارد اینجا که خدمتتون بیان می‌کنم که حالا ممکنه شما اگه خودتون با دست بخواید انجام بدید بالاخره با یکیش راحت تر باشید خب یه حالت اینه که جداولی رو به شما میدن که عرض به حضورتون

میگن که شما دوست دارید احتمالتون از چه عددی مثلاً کمتر حالا یا بیشتر باشد من به شما تی چیزو میدم تی مرزی رو میدم که اون اتفاق بیفته یا یه جداولی وجود دارند که شما تی رو بهش میدین احتماله رو بهتون میده یعنی مساحت زیر نمودار بهتون میده خب اینه که ما در واقع احتمالا تیم ارزی رو به ما بده خیلی برای ما کار راحت تر میکنه یعنی این جدول خیلی بیشتر میتونه به درد مون بخوره خدمتتون عرضم مثلاً این جدولی که اینجا میبینید از اون نمونه است اینکه میگه مثلاً شما عرض به حضور شما چند تا داده دارید مثلا فرض کنید شش تا داده داشتید شش تا بچه گفتید بیاد و تست گرفتید نوتون میشه یکی کمترش میشه پنج خب بعد می‌خواید پیدا بکنید که تی مرزی که تی مرزی که شما مثلاً به احتمال ۹۵ درصد تو منطقه سفید و

۵ درصد تو منطقه مشکی بیفتید چنده خب میرید ۵ درصد و مثلاً می‌خونید یا ۵ هزارمو تی مرزیش میشه ۴.۰۳۲ خب این پس تی نو و آلفاست اوکیه بعد شما می‌رید تی خودتونو حساب می‌کنید اگر بتونید حالا اگه شرایطش وجود داشته باشه مثلا چه میدونم وایبا رو دارید مثلاً میوتونو خودتون یا تخمین یا تعیین کردید حالا مثال میزنم در ادامه یا اینکه یه جوری اونا به ما گفتن اس رو دارید از تعداد داده هاتون ان هم دارید رادیکالش پس دارید یه تی هم شما دارید نگاه میکنید تی شما کدوم ور افتاده و بعدش میگید که اوکی من میتونم الان ادعا کنم که گروه من پیشرفت کرد یا نکرد خب یه همچین چیزایی پس این جدول که شما نو و آلفا رو بهش بدید و تی مرزی یا تی بحرانی ازش بخونید با تی خودتون مقایسه کنید خیلی جدول کاراتریه ولی جدول های دیگه هم وجود دارد که مثلا ما اینجا

می‌تونم بهتون نشون بدم جدولی که شما نو بهش میدید عرض به حضور شما تی هم بهش میدید می‌تونید چیکار کنید البته این یکی هم نه باز اینجام چیز داده اونجا همون تی بحرانیه رو به شما میده آره ولی عرض کردم دیگه حالا یعنی وجود دارد مثلا جداولی که شما تی رو بهش بدید نورم بهش بدید اون پی شما بده بگه چند درصد احتمال مثلا زیر نمودارتون خواهد بود خب خدمتتون عارضم که من فکر میکردم اینجا دارم که ندارم انشالله تو اینترنت میشه به راحتی پیداش کرد و البته تو اکسل هم خیلی راحته سرچ بزنید چجوری میتونید مقدار رو پیدا بکنید انتگرال زیرش پیدا بکنید اینا همه وجود دارد خب خدمتتون عارضم که بریم سر یک مبحث خیلی خیلی مهم و کلیدی توی بحث های آماری که همون اساس کار در واقع اون مطالعات بالینی که همه انجام میدن و دنیا صرف

کار میکنه یا تو حوزه‌های دیگه پزشکی یا بالینی یا آزمایشگاهی چه چیزیو معیار قرار میده ما می‌خوایم مفهومی به نام مقایسه آماری نتایج آزمایش‌ها با همدیگه بررسی بکنیم دو راه کلی پیشنهاد میدیم پیشنهاد اول یک چیزیه به نام آزمون فرض که کار ما رو راه میندازه اما کامل‌ترین نیست یه چیزی از این کامل‌تر وجود داره به نام روش بازه اطمینان یا کانفیدنس اینتروال که حالا به اینم اشاره میکنیم ولی الان برای پیشروی مون با این آزمون فرض سعی بکنیم کارمون رو در بیاریم اون مفهوم به شما انتقال بدیم بالاخره کار خودمون رو سعی کردیم به خوبی انجام بدیم خب خدمت شما عارضم که مسئله از این قراره من یه مقدمه خیلی کوتاهی بگم برگردیم سر کارمون فرض کنید که ایکس یک یک توزیع تصادفی داره مثلا فرض کنید

یک نمادی از اینکه شما یک بیسکویت خریدید بیسکویت مثلاً مادر و روش نوشته چه میدونم ۲۰۰ مثبت منفی مثلاً ۱۰ گرم خب این یعنی چی و حالا ممکنه جلوشم نوشته باشه احتمال ۹۵ درصد ممکن ننوشته باشه ما ۹۵% فرض می‌کنیم این یعنی چی این یعنی که اگر این توضیح نرمال داشته باشه اون شرکت سازنده اطلاع داره یا حداقل داره ادعا میکنه که میو من دوسته ۲۰۰ گرمه یعنی بین تمامی بیسکویت های که من تولید کردم چه میدونم صد هزار تا یه میلیون تاشو رفتم بررسی کردم ۲۰۰ گرم بوده و دو برابر انحراف معیارم هم ۱۰ گرم شده خب یعنی دو سیم هم اینه و عرض به حضور شما داره هر فصل پارامترهای آماری جامعش میزنه که حالا شما حتی میتونید تست های طراحی کنید که چک کنید آیا این داره راست میگه یا دروغ میگه خب یعنی اینا نمیتونن هر عددی رو همینجوری بزنن چون آدم ها به راحتی میتونن تو خونه با ۱۰ تا ۲۰ تا نمونه بردارید در واقع بررسی بکنند آنالیز

مثبت منفی ۱۰ گرم این برخلاف مسائلی که رو کاغذ و امتحانا و اینا داده میشه که همه دترمین و همه عددا مشخص از قبل ثابتن برای همه یکی باید جواب در بیاد اینجوریه که اینجا بیسکویتی که شما بخرید می‌تونه از به احتمال ۹۵ درصد از ۱۹۰ گرم باشه تا ۲۰۰ گرم تازه ممکنه ۵ درصد از این بازی هم بزنه بیرون خب و خدمت شما عارضم که یه بیسکویت دیگه مثل ممکنه چه میدونم دفعه مثلا یه ویفر دیگه بخرید اسمشو ایکس دو بزارید و اونم روش نوشته باشه ۳۰۰ مثلا مثبت منفی ۲۰ گرم خب حالا سوال ازتون می‌پرسن اگر شما یه وی یه دونه بیسکویت مادر و اون یه دونه اون ویفر دوم رو بخرید جمع ایکس یک به علاوه ایکس دو شما چند گرمه ها یه چیز عجیب غریبیه دیگه یا ایکس یک منهای ایکس دو چی میشه خب من خیلی نمیخوام اذیتتون

وارد بحثش بشم ایکس ۱ +x۲ ۲۰۰ جمع میشه یعنی چیزی که شما دارید از یه توضیح تبعیت می‌کنه که میانگین ۵۰۰ گرم رو داره ولی تو بخش مثبت منفی شما نمی‌تونید این ده و بیسته رو حالا با همدیگه جمع بزنید یا از هم کم کنید خب یعنی اینکه لزوماً این اتفاق نمی‌افته که زمانی که اینو ۲۱۰ گرم گتون اومده اونم ۳۲۰ گرمی گیرتون بیاد و شما ادعا کنید من ۵۰۰ گرم هستند این بیان آماری نیست خب حالا ثابت میشه که اگر چه میدونم ایکس دو از توضیح های مثلا نرمال دیستربیشن بیان ایکس یک به علاوه ایکس دو ایکس یک منهای ایکس دو از توضیح چی میاد میو یک و می دوشون با هم جمع میشه برای بخش میوش جدید من می دو سیمای جدید من هستش رادیکال سیگما یک دو به علاوه سیگما دو دو خب حالا این از کجا میاد و اینا فعلا کاری نداریم اگر با آمار آشن

داشته باشید از گذشته می‌تونید راحت ردیابی بکنید و به جای اینکه شما بنویسید ۳۰ گرم میگید اوکی ۱۰ به توان دو بعلاوه ۲۰ به توان دو رادیکالشو می‌گیرم و این میشه ۵۰۰ مثبت منفی اونقدر گرم و جامعه جدید من یا جمع اینا یا تفریق اینا حتی از اون تبعیت می‌کنه تفریقش می‌شه مثلاً ۳۰۰- ۲۰۰ میشه ۱۰۰ اگه ایکس دو منهای ایکس یک بخواهید ولی انحراف معیارش همونه رادیکال ۲۰ به توان دو به علاوه ۱۰ به توان دو این مقدمه رو پس داشته باشید یعنی دو تا پارامتر آماری و بخواهیم با همدیگه چیکار کنیم دو تا پارامتر تصادفی با همدیگه جمع بزنیم دیگه برخلاف این دترمینستیک ها فاز خب میانگینشون همون جمع میانگین هاست ولی فاز در واقع انحراف معیارشون جمع جبری انحراف معیارها نیست و حالا توان دو ش رادیکالش یا شبیه فیثاغورسی گرفتن این بدست میاد خب برگردیم سر کار خودمون اینجا میگه چی اینجا میگه فرض کنید ما انواع مثال ها رو بیان می‌کنیم و حالا میگیم که چگونه اینا رو تو آمار به یک بیان

واحد بیانش می‌کند میگه فرض کن شما دو تا کود ای و بی داری و دو تا وزنتم خوبه دو تا باغچه هم داری یه کودو دادی به باغچه ای یه کود در کود ای رو دادی به باغچه اولت کود بی رو دادی به باغچه دوم مثلا میخوای ببینی که پرتقال‌هایی که برداشت کردی وزن کدومشون بالاتره ها خدمتتون عارضم که میخویم ببینیم آیا کود یک یا دو با همدیگه تفاوت معنادار دارند یا نه مثلاً یه سواله فرض کنید که شما تو یک دانشگاه هستید و امتحان نمیدونم فرض کنید استاتیک برگزار شده اون دانشگاه توش مثلاً ۵۰۰ نفر امتحان استاتیک دادن شما به صورت نمونه ۵۰ نفر رو کشیدید بیرون و نمره های استاتیکشون رو دیدید سوال میپرسن

فرض کنید که میانگین اون ۵۰ نفری هم که شما حساب کردید مثلاً شده ۱۵.۲ سوال میپرسند آیا می‌توان گفت با این داده و عدد ارقامی که دارید میانگین در واقع دانشگاه ۱۵ به بالاست یا نه خب با این تعداد رقمی که در اختیار دارید و با این عدد ارقامی که حالا پیشتون هست و این تعدادی که ۱۵.۲ شده و فلان این سوال بعدی اینا همه از این چیزی که من میگم می‌گذرن برای اینکه حلشون بخواید بکنید خب میگه ما اینجا چیکار میکنیم یک فرض آماری رو تعریف می‌کنیم یک ادعا می‌کنیم در مورد چی جامعه ها یک ادعا میکنیم در مورد این سبزها که هنوز معلوم نیست درسته یا نه و ما می‌خوایم حدس خودمون رو در مورد اینکه درسته یا نه بزنیم میگه برای اینکه این فرض رو بررسی بکنیم یک آزمایش تصادفی ترتیب میدیم و اون آزمایش اگر نتیجه که به ما داد تفاوت معناداری با اون چیزی که ما انتظار

داشت ما اون فرض اولیمونو رد می‌کنیم در غیر این صورت می‌گیم که دلیل کافی نداریم برای اینکه ردش کنیم حالا مثال می‌زنیم متوجه میشید چی دارم میگم خب اون فرض اولیه‌ای که توی آمار مطرح میشه با اچ صفر یا نول هایپاتسس یا عرض به حضور شما فرض صفر یا فرض پوچ بیان می‌شه خب و یه فرض دیگه‌ای داریم که بهش میگن اچ یک یا اندیس ای بهش میگن فرض آلترناتیو یا فرض مقابل یا فرض در واقع دیگر حالا یه همچین چیزی و اینو با این نشونش میدیم ما تو آزمون‌های آماری مون وقتی یه پرسش پژوهشی مطرح میکنیم عموما اینجوری یه فرض صفر داریم یه فرض مقابل داریم که این دو تا فرض هم نقیض همدیگه یعنی این نباشه باید اون باشه اون نباشه باید این باشه ما با فرض میکنیم که فرض صفر برقرار است مگر اینکه خلافش ثابت بشه ها

پس میگیم اگر دلایل کافی برای رد شدن فرض صفر وجود داشته باشد ما ردش می‌کنیم اگه دلایل کافی وجود نداشته باشد میگیم که نمیتونیم ردش کنیم که حالا فرض صفر توی مسائل مختلف چی هستند و با چند تا مثال براتون سعی می‌کنیم جا بندازیم خب یه روش دیگه‌ای داریم که از اینم حتی خفن‌تره این فقط میگه که آقا فرض صفره درست بود یا نبود خب این فرض این کاری که در واقع خفن تره بهش میگن باز اطمینان یا کانفیدنس اینتروال حرفش اینه میگه نه تنها بهت میگه که اون فرد صف درست بود یا غلط بود بلکه بهت میگه اون میانگین جامعت که داری آنالیزش می‌کنی خب یه تخمین بازه هم براش میزنی با یه درصد احتمالی مثلاً میگی با احتمال ۹۵ درصد در این بازه میشینه نه تنها من بهت میگم که میانگین مثلاً بچه های استاتیک دانشگاه میتونه ۱۵ باشه یا نه با اون ۴۰ ۵۰ نفری که بهت گفتم بلکه این دفعه دقیق تر میگم میگم ببین میانگینشون

احتمال ۹۵ درصد تو بازه ۱۴.۸ تا ۱۵. سه دهم مثلاً میگم خب یه همچین چیزی رو بیان می‌کنیم که این خب طبیعتاً چیز خفن‌تریه دیگه حالا بریم جلوتر ببینیم چقدر میرسیم که بیانش بکنیم تو وقتی که داریم خب خدمتتون عارضم که برگردیم سر روش اول که آزمون فرضیاتمون بود آزمون فرضیاتمون حرفش اینه میگه که شما یک فرض صفر دارید یک فرض یک دارید که نقیض اونه مثلاً مثلاً فرض کنید که شما چی دارید یه جامعه دارید که نمیشناسینش مثلا رفتید بچه های طیف اوتیسم بچه های مبتلا به فلان آوردید پنج تاشون ده تاشون ۱۵ تاشون آوردید و یه حالا میانگینی ازشون رفتید محاسبه کردید که نمادی از تخمین می یکتون بوده اما سوال اینه که آیا می یک شما مساوی با عدد مشخص می دو هست یا نیست یا میو دو ممکنه خودش باز نماد یه جامعه دیگه باشد مثلا کلاس ای و کلاس b و رفتید

ازشون گرفتید می‌خواید ببینید اینا با همدیگه میانگین‌هاشون مثلاً میشه ادعا کرد مساوان یا نه اگر من کلشون رو در دسترس نداشته باشم و مثلاً فقط نمونه گیری کرده باشم خب و اینا رو بیایم نگاه کنیم اینجا باز دوباره مفهوممو ادامه بدم بعد تو مثال برسیم کامل متوجه میشید چی دارم میگم اینجا دو تا چیز دو تا مفهوم خطا به وجود میاد بهش میگن خطای نوع یک خطای نوع دو اینا صرفاً جهت اطلاعتون عرض میکنم خطای نوع یک میگه که شما با چه احتمالی ممکنه به اشتباه فرض اچ صفر رو رد کنید خب این ما الان چهار حالت داریم ما یا فرض اکسپت مون درسته و ما هم واقعا تشخیص میدیم درسته این معلومه که زدیم تو خال یه وقتی فرض اچ صفرون غلطه ولی ما تشخیص میدیم درسته خب این مرتبط مرتکب یک خطا شدیم یک وقتیه که فرض اچ صفرون غلطه ما میفهمیم که فرض اچ صفررمون غلطه

باز زدیم تو خال یه فرض دیگه داریم که فرض اچ صفر مون غلطه ولی ما نمیفهمیم که غلطه و اونجا با یک در واقع خطای دیگه‌ای مواجه میشیم میگه احتمال اینکه شما فرض اچ صفرتونو رد کنید ولی اون درست باشه بهش میگن خطای نوع اول و اگر فرض اچ صفر رو شما رد نکنید ولی اون نادرست باشه بهش میگن خطای نوع دوم که با آلفا و بتا نشونش میدن تلاش ما بر اینه که تا حد امکان مینیمم باشه حالا فعلا خیلی کار نداریم ولی شهود بهتون میدن که اینا چی اند با دوتا مثال و بیشتر تلاش می‌کنیم آلفا رو فعلا حالا در درجه اول کنترل بکنیم این بتای حالا ماجرای دیگه داره که نیاز به مطالعات تکمیلی تره خدمتتون عرضم اگر خواستید شور پیدا بکنید که اینا چی هستند میتونید از این توضیح های نرمال نگاهشون کنید ولی اون مثالی که بهتون زدم این بود دیگه داستانش که میگه در واقع اگر شما فرض اچ صفر تو واقعیت درست باشه و

ردش نکنید شما با یک منهای آلفا درصد درستید اگر آلفا رو بگیرید احتمال رد فرض صفر که مثلاً ما توی کارهای در واقع غیر خیلی جونیمون اینو ۵ درصد میزاریم حالا ممکنه یه سری جاها که با جون انسان‌ها در ارتباط باشه این عدد رو خیلی خطاشو پایین تر ببریم و یک درصدش کنیم خب یعنی ما اونجا با ۹۵ درصد دقت تونستیم اینو درست ارزیابی بکنیم و پنج درصد فقط خطا داریم تو این زمینه خدمتتون عارضم یا اگر اینو یک درصد گرفتیم فرض اچ صفر غلط نباشه ما ردش نکنیم ۹۹ درصد تو این زمینه درستیم و نهایتا یک درصد خطا داریم خب که اینجا با مفهومی آشنا میشن به نام پی ولیو که یک نمادی از در واقع یک یک چیزی از جنس احتماله و نمادی از مساحت زیر نمودار اون دیستربیوشنمونه که میتونه حالا نرمال دیستشن باشه تی دیستربیشن باشه کا اسک

E:\courses\LangChain Project\main root\data\SCR_Session24_transcript_part3.txt

اول تا آخرشون ۱۰۰ بود یا یک بود و نمادی از در واقع بخش‌هایی از اوناست و معادل مقدار بحرانی یا آستانه رد فرض صفرمونو می‌گیرن و یا بیانگر اینکه کوچکترین سطح آلفایی که منجر به معنادار شدن اختلاف میانگین‌های دو گروه باشه رو بهش میگن الی آخر که حالا ما چیکار می‌کنیم قراره در مورد این صحبت کنیم الان اگر خیلی متوجه نمیشید هیچ نگران نباشید من اجازه بدید در مورد اولا خطای نوع یک و دو یه مثال دو تا مثال بزنم یکی مثال بارداریه عرض به حضور شما فرض کنید فرض اچ صفرتون اینه که فرد باردار نیست فرض مقابلش میشه فرد باردار هست دیگه نقیض اون ها حالا خطای نوع یک شما اینه که به یک نفری که باردار نیست بگید باردار هست ها که اینجا شما گفتیم مثلاً آلفا درصد

فرض خطای نوع دومون اینه که به کسی که در آستانه زایمانه شما بگید باردار نیستی و خب این الان درسته شکلش مضحکه یعنی اینکه دارید می‌بینید و این اتفاق رقم می‌خوره ولی تصور کنید مثلاً تو حوزه شناسایی یک بیماری مثلاً می‌خواید به یک نفر بگید سرطان داری یا نداری خب به اینا فکر کنید که اگر طرف سرطان نداشته باشه و شما بهش بگید داری باید چند درصد به نظرتون خطا داشته باشی و یا اگر چه میدونم کدومش گناه بیشتری داره براتون حس و حال بدتری داره یا اینکه داشته باشه ولی شما بگید نداری و یا نداشته باشه شما بگید داری اینا اون خطاهایی که هستش اینا برای خودتون تحلیل بکنید یا یه مثال دیگش در مورد گرفتن یه آدم مجرمه میگه فرض کنید فرض اچ صفرتون اینه که اون کسی که در واقع مظنونی که گرفتید بیگناهه فرض مقابلش میشه که گناهکاره بعد شما خطای نوع یکتون این میشه که شما یک

بی‌گناهو برسید بفرستید زندان یعنی با وجودی که بی‌گناه شما تشخیص ندید بی‌گناهه خطای نوع دوتون چی میشه خطای نوع دوتون میشه که یک فرد گناهکار اجازه بدید آزاد باشه ها و اینا همون نمادی از آلفا و بتان عرض کردم حالا فعلاً به بتا یک منهای بتا اینو فعلاً کار زیادی نداریم چون نیاز به توضیحات بیشتری داره ما فقط در این حد بگم خدمتتون که عرض کردم تو کارهای ما عموماً آلفا پنج درصد گرفته میشه یعنی ما همین که زیر ۵ درصد خطا این صفر رو بتونیم رد کنیم خوشحالیم و خیالمون راحته فوقش میگیم ۵ درصد تو این زمینه خطا داریم خدمتتون عارضم حالا به تکرار آزمایش من کاری ندارم اگه دلتون خواست میتونید برای خودتون شخصی مطالعه بفرمایید اما برم در مورد اون چیزی که می‌خوام صحبت کنم انواع فرض های مقابل ما داریم خب فرض کنید مقابل کلاً فرضهایی هستند که بین یک یا یک جامعه و یک عدد ثابت یا دو جامعه انجام میشن حالا یعنی چی یه وقتیه

شما میگن که آیا میانگین شما تو اون امتحانه تو اون دانشگاه ۱۵ هست یا نه ها یعنی اون اونورشو اونا به شما میدن یه ورش جامعه شماست این وقتی که یک جامعه رو دارید با یه عدد ثابت مقایسه می‌کنید که خودش حالا سه حالت مختلف داره بیان می‌کنه مثل حالت چیند یه وقتی بهتون میگن که آیا کلاس اول از کلاس دوم قوی‌تر هست یا نه اینجا یعنی چی هر دو تا رو دارن از جنس جامع آماری بهتون میدن خب این چرا میگم سه حالت داره فرضها رو سه حالت مختلف میشه براش بیان کرد یک فرض کنید که میو مساوی می صفر باشد خلافش اینه که میوم مخالف می صفر باشد یعنی اینکه بهتون میگن آقا آیا نمرات در واقع استاتیک این بچه ها با همین بیست سی تا داده که بهتون دادم تو اون دانشگاه میشه فرض کرد ۱۵ یا نه با احتمال ۹۵

شما چه از یه عددی کمتر از ۱۵ و از چه عددی بیشتر باشه میگید نیست پس این میشه چی این فرض پایینیه خب که اچ یکتون میشه همین که میو مخالف میو صفر باشه خدمتتون عارضم که اما دو گونه دیگه بیان میشه کرد که من حقیقتشو بخواید با این میو صفره موافق نیستم اچ صفر من تو این شکل سمت چپیه می‌گیرم میو بزرگتر مساوی میو صفره اچ یکش میشه می کوچکتر از صفر یعنی میگم که آیا نمرات استاتیک بچه ها بزرگتر مساوی ۱۵ هست یا نیست برو برام حساب بکن خب شما اچ صفرتون اینه باید باید برید نگاه کنید ببینم تایید میکنید یا ردش میکنید با کارهای آماری و یا بالعکس میگید که آیا میانگین من کوچکتر مساوی ۱۵ هست یا نیست و فرض آلترناتیوش میشه چی خلاف اون نقیض که حالا میخویم در مورد این جاهایی که هاشور زده برای شما صحبت بکنیم خب خدمتتون عارضم که و همینطور اگر دو تا جامعه داشته باشیم

وجود داره خب تا قبل از اینکه دور بشی ما وارد مثال بشیم من یه دور اینا رو میگم شفاهی و بعدش میریم در حال مثال اینا رو با همدیگه بیشتر مرور می‌کنیم خب خدمت شما عارضم که اولاً تا جایی که من می‌دونم توی فضای اچ صفر همیشه مساوی و جا میدن یعنی فرضهای سه حالت داشتن یا بودن میو مساوی ما میو صفر خب اچ یکش باشه چی میو مخالفه میو صفر این دو نقطه بزار یه بار اچ صفر رو میتونن بزارن میو بزرگتر مساوی می صفر اچ یکش میشه میو کوچکتر از میو صفر و یه بار دیگه میتونن میو رو کوچکتر مساوی نیو صفر بزارن میشه نیو بزرگتر از می صفر که سه حالت مختلف داره حالا فرض کنید میو شما همون جامعه آماری شما فرض کردید که داره از یه توضیح چی نرمال یا تی داره تبعیت میکنه

میگه چیکار کن میگه صرف نظر از اینکه توضیح نرماله یا چیه یا کای اسکواده یا فیشر اینایی که دارم میگم همیشه برقرار کلی گوییه ولی همیشه برقراره میگه که فرض اچ صفری که میو مخالف مساوی مگر اینکه شما بتونید خلافش ثابت کنید میگه یه چیزیو به نام تی استاتیستیکس برو شما حساب بکن خب که این فرمول‌های متفاوتی داره اگه از نرمال یه فرمول داره اگر از تی میرید یه دونه داره کلا کتاب بعضا با تی استاتیکیکس نشونش میدن یا با تی نشونش میدن فقط این تی رو با تی اشتباه نگیرید این میگه که اگر از یک مقدار بحرانی بیشتر حالا یا کمتر بود فرض اچ صفر رد یا قبول میشه چجوری میگه که میو مساوی با می صفره فرض کنید این توزیع در واقع چیه اون جامعه که حالا میو داشته ازش میومده خب میگه که برو نگاه بکن اگر جایی که

حساب کردی از یک مقدار بحرانی اینورتر سمت راست‌تر یا از مقدار بحرانی سمت چپ‌تر افتاد این تیک شما حساب کردید یا تو این بازه می‌افته تو بازه خطای نارنجی می‌افته یا تو بازه‌ای که من الان دارم با سبز نشونش میدم یا تو بازه که داره با آبی نشونش میدم خب میگه که اگر خدمت شما عارضم که مساحت مجموع مساحت نارنجی ها آلفاست آلفا دوم تا این و آلفا دوم تا این و مثلا آلفا رو ۵ درصد بگیریم یعنی دو نیم درصد اینجا شده دو نیم درصد اینجا شده ۹۵ درصد هم وسط سفیده شده میگه اگر تی که شما حساب کردید افتاد تو بازه بین دو تا نارنجی ها یا تو بازه که سفیده رو داره پوشش میده شما میگید من دلایل کافی برای رد فرض صفرم ندارم خب ولی اگر تو یکی از این دو تا آبی یا سبزها افتادن میگم که من با

احتمال ۹۵ درصد این فرض صفر را رد می‌کند حالا سوال اینجاست میگه که آیا میانگین بچه‌های استاتیک این دانشگاه در واقع ۱۵ هست یا نیست شما چیکار میکنید شما میرید با اون ۵۰ تا داده‌ای که در اختیار دارید ۳۰ تا داده‌ای که در اختیار دارید حساب می‌کنید که چه جوری حساب میکنیم الان صحبت می‌کنیم نگاه می‌کنید می‌گید که تو نرمال دیستربیوشن موجود یا تو تی دیسربیوشن موجود خب دیستربیوشن کلا مد نظر من آیا این دو ور نقطه بحرانی میفته یا نه یعنی اول نقطه بحرانی ها را حساب میکنم از جدول بعد نگاه میکنم اون تی استیکس صورتی من افتاده اینور در واقع مثبت ها یا اونور منفی ها حالا تو اف که البته مثبت منفی نداریم یعنی این و سمت راستی ها یا اون و سمت چپی ها اگر افتاده بود میگیم بله رد میکنم نه این میانگین ۱۵ نیست خب حالا میتونه حتی مقدارش باید حساب بکنید که بگید نه ۱۵ و نیم به بالاست یا ۱۴

و اگر نه افتاد تو این بازه سفیده میگید نه من فعلاً فرض می‌کنم ۱۵ هست نتونستم ردش بکنم حالا این دوتا پایینی چی میگه این میگه که میو بزرگتر مساوی با میو صفره مگر اینکه شما بتونید خلافشو ثابت کنید اینجا دیگه تو اون توضیح برخلاف این بالاییه که دو رو نگاه می‌کردید فقط چیکار میکنید عرض به حضور شما فقط نگاه می‌کنید اگر تی استتیست که حساب کردید از این بنفش سمت چپ تر بود میگید من رد میکنم ها اگه اینور این وسطا بود حتی اینورتر هم بود من قبول میکنم چرا چون قرار بوده بزرگتر مساوی می صفر باشه ها و طبیعتاً برای این سومیه چی باید اونوری رو حساب کرد خب که حالا اگر اینجا شکل ها رو ببینید میبینید که برای در واقع چیز برای وقتی که فقط میو رو مساوی یا مخالف میگیره دو رو داره حساب میکنه میگه چه این و بیفتید چه اون و بیفتید ولی برای چیزا

از حضور شما برای حالتی که حالا فرضش یکیش میو بزرگتر از بزرگتر مساوی کوچکتر مساوی بود دو تا اتفاق دیگه میفته فقط فرق این دو تا شکله بچه‌ها اینه الان این کل آلفا رو میده به یه ور اینجا نصفشو میده به اینور و اون ور ها یعنی اینکه مثلاً اگه می‌خواستید با احتمال ۹۵ درصد بگید میانگین ۱۵ است یا نه شما باید با احتمال ۲.۵ درصد نگاه کنید ببینم آیا بالای ۱۵ میفتید یا نه یا با احتمال ۲.۵% زیر ۱۵ میفتید یا نه یا اون زیر اون عدد میفتید یا نه که ردش کنید ولی اینجا چی کل ۵% رو میدید به یه ورش دیگه خب حالا این اصلا صرف نظر از اینکه شما با کدوم توزیع دارید کار میکنید این جواب میده این جذابیت ماجرا اینه یعنی کل امیدوارم این اسلایده رو متوجه شده باشید چی میگم حالا این وقتی بود که یه ورش برای شما تعیین کردن یه وقتیه که نه میگن که شما دو تا جامعه رو با هم مقایسه کن حالا این دو تا جامعه اینایی که بهتون میگن تو کارهای ما مثلاً فرض کنید آقایون و خانم ها رو میارید

ربات یه کاری باهاشون انجام می‌دید می‌خواید ببینید آیا به این عملکرد اینا تفاوت معنادار آماری وجود دارد یا نه بچه‌های طیف اوتیسم و بچه‌های سالم و میارید توی بازی مشترک با ربات قرار می‌دید می‌خواید ببینید بین اینا تفاوت معنادار آماری دارد یا ندارد و انواع چیزهای دیگه‌ای که می‌تونه به ذهنتون بخوره خب و اونجا چیکار می‌کنید اونجا هم میو یک هم میو دو چیه در واقع جز جامعه آماری اینجا این کارو می‌کنن دیگه میگه یک مساوی با می دو مگه نه مثل اینه که میو یک منهای میو دو صفر باشد اسم این حالا یه می جدید میزارم درسته پس فرض اچ صفر هم اگه بود می یک مساوی با می دو مثل اینکه چی می که جدید هم صفر باشد اچ یکش چی میشه اینکه میو مخالف صفر باشد یا میو یک من دو مخالف صفر باشد بعد ما بالا توضیح دادیم گفتیم اگه می یک و می دو هر کدوم توضیح های آماری نرمال داشته باشند

توضیح آماری داره حالا با یه البته چیز دیگه دیستربیشنی که توضیحی از جفت دیستربیوشن‌ها یعنی انحراف معیارهای جفتشون باشه و اینو حالا بررسی می‌کنم یعنی میو رو با صفر مقایسه می‌کنم که اینجا باز دوباره سه حالت پیش میاد یه وقتیه که شما به شما میگن آیا بین اینا تفاوت معنادار آماری وجود دارد یا نه اصلاً براشون مهم نیست که کی بیشتره همین که داشته باشد کافیه یه وقتی میگن آیا میو یک بزرگتر مساوی می دو هست یا نیست یا میو یک کوچکتر مساوی دو هست یا نیست من تاکید میکنم این مساوی ها رو به h صفر میدیم و خلافش نقیضش به اچ یک میدیم و اینجا دوباره مثل اینه که میو یک منهای می دو را اسمش بگذارید در واقع میو جدید و اینجا برید باهاش جلو و اینکه مثل اینکه دیگه میو صفره که عدد ثابت بوده اینجا به شما صفر دادن گفتن آیا می یک منهای می دو که اسمشو میذارید حالا یه بار مساوی صفره یا مخالف صف یه بار بزرگتر مساوی صف کوچکتر از صفره یا یه بار کوچکتر مساوی صفر بزرگتر

این کارا رو باید انجام بدید که اینجا تو این شکلم باز اومده بیانش کرده گفته فرض کنید دو تا جامعه تتایی و تتا ۲ دارید و خدمتتون عارضم که فرضتون مثلاً اینکه اینا مساوین مگر اینکه خلافش ثابت شه میگه چیکار کن میگه برو اول منهای همشونو به دست بیار توزیعشو بعد دو نقطه بحرانی و دو لبشو بدست بیار برای اون احتمال مد نظر برای آلفا درصده باید جمع بنفشا هاشور خورده های بنفش ببخشید جمع چیز هاشور خورده سبز باید بشن آلفا درصد که مثلا برای این دو و ها آلفا دوم این و آلفا دوم میاد بعد میگه تی استیستیکیکس خودت حساب بکن تو مسئله یا میفتی تو منطقه بنفش تو سفیدا این و سبز ها بین دو تا سبز ها که میگی آقا من نمیتونم ردش کنم همون فرض بر این میذام که جامعه های جامعه های که من بررسی ش کردم عملکرد یکسانی داشتند حتی اگر تتا یک مساوی تتا دو نباشه تو اون عددای من یعنی مثلا فرض کنید من شش مثلاً ۱۵ تا پسر آوردم ۱۴ تا دختر

و یه کار مثلاً بالینی باهاشون انجام دادم میانگین‌هاشون مثلاً یکی شده چه میدونم ۹۳.۷ یکی شده ۸۹.۹ درصد ولی بعد میرم تو فرمولا میزارم که وقتی از هم کم می‌کنم درسته با اون تعدادی که من آوردم عرض به حضور شما اینو واقعاً عددداشون یکی نیست اما در مورد جامعه پسرها و جامعه دخترهایی که شرایط حضورتون آزمون من داشتن آیا میشد این تصمیمو گرفت که خب باید نگاه بکنید تی استات تو چجوری میشه عرض به حضور شما اگر تو بازه سفید رنگ افتاد شما نمیتونید رد کنید میگید نه مساوی من فرض میکنم حتی اگه بخوام خطا داشته باشم اگر خب رو خود سبز که معمولا نمیفته اگر اونور سبز افتادم تو بخش آبی افتادم میگید نه آقا ردش میکنم بابا ما ۹۵ درصد به شانس دادیم نتونست در بیاره هیچ افتاد تو اون ۵ص و یا حتی کوچکتر و چی اینجا ردش میکنه خدمتتون عارضم که برای وقت های هم که ادعا میخوید بکنید تا یک از سه تا دو بیشتره یا تتا یک از سه تا دو کمترم

مثل اون قبلی یک و نمودار حساب می‌کنید یعنی تتا یک منهای تتا دو رو محاسبه می‌کنید براش فرض می‌کنید حساب می‌کنید نگاه می‌کنید که اینور منطقه سبز افتاده یا اونور منطقه سبز و چیکار می‌کنیم در نهایت فرض اچ صفرتونو یا رد می‌کنید یا تایید میکنید خب حالا همه اینا رو گفتیم دیگه بیایم یه جدول چیز بدیم خدمتتون شسته رفته تر بدیم و اینا رو با همدیگه مقایسه کنیم و چند تا مثال بزنیم و بعدشم به اتمام برسونیم کار خدمتتون عارضم که فرض کنید که ما میخویم میانگین یک جامعه رو با مقدار مشخصی که از قبل ما داده شده مثل همون ۱۵ تو استاتیک مقایسه کنیم باید چیکار کنیم اولاً نگاه می‌کنیم تو کدوم از این فرض هستیم آیا برامون مهمه که فرض صفرش که حالا مساوی باشه فرض یکش همین که مخالف باشه برامون کافیه یا نه ادعای ما اینه که میو اول بزرگتر مساوی می صفر می دوم کوچکتر از اونه یعنی میوت خلافش اگه

اگه این کارو بخواید بکنید باید چیکار کنید عرض به حضور شما میگه فرض کنید جامعه‌ای دارید که واریانسش معلوم باشد ما تو حوزه‌های انسانی معمولاً اینو نداریم خب ولی اینکه یا معلومه مثلاً فرض کنید یه چیزی از یه شرکتی خریدید ادعا کرده که واریانس نمونه های من اینقد مثلا همون بیسکویت مادر رفتید خریداری کردید پنج تا ده تا ۱۵ تا بیشتر نخریدید ولی اون ادعا کرده که اینه و شما ایمان دارید بهش خب خدمتتون عارضم که این ثابت شده تو آمار که اگر یه توضیح نرمال داشته باشید شما چند تا نمونه ازش بکشید بیرون n تا بکشید بیرون و میانگین اون ان تا رو مثلاً پنج تا ده تا ۱۵ تا ۲۰ تا رو حساب بکنید حالا هرچی بیشتر بهتر منهای می صفر جامعه آماری بکنید یعنی فرض کنید این میدونستید چنده تقسیم بر سیگما که واریانس جامعه آماری باشه تقسیم

رادیکال ان که تعداد باشه بکنید این توزیعه از در واقع یه عددهایی که از این رابطه به دست میان توی توضیح نرمال می‌شینند که ما اینو مثال مقدارشو زد صفر میزاریم و میریم با زد بحرانی حسابش می‌کنیم خب زد بحرانی برای من میشه استفاده از چی نرمال مساحت اون نرم یا اون در واقع چیزهایی که بالا جدولی که بالا در مورد نرمال‌ها داده شده بود که اینا بود و نگاه می‌کنم که آیا با اون زد من زد صفری که من حساب کردم تو مسئله با زد بحرانی چه رابطه ای داره و اینکه کدوم ورش افتاده تصمیم میگیرم که این فرض رو رد بکنم یا قبول کنم حالا مثال میزنیم میبینید که عرض به حضور شما مثلاً اگر فقط فرض کنم که فرض صفر این بوده مساوی باشند یا غیر اینکه خلافش ثابت شه این که شما زد صفرتون زدی که شما حساب کردید چه اینور مقدار بحرانی بیفته که اسمشو زد آلفا دوم میزریم یا چه اونور زد

شما می‌تونید بگید که آقا نه این فردا غلطه و اون در واقع نقیضش درسته خدمتتون عارضم که آلفا عرض کردم معمولاً ۵% می‌ذارن یعنی شما چی مثلاً اگر می‌خواستید همیشه برای ۹۵ درصد دقت یا همون ۵ درصد خطا نگاه بکنید آلفا دوم میشه ۲.۵ درصد یعنی دو تا عدد مشخص همیشه معلوم اند که زد صفرتون حتی ممکنه به مرور زمان حفظ هم بشید که z صفرتون اگر قدر مطلقش از اون عدد بزرگ‌تر بود فلان ولی اگر فرضهای دیگه بود شما صفر رو فقط چیکار میکنید باید نگاه کنید که از زد آلفا بزرگتر هستید یا نه یا از منفی زد آلفا کوچکتر هستید یا نه تا بخواید ردش بکنید اگر براتون کوچکتر و بزرگتر مساوی بودنش مهمه مثال گفته که آقا یه سری مثلا میله های فولادی رفتیم خریداری کردیم از یه شرکتی میدونیم که قطرشون انحراف معیارشون در واقع یک ۱۰ هزار اینچه خود شرکت به ما گفته ما باور داریم خب

نمونه خریدی متوسط اون ده تایی که ما داریم شده چند.۲۵۴۵ اینچ حالا سوال ما اینه که آیا میانگین واقعی جامعه آماریمون یا کل میله‌های فولادی اون شرکتو من می‌تونم ممیز ۲۵۵ حساب بکنم یا نه ها باید اینو تستش کنم پس این چیزیه که من دارم این چیزیه که من حدس می‌زنم شاید شرکت داشته باشه یا ادعا کرده که داره و در ضمن به این سیگنال که داره ایمان داره و چی میخوام تستش بکنم خب در واقع چیز فرض صفر هم میشه میو باید ۲۵۵. ۲۵۵ باشه فرض یک هم میشه این نباشد اینکه چیکار کن میگه که خب خدمت شما عارضم که اولا با این تعداد داده آماری صفر خود بدست بیارz صفر چجوری بدست میاد میگه میانگین اون چیزایی که شما داری منهای اون می که بهت گفته بودن آیا میشه یا نه تقسیم بر سیگمای که شرکت

تقسیم رادیکال تعدادش اینو برو به دست بیار مقدارش میشه منفی ۱۵.۸۱ خب تو سطح ۹۵ درصد می‌خوایم ببینیم با احتمال ۹۵ درصد این عدده برقرار هست یا نیست تو سطح ۹۵ درصد میگه برو زد بحرانی رو پیدا بکن زد بحرانی هم گفتیم زد آلفا دوم یا ۲.۵ درصد دیگه باید بریم پیدا بکنیم از جدول بریم بخونیم یا از این نرم افزارها بدیم بخونیم عدد یک و۹۶ دو میشه دو برابر انحراف معیار میشه الان عددی که شما بدست آوردید ۱۵ برابر انحراف معیار دورتره ها پس چی پس اصلا نمیشه این فرض رو کرد که اچ مساوی با ۲۵۵ و ما با احتمال ۹۵ درصد اینو رد میکنیم و میگیم که این میانگین در واقع جامعه آماری یا کل میله های فولادی که این شرکت تولید میکنه نمیتواند ۲۵۵ هزار باشد ولی الان در مورد این صحبت نکردم که میانگینشون حالا بیشتره یا کمتره می‌تونستم فرض رو این بزارم که

میانگینشون بزرگتر مساوی اینه یا کوچکتر از اون و الی آخر و اینجوری صحبت کنم ولی الان دارید می‌بینید که همین قدر ما ردش می‌کنیم و فلان و نهایتاً به این بسنده بکنیم اوکی چون عدد من ۲۵۴۵ از ۲۵۵ کمتره پس احتمالاً میانگین قطر میله‌های فولادی که داره تولید می‌کنه از این عدد کمتره خب خدمت شما عارضم که ما گفتیم که توی جامعه‌هایی که ما داریم معمولاً واریانس معلوم نیست خب و همونطور که بهتون گفتم ویلیامست هم خیلی روش کار کرد حرفش این بود که اگر به جای انحراف معیار میانگین واقعی جامعه انحراف معیار تخمینی تو اون تعدادتون که بود در واقع حالا مقدار داده ها منهای میانگینشون به توان دو جمع بزنید تقسیم n منهای یک بکنید که اسمش اس گذاشتیم و بزارید تو این فرمول این این دیستربیوشن وای بار می صفر تقسیم رادیکال n از توزیع نرمال

نمی‌کنه و دقیق‌ترش اینه که از توضیح‌های تی تبعیت می‌کنه ها و شما دیگه استاتیستیکتون الان این تی صفر است اونجا تو مسئله قبلی استاتاستیک همون مقدار بحرانی محاسبه میشه و این دفعه این تی رو باید برید با توضیح تی مقایسه کنید ها خدمتتون عارضم که باز دوباره مثل قبل میگه که اولاً فرض بر اینه که آیا چرا نمره استاتیک شما ۱۵ هست تو دانشگاهتون یا نه بزرگتر مساوی ۱۵ کوچکتر مساوی ۱۵ چیکار کن با اون تعداد داده که داری با اون عدد ۱۵ که تو ذهنت بود انحراف معیار اون ۱۰ ۱۲ تا ۲۰ رو داده که بهت داده بودن و اون رادیکال تعداد داده هایی که داشتی تی بحرانی تو تی صفر یا استست حساب بکن نگاه بکن که ببینم از تی بحرانیه حالا این رابطه ها رو داره یا نه یعنی دو بر بومش افتاده یا از این وش بیشتر یا از اون وش کمتر هست که بتونیم فرض رو رد بکنی یا نه اینجا بچه به جای زد در واقع به جای اینکه شما زد آلفا دوم اینا رو پیدا کنید که چیز راحت‌تریه باید برید تو جدول تی

برخلاف در واقع با این فرضی که ما کردیم یه دونه بیشتر تو عالم نداریم اینجا نه به تعداد درجات آزادی هم میتونه فرق کنه یعنی اینجا تی فقط آلفا دوم معیار نیست به هر حال مهمه که نوشم چنده تعداد درجه آزادی باشه تعداد داده‌های منهای یک باشه چنده و باید برید بسته به اینکه تعداد داده‌هاتون چنده پیدا کنید آلفا دومشم برید پیدا بکنید بذارید تو اون فرمولا و اینو محاسبه کنید تی بحرانیش چنده و نگاه کنید که شما کدوم و میفتید میبینید که اگر یکی باشه که این تیبوهانی براتون حساب بکنه که کار جبری خیلی خیلی دشوار و رو اعصابیه دیگه بقیه ماجرا کاری نداره خدمتتون عارضم بعضی وقتا بهتون میگن دو جامعه آماری رو می‌خوایم با همدیگه مقایسه بکنیم حالا البته با واریانس های معلوم میتونه باشه میتونه نامعلوم باشه ما باز وقتی انسان ها رو میاریم مثلا بچه های سالم طیف اوتیسم بچه های مثلا چه میدونم خانم ها آقایون نمیدونم افراد مبتلا به سندروم دان و مثلاً افراد سالم یا و و

نمی‌دونم بچه‌های زیر ۱۰ سال بچه‌های بالای ۱۰ سال مثلاً یه تستی بگیرید ببینید بین عملکرد اینا تفاوت معنادار آماری وجود دارد یا ندارد خدمتتون عارضم که با دو جامعه روبرو هستید که عموماً واریانس‌هاشون نامعلومه تو واقعیت اینجا باز دوباره تو آمار آوردن فرمول بندی کردن گفتن اگر واریانس‌هاتون معلوم باشد مثل اون شرکت‌هایی که خودشون رفتن با تعداد زیاد داده گرفتن و سمه‌هاشونو ارائه دادن باز از توضیح زد تبعیت می‌کنیم یا همون توضیح نرمالی چیکار کن خیلی همه چیز شبیه اونه گفتم بهتون میو یک من میو دو رو اسمشون میو بزارید و الان مثل اینکه میو داره با صفر مقایسه میشه پس میشه وای بار یک منهای بار دو که اسمش هست وای بار یا نمادی از میون منهای اون میو نهایی که با صفر میخواد مقایسه شه تقسیم بر یک چیزی که نمادی از در واقع انحراف معیار تقسیم رادیکال ان باشه که قبلا داشتیم اینجا خب این باشه اینجا اینجوریه که میگه اگر دو تا جامعه داشته باشید عرض کردم حالا فعلا به اثباتش هم کاری نداریم

ولی خب خیلی چیز سختی هم نیست دیگه با این توضیحاتی که دادیم اگر دوتاشون از نرمالی تبعیت کنن جمعشون یا تفریقشون از چه در واقع تابعی تبعیت می‌کنه اینه که اونجا باید به جای اون سیگما بزاریدما ۱ ۲ به روی n۱+۲ ۲ به روی n۲ رادیکال بگیرید و این حالا میشه تی استاتیستیکتون که زد صفر باشه با مقداریش مقایسه میکنید و میگید که بالاخره اینا یکی هستند یا نیستند مثلا فرض صفرتون اینه که یکی هستند و نمیتونن تفاوت معنا داری ببینند فرضیه که شما معمولا تو پیپرتون دنبالش اینه که بگید نه دیدین نشون دادم نیست و اینا بینشون تمام معنادار آماری هست و خدمتتون عارضم که باید اونا رو برید پیدا بکنید ولی آخر حالا باز مثلا یه مثال هست گفته که دو تا مثلاً چیز داریم دو تا سنسور مثلاً شتاب سنج داریم داده برداری کردن برای من من روی یکیشون ۹۰ تا تست گرفتم مثلا میانگین ۹۰ تا ۷۶ متر بر مجذور

میانگینش شده و ۸.۲ متر بر مجذور ثانیه انحراف معیارشه تو گروه دوم ۱۰۰ تا داده گرفتم اینا عددشن حالا سوال آیا با ۹۸ درصد ۹۸ درصد یا با ۹۸ درصد احتمال یعنی حداکثر دو درصد خطا بین این دو جامعه آماری تفاوت معنادار وجود دارد یا ندارد چشمی من دارم می‌بینم این ۷۶ ۸۱ یکی نیستند ولی یادمون باشه این نمادی از یه سابستی از کل جامعه خودشه اینم سابستی از کل جامعه خودشه ها و میخویم ببینیم که با این توصیفاتی که گفتیم اینا تفاوت بینشون هست یا نیست اینجوریه که خب میگه اولا چیز رو تشکیل میدم و در ضمن نگفته که کی بیشتر از کیه همین که گفته تفاوت داشته باشد یعنی از اون فرض های که در واقع فرض اچ صفرش اینه که می با هم برابرند اون هم اونوری هم برابر نیستن خلافش ثابت بشه خب میگه چیکار میکنیم خدمتتون عارضم که اون فرموله رو می‌ذاریم جاش زد صفر حساب می‌کنیم بای بار یک منهای وای بار ۷۶ منهای ۸۱ حساب میکنیم

انحراف معیارها رو اون دادن چونم تعدادشون خیلی زیاده ۹۰ و صد دیگه تقریبا این همون سیگما است یعنی میشه فرض کرد که حتی اگر این انحراف از معیار نمونه باشه بهتون گفتم اون رادیکال n منهای یکه که میرفت با دیگه خیلی فرق نداره از ۳۰ ۴۰ به بالا دیگه تقریبا سیکما اس یکی هستند این میشه فرض کرد که همون چیزی که اینجا حساب کردیم نمادی از میانگین و انحراف معیار اون جامعه بوده و عرض به حضور شما اینو حساب می‌کنیم زد صفر بدست میاد منفی ۴۳۴ حالا منفی بوده که ۷۶ ۸۱ کردیم خب از اونور هم درصد اطمینان ۹۸ درصد یعنی آلفا دو درصد باشه آلفا دوم میشه یک درصد زد یک درصد رو میرید از دو بر میخونید عددش میشه دو ۳۲ صدم یعنی چه شما تو نمودار نرمال دیستربیوشن در واقع از منفی دو سی سه صدم انحراف معیار مثبت دو ۳۳ صدم انتگرال زیرش ۹۸ درصد و اونور دو و ۳۲ یا این و منفی

الکل دو درصد خب زد بحرانی شما شده ۲ ۳۲ زد صفر شما یا تی استتی سیکس شما شده ۴۳۴ همین که این از اون بیشتره این نشون میده که نه نمی‌توان فرض کرد که این دوتا میانگین‌ها یکسانی دارند و دو تا سنسور کاملا متفاوتن حالا اینکه کدوم بهتره خب باید برید یه جوری پیدا بکنید خدمتتون عارضم که همونطور که عرض کردم ما تو عمده وقت‌ها واریانس‌هامون نامعلوم مثلا داریم در مورد جامعه انسانی صحبت میکنیم بعد ۱۵ تا از این گروه آوردیم ۲۰ تا از اون گروه کل جامعه انسانی مثلا تو ایرانشون یه اعلام نظری بکنیم اونجا بخوایم بگیم که آیا گروه یک از گروه دو بهتره یا نه در حالی که واریانس های واقعیشون نامعلومه و من فقط نهایتاً واریانس نمونه های اسامو دارم حرفی که میشه در موردش زد اینه که خب دو حالت پیش میاد که باز دوباره کار آماری داره من خیلی به اثباتش الان کاری ندارم میگه فرق داره اگر تو

اینا سیکمه‌هاشون با همدیگه برابر باشند یا برابر نباشند اون اس‌ها می‌تونن برابر نباشند ولی سیکمه‌ها برابر باشند اسها فقط صرفاً نمونه‌ای از انحراف معیارند در حالی که من انحراف معیار جامعه رو نمی‌دونم خب و اینجا دو حالت پیش میاد یا سیکمه‌هاشون با همدیگه برابر هستند یا نیستند اگه برابر بودن تی استاتیستیکت استاتیستیکستون از این رابطه پیدا میشه که میاد چیکار میکنه یه چیزی به نام sp یا s پول یا در واقع نمیدونم چی بهش بگیم مثلا بگیم انحراف معیار مثلاً اجین شده یا مشترک مثلا خب پیدا بکنه که تلفیقی از انحراف معیارهای اولیه و دومیه نمونه هاتون باشه که شما حساب کردید در ضمن درجه آزادیتونم بگیرید جمع تمام داده ها منهای دو یعنی یکی کمتر از ان یک یکی کمتر از ان دو با همدیگه جمع و این تی صفری که حساب کردید برید با تی اندیس

E:\courses\LangChain Project\main root\data\SCR_Session24_transcript_part4.txt

در واقع نو و آلفا دوم حساب کنید نوش از این رابطه پیدا شده اینجا اس پی تو این فرمول t صفره کار خودشو نشون میده آلفا هم که از قبل گفتید مثلاً ۵ درصد باشه و فلان و با این باید مقایسه‌اش بکنید اگر نه شما مطمئن مطمئن باشید یا با یه احتمال خیلی خوبی بگید که این اصلاً دو تا جمله جامعه‌هایی بودن که سیگما یک و سیگما دوشون با همدیگه برابر نبود فرمول هاتون عوض میشه و اینجا عرض به حضور شما حالا برای فرض های مختلف در واقع میشه اینو پیدا کرد که تی صفرتون از این رابطه پیدا میشه که این دفعه تو تعریف انحراف معیار حالا معادل یه فرققای وجود داره انحراف معیار معادل تابعیت از انحراف معیارهای اول و دومه و این دفعه نو یا درجه آزادی اصلاً یه تعریف عجیب غریبی داره که کجا خودشو نشون میده تو مقایسه تی آلفا یعنی تی صفری که از اینجا پیدا کردید باید ببینید با ازای این نوع از تی مو آلفای بحرانی هم بیشتر یا کمتر هست یا نباید بتونید تصمیمتون رو

حالا این سوال به وجود میاد که خدمتتون عارضم آیا من کجا بدونم پس سیگمایک با سیگما دو حالا یکی هست یا نیست با مثلاً ۱۰ ۱۵ تا داده‌ای که دارم یه آزمون دیگه‌ای به وجود میاد به نام آزمون برابری واریانس‌ها که اتفاقاً این از توضیح فیشر تبعیت می‌کنه یعنی برخلاف این قبلی که از در واقع اختلاف میانگین‌هاشون از توضیح تی تبعیت می‌کرد شما قبل از اینکه برید اولین آزمون رو شروع بکنید مجبورید برید اول چک بکنید ببینم من میتونم فرض کنم این واریانس یکی اند یا نه فرض نمیتونم بکنم برای اینکه این کار بکنید یه آزمونی وجود داره به نام آزمون برابری دوبارهاریانس خدمتتون عارضم که در واقع اچ صفرش اینه که سیکما یک دو با دو دو برابر باشه یه عده اینو سیگما یک دو به روی سیما دو دو مساوی با یک میگیرن یعنی میگیرن اچ صفر که نسبت توان دو واریانس انحراف معیارها یا نسبت واریانس هاشون یک باشد فرض آلترناتیوش اینه که یک نباشد

خب برای اینکه این کارو پیدا بکنید شما یک استاتیستیک دارید به نام اف صفر و باید با اف بحرانی چکش کنید اف صفر چه جوری بدست میاد عرض به حضور شما انحراف معیار نمونه اول به توان دو تقسیم بر دوم به توان ۲ به دست میاد بعضیا دوست دارن همیشه اونی که بزرگتره رو اس یک میزارن ولی بعضیام نه همونجوری همون در واقع یکی اس دو میگیند خدمتتون عارضم که ما میدونیم که نسبت انحراف معیارها که خودشون از در واقع تو جامعه نرمال از چیز بودن کاس بودن نسبتشون به همدیگه توضیح فیشر داره باید بریم سمت آزمون های فیشر و باز دوباره اف بحرانی باید اینجوری حساب بکنیم بسته به اینکه حالا کدوم وضعیت هستیم اگر اینی که میگه برابر باشد اچ صفر برابر نباشد یعنی فرقی براش نداره کمتر از یک باشه یا بیشتر از یک باشه برابر نیست دیگه این از اون دو وه هاست میگه که مثلاً اگر گفته بودیم ۵ درصد احتمال میگه ۲.۵ درصد با چه احتمالی

صفری که شما پیدا کردید از اف بحرانی اینوری بزرگتر یا از اف بحرانی اونوری کوچکتر باشد این میشه فرضتون رد میشه اگه تو سفیده افتادید نه نمی‌تونید اونو بگید و میگید با هم برابرند عرض به حضور شما ولی اگر بهتون گفته بودم که تو آزمون جوری بود که سیگما یک بزرگتر باشد یه وره بود دیگه نمیخواست دوتاشو حساب بکنید حالا در مورد اف یه سری توضیحات اجمالی اضافه هم وجود داره اولا f ترتیب نوع یک و توش مهمه یعنی فرق بکنه جاش فرق میکنه و اگر اف یک منهای آلفای نو یک و دو رو بخواید پیدا بکنید بدون اثبات میشه از یک تقسیم بر اف آلفای یک حسابش کرد یعنی اگر شما جایی رفتید مثلاً به این مواجه با این مواجه شدید میتونید اینو حساب بکنید یک تقسیم پیدا بکنید اون یکی دیگه پیدا بشه حالا چرا عرض می‌کنم مثلاً این فرض کنید جدول توزیع f به ازای نوع یک و نیم دو برای آلفای چقدر درصد

برای آلفای ۱۰ درصد خب اف ۱۰ صدم داده خدمتتون عارضم که این آلفای ۱۰ صدم رو داده و اینجوری شما می‌تونید چیکار کنید برید به ازای ۹۱ و ۹۲ مختلفش که یک بود ان یک منهای ۱ بود n2 برید پیدا بکنید که در واقع اف بحرانی چنده اف صفر شما چنده و تی استاتیک شما اینجا اف صفره و با اون مقدار بحرانی چکش بکنید و در نهایت چی در نهایت عرض به حضورتون بگید که این واریانس هاشون با همدیگه برابر هستند یا نیستند خب اینجا خدمتتون عارضم که قبل از اینکه پس اون چیز رو چکش بکنید قبل از اینکه این به اصطلاح بتونید وارد مقایسه دو جامعه آماری با واریانس های نامعلوم بشید و بخواید میانگین هاشون رو با آزمون تی یا تی تست چک بکنید اول باید

چک بکنید آیا واریانس با همدیگه برابر هستند یا نیستند ما معمولا اولیه رو نیاز داریم صرف اینکه برابر نباشند برای ما کافیه کی بیشتره که کمتر عرض کردم که دو و یک ور بومشو حذف بکنید و این از اولی چک می‌کنیم اف صفر رو پیدا می‌کنیم اگر از این مقدار بحرانی بیشتر یا از این مقدار بحرانی کمتر بود عرض به حضورتون که ردش می‌کنیم در غیر این صورت چیزه دیگه قبولش میکنیم حالا مثلا یه مثال هم اینجا بزنیم و دیگه بریم به سمت جمع بندی ماجرا خدمتتون عرضم که گفته یه مهندسی داریم که رفته دو تا سیستم اندازه گیری رو بررسی کرده یکیشون ۱۱ تا نمونه گرفته یکیشون ۱۰ تا نمونه حالا یه میانگین های داشتند که اشاره نکرده واریانس های نمونه که گرفته برای اولی مثلا چهارده و نیم برای دومی ۱۰.۸ بوده درسته ظاهر اینا یکی نیستند سوالش اینه آیا این واریانس های جامعه آماری اول و دوم با همدیگه

هستند یا نه یعنی من می‌تونم فرض کنم برابر نیست یا نه خب برای اینکه این کارو بکنه خب باید بره از همون آزمون استفاده بکنه سیگما یک دو مساوی با سیگما دو دو فرض صفرشه فرض نالش اینه که اینا با همدیگه برابر نیستند یا البته سوالش اینه آیا سیستم یک واریانس بیشتری نسبت به سیستم دو دارد پس فرض صفرش میشه سیگما یک دو بزرگتر مساوی ببخشید فرض یکش میشه خلاف ضد اون سیگمای دو کوچکتر مساوی میخواد بره خلافش ثابت کنه میخواد ببینه آیا سیگما یک دو رو میتونه بگه سیگما دو یعنی اچ صفر رو رد بکنه و به اچ یک برسه یا نه خب برای اینکه این کار بکنه باید اف صفر رو تشکیل بده نسبت واریانسست شده عدد ۱.۳۴ بعد رفته با تعداد درجات آزادی یعنی یکی کمتر از اون یکی کمتر از این f بحرانی خونده و با توجه به اینکه یه طرفه هم داره به داستان نگاه میکنه یعنی مثلاً با یکی از اینا بره جلو حالا کافیه بستگی

۱ و ۲ رو کدوم گرفتید و گفته تو این مسئله ما با توجه به اینکه در واقع اف ۵ درصد و ۱۰۹ یعنی همون ۹۱ ۹۲ شده مقدارش سه و ۱۴ مقدار بحرانیه مقدار من شده ۱.۳۴ و من مقدارم کمتره تو منطقه سفید رنگ افتادم یعنی تو اینجا تو منطقه سفید رنگ افتادم و چی و نمیتونم فرض کنم که اینا با همدیگه فرقی دارند پس این این ادعا که سیگنال یک دو بیشتر از دو غلطه رد شد به چشم شما دارید میبینید ولی با چی با یکی با ۱۱ تا یکی با ۱۰ تا نمونه تست‌های آماری میگن من نمیتونم دلیل کافی شواهد کافی ندارم برای اینکه بهتون بگم جامعه آماری اول و دوم میانگین ش اختلاف معنادار دارد خدمتتون عارضم که دیگه به سمت جمع شدن اگه بخوام برم ماجرا اینه که به اصطلاح وقتی که یه مجموعه به شما میدن

خوب اگر در واقع وان سمپل بود یعنی شما جامعه آماری داشتید که با یه عدد ثابت می‌خواستید حسابش کنید از آزمون وان سمپل تی تست استفاده می‌کنید که تو جداول خدمتتون گفتیم اگر دوتایی بود اینجا دو حالت به وجود میاد اینی که داده‌هاتون دیپندنتند یا این دیپندنتن من در مورد یه چیزی صحبت نکردم یه حالتی رو در نظر بگیرید که مثلاً فرض کنید یک کلاسی شما دارید که آزمون میان ترم دادن نمراتشون مثلا علی ۱۷ شده محمد هفده و نیم شده و و و و یه بار هم آزمون فاینال رو میدن و همه اینا یه نمره متناظری دارن یعنی علی محمد و سایرین همشون یه نمره متناظری دارن ما تو آزمون های قبلی هیچ اشاره نکردیم که n1 و اینا باید با هم برابرشن اما تو آزمون های دیپندنت دقیقا همون کسانی که تو آزمون اول بودن تو آزمون دوم هم بودن و نمرات متناظر دارن اونجا اگه بخواید محاسباتتون انجام بدید از یه روشی بهتره

تست که یکم فرمول‌هاش فرق می‌کنه با بالایی‌ها اما اگر اینا پرتی تست نبودن مثلاً دو تا جامعه بی ربط بودن و فلان نگاه می‌کنید که حالا واریانس‌هاشون یکی هستند یا نیستند و از کدوم رابطه میرید و تازه اینا برای وقت‌هایی بود که ما فقط یک متغیر در واقع چیز داشتیم مداخله گر داشتیم و اونم دو لول داشت یا لول یک یا لول دو مثلاً اینکه میانگینتون ۱۵ هست یا نیست میانگینتون از ۱۵ بیشتره یا کمتر ها اینکه علی و محمد یعنی گروه کلاس چیز نمیدونم میان ترم گذاشتید با فاینال مقایسه میکردید دانشگاه شریف رو داشتید با تهران مقایسه می‌کردید ولی من هیچ وقت نیومدم سه تا به بالاش کنم یعنی همزمان نگم دانشگاه شریف و تهران و امیرکبیر رو بیابان مقایسه کن ها یا اینکه بیام سه گروه زیر هشت سال بین ۸ تا ۱۵ بالای ۱۵ رو با هم مقایسه کن اگر تعداد گروه‌هایی که دارید بررسی می‌کنید بیشتر از دو تا شدن باید برید از یه آزمونی

آزمون آنالیز واریانس انواع استفاده کنید و اونجا آزمونش اف تست که تو این جزوه وجود داره ولی من دیگه فرصتی ندارم که صحبت بکنم اونجا هم فرض اچ صفر اینه که میانگین همه گروه‌ها با همدیگه برابره مگر اینکه شما بتونید خلافش ثابت کنید که دو تا گروه هم با همدیگه برابر نباشند به شکل معنادار آماری اون رد میشه اچ صفرش خب مثلاً همین که بین شریف تهران امیرکبیر همین که اونجا مثلاً بگید فرض اولتون که شریف تهران امیرکبیر دارن در یک ساعت بچه عمل میکن ولی همین که یکیشون دو تاشون با همدیگه مثلاً شریف و تهران شریف و امیرکبیر یا تهران امیرکبیر به محضی که اختلاف شد معنا دار بشه اونجا پی ولیوش کمتر از ۵ صدم بدست میاد و شما چی خواهید شد میتونید بگید که بین حداقل دو تا از این گروه ها تفاوت معنادار آماری وجود دارد دیگه حالا جزئیات بیشتری هم هست این تیک هاشو واگذار می‌کنم به خودتون اگه می‌خواید مطالعه بفرمایید اینکه نه تنها شما بگید میانگین آماریون با هم یکی هست یا نیست بلکه بگید حتی این میانگین اون جامعه

تو چه بازه‌ای قرار می‌گیره مثلاً فلان احتمال با احتمال ۹۵ درصد یا اختلاف میانگین بین دو تا گروه ۱ و ۲ مثلاً آقا و خانم‌هایی که اومدن با ربات کار کردن که میوه یک منهای میو دو باشه تو چه بازه‌ای قرار می‌گیره که اینجا همونطور که گفتم کامل‌تر از h صفر یعنی باید اچ صفر رو تو خودش پوشش بده اگه یک منهای مثال مثلا برم جلو اگه میو یک منهای می دو اختلافشون بین یک عدد منفی و یک عدد مثبت افتاد یعنی منفی بین اونا تفاوت معنادار آماری وجود ندارد هر از گاهی این یعنی تو این احتمال وجود داره که این از اون بیشتر یا اون از این بیشتر باشه اما اگر کلا نیروی تو بازه منفی یه چیز تا منفی چیزی یا مثبت یه مثبت یه چیزی قرار داشت میتونید حتما بگید که از می دو مث کمتر یا بیشتر مث اینجا حداقل بین می دو دو دهم اختلاف هست خب که عرض کردم این فرم کامل‌تریه و بعدش هم که دیگه آنالیز واریانس

تک عاملی دو عاملیه یا چند عاملیه که توضیح شفاییش اینه اگر شما یک متغیر در واقع چیز مداخله‌گر داشته باشید که فقط سه لول به بالا داشته باشه باید برید به جای تی تست از آنالیز واریانس یا انواع وان وی استفاده کنید و اگر توی مسئلتون دو متغیر وجود دارد حالا هر تعداد لول هم میخوان داشته باشن دو تا سه تا ده تا باید برید از آنالیز واریانس‌های مراتب بالاتر استفاده بکنید یعنی دو طرف تو وی یا الی آخر که این دیگه واگذار میکنم به خودتون اگر تو آزموناتون کاراتون چیزی داشتید در خدمتتون هستم و در نهایت هم پایان بخش صحبت‌هامون اینه که اینو با نرم افزار مینی تبتون یاد بدم نرم افزار مینیتر spss و آر سه تا از نرم افزارهای خیلی خیلی معروف اند که میشه توشون کارهای آماری که بهتون گفتم خیلی سریع در کسری از ثانیه انجام داد شما فرض کنید مثلاً داده برداری کردید از کلاس اولتون

از ۲۰ شده ۲ ۳ ۲ ۴ ۵ ۶ ۷ ۷ ۸ من عمداً دارم این نمراتو پایین میدم اینا همه گروه یک حالا من فرض کنید مثلاً ۱۰ تا میزارم خب ده تا هم مثلاً یا ۱۵ تا هم کلاس ۲ می‌ذارم بعد مثلاً اینا رو میدم ۱۲ ۱۱ ۱۳ ۱۴ ۱۲ ۱۸ مثلاً ۱۹ ۱۹ و چه می‌دونم ۲۰ بعد مثلا ۱۱ این همه گروه دو اند حالا این دو این دو دو یکی که نوشتم میتونه ای و بی باشه این دومی ستون دوم عرض میکنم مثلاً اینجا می‌نویسم گریت اینجا مینویسم مثلاً لول یا کلاس مثلا کلاس ولی این اولی براشون مهمه که نمراتشون چنده خب حالا کارهایی که میتونم بکنم اینه توی استت منوی استت شما میتونید بیسیک استتیستیک رو انتخاب بکنید وان سمپل زد وان سم

انتخاب کنید خدمتتون عارضم چون من دارم دو گروه با همدیگه مقایسه می‌کنم تو سمپلتیو استفاده می‌کنم میگه که سمپل یکت سمپل زد عددها تو کدوم ستونن ستون گریت روش دوبار کلیک می‌کنم انتخاب میشه آیدیات کجان رو لول دوبار کلیک میکن آیدی عرض کردم میتونه یک و دو ای و بی علی و محمد اینجوری باشه که باید دو تا حالا عبارت یا استرینگ باشه که اون بتونه مقایسه کنه بگه اینا با هم یه دستن اونا با همدیگه یه دستن خب این اگه اوکی بزنم چیکار میکنه میاد برای من تی ولی پی ولیو و فلان رو حساب میکنه خدمتتون عرضم یه سری عدد رقم پیشنهاد میده یه جدول بهم میده میگه شما تو تمپل سی تست استفاده کردید دو تا لول داشتید یک و دو اسمش بود ده تا تو اولی بود ۱۱ تا تو دومی میانگین یکی چهار میانگین ۱۴ بود استانداردشن دو و چهار بود و الی آخر خدمتتون عارضم که میو یک منهای می دو رو من رفتم حساب کردم در واقع مقدار

تی ولیو شده منفی ۶/۷۸ که از مقدار تی بحرانی اون تی صفر خودشه از مقدار تی بحرانی حساب کرده خیلی کمتره رفته پی ولیوش احتمالشو حساب کرده دیده عدد شده نزدیک صفر یعنی اینجا مثلاً تو این شکل‌هایی که داشتیم افتاده خیلی خیلی گوشه شکل اصلاً افتاده اینجاها حالا خب که احتمال از اون به بعدش صفره و این پی ولیو هرچی از پنج صدم یا اون آلفایی که دارید کمتر باشه نماد اینکه بین دو تفاوت معنادار آماری وجود دارد اینجا اینقدر این عدد کم شده که چشم بسته میتونید بگید واقعا وجود دارد خدمتتون عارضم که من فقط یه سری توضیحاتم بدم خدمتتون اینکه تو استت شما میتونستید تو سمپل تی تو آپشنزش برید و بگید که کدوم فرض رو می‌خواستید اولاً کانفیدنس لولتون می‌خواستید چی باشه فرضتون می‌خواستید این باشه که دیفرنس مخالف چیز باشه اون یکی دیگه باشه یا اینکه دیفرنس کمتر از این

دیفرنس بیشتر از اون باشه اون سه حالتو دارید در ضمن فرض واریانس‌های برابر و مخالف هم میتونید بزنید یا نزنید و اینو مجدداً محاسبه بکنید و خب حالا بسته به اینکه مسئله‌تون چیه از اینا استفاده بکنید و دیگه نخواید خودتون کارای آماری عجیب غریب باید انجام بدید برید جدول اف جدول تی و انتگرال‌ها رو حساب بکنید و مقدار بحرانی رو پیدا کنید و اینا رو خودش به شما میده بچه‌ها من تا اینجا درس رو نگه میدارم چون داره یعنی بیش از حد طولانی میشه ولی اگر سوال داشته باشید در این مورد خدمتتون خواهم گفت اینم وان اینجا میشه انجامش داد که برای وقتایی که سه لول دارید و مثلاً اینم بگیم و دیگه خداحافظی کنیم از خدمتتون مثلا فرض کنید کلاس سه هم داریم دانشگاه امیرکبیر اند بعد اینا مثلاً شدن ۱۲ مثلاً ۱۱ ۱۱ ۱۰ مثلاً هشت هشت سه سه خب یه همچین چیزی و حالا اگه بخوام این سه تا گروه با هم مقایسه بکنم دیگه الان

همزمان معنا نداره که بین سه تاشون با هم می‌تونیم تیتس رو بین یک و دو یک و سه دو و سه بزنیم ولی اینجا میگه ریسپانس‌ها چین می‌گم گریدزن فکتورم لوله که سه لول دارم اوکی که بکنم این میره حساب کتاب انجام میده حول و حشم داره میگه میانگین گروه یک دو سه چهرین احتمالا میشه حدس زد که اگه قراره بین تفاوتی وجود داشته باشه همیشه بالاترین میانگین و کوچکترین میانگین حتماً تفاوت دارن حالا ممکنه کسان دیگه هم داشته باشن خب خدمتتون عارضم که اینجا می‌بینید جدولشو می‌خونید جدولش جدول پیچیده تری تو جزوه آقای دکتر خدایگان هست که اینا رو چجوری حساب کردن چی هستند چیز عجیب غریبی نیستند نمادی از واریانس های درون گروهی و کل بین گروهی هستند اینجا رفته f ولیو رو پیدا کرده همون فیشر مقدار بحرانی رو و با مقدار مقدار تست رو حساب کرده اف صفر رو با مقدار بحرانی حساب کرده جوری بوده که مقدارش پی ولیو صفر شده یعنی چی چون از پی ولیو از پنج صدم کمتره نماد اینه که حداقل بین دو تا گروه اینجا اختلاف

آماری وجود دارد خب و شما چشم بسته می‌تونید بین گروه بیشترین میانگین و کمترین میانگین بگید اختلاف معنادار وجود دارد دیگه یعنی نگاه کنید بین این سه تا در واقع کدوم میانگینش چند بود حالا اگه جایی گزارش کرده باشه و خدمتتون عارضم که در واقع این الان گفته دیگه گروه یک دو و سه میانگین ۴ ۱۴ وشته میتونید چشم بسته بگید بین گروه دو و یک توانمداری بین دو و سه بخواید ببینید باید برید تیست جداگانه بگیرید و اینا رو محاسبه کنید خب این مواردی که باید خدمتتون عرض میکردم اجازه بدید اینجا درس رو نگه داریم براتون آرزوی موفقیت می‌کنم هرجا که هستید خوش و خرم باشید خدانگهدار

به نام خدا سلام کارگاه تمرین سوم درس را امروز داریم قرار است در مورد سنتیمنت به کمک شبکه‌های بازگشتی حالا به خصوص صحبت بکنیم و حالا بیشتر در مورد پیاده سازی کارگاهمون دو تا بخش داره بگم چی حالا احتمالا بدونید ولی تح احساسات مسئله اش اینجوری تعریف میشه که شما قراره که حالا به کمک یه مدل ریاضی یه دسته بندی انجام بدید بین احساساتی که حالا روی متن حاکمه مثلا بگید این نظر در مورد این ویدیو یا این کالا مثبت بوده یا منفی کامپیوتر خودش بتونه اینو تشخیص بده معمولا شبکه های بازگشتی برای این تسک ها استفاده میشه زیاد هم

توی وب سایتایی که فیلم پیشنهاد میدن یا وب سایتایی که حالا ازشون خرید آنلاین انجام میدید و اینها این کار به خصوص توی ریکاور سیستم خیلی مدل ابتدایی بازگشتی و آموزش بدیم پیاده بکنیم و حالا ببینیم داستان چطوری است کلا دو تا قسمت اصلی داره کارگاهمون قسمت اولش در مورد اینکه حالا کلا چطوری دیتا رو بخونیم و پیش پردازش انجام بدیم دیتا ست داریم از وب سایت ام اینجا فکر کنم بتونم بهتون نشون بدم این دیتا ست و حالا ۵۰ که این لیبل پاسیف نگتی خوردن و خب قراره یه بافر اینجا آموزش بدیم میتونه تعداد دسته بندی خروجیش بیشتر هم باشه ولی اینجا حالت آموزشی داره یه دیتا ست ساده

قسمت اصلی داره حالا کار امروزمون قسمت اولش در مورد اینکه کلاً چه جوری باید داده متنی کار کنیم و اون داده متنی رو تبدیل بکنیم به یه سری عدد و رقم که حالا اونو بتونیم ورودی بدیم به مدل ریاضیمون چون تا حالا بیشتر ما عکس و یه سری عددی استفاده می‌کردیم که حالا اونا ذاتا معلوم بود که حالا چطوری کامپیوتر اینا در مورد رشته یک داستان متفاوته و حالا هم صحبت میکنیم که چطور باید تر و تمیز بکنیم رشته رو و بعد چجوری تبدیلش کنیم به یه سری عددی که بتونیم ورودی بدیم به مدل و تو قسمت دوم کارگاه حالا در مورد اینکه چطوری میشه شبکه های بازگشتی توی پای پیاده سازی کرد صحبت کنیم قسمت اولش به درد همه میخوره ولی خب قسمت دومش

بیشتر در مورد پایتخت و پیاده سازی مدل و همین دیگه آها یه نکته دیگه هم که حالا من دیگه در مورد پیاده سازی اونقدر عمیق توضیح نمیدم همه چیز رو پیش فرض حالا دکتر به من گفتن که شما مقدمات رو میدونید و صرفا حالا قراره یاد بگیرید که چطوری حالا میشه یه آرنا توی پیاده کرد که اونم خیلی چیز سخت و پیچیده ای نیست خوب حالا من یه توضیحات مختصری میدم و ببینیم حالا داستان چطوریه آها یه نکته دیگه هم که من حالا این نوت توی سایت آماده کردم حالا پیشنهاد میکنم که حتما سایت ببینید و یه اکانت بسازید و باهاش کار کنید خیلی وبسایت مفیدی میتونه باشه خوب تو این قسمت اول ما اومدم مدل لطف کردم

قسمت اولشو نشون دادم این ستون اول دیتا فریممون اون رشته‌ها هستند و ستون دوم حالا احساساتی که یا پازیتی یعنی نگتیو نشون داده حالا واسه اینکه بیشتر دیتا رو ببینیم من یه سمپل رندوم اینجا نشون دادم تولید شده اینجا هم طول رشته رو پرینت کردن خود رشته ۹۲۶ تا کاراکتر داره و حالا اینجا میتونید متن کاملشو ببینید که چی گفته خوب بریم سراغ پیش پردازش متن یه تابع دیتا پراسس اینجا تعریف شده حالا ما اول مییم کلا متن و همه حرفاشو کوچک و بزرگ میکنیم بزرگا رو کوچک کوچک میمن هیچی یه سری

کاراکترهایی که حالا توی تحلیل احساسات شاید خیلی به کارمون نیاد و ریموو کردیم حالا اینکه این دات ساب چیکار می‌کنه رو می‌تونید برید بخونید در مورد لایبرریجکس اونقدر حالا حرفه‌ای قرار بگیرید این کاری که اینجا هست چه حالا واسه اون تسکی که اون سوالی که توی تمرین دارید ولی در همین حد که برید بخونید چیکار میکنه حالا تو قسمت بعدی هم ما اون الان نگارشی رو حذف کردیم و در انتها حالا اون تکستی که تر و تمیز شده رو برگردون خب حالا اینجا میتونید ببینید دیگه مثلا دیتا دیتا ست کل شده به چه شک اول بزرگ بوده بعد کوچیک شده یا اینجا یه سری لینک های بودند که این حالا به درد نمیخوردن اینجا

و به همین ترتیب حسن آباد ما با این ستون کار می‌کنیم و خب قدم بعدی اینه که ما دیتامون حالا دیتای متن توکنایز کنیم توکن حالا خیلی ساده بخوام بگم تبدیل کنیم حالا اون استرینگ رو به واحدهای کوچکتر که کلمه خیلی معنی بیشتری نسبت به کلمه داشته باشه ولی حالا ساده فرض کنید که اینجا معنی توکن میده و حالا کار اولی که انجام میدیم اینه که اوکی اول بریم ببینیم توی کل این حالا دیت که داریم کلا چه توکن های داریم و برای این کار هم اومدیم از این متد دات اسپلیت استفاده کردیم روی رشته اعمال میشه و حالا یه لیستی برمیگردونه از اون کلمه هایی که اون رشته رو ساختن حالا اینجا این اسپلیت یه

به چه کاراکتری رسیدم این رشته رو اسپلیت بکنم که اینو می‌تونید برید خودتون بخونید و بعد اومدیم حالا به کمک این کانتر شمردیم که هر کلمه چند بار تکرار میشه این لیسته کل این کلمه‌های این دیتا فریم شامل میشه و اینطوریه که مثلا فرض کنید هر کلمه رو هر جمله رو به ترتیب نگاه میکنه و تک تک توکن های اونو پشت سر هم میذاره مثلا ممکنه تو شما کلی وان داشته باشید من اگه قبل اینو حالا را کنم شما میتونید ببینید که چه اتفاقی میفته یک طول میکشه من متوقف میکنم که حالا شد ببینیم نتیجه خوبه

الان میتونید رو ببینید که حالا این یه دیکشنری دیتا ست شما توکن رو ۵۰ هزار بار داشتید نمیدونم مثلا ترکیه ۸۹۰۰ بار داشتید و همینطور این کانتر هم از کتابخانه حالا کالکشنز ایمپورت شده که در موردش بخونید ولی خوب میشمره توی یه لیست مثلا المان های تکراری چهه هرمان چند بار تکرار شده یه متد دات هم داره که حالا شما اگه اینو استفاده بکنید بهتون اینا رو به ترتیب از زیاد به کم سورت میکنه و نشون میده که حالا این یه لیستی از فلان میشه و شما اینجا دارید اصلا مووی از همه بیشتر تکرار شده ۸۳۵۰۰ ایون ۲۴۲۸۰ بار تو این دیتا ست تکرار شده پاک کنم ادامه بدیم و

حالا بعدش اومدیم که به کمک همین لیستی که اینجا ساختیم ۲۰ اولشو گرفتیم و اینستاگرامی از کل این توکن‌هامون اینجا رسم کردیم که حالا این همون لیستی بود که من قبلش بهتون نشون دادم نمایش گفتیم باید توکن ها کلمه عدد تبدیل کنیم برای این کار حالا میایم اول حالا چجوری اصلا میخویم به عدد تبدیل کنیم میایم میگیم آقا ما کلا مثلا یه سری کلمه داریم فرض کنید نمیدونم چند تا توکن خاص توی این متن داریم صد تا توکن خاص داریم به هر توکنی عدد نسبت میدیم مثلا میگیم آقا مووی یک باشه فیلم دو باشه وان سه باشه لایک چهار باشه و همینطور آخر

و حالا یه دیتا ست این شکلی اینجا درست می‌کنیم و پرینت کردم چی هست خیلی پیچیده نیست یه دیکشنری درست شده و حالا بعدش اینت یه لیستیه که میاد حالا ذخیره میکنه دیگه اون عددهایی که ما نسبت دادیم بر توکن و خب حالا تهش من اینجا اینو پرینت کردموز اینتو و میبینید دیگه حالا این مثلاً اون کلمه اولین جمله اون اولین کامنت بوده توی اون دیتا ست مون که حالا توی کلمه شد سومین کلمه با چی شروع

با وان شروع شده وان ۳ معادل عدد ۳ یا ۱۸۰۹ معادل ریوورز و به همین ترتیب الان دیتا ستمون از استرینگ تبدیل شد به حالا این عددا خب کار بعدی هم که باید انجام بدیم اونقدر پیچیده نیست لیبل که تبدیل میکنیم به صفر و یک این کارم آسونه دیگه یه لامدا فکشن تعریف شده که حالا اگه پازتیو بود اون کامنت یک بهمون برمیگردونه در غیر این صورت صفر برمیگردونه که نگتیو بوده کامنت و حالا این تابع با متد اپلای روی ستون سنتیمنت اعمال کردیم و نتیجه به این شکل در اومده که حالا قبلا اینجا صفر شده و این ستون هم ببینید که بعد از اعمال حالا این عملیات اینجا هست که گفتیم هر توکن

تبدیل شده به ۳۸۰۹۴۱ و ادامه ۵۶۰ باشه اینجا ۵۶ و به همین ترتیب گام بعدی ما باید بریم ببینیم کامنت های مختلفی که داریم طولشون با همدیگه فرق میکنه توی شبکه بازگشتیم که مثلا ما یه طول یکسانی باید برای داشته باشیم و سیکس باید مشخص باشه اینجا پس باید بریم بشماریم ببینیم طول هر کدوم از اینا چقدر ما کامنت طولشون طبیعتا فرق میکنه حالا اینکه چجوری میایم این طول یکی میکنیم در ادامه در موردش صحبت میکنیم خوب اوکی من اومدم طول هر کدوم از این المان های لیست تو اینجا ساختیم

لیست در لیست و اینجا اومدم طول هر کدوم از المان‌هاشو به دست آوردم ببینید یه چیزی بگم در مورد این حالا فرمت نگارشی اینجا اگه اینا براتون عجیب و غریب هست پیشنهاد می‌کنم که مثلاً برید یکمی پایتون رو بیشتر یاد بگیرید و اینکه مثلاً چطوری به پایتونیک کد بنویسیم و باهاش آشنا بشید به فرمای دیگه‌ای بنویسید مثلاً یه لیست خالی تعریف کنید ولی این کاره به مراتب سریعتره و خب حالا شما وقتی با دیتا یه حجیم کار میکنید این خیلی مهم میشه که بتونید یه کد بهینه بنویسید در کل حالا دانش پایتون و برنامه نویسی تو و حالا بهینه کد نوشتن در کنار حالا یاد گرفتن باید همیشه داشته باشید و اول اول حد خوبی یاد بگیرید چون واقعا اگه حالا یه سری چیزهایی ندونید که دارید چیکار صرفا یه سری سینتکس به خاطر سپرده باشید و

همونا رو بنویسید توی موقع کار کردن با دیتای بزرگ واقعا به مشکل یه کدی بنویسید که حالا شاید توی چه میدونم ۱۵ ثانیه رام بشه همون کد رو یه جوری بنویسید که توی مثلاً نمی‌دونم ۱۰ دقیقه یه ربع تفاوت‌ها واقعاً اثرگذار میشه خوبه هر کدوم از اینا رو حساب کردیم که طول دیتا با هم فرق میکنه ولی متد حالا استفاده این ستونش یه سری حالا مشخصات آماری این ستون به ما میده اینا چون عدد رقم صحبت کنیم که حالا اینجا من پرینتش کردم هیستوگرام طول سیکوئنس ها رو هم اینجا رسم کردم که بیشتر سیکوئنس حالا یه طولی بین صفر تا حالا ۲۷۰ ۸اد اینا دارن و حالا یه تعداد کمی

کامنتم هست که حالا تولای بزرگتری داره نه ببین تکنیکی که ما حالا استفاده می‌کنیم اینه که واسه اینکه کلا طول یکسان داشته باشه باید چیکار کنیم باید یا باید پد بدیم اونایی که طول کوچیکی دارند مثلا یه حد مشخص کنیم برای طول سیکوئنسمون که حالا اینجا میانگین شد ۲۲۶ از همین استفاده کنید یا یه چیزی نزدیک به این و اونایی که حالا مثلا فرض کن طول ۲۰۰ در نظر نباشه دقت شبکه ما تو شبکه رو یه مقداری در نظر میگیریم اونایی که طولشون کمتر از این طول هست ما پدشون میدیم یعنی یه سری صفر حالا یا به ابتدا به انتهای اون رشته اضافه میکنیم و اونایی که طولشون بیشتر از این هستند فرانکیت میکنیم یعنی مثلا نمیدونم اگه یه رشته ۵۰۰ ما میخویم طول سیکوئنس های ورودی مدل

۳۰۰ تای آخرو در نظر نمی‌گیریم و جدا می‌کنیم حالا چی می‌خواستم بگم آها حالا وقتی که پد میخوای بدی چیکار می‌کنی خب شما میاید یه سری صفر به اول این لیستتون اضافه می‌کنید دیگه یا به آخرش اضافه می‌کنید یعنی طولتون صده می‌خواید طول ورود به شبکه ۲۰۰ باشه حالا ۱۰۰ تا صفر یا به ته این اضافه میکنید یا به ابتدای لیست اضافه میکنید این نکته‌ای که حالا اینجا هم این مپینگ کلمه ها را از یک شروع کرده و از صفر نکرده همینه یعنی صفر رو میذاره به عنوان ۵ و حالا کلمه ها رو از یک شروع میکنه به مپ کردن به عدد صحیح این از این بعد حالا اینجا یه تابع تعریف کردیم که حالا همون عملیات پد دادن یا ترانکت کردن و انجام میده برامون و بعدش اومدیم که این کار حالا این تا پ

یه دیس حالا طول دلخواهمونم ۲۰۰ بوده و لیست تمام توکن است و حالا اینجا می‌بینید چی بوده دیگه مثلاً این طول این سیکوئنسه اولیشه دیگه وان ریویوس این طولش ۱۶۸ بوده خب ۳۲ تا صفر اولش اضافه شده اول اضافه آخر اضافه کنید فرقی نداره اونایی که طولشون بیشتر بودن حالا کات شده قسمت انتهایی ش اوکی قسمت بعدی اینه که حالا چطوری دیتامونو به تست و ترین و ولیدیشن تقسیم بکنیم که حالا این کار را انجام دادیم با این آشنا هستید طبیعتتا و حالا از اینجا به بعد دیگه داستان بیشتر به پای ترش ارتباط پیدا میکنه که بریم ببینیم چطوری حالا باید دیتا توی پایتون بسازیم و چطوری مدل آموزش

اینجا ساختیم ولی اینا رو به تبدیل کردیم به نام پای بهمون بعد اومدم از این حالا نامپای اره یه تنسور ساختم یه ترشور ساختم و حالا پایتون چیه تابع داره به اسم تنسور دیتا ست شما میتونید اینجا پورت دیتا از اینجا میتونیدمان ایمپورت کنید این حالا یک راحت تر دیگه طبیعتا میدونید باید یک کلاس دیتا ست بنویسید و بعدش کلاس دیتا لودر بنویسید معمولا احتمالا این فرمی که من اینجا کلاس دیتا ست نوشتم براتون متداول تر یعنی کلاس اینجوری تعریف بکنید و بعدش حالا

انجام بدید این باشه که یه اینستنس از این کلاس بسازید و حالا یعنی سه تا اینستنس از این کلاس بسازید یکی برای ترین یکی برای تست و یکی برای طولانی تره چند خط باید کد بنویسید ولی خب این یه موقع های سریعتر کارتونو راه میندازه دردسر باشه و بعد دیتا از دیتا لودر استفاده کردیم ۵۰ گرفتیم و دیتا رو حالا نوت کردیم و حالا اینجا واسه اینکه مثلا یه دونه بچه رو ببینید حالا نمایش دادیم کلا اینجوری بوده که ما گفتیم طول سیکسمون دوست و حالا اینجا مثلا یه دونه سمپل ایکس که من با این ایتر گرفتم از ترین دیتا لودر ببینید که

۵۰ در ۲۰۰ داره و بعد اومدم خود سمپل ایکس و پرینت کردم ۵۰ تا لیست ۲۰۰ تایی داره تو خودش و بعد لیبل نشون دادم که اینجا ۵۰ تا صفر داریم و به همین ترتیب من تا قبل اینو ران کنم که حالا ادامه صحبت کنیم راحت تر باشه شدنش تموم شد بریم سراغ قسمت بعدی خب اینکه چجوری معماری شبکه تعریف کنیم اینکه حالا آموزش بدیم ریخته این شکلی داره یه دونه سل استیت داریم یه دونه هیدن است سری مرحله بعدی این اچ و سی و اچ و یعنی باید مقدار دهی اولیه بکنیم حالا

چطور این کارو انجام شده مروری بشه و اینجا حالا معماری کل مدلی که میخوایم پیاده سازی کنیم میبینید یه رشته داشتیم بعد هر کدوم از این کلمه‌ها یا توکن ها رو تبدیل کردیم به یه عدد با اون حالا مپ که بهتون توضیح دادم مثلا دیس شده ۷۸ بر ثانیه ۴۵۴ معادل ۳ و معادل ۵۶۴ بعد از اون این عددا رو میدیم به ام بدین معادل این عدد اینتیجر به ما یه دونه چیز میدن یه دونه بردار که حالا سایز اون بردار دست خودم به چه شکلی هست را باز توضیح میدیم بعد هرینگ که به ترتیب سیکس ورودی میدیم

و در نهایت همه این ال اس دی ما رو کانکت میکنیم میدیم به یه لایه فولی کانکتد و حالا بد نشون داده این داستان ولی اینجوری که از کل این فول کانکت یه دونه اوت پوت میگیریم یه عدد بهمون نشون میده خروجی میده که حالا از سیگمای هم استفاده کردیم یه جوری داره احتمال یک بودن حالا ببینیم مدل تعریف میشه من کلا بگم که این ال استیم چه جوریه یعنی حالا یه دونه بلوک رسیدیم چجوری کار میکنه اینو که از حالا خود کلا معماری پیاده سازی کرده با این ان

مخفی ۱۲۸ گذاشتم و دو لایه میخواستم و حالا این بای دیرکشنال پارامتری که شما اگه ترو یا فاز بزارید اینو مشخص میکنه که شبکه باشه یا نباشه و حالا پارامتر بچ که این معمولاذارید با متد خودتون کار کنید اغلب من دیدم و این نشون میده که شما اگر بچه سایز بچ فرست رو ترو بزارید موقعی که ورودی به شبکه تون سایز تنسور ورود به شبکه باید یه سایز اینجوری باشه یعنی باشه عکس سایز در سیکونس لینک در این فیچرز ببین الان مثلا من گفتم من

پنج تا یه بچه ۵ تایی دارم از سیکوئنس‌های با طول ۲۰ که هر کدوم ۶۴ تا فیچر داره مثلاً فرض کنید من اگه بیام این ام بدینینگ اینجا ۶۴ تایی تعریف کنم این ۷۸ مپ بشه به بردار ۶۴ تایی خب حالا فرض کن کلاً ۲۰ تا حالا کلمه هم داشته باشه و حالا سایز ۵ این معادل اونه اچ و سه صفر باید شیپ اینجوری داشته تعداد لایه ها را جدا مقدار دهی اولیه میکنید سایز که حالا سایز بچتون هست و هیدن سایز که حالا اینم دیگه همین سایز اینجا اچ هم اندازه بردار باید طول هم اندازه هیدن سایز داشته باشید یه مقدار اولی وقتی ۱۲۸ گذاشت سایزشو اینجا باید ۱۲۸ باشه سی

ساخت استفاده بکنید اینطوریه که حالا اول ایکس رو بهش میدید و بعد یه تاپل بهش ورودی میدید که اون اچ صفر و صفر هستند به ترتیب و بهتون سی ان رو برمیگردونه که الان میتونید حدس بزنید اینا چی هستن من شیپشون رو اینجا خروجی گرفتم و بهمون شیپ داد اوت پوت پنج در ۲۰ در ۱۲۸ که خوب پنج سایز ۲۰ طول سیکوئنس ماست و ۱۲۸ هم هیدن استیتمونه دیگه یعنی خروجی تک تک این حالا شده را به ما داره میده برای هر کدوم از سم و اچ

آخرین یعنی آخرین ال اس دی امی که در توی سیکوئنسمون هست و این اچ n منهایی که خلاصه تمام این اتفاقی که قبلا افتاده رو ورودی میگیره h واسه اینو میده شما میتونید اصلا یه عده برای کلاس استفاده میکنم اینو به عنوان ورودی میدم به فول کانکت ما اینجا اومدیم ولی همه رو دادیم بخاطر همین حالا از این استفاده میکنیم در ادامه میگم چه مدل پیاده کنیم اینم حالا نکته در مورد ریشه کردن که وقتی اینجا منفی میذاید چه اتفاقی میفته منفی بزار خود این اوت پوت پنج در ۲۰ در ۱۲۸ و شما فرض کنید تبدیل کنید به یه حالا

تنسور سه بعدی سنسور دو بعدی که بعد دومش ۱۲۸ باشه کردن باهاش آشنا هستید دیگه اینجا رو منفی یک بزارید خودش حساب دستی حساب کتاب بکنید این از این بریم قسمت بعدی که حالا مدل رو چجوری پیاده کردیم چیز آنچنان پیچیده ای نداره میگم شاید تنها نکته‌ای که حالا وجود داشت همین بود که اینجا چطور کارکردش چیه اگر بخواهید بزنید ساده بخواهید بزنید همین و حالا به همین ترتیب از اینم که حالا طبیعتا میدونید که داکیومنتیشن های خود پایتور خیلی کامل هستند وصل باشه وصل نیست بخاطر فیلترشکن فکر کنم نشون نمیده ولی داکیومتیشن خود خیلی خوب و واقعا کمک میکن بهتون

ولی ترانسفورم رو چجوری پیاده سازی بکنید که حالا تو این فصل باهاش آشنا شدیم اونم باز چیز پیچیده نیست به نظرم حالا برید اول بخونید داکیومتیشن‌های پایتون رو حالا بعدش اگه سوالی چیزی داشتید بپرسید من اگه بلد باشم جواب میدم خب ادامه بدیم خوب هر مدلی که توی پایتون تعریف میکنید میدونید که یه سری متد داره قسمت اول باید اینت کنید مت تو رو که حالا ما یه وکپ سایز داریم کلا چند تا برای ساختن اون بردار ام بدین که حالا میگم خدمتتون چطوری کار میکنه یه دونه اوت سایز داریمشن تعداد لاییر هامون و

کاملا براتون واضح باشه ولی بدونید آگاه باشید که چرا اینجا مینویسیم دات ماژول یا این سوپر اینت واسه چی اینجا نوشته شده و سوپر چیکار میکنه اینها اگه مثنا نیست صرف حالا خاطرتون هک شده که مثلا اینو باید نوشت اینجا پیشنهاد میکنم که حتما برید مثلا بیشتر در مورد برنامه نویسی حالا توی پایتون بخونید و دانشتون رو بیشتر اوکی در مورد لایه ام بدین صحبت کنم یا اینکه اصلا چرا اینا رو به این فرمت مینویسیم سلف چیه اینا رو پیشنهاد میکنم که اصلا برید بخونید و یاد بگیرید چیز پیچیده هم نیست

تعریف کردم که حالا این بدهینگ پایتون وکب سایز و امپدینگ دیمشن میگیره از شما کلا بهش میگه آقا من ۵۰۰۰ تا کلمه دارم و میخوام از این ۵۰۰۰ تا کلمه هم دیکشنری من کلا ۵ هزار تا کلمه داره میخوام هر کلمه وصل بشه به یه بردار با بعد امشن مثلا میخوام صد هزار تا کلمه دارم میخوام اینا رو تبدیل کنم به یه به صد هزار تا مثلا بردار مثلا ۶۴ تا ۱۲۸ بعد ال سی از استفاده کردم که اینجا در موردش صحبت کردیم این سایز ورودیش میگرفت به عنوان اولین پارامتر که اینجا گفتم بهتون خب طبیعی دیگه ما گفتیم این ام بدینینگ ها رو میفرستیم برس و

کجا بودیم آهنگ دست خودمونه چقدر باشه تعداد لایه‌های رسیم بهش دادیم تعریف کردیم یه لایه لینیر گذاشتیم که حالا گفتیم کانکت اینجا داریم و اکتیویشن حالا اینجا تعریف کردیم که بعد ازش استفاده کنیم توی متد فوارد چیز خیلی پیچیده نداره و اینم که از بعد در خب اوکی متد فوارد که حالا اون فورد پس ما چه باشه رو تعریف کردیم لایه های که بالا حالا کردیم خاصی نداره این نوع نوشتم توی پایتون خیلی بهتون کمک میکنه که چجوری یه مدل پیچیده را پیاده کنید اینجا من یه توضیح مختصری بدم خب اول همین

خاصی نیست سایز صفرشو گرفتیم اول اینو ایکس ورودی رو دادیم به لایه ام بدیم که حالا اینجا تعریف کردیم بعد خروجیش که دادیم به متد فورد میدیم حالا فلت کردیم و بعد دادیم به لایه فول کانکت دادم بود و بعد سیگ زدیم روشون و در انتها که خروجی گرفتیم از حالا این بعدش هم یه حالا این مدل سیم مدلی که زدیم هم هیدن رو برمیگردونه هم خروج سیگو خب ادامه بدیم

دیدنم اینیشیالایز کردن حالا اون اچ صفر و سی صفری که گفتم نیاز داریم انجام میده و اینم باید همونطور که گفتم حالا با صفر دیوایس جی پی یو منتقل میکنیم کلا بگیم مدل تو دیوایس حالا اینم اتفاق میفته بعدش حالا چک کردم که جی پی یو داریم یا نه یه دونه بیشتر از اون وک تو اینت گرفتم دیکشنری بود که این بالا تعریفش کردیم من ببینمش اینجا که گفتش حالا هر توکن هر کلمه معادل چه عددی باشه و در انتها هم

کردیم اینستنس از مدلمون ساختیم مدل به حالا دیوایسی که داریم باهاش کار می‌کنیم انتقال دادیم و اینجا حالا مشخصات مدل پرینت کردیم که چیز پیچیده‌ای نیست این دوتا را کنم این رو هم همینطور و حالا اینجام یه سری سمپل از چی نشون دادم مدل کار میکنه یه دونه ایکس و بچ از ایکس و وای از گرفتم اچ صفر و سی صفر رو به کمک این مدل دات این هیدن که میگرفت مقدار اولیه کردم و حالا شیپ اینا رو هم ببینید که همخو داره با همون چیزی که من بالاتر اینجا بهتون توضیح دادم که اچپی باید داشته باش از همین استفاده کردیم که اینجا بنویسیم

و در نهایت حالا این ایکس ایکس رو آوردم توی حالا اون دیوایسی که دارم باهاش کار می‌کنم که خود به خود میاد چون اینجا نوشته بودیم روی جی پی یو هستند و دادن به مدل و خروجی گرفتن و حالا پوت که چاپ کنیم بعد نیست عدد نزدیک ۵۰ میبینید که تو حالا کلاس فایر با کلاس چیزی یاد نگرفته هرچی بهش ورودی بدید هر کدام از اینها ۵۰ درصد میگه پازتیو ۵۰ درصد تقریبا ۵۰ درصد میگه که نگتی فقط حالا دیگه داستان ترین کردن توی ترین کردن مدل روی پایتون داریم که یه آشنا هستید این داستان چجوری انجام میشه و حالا اینا دیگه فکر نمیکم خیلی توضیح بخواد

اگه جاش ابهامی چیزی بود شما بخونید و بپرسید من پاسخ میدم حتما تنها نکته‌ای که داره این یوتیوب که حالا کلیپ کردن بردارین یه تکنیکی که آموزش بازگشتی استفاده میشه میدونید حالا دلیلش چیه مسئله که توی آر وجود داره برخلاف ما توی مثلا ایمیل و اینا داستان شدن داشتیم توی آرنا حالا علاوه بر داستان ممکنه پیش بیاد بخاطر حالا ساختار بازگشتشون ممکنه اکسپلو اتفاق بیفته خیلی خیلی بزرگ بشن و حالا کلا شبکه بریزه به هم همه چیزش که حالا کلیپ کردن یه تکنیک که باز در مورد این برید خودتون بخونید و همین دیگه مدل

دقت خوب حدود ۸۰ و مثلاً ۳% و در نهایت هم حالا تست کردن مدل که شما تو فاز تست مدلتونو روی مود ایول میزارید مدلتونو باید روی مود ترین بزارید و همین دیگه از اینجا به بعد خیلی چیز خاصی نداره و حالا از تست لودرتون استفاده میکنید ببینید چند درصد اون لیبل ها را درست تشخیص من واسه ویدیو خیلی طولانی نشه و خسته کننده نباشه یه سری جزئیات اینا رو نمیگم اگه خودتون میتونید بخونید اگه هر سوالی ابهامی چیزی داشتید هم هست هم می‌تونید تلگرام بهم پیام بدید و همین در مورد سوال چهارم این ویدیو میتونه خیلی کمک بکنه این داستان

چه جوری از خود کلمه‌ها رو بردار تبدیل بکنیم که اینها هست داخل اون تمرین هم باید انجام بدید فقط اون تمرین چالش بیشتر شما اینجا فقط یک بار میاید این توکناتون رو به عدد تبدیل میکنید تبدیل میکنید اونجا یک بار باید برعکس این ماجرا اتفاق بیفته و حالا خروجی شبکه تبدیل بکنید که حالا اون هم باز اونقدر سخت نیست کلی شبیه همین چیزی هست که اینجا بهتون گفتم حالا توی نوت که بهتون دادیم سعی شده توضیح بده و راهنمایی های نسبتا خوبی داشته باشه انجام بدید مدلی هم که اونجا باید حالا پیاده سازی بکنید اینجا یه سی ان ان به اضافه یه دونه ال اس باید حالا استفاده بنویسید ولی میخوام بگم که کلا چیز سختی نیست

اینجاها میتونستید تعریف بکنید مثلاً یه دونه صفر.cn اینجا تعریف بکنید و حالا اینجا ازش استفاده این قابلیت تعریف کردن مدل خیلی تر و تمیز و قشنگیه کاملا منطقی خودتون میتونید جلو برید و همین دیگه خیلی ممنون با توجه تو اگه هر سوالی ابهام مورد چیزی داشتید حتما بپرسید و موفق باشید خدا نگهدار

E:\courses\LangChain Project\main root\data\Tensorflow_CycleGAN_custom.ipynb

'code' cell: '['from keras.layers import Layer, InputSpec\n', 'from keras import initializers, regularizers, constraints\n', 'from keras import backend as K\n', '\n', '\n', 'class InstanceNormalization(Layer):\n', '    """Instance normalization layer.\n', '\n', '    Normalize the activations of the previous layer at each step,\n', '    i.e. applies a transformation that maintains the mean activation\n', '    close to 0 and the activation standard deviation close to 1.\n', '\n', '    # Arguments\n', '        axis: Integer, the axis that should be normalized\n', '            (typically the features axis).\n', '            For instance, after a `Conv2D` layer with\n', '            `data_format="channels_first"`,\n', '            set `axis=1` in `InstanceNormalization`.\n', '            Setting `axis=None` will normalize all values in each\n', '            instance of the batch.\n', '            Axis 0 is the batch dimension. `axis` cannot be set to 0 to avoid errors.\n', '        epsilon: Small float added to variance to avoid dividing by zero.\n', '        center: If True, add offset of `beta` to normalized tensor.\n', '            If False, `beta` is ignored.\n', '        scale: If True, multiply by `gamma`.\n', '            If False, `gamma` is not used.\n', '            When the next layer is linear (also e.g. `nn.relu`),\n', '            this can be disabled since the scaling\n', '            will be done by the next layer.\n', '        beta_initializer: Initializer for the beta weight.\n', '        gamma_initializer: Initializer for the gamma weight.\n', '        beta_regularizer: Optional regularizer for the beta weight.\n', '        gamma_regularizer: Optional regularizer for the gamma weight.\n', '        beta_constraint: Optional constraint for the beta weight.\n', '        gamma_constraint: Optional constraint for the gamma weight.\n', '\n', '    # Input shape\n', '        Arbitrary. Use the keyword argument `input_shape`\n', '        (tuple of integers, does not include the samples axis)\n', '        when using this layer as the first layer in a Sequential model.\n', '\n', '    # Output shape\n', '        Same shape as input.\n', '\n', '    # References\n', '        - [Layer Normalization](https://arxiv.org/abs/1607.06450)\n', '        - [Instance Normalization: The Missing Ingredient for Fast Stylization](\n', '        https://arxiv.org/abs/1607.08022)\n', '    """\n', '    def __init__(self,\n', '                 axis=None,\n', '                 epsilon=1e-3,\n', '                 center=True,\n', '                 scale=True,\n', "                 beta_initializer='zeros',\n", "                 gamma_initializer='ones',\n", '                 beta_regularizer=None,\n', '                 gamma_regularizer=None,\n', '                 beta_constraint=None,\n', '                 gamma_constraint=None,\n', '                 **kwargs):\n', '        super(InstanceNormalization, self).__init__(**kwargs)\n', '        self.supports_masking = True\n', '        self.axis = axis\n', '        self.epsilon = epsilon\n', '        self.center = center\n', '        self.scale = scale\n', '        self.beta_initializer = initializers.get(beta_initializer)\n', '        self.gamma_initializer = initializers.get(gamma_initializer)\n', '        self.beta_regularizer = regularizers.get(beta_regularizer)\n', '        self.gamma_regularizer = regularizers.get(gamma_regularizer)\n', '        self.beta_constraint = constraints.get(beta_constraint)\n', '        self.gamma_constraint = constraints.get(gamma_constraint)\n', '\n', '    def build(self, input_shape):\n', '        ndim = len(input_shape)\n', '        if self.axis == 0:\n', "            raise ValueError('Axis cannot be zero')\n", '\n', '        if (self.axis is not None) and (ndim == 2):\n', "            raise ValueError('Cannot specify axis for rank 1 tensor')\n", '\n', '        self.input_spec = InputSpec(ndim=ndim)\n', '\n', '        if self.axis is None:\n', '            shape = (1,)\n', '        else:\n', '            shape = (input_shape[self.axis],)\n', '\n', '        if self.scale:\n', '            self.gamma = self.add_weight(shape=shape,\n', "                                         name='gamma',\n", '                                         initializer=self.gamma_initializer,\n', '                                         regularizer=self.gamma_regularizer,\n', '                                         constraint=self.gamma_constraint)\n', '        else:\n', '            self.gamma = None\n', '        if self.center:\n', '            self.beta = self.add_weight(shape=shape,\n', "                                        name='beta',\n", '                                        initializer=self.beta_initializer,\n', '                                        regularizer=self.beta_regularizer,\n', '                                        constraint=self.beta_constraint)\n', '        else:\n', '            self.beta = None\n', '        self.built = True\n', '\n', '    def call(self, inputs, training=None):\n', '        input_shape = K.int_shape(inputs)\n', '        reduction_axes = list(range(0, len(input_shape)))\n', '\n', '        if self.axis is not None:\n', '            del reduction_axes[self.axis]\n', '\n', '        del reduction_axes[0]\n', '\n', '        mean = K.mean(inputs, reduction_axes, keepdims=True)\n', '        stddev = K.std(inputs, reduction_axes, keepdims=True) + self.epsilon\n', '        normed = (inputs - mean) / stddev\n', '\n', '        broadcast_shape = [1] * len(input_shape)\n', '        if self.axis is not None:\n', '            broadcast_shape[self.axis] = input_shape[self.axis]\n', '\n', '        if self.scale:\n', '            broadcast_gamma = K.reshape(self.gamma, broadcast_shape)\n', '            normed = normed * broadcast_gamma\n', '        if self.center:\n', '            broadcast_beta = K.reshape(self.beta, broadcast_shape)\n', '            normed = normed + broadcast_beta\n', '        return normed\n', '\n', '    def get_config(self):\n', '        config = {\n', "            'axis': self.axis,\n", "            'epsilon': self.epsilon,\n", "            'center': self.center,\n", "            'scale': self.scale,\n", "            'beta_initializer': initializers.serialize(self.beta_initializer),\n", "            'gamma_initializer': initializers.serialize(self.gamma_initializer),\n", "            'beta_regularizer': regularizers.serialize(self.beta_regularizer),\n", "            'gamma_regularizer': regularizers.serialize(self.gamma_regularizer),\n", "            'beta_constraint': constraints.serialize(self.beta_constraint),\n", "            'gamma_constraint': constraints.serialize(self.gamma_constraint)\n", '        }\n', '        base_config = super(InstanceNormalization, self).get_config()\n', '        return dict(list(base_config.items()) + list(config.items()))\n']'

'code' cell: '['from random import random\n', 'from numpy import load\n', 'from numpy import zeros\n', 'from numpy import ones\n', 'from numpy import asarray\n', 'from numpy.random import randint\n', 'from keras.optimizers import Adam\n', 'from keras.initializers import RandomNormal\n', 'from keras.models import Model\n', 'from keras.layers import Input\n', 'from keras.layers import Conv2D\n', 'from keras.layers import Conv2DTranspose\n', 'from keras.layers import LeakyReLU\n', 'from keras.layers import Activation\n', 'from keras.layers import Concatenate\n', '#from keras_contrib.layers.normalization.instancenormalization import InstanceNormalization\n', '\n', 'from matplotlib import pyplot\n', 'from keras.models import load_model\n']'

'code' cell: '['# discriminator model (70x70 patchGAN)\n', '# C64-C128-C256-C512\n', '#After the last layer, conv to 1-dimensional output, followed by a Sigmoid function.\n', '# The “axis” argument is set to -1 for instance norm. to ensure that features are normalized per feature map.\n', 'def define_discriminator(image_shape):\n', '\t# weight initialization\n', '\tinit = RandomNormal(stddev=0.02)\n', '\t# source image input\n', '\tin_image = Input(shape=image_shape)\n', '\t# C64: 4x4 kernel Stride 2x2\n', "\td = Conv2D(64, (4,4), strides=(2,2), padding='same', kernel_initializer=init)(in_image)\n", '\td = LeakyReLU(alpha=0.2)(d)\n', '\t# C128: 4x4 kernel Stride 2x2\n', "\td = Conv2D(128, (4,4), strides=(2,2), padding='same', kernel_initializer=init)(d)\n", '\td = InstanceNormalization(axis=-1)(d)\n', '\td = LeakyReLU(alpha=0.2)(d)\n', '\t# C256: 4x4 kernel Stride 2x2\n', "\td = Conv2D(256, (4,4), strides=(2,2), padding='same', kernel_initializer=init)(d)\n", '\td = InstanceNormalization(axis=-1)(d)\n', '\td = LeakyReLU(alpha=0.2)(d)\n', '\t# C512: 4x4 kernel Stride 2x2\n', '    # Not in the original paper. Comment this block if you want.\n', "\td = Conv2D(512, (4,4), strides=(2,2), padding='same', kernel_initializer=init)(d)\n", '\td = InstanceNormalization(axis=-1)(d)\n', '\td = LeakyReLU(alpha=0.2)(d)\n', '\t# second last output layer : 4x4 kernel but Stride 1x1\n', "\td = Conv2D(512, (4,4), padding='same', kernel_initializer=init)(d)\n", '\td = InstanceNormalization(axis=-1)(d)\n', '\td = LeakyReLU(alpha=0.2)(d)\n', '\t# patch output\n', "\tpatch_out = Conv2D(1, (4,4), padding='same', kernel_initializer=init)(d)\n", '\t# define model\n', '\tmodel = Model(in_image, patch_out)\n', "\tmodel.compile(loss='mse', optimizer=Adam(lr=0.0002, beta_1=0.5), loss_weights=[0.5])\n", '\treturn model\n']'

'code' cell: '['# generator a resnet block to be used in the generator\n', '# residual block that contains two 3 × 3 convolutional layers with the same number of filters on both layers.\n', 'def resnet_block(n_filters, input_layer):\n', '\t# weight initialization\n', '\tinit = RandomNormal(stddev=0.02)\n', '\t# first convolutional layer\n', "\tg = Conv2D(n_filters, (3,3), padding='same', kernel_initializer=init)(input_layer)\n", '\tg = InstanceNormalization(axis=-1)(g)\n', "\tg = Activation('relu')(g)\n", '\t# second convolutional layer\n', "\tg = Conv2D(n_filters, (3,3), padding='same', kernel_initializer=init)(g)\n", '\tg = InstanceNormalization(axis=-1)(g)\n', '\t# concatenate merge channel-wise with input layer\n', '\tg = Concatenate()([g, input_layer])\n', '\treturn g']'

'code' cell: '['#c7s1-k denote a 7×7 Convolution-InstanceNorm-ReLU layer with k filters and stride 1.\n', '#dk denotes a 3 × 3 Convolution-InstanceNorm-ReLU layer with k filters and stride 2.\n', '# Rk denotes a residual block that contains two 3 × 3 convolutional layers\n', '# uk denotes a 3 × 3 fractional-strided-Convolution InstanceNorm-ReLU layer with k filters and stride 1/2\n', '\n', 'def define_generator(image_shape, n_resnet=9):\n', '\t# weight initialization\n', '\tinit = RandomNormal(stddev=0.02)\n', '\t# image input\n', '\tin_image = Input(shape=image_shape)\n', '\t# c7s1-64\n', "\tg = Conv2D(64, (7,7), padding='same', kernel_initializer=init)(in_image)\n", '\tg = InstanceNormalization(axis=-1)(g)\n', "\tg = Activation('relu')(g)\n", '\t# d128\n', "\tg = Conv2D(128, (3,3), strides=(2,2), padding='same', kernel_initializer=init)(g)\n", '\tg = InstanceNormalization(axis=-1)(g)\n', "\tg = Activation('relu')(g)\n", '\t# d256\n', "\tg = Conv2D(256, (3,3), strides=(2,2), padding='same', kernel_initializer=init)(g)\n", '\tg = InstanceNormalization(axis=-1)(g)\n', "\tg = Activation('relu')(g)\n", '\t# R256\n', '\tfor _ in range(n_resnet):\n', '\t\tg = resnet_block(256, g)\n', '\t# u128\n', "\tg = Conv2DTranspose(128, (3,3), strides=(2,2), padding='same', kernel_initializer=init)(g)\n", '\tg = InstanceNormalization(axis=-1)(g)\n', "\tg = Activation('relu')(g)\n", '\t# u64\n', "\tg = Conv2DTranspose(64, (3,3), strides=(2,2), padding='same', kernel_initializer=init)(g)\n", '\tg = InstanceNormalization(axis=-1)(g)\n', "\tg = Activation('relu')(g)\n", '\t# c7s1-3\n', "\tg = Conv2D(3, (7,7), padding='same', kernel_initializer=init)(g)\n", '\tg = InstanceNormalization(axis=-1)(g)\n', "\tout_image = Activation('tanh')(g)\n", '\t# define model\n', '\tmodel = Model(in_image, out_image)\n', '\treturn model']'

'code' cell: '['# define a composite model for updating generators by adversarial and cycle loss\n', '#We define a composite model that will be used to train each generator separately.\n', 'def define_composite_model(g_model_1, d_model, g_model_2, image_shape):\n', '\t\tg_model_1.trainable = True\n', '\t# mark discriminator and second generator as non-trainable\n', '\td_model.trainable = False\n', '\tg_model_2.trainable = False\n', '\n', '\t# adversarial loss\n', '\tinput_gen = Input(shape=image_shape)\n', '\tgen1_out = g_model_1(input_gen)\n', '\toutput_d = d_model(gen1_out)\n', '\t# identity loss\n', '\tinput_id = Input(shape=image_shape)\n', '\toutput_id = g_model_1(input_id)\n', '\t# cycle loss - forward\n', '\toutput_f = g_model_2(gen1_out)\n', '\t# cycle loss - backward\n', '\tgen2_out = g_model_2(input_id)\n', '\toutput_b = g_model_1(gen2_out)\n', '\n', '\t# define model graph\n', '\tmodel = Model([input_gen, input_id], [output_d, output_id, output_f, output_b])\n', '\n', '    # define the optimizer\n', '\topt = Adam(lr=0.0002, beta_1=0.5)\n', '\t# compile model with weighting of least squares loss and L1 loss\n', "\tmodel.compile(loss=['mse', 'mae', 'mae', 'mae'],\n", '               loss_weights=[1, 5, 10, 10], optimizer=opt)\n', '\treturn model']'

'code' cell: '['# load and prepare training images\n', 'def load_real_samples(filename):\n', '\t# load the dataset\n', '\tdata = load(filename)\n', '\t# unpack arrays\n', "\tX1, X2 = data['arr_0'], data['arr_1']\n", '\t# scale from [0,255] to [-1,1]\n', '\tX1 = (X1 - 127.5) / 127.5\n', '\tX2 = (X2 - 127.5) / 127.5\n', '\treturn [X1, X2]\n', '\n', 'def generate_real_samples(dataset, n_samples, patch_shape):\n', '\t# choose random instances\n', '\tix = randint(0, dataset.shape[0], n_samples)\n', '\t# retrieve selected images\n', '\tX = dataset[ix]\n', "\t# generate 'real' class labels (1)\n", '\ty = ones((n_samples, patch_shape, patch_shape, 1))\n', '\treturn X, y\n', '\n', 'def generate_fake_samples(g_model, dataset, patch_shape):\n', '\t# generate fake images\n', '\tX = g_model.predict(dataset)\n', "\t# create 'fake' class labels (0)\n", '\ty = zeros((len(X), patch_shape, patch_shape, 1))\n', '\treturn X, y\n', '\n', '# periodically save the generator models to file\n', 'def save_models(step, g_model_AtoB, g_model_BtoA,d_model_A, d_model_B):\n', '\t# save the first generator model\n', "\tfilename1 = '/content/drive/My Drive/Py/grasp1/g_model_AtoB_%06d.h5' % (step+1)\n", '\tg_model_AtoB.save(filename1)\n', '\t# save the second generator model\n', "\tfilename2 = '/content/drive/My Drive/Py/grasp1/g_model_BtoA_%06d.h5' % (step+1)\n", '\tg_model_BtoA.save(filename2)\n', "\tprint('>Saved: %s and %s' % (filename1, filename2))\n", "\tg_model_AtoB.save_weights('/content/drive/My Drive/Py/grasp1/g_model_AtoB_weights_%06d.h5' % (step+1))\n", "\tg_model_BtoA.save_weights('/content/drive/My Drive/Py/grasp1/g_model_BtoA_weights_%06d.h5' % (step+1))\n", "\td_model_A.save_weights('/content/drive/My Drive/Py/grasp1/d_model_A_weights_%06d.h5' % (step+1))\n", "\td_model_B.save_weights('/content/drive/My Drive/Py/grasp1/d_model_B_weights_%06d.h5' % (step+1))\n", '\n', 'def summarize_performance(step, g_model, trainX, name, n_samples=5):\n', '\t# select a sample of input images\n', '\tX_in, _ = generate_real_samples(trainX, n_samples, 0)\n', '\t# generate translated images\n', '\tX_out, _ = generate_fake_samples(g_model, X_in, 0)\n', '\t# scale all pixels from [-1,1] to [0,1]\n', '\tX_in = (X_in + 1) / 2.0\n', '\tX_out = (X_out + 1) / 2.0\n', '\t# plot real images\n', '\tfor i in range(n_samples):\n', '\t\tpyplot.subplot(2, n_samples, 1 + i)\n', "\t\tpyplot.axis('off')\n", '\t\tpyplot.imshow(X_in[i])\n', '\t# plot translated image\n', '\tfor i in range(n_samples):\n', '\t\tpyplot.subplot(2, n_samples, 1 + n_samples + i)\n', "\t\tpyplot.axis('off')\n", '\t\tpyplot.imshow(X_out[i])\n', '\t# save plot to file\n', "\tfilename1 = '/content/drive/My Drive/Py/grasp/%s_generated_plot_%06d.png' % (name, (step+1))\n", '\tpyplot.savefig(filename1)\n', '\tpyplot.close()\n', '\n', '# update image pool for fake images to reduce model oscillation using a history of generated images\n', '#Original paper recommended keeping an image buffer that stores the 50 previously created images.\n', '\n', 'def update_image_pool(pool, images, max_size=50):\n', '\tselected = list()\n', '\tfor image in images:\n', '\t\tif len(pool) < max_size:\n', '\t\t\t# stock the pool\n', '\t\t\tpool.append(image)\n', '\t\t\tselected.append(image)\n', '\t\telif random() < 0.5:\n', "\t\t\t# use image, but don't add it to the pool\n", '\t\t\tselected.append(image)\n', '\t\telse:\n', '\t\t\t# replace an existing image and use replaced image\n', '\t\t\tix = randint(0, len(pool))\n', '\t\t\tselected.append(pool[ix])\n', '\t\t\tpool[ix] = image\n', '\treturn asarray(selected)']'

'code' cell: '['# train cyclegan models\n', 'def train(d_model_A, d_model_B, g_model_AtoB, g_model_BtoA, c_model_AtoB, c_model_BtoA, trainA, trainB, epochs=1):\n', '\t# define properties of the training run\n', '\tn_epochs, n_batch, = epochs, 1  #batch size fixed to 1 as suggested in the paper\n', '\t# determine the output square shape of the discriminator\n', '\tn_patch = d_model_A.output_shape[1]\n', '\t# prepare image pool for fake images\n', '\tpoolA, poolB = list(), list()\n', '\t# calculate the number of batches per training epoch\n', '\tbat_per_epo = int(len(trainA) / n_batch)\n', '\t# calculate the number of training iterations\n', '\tn_steps = bat_per_epo * n_epochs\n', '\n', '\t# manually enumerate epochs\n', '\tfor i in range(n_steps):\n', '\t\t# select a batch of real samples from each domain (A and B)\n', '\t\tX_realA, y_realA = generate_real_samples(trainA, n_batch, n_patch)\n', '\t\tX_realB, y_realB = generate_real_samples(trainB, n_batch, n_patch)\n', '\t\t# generate a batch of fake samples using both B to A and A to B generators.\n', '\t\tX_fakeA, y_fakeA = generate_fake_samples(g_model_BtoA, X_realB, n_patch)\n', '\t\tX_fakeB, y_fakeB = generate_fake_samples(g_model_AtoB, X_realA, n_patch)\n', '\t\t# update fake images in the pool. Remember that the paper suggstes a buffer of 50 images\n', '\t\tX_fakeA = update_image_pool(poolA, X_fakeA)\n', '\t\tX_fakeB = update_image_pool(poolB, X_fakeB)\n', '\n', '\t\t# update generator B->A via the composite model\n', '\t\tc_model_BtoA.train_on_batch([X_realB, X_realA], [y_realA, X_realA, X_realB, X_realA])\n', '\t\t# update discriminator for A -> [real/fake]\n', '\t\td_model_A.train_on_batch(X_realA, y_realA)\n', '\t\td_model_A.train_on_batch(X_fakeA, y_fakeA)\n', '\n', '        # update generator A->B via the composite model\n', '\t\tc_model_AtoB.train_on_batch([X_realA, X_realB], [y_realB, X_realB, X_realA, X_realB])\n', '\t\t# update discriminator for B -> [real/fake]\n', '\t\td_model_B.train_on_batch(X_realB, y_realB)\n', '\t\td_model_B.train_on_batch(X_fakeB, y_fakeB)\n', '\n', "\t\tprint('Iteration>%d' % (i+1))\n", '\n', '\t\tif (i+1) % (500) == 0:\n', '\t\t\tsave_models(i, g_model_AtoB, g_model_BtoA,d_model_A, d_model_B)']'

'code' cell: '['from os import listdir\n', 'from numpy import asarray\n', 'from numpy import vstack\n', 'from keras.preprocessing.image import load_img\n', 'from keras.preprocessing.image import img_to_array\n', 'from matplotlib import pyplot as plt\n', 'import numpy as np']'

'code' cell: '['\n', '# load all images in a directory into memory\n', 'def load_images(path, size=(256,256)):\n', '\tdata_list = list()\n', '\t# enumerate filenames in directory, assume all are images\n', '\tfor filename in listdir(path):\n', '\t\t# load and resize the image\n', '\t\tpixels = load_img(path + filename, target_size=size)\n', '\t\t# convert to numpy array\n', '\t\tpixels = img_to_array(pixels)\n', '\t\t# store\n', '\t\tdata_list.append(pixels)\n', '\treturn asarray(data_list)\n', '\n', '\n', '# dataset path\n', "path = '/content/drive/My Drive/grasp/'\n", '\n', '# load dataset A\n', "dataA_all = load_images(path + 'hand/')\n", "print('Loaded dataA: ', dataA_all.shape)\n", '\n', 'from sklearn.utils import resample\n', '\n', '# load dataset B\n', "dataB_all = load_images(path + 'object/')\n", "print('Loaded dataB: ', dataB_all.shape)\n", '\n', '# plot source images\n', 'n_samples = 3\n', 'for i in range(n_samples):\n', '\tplt.subplot(2, n_samples, 1 + i)\n', "\tplt.axis('off')\n", "\tplt.imshow(dataA_all[i].astype('uint8'))\n", '# plot target image\n', 'for i in range(n_samples):\n', '\tplt.subplot(2, n_samples, 1 + n_samples + i)\n', "\tplt.axis('off')\n", "\tplt.imshow(dataB_all[i].astype('uint8'))\n", 'plt.show()\n', '\n', '\n', "print('Loaded', dataA_all.shape, dataB_all.shape)\n", '\n', '#Preprocess data to change input range to values between -1 and 1\n', '# This is because the generator uses tanh activation in the output layer And tanh ranges between -1 and 1\n', '\n', 'def preprocess_data(data):\n', '\t# load compressed arrays\n', '\t# unpack arrays\n', '\tX1, X2 = data[0], data[1]\n', '\t# scale from [0,255] to [-1,1]\n', '\tX1 = (X1 - 127.5) / 127.5\n', '\tX2 = (X2 - 127.5) / 127.5\n', '\treturn [X1, X2]\n', '\n', 'dataA_all = (dataA_all - 127.5) / 127.5\n', 'dataB_all = (dataB_all - 127.5) / 127.5\n']'

'code' cell: '['#from cycleGAN_model import define_generator, define_discriminator, define_composite_model, train\n', '# define input shape based on the loaded dataset\n', 'image_shape = dataA_all.shape[1:]\n', '# generator: A -> B\n', 'g_model_AtoB = define_generator(image_shape)\n', 'print(g_model_AtoB.summary())\n', '# generator: B -> A\n', 'g_model_BtoA = define_generator(image_shape)\n', '# discriminator: A -> [real/fake]\n', 'd_model_A = define_discriminator(image_shape)\n', 'print(d_model_A.summary())\n', '# discriminator: B -> [real/fake]\n', 'd_model_B = define_discriminator(image_shape)\n', '\n', "#g_model_AtoB.load_weights('/content/drive/My Drive/Py/grasp1/g_model_AtoB_weights_002000.h5')\n", "#g_model_BtoA.load_weights('/content/drive/My Drive/Py/grasp1/g_model_BtoA_weights_002000.h5')\n", "#d_model_A.load_weights('/content/drive/My Drive/Py/grasp1/d_model_A_weights_002000.h5')\n", "#d_model_B.load_weights('/content/drive/My Drive/Py/grasp1/d_model_B_weights_002000.h5')\n", '\n', '# composite: A -> B -> [real/fake, A]\n', 'c_model_AtoB = define_composite_model(g_model_AtoB, d_model_B, g_model_BtoA, image_shape)\n', 'print(c_model_AtoB.summary())\n', '# composite: B -> A -> [real/fake, B]\n', 'c_model_BtoA = define_composite_model(g_model_BtoA, d_model_A, g_model_AtoB, image_shape)\n']'

'code' cell: '['from datetime import datetime\n', 'start1 = datetime.now()\n', '# train models\n', 'train(d_model_A, d_model_B, g_model_AtoB, g_model_BtoA, c_model_AtoB, c_model_BtoA, dataA_all, dataB_all, epochs=200)\n', '\n', 'stop1 = datetime.now()\n', '#Execution time of the model\n', 'execution_time = stop1-start1\n', 'print("Execution time is: ", execution_time)\n']'

E:\courses\LangChain Project\main root\data\tensorflow_cyclegan_custom.py

"""Tensorflow_CycleGAN_custom.ipynb

    https://colab.research.google.com/drive/11dJdWV2jMJtcx6usRYF6Q8oQIgA3Gd05
"""

from keras.layers import Layer, InputSpec
from keras import initializers, regularizers, constraints

class InstanceNormalization(Layer):
    """Instance normalization layer.

    Normalize the activations of the previous layer at each step,
    i.e. applies a transformation that maintains the mean activation
    close to 0 and the activation standard deviation close to 1.

    # Arguments
        axis: Integer, the axis that should be normalized
            (typically the features axis).
            For instance, after a `Conv2D` layer with
            `data_format="channels_first"`,
            set `axis=1` in `InstanceNormalization`.
            Setting `axis=None` will normalize all values in each
            instance of the batch.
            Axis 0 is the batch dimension. `axis` cannot be set to 0 to avoid errors.
        epsilon: Small float added to variance to avoid dividing by zero.
        center: If True, add offset of `beta` to normalized tensor.
            If False, `beta` is ignored.
        scale: If True, multiply by `gamma`.
            If False, `gamma` is not used.
            When the next layer is linear (also e.g. `nn.relu`),
            this can be disabled since the scaling
            will be done by the next layer.
        beta_initializer: Initializer for the beta weight.
        gamma_initializer: Initializer for the gamma weight.
        beta_regularizer: Optional regularizer for the beta weight.
        gamma_regularizer: Optional regularizer for the gamma weight.
        beta_constraint: Optional constraint for the beta weight.
        gamma_constraint: Optional constraint for the gamma weight.

    # Input shape
        Arbitrary. Use the keyword argument `input_shape`
        (tuple of integers, does not include the samples axis)
        when using this layer as the first layer in a Sequential model.

    # Output shape
        Same shape as input.

    # References
        - [Layer Normalization](https://arxiv.org/abs/1607.06450)
        - [Instance Normalization: The Missing Ingredient for Fast Stylization](
        https://arxiv.org/abs/1607.08022)
    """
    def __init__(self,
                 axis=None,
                 epsilon=1e-3,
                 center=True,
                 scale=True,
                 beta_initializer='zeros',
                 gamma_initializer='ones',
                 beta_regularizer=None,
                 gamma_regularizer=None,
                 beta_constraint=None,
                 gamma_constraint=None,
                 **kwargs):
        super(InstanceNormalization, self).__init__(**kwargs)
        self.supports_masking = True
        self.axis = axis
        self.epsilon = epsilon
        self.center = center
        self.scale = scale
        self.beta_initializer = initializers.get(beta_initializer)
        self.gamma_initializer = initializers.get(gamma_initializer)
        self.beta_regularizer = regularizers.get(beta_regularizer)
        self.gamma_regularizer = regularizers.get(gamma_regularizer)
        self.beta_constraint = constraints.get(beta_constraint)
        self.gamma_constraint = constraints.get(gamma_constraint)

    def build(self, input_shape):
        ndim = len(input_shape)
        if self.axis == 0:
            raise ValueError('Axis cannot be zero')

        if (self.axis is not None) and (ndim == 2):
            raise ValueError('Cannot specify axis for rank 1 tensor')

        self.input_spec = InputSpec(ndim=ndim)

        if self.axis is None:
            shape = (1,)
        else:
            shape = (input_shape[self.axis],)

        if self.scale:
            self.gamma = self.add_weight(shape=shape,
                                         name='gamma',
                                         initializer=self.gamma_initializer,
                                         regularizer=self.gamma_regularizer,
                                         constraint=self.gamma_constraint)
        else:
            self.gamma = None
        if self.center:
            self.beta = self.add_weight(shape=shape,
                                        name='beta',
                                        initializer=self.beta_initializer,
                                        regularizer=self.beta_regularizer,
                                        constraint=self.beta_constraint)
        else:
            self.beta = None
        self.built = True

    def call(self, inputs, training=None):
        input_shape = K.int_shape(inputs)
        reduction_axes = list(range(0, len(input_shape)))

        if self.axis is not None:
            del reduction_axes[self.axis]

        del reduction_axes[0]

        mean = K.mean(inputs, reduction_axes, keepdims=True)
        stddev = K.std(inputs, reduction_axes, keepdims=True) + self.epsilon
        normed = (inputs - mean) / stddev

        broadcast_shape = [1] * len(input_shape)
            broadcast_shape[self.axis] = input_shape[self.axis]

            broadcast_gamma = K.reshape(self.gamma, broadcast_shape)
            normed = normed * broadcast_gamma
            broadcast_beta = K.reshape(self.beta, broadcast_shape)
            normed = normed + broadcast_beta
        return normed

    def get_config(self):
        config = {
            'axis': self.axis,
            'epsilon': self.epsilon,
            'center': self.center,
            'scale': self.scale,
            'beta_initializer': initializers.serialize(self.beta_initializer),
            'gamma_initializer': initializers.serialize(self.gamma_initializer),
            'beta_regularizer': regularizers.serialize(self.beta_regularizer),
            'gamma_regularizer': regularizers.serialize(self.gamma_regularizer),
            'beta_constraint': constraints.serialize(self.beta_constraint),
            'gamma_constraint': constraints.serialize(self.gamma_constraint)
        }
        base_config = super(InstanceNormalization, self).get_config()
        return dict(list(base_config.items()) + list(config.items()))

from random import random
from numpy import load
from numpy import zeros
from numpy import ones
from numpy import asarray
from numpy.random import randint
from keras.optimizers import Adam
from keras.initializers import RandomNormal
from keras.models import Model
from keras.layers import Input
from keras.layers import Conv2D
from keras.layers import Conv2DTranspose
from keras.layers import Activation
from keras.layers import Concatenate
#from keras_contrib.layers.normalization.instancenormalization import InstanceNormalization

from matplotlib import pyplot

# discriminator model (70x70 patchGAN)
# C64-C128-C256-C512
#After the last layer, conv to 1-dimensional output, followed by a Sigmoid function.
# The “axis” argument is set to -1 for instance norm. to ensure that features are normalized per feature map.
def define_discriminator(image_shape):
	# weight initialization
	init = RandomNormal(stddev=0.02)
	# source image input
	in_image = Input(shape=image_shape)
	# C64: 4x4 kernel Stride 2x2
	d = Conv2D(64, (4,4), strides=(2,2), padding='same', kernel_initializer=init)(in_image)
	d = LeakyReLU(alpha=0.2)(d)
	# C128: 4x4 kernel Stride 2x2
	d = Conv2D(128, (4,4), strides=(2,2), padding='same', kernel_initializer=init)(d)
	d = InstanceNormalization(axis=-1)(d)
	# C256: 4x4 kernel Stride 2x2
	d = Conv2D(256, (4,4), strides=(2,2), padding='same', kernel_initializer=init)(d)
	# C512: 4x4 kernel Stride 2x2
    # Not in the original paper. Comment this block if you want.
	d = Conv2D(512, (4,4), strides=(2,2), padding='same', kernel_initializer=init)(d)
	# second last output layer : 4x4 kernel but Stride 1x1
	d = Conv2D(512, (4,4), padding='same', kernel_initializer=init)(d)
	# patch output
	patch_out = Conv2D(1, (4,4), padding='same', kernel_initializer=init)(d)
	# define model
	model = Model(in_image, patch_out)
	model.compile(loss='mse', optimizer=Adam(lr=0.0002, beta_1=0.5), loss_weights=[0.5])
	return model

# generator a resnet block to be used in the generator
# residual block that contains two 3 × 3 convolutional layers with the same number of filters on both layers.
def resnet_block(n_filters, input_layer):
	# first convolutional layer
	g = Conv2D(n_filters, (3,3), padding='same', kernel_initializer=init)(input_layer)
	g = InstanceNormalization(axis=-1)(g)
	g = Activation('relu')(g)
	# second convolutional layer
	g = Conv2D(n_filters, (3,3), padding='same', kernel_initializer=init)(g)
	# concatenate merge channel-wise with input layer
	g = Concatenate()([g, input_layer])
	return g

#c7s1-k denote a 7×7 Convolution-InstanceNorm-ReLU layer with k filters and stride 1.
#dk denotes a 3 × 3 Convolution-InstanceNorm-ReLU layer with k filters and stride 2.
# Rk denotes a residual block that contains two 3 × 3 convolutional layers
# uk denotes a 3 × 3 fractional-strided-Convolution InstanceNorm-ReLU layer with k filters and stride 1/2

def define_generator(image_shape, n_resnet=9):
	# image input
	# c7s1-64
	g = Conv2D(64, (7,7), padding='same', kernel_initializer=init)(in_image)
	# d128
	g = Conv2D(128, (3,3), strides=(2,2), padding='same', kernel_initializer=init)(g)
	# d256
	g = Conv2D(256, (3,3), strides=(2,2), padding='same', kernel_initializer=init)(g)
	# R256
	for _ in range(n_resnet):
		g = resnet_block(256, g)
	# u128
	g = Conv2DTranspose(128, (3,3), strides=(2,2), padding='same', kernel_initializer=init)(g)
	# u64
	g = Conv2DTranspose(64, (3,3), strides=(2,2), padding='same', kernel_initializer=init)(g)
	# c7s1-3
	g = Conv2D(3, (7,7), padding='same', kernel_initializer=init)(g)
	out_image = Activation('tanh')(g)
	model = Model(in_image, out_image)

# define a composite model for updating generators by adversarial and cycle loss
#We define a composite model that will be used to train each generator separately.
def define_composite_model(g_model_1, d_model, g_model_2, image_shape):
		g_model_1.trainable = True
	# mark discriminator and second generator as non-trainable
	d_model.trainable = False
	g_model_2.trainable = False

	# adversarial loss
	input_gen = Input(shape=image_shape)
	gen1_out = g_model_1(input_gen)
	output_d = d_model(gen1_out)
	# identity loss
	input_id = Input(shape=image_shape)
	output_id = g_model_1(input_id)
	# cycle loss - forward
	output_f = g_model_2(gen1_out)
	# cycle loss - backward
	gen2_out = g_model_2(input_id)
	output_b = g_model_1(gen2_out)

	# define model graph
	model = Model([input_gen, input_id], [output_d, output_id, output_f, output_b])

    # define the optimizer
	opt = Adam(lr=0.0002, beta_1=0.5)
	# compile model with weighting of least squares loss and L1 loss
	model.compile(loss=['mse', 'mae', 'mae', 'mae'],
               loss_weights=[1, 5, 10, 10], optimizer=opt)

# load and prepare training images
def load_real_samples(filename):
	# load the dataset
	data = load(filename)
	# unpack arrays
	X1, X2 = data['arr_0'], data['arr_1']
	# scale from [0,255] to [-1,1]
	X1 = (X1 - 127.5) / 127.5
	X2 = (X2 - 127.5) / 127.5
	return [X1, X2]

def generate_real_samples(dataset, n_samples, patch_shape):
	# choose random instances
	ix = randint(0, dataset.shape[0], n_samples)
	# retrieve selected images
	X = dataset[ix]
	# generate 'real' class labels (1)
	y = ones((n_samples, patch_shape, patch_shape, 1))
	return X, y

def generate_fake_samples(g_model, dataset, patch_shape):
	# generate fake images
	X = g_model.predict(dataset)
	# create 'fake' class labels (0)
	y = zeros((len(X), patch_shape, patch_shape, 1))
	return X, y

# periodically save the generator models to file
def save_models(step, g_model_AtoB, g_model_BtoA,d_model_A, d_model_B):
	# save the first generator model
	filename1 = '/content/drive/My Drive/Py/grasp1/g_model_AtoB_%06d.h5' % (step+1)
	g_model_AtoB.save(filename1)
	# save the second generator model
	filename2 = '/content/drive/My Drive/Py/grasp1/g_model_BtoA_%06d.h5' % (step+1)
	g_model_BtoA.save(filename2)
	print('>Saved: %s and %s' % (filename1, filename2))
	g_model_AtoB.save_weights('/content/drive/My Drive/Py/grasp1/g_model_AtoB_weights_%06d.h5' % (step+1))
	g_model_BtoA.save_weights('/content/drive/My Drive/Py/grasp1/g_model_BtoA_weights_%06d.h5' % (step+1))
	d_model_A.save_weights('/content/drive/My Drive/Py/grasp1/d_model_A_weights_%06d.h5' % (step+1))
	d_model_B.save_weights('/content/drive/My Drive/Py/grasp1/d_model_B_weights_%06d.h5' % (step+1))

def summarize_performance(step, g_model, trainX, name, n_samples=5):
	# select a sample of input images
	X_in, _ = generate_real_samples(trainX, n_samples, 0)
	# generate translated images
	X_out, _ = generate_fake_samples(g_model, X_in, 0)
	# scale all pixels from [-1,1] to [0,1]
	X_in = (X_in + 1) / 2.0
	X_out = (X_out + 1) / 2.0
	# plot real images
	for i in range(n_samples):
		pyplot.subplot(2, n_samples, 1 + i)
		pyplot.axis('off')
		pyplot.imshow(X_in[i])
	# plot translated image
		pyplot.subplot(2, n_samples, 1 + n_samples + i)
		pyplot.imshow(X_out[i])
	# save plot to file
	filename1 = '/content/drive/My Drive/Py/grasp/%s_generated_plot_%06d.png' % (name, (step+1))
	pyplot.savefig(filename1)
	pyplot.close()

# update image pool for fake images to reduce model oscillation using a history of generated images
#Original paper recommended keeping an image buffer that stores the 50 previously created images.

def update_image_pool(pool, images, max_size=50):
	selected = list()
	for image in images:
		if len(pool) < max_size:
			# stock the pool
			pool.append(image)
			selected.append(image)
		elif random() < 0.5:
			# use image, but don't add it to the pool
		else:
			# replace an existing image and use replaced image
			ix = randint(0, len(pool))
			selected.append(pool[ix])
			pool[ix] = image
	return asarray(selected)

# train cyclegan models
def train(d_model_A, d_model_B, g_model_AtoB, g_model_BtoA, c_model_AtoB, c_model_BtoA, trainA, trainB, epochs=1):
	# define properties of the training run
	n_epochs, n_batch, = epochs, 1  #batch size fixed to 1 as suggested in the paper
	# determine the output square shape of the discriminator
	n_patch = d_model_A.output_shape[1]
	# prepare image pool for fake images
	poolA, poolB = list(), list()
	# calculate the number of batches per training epoch
	bat_per_epo = int(len(trainA) / n_batch)
	# calculate the number of training iterations
	n_steps = bat_per_epo * n_epochs

	# manually enumerate epochs
	for i in range(n_steps):
		# select a batch of real samples from each domain (A and B)
		X_realA, y_realA = generate_real_samples(trainA, n_batch, n_patch)
		X_realB, y_realB = generate_real_samples(trainB, n_batch, n_patch)
		# generate a batch of fake samples using both B to A and A to B generators.
		X_fakeA, y_fakeA = generate_fake_samples(g_model_BtoA, X_realB, n_patch)
		X_fakeB, y_fakeB = generate_fake_samples(g_model_AtoB, X_realA, n_patch)
		# update fake images in the pool. Remember that the paper suggstes a buffer of 50 images
		X_fakeA = update_image_pool(poolA, X_fakeA)
		X_fakeB = update_image_pool(poolB, X_fakeB)

		# update generator B->A via the composite model
		c_model_BtoA.train_on_batch([X_realB, X_realA], [y_realA, X_realA, X_realB, X_realA])
		# update discriminator for A -> [real/fake]
		d_model_A.train_on_batch(X_realA, y_realA)
		d_model_A.train_on_batch(X_fakeA, y_fakeA)

        # update generator A->B via the composite model
		c_model_AtoB.train_on_batch([X_realA, X_realB], [y_realB, X_realB, X_realA, X_realB])
		# update discriminator for B -> [real/fake]
		d_model_B.train_on_batch(X_realB, y_realB)
		d_model_B.train_on_batch(X_fakeB, y_fakeB)

		print('Iteration>%d' % (i+1))

		if (i+1) % (500) == 0:
			save_models(i, g_model_AtoB, g_model_BtoA,d_model_A, d_model_B)

from numpy import vstack
from keras.preprocessing.image import load_img
from keras.preprocessing.image import img_to_array

# load all images in a directory into memory
def load_images(path, size=(256,256)):
	data_list = list()
	# enumerate filenames in directory, assume all are images
	for filename in listdir(path):
		# load and resize the image
		pixels = load_img(path + filename, target_size=size)
		# convert to numpy array
		pixels = img_to_array(pixels)
		# store
		data_list.append(pixels)
	return asarray(data_list)

# dataset path
path = '/content/drive/My Drive/grasp/'

# load dataset A
dataA_all = load_images(path + 'hand/')
print('Loaded dataA: ', dataA_all.shape)

from sklearn.utils import resample

# load dataset B
dataB_all = load_images(path + 'object/')
print('Loaded dataB: ', dataB_all.shape)

# plot source images
n_samples = 3
for i in range(n_samples):
	plt.subplot(2, n_samples, 1 + i)
	plt.axis('off')
	plt.imshow(dataA_all[i].astype('uint8'))
# plot target image
	plt.subplot(2, n_samples, 1 + n_samples + i)
	plt.imshow(dataB_all[i].astype('uint8'))

print('Loaded', dataA_all.shape, dataB_all.shape)

#Preprocess data to change input range to values between -1 and 1
# This is because the generator uses tanh activation in the output layer And tanh ranges between -1 and 1

def preprocess_data(data):
	# load compressed arrays
	X1, X2 = data[0], data[1]

dataA_all = (dataA_all - 127.5) / 127.5
dataB_all = (dataB_all - 127.5) / 127.5

#from cycleGAN_model import define_generator, define_discriminator, define_composite_model, train
# define input shape based on the loaded dataset
image_shape = dataA_all.shape[1:]
# generator: A -> B
g_model_AtoB = define_generator(image_shape)
print(g_model_AtoB.summary())
# generator: B -> A
g_model_BtoA = define_generator(image_shape)
# discriminator: A -> [real/fake]
d_model_A = define_discriminator(image_shape)
print(d_model_A.summary())
# discriminator: B -> [real/fake]
d_model_B = define_discriminator(image_shape)

#g_model_AtoB.load_weights('/content/drive/My Drive/Py/grasp1/g_model_AtoB_weights_002000.h5')
#g_model_BtoA.load_weights('/content/drive/My Drive/Py/grasp1/g_model_BtoA_weights_002000.h5')
#d_model_A.load_weights('/content/drive/My Drive/Py/grasp1/d_model_A_weights_002000.h5')
#d_model_B.load_weights('/content/drive/My Drive/Py/grasp1/d_model_B_weights_002000.h5')

# composite: A -> B -> [real/fake, A]
c_model_AtoB = define_composite_model(g_model_AtoB, d_model_B, g_model_BtoA, image_shape)
print(c_model_AtoB.summary())
# composite: B -> A -> [real/fake, B]
c_model_BtoA = define_composite_model(g_model_BtoA, d_model_A, g_model_AtoB, image_shape)

from datetime import datetime
start1 = datetime.now()
# train models
train(d_model_A, d_model_B, g_model_AtoB, g_model_BtoA, c_model_AtoB, c_model_BtoA, dataA_all, dataB_all, epochs=200)

stop1 = datetime.now()
#Execution time of the model
execution_time = stop1-start1
print("Execution time is: ", execution_time)

Transformer	NetworksM.	SoleymaniSharif	University	of	TechnologySpring	2020
1

Problems	with	encoder-decoder	framework•All	the	information	about	the	input	is	embedded	into	a	single	vector	–Last	hidden	node	is	“overloaded”	with	information•Particularly	if	the	input	is	long
•Parallelization?
•Problems	in	back	propagation	through	sequence
2

Removing	bottleneck:	Attention	Mechanism•Compute	a	weighted	combination	of	all	the	hidden	outputs	into	a	single	vector
•Weights	are	functions	of	current	output	state
•The	weights	are	a	distribution	over	the	input	(sum	to	1)
3
Slide	has	been	adopted	from	BhikshaRaj,	11-785,	CMU	2019

(									)Parallelization:	Convolutional	Models
•Some	work:–Neural	GPU–ByteNet–ConvS2S•Limited	by	size	of	convolution•Maximum	path	length:–𝐿𝑜𝑔$𝑛
4
Kalchbrenneret	al.	“Neural	Machine	Translation	in	Linear	Time”,	2017

Transformer•a	model	architecture	without	recurrence	or	convolution–relying	on	self-attention	to	compute	representations	of	its	input	and	output
•entirely	based	on	an	attention	mechanism–to	draw	global	dependencies	between	input	and	output.
5

Transformer	Architecture
6
Vaswani	et	al.	"Attention	Is	All	You	Need",	2017

7
multi-head self-attention mechanism 
positionwisefully connected 
a residual connection around each of the two sub-layers 
Masked self-attention sub-layer to prevent positions from attending to subsequent positions

Encoder	Layers
8
Jay	Alammar,	“The	Illustrated	Transformer”	http://jalammar.github.io/illustrated-transformer/

Multi-Head	Attention
9

Attention	Mechanism	-Abstract	View
10
•A	Lookup	Mechanism–Query–Key–Value
Fig.	Credit:	BhikshaRaj

Attention	Mechanism	-Abstract	View	(cont.)•𝑑$:	key	dimension•For	large	values	of	𝑑$,	the	dot	products	grow	large,	pushing	the	𝑠𝑜𝑓𝑡𝑚𝑎𝑥function	into	regions	where	it	has	extremely	small	gradients
11

Self	Attention•AKA	intra-attention
•An	attention	mechanism	relating	different	positions	of	a	single	sequence=>	Q,	K,	V	are	derived	from	a					single	sequence
12
Jay	Alammar,	“The	Illustrated	Transformer”http://jalammar.github.io/illustrated-transformer/
”The	animal	didn't	cross	the	street	because	it	was	too	tired”

Self	Attention
13Jay	Alammar,	“The	Illustrated	Transformer”http://jalammar.github.io/illustrated-transformer/
Check	the	case	when𝑄.=𝑊1𝑋.𝐾4,…,𝐾7=𝑊8𝑋4,…,𝑊8𝑋7V4,…,V:=𝑊;𝑋4,…,𝑊;𝑋7

Multi-Head	Attention•Allows	the	model	to	jointly	attend	to	information	from	–different	representation	subspaces	–at	different	positions
14
Vaswani	et	al.	"Attention	Is	All	You	Need",	2017[modified]	Jay	Alammar,	“The	Illustrated	Transformer”	http://jalammar.github.io/illustrated-transformer/

15
[modified]	Jay	Alammar,	“The	Illustrated	Transformer”	http://jalammar.github.io/illustrated-transformer/

Multi-Head	Self	Attention
16Jay	Alammar,	“The	Illustrated	Transformer”	http://jalammar.github.io/illustrated-transformer/

Mult-Head	Attention•Multiple	“representation	subspaces”
17
𝑑<:	value	dimension	𝑑$:	key	dimension	
ℎtimes with different, learned linear projections
𝑖=1,…,ℎ
𝑊@∈ℝCDE×DGHIJK
𝑑<=𝑑$=𝑑LMNOP	ℎ

Attention	Visualization•Attention	mechanism	in	the	encoder	self-attention	in	layer	5	of	6
18
Different colors represent different heads 
making...more	difficult

Attention	Visualization
19
Two	heads	in	the	encoder	self-attention	in	layer	5	of	6

Attention	Visualization•Two	heads	in	the	encoder	self-attention	in	layer	5	of	6
20

21
Position-wise fully connected 

Positional	Embedding
22

Positional	Embedding•Positional	Encoding
•It	would	allow	the	model	to	easily	learn	to	attend	by	relative	positions
23Vaswani	et	al.	"Attention	Is	All	You	Need",	2017
Alexander	Rush,	“The	Annotated	Transformer”	http://nlp.seas.harvard.edu/2018/04/03/attention.html

Transformer	Architecture	(cont.)•Encoder	and	Decoder
24Vaswani	et	al.	"Attention	Is	All	You	Need",	2017

Transformer	Architecture	(cont.)
25Vaswani	et	al.	"Attention	Is	All	You	Need",	2017
•A	2	tier	transformer	network

Example
26Vaswani	et	al.	"Attention	Is	All	You	Need",	2017Jay	Alammar,	“The	Illustrated	Transformer”	http://jalammar.github.io/illustrated-transformer/
•Encoding	+	First	decoding	step

Example
27Vaswani	et	al.	"Attention	Is	All	You	Need",	2017Jay	Alammar,	“The	Illustrated	Transformer”	http://jalammar.github.io/illustrated-transformer/
•Decoding
[Link	to	gif]

Attention	Is	All	You	Need•Replace	LSTMs	with	a	lot	of	attention!–State-of-the	art	results–Much	less	computation	for	training
28

Complexity•Advantages:–Less	complex–Can	be	paralleled,	faster–Easy	to	learn	distant	dependency
29

Resources•Vaswani,	Ashish,	et	al.	"Attention	is	all	you	need."Advances	in	neural	information	processing	systems.	2017.•Alammar,	Jay.	“The	Illustrated	Transformer.”	The	Illustrated	Transformer	–Jay	Alammar–Visualizing	Machine	Learning	One	Concept	at	a	Time,	27	June	2018,	jalammar.github.io/illustrated-transformer/.•Uszkoreit,	Jakob.	“Transformer:	A	Novel	Neural	Network	Architecture	for	Language	Understanding.”	Google	AI	Blog,	31	Aug.	2017,	ai.googleblog.com/2017/08/transformer-novel-neural-network.html.
30

E:\courses\LangChain Project\main root\data\TransformerEncoder (code).ipynb

'markdown' cell: '['# TransformerEncoder Implementation']'

'markdown' cell: '['In this sample code, the transformer encoder and positional embedding classes will be implemented. First, you need to make sure that all of the required libraries are installed on your device.']'

'code' cell: '['import numpy as np\n', 'import os\n', 'import keras\n', 'from tensorflow_docs.vis import embed\n', 'from tqdm.notebook import tqdm\n', 'import tensorflow as tf\n', 'import matplotlib.pyplot as plt']'

'markdown' cell: '['## PositionalEmbedding and TransformerEncoder']'

'markdown' cell: '['Positional encoding describes the location or position of an entity in a sequence so that each position is assigned a unique representation. Transformers use a smart positional encoding scheme, where each position/index is mapped to a vector. Hence, the output of the positional encoding layer is a matrix, where each row of the matrix represents an encoded object of the sequence summed with its positional information.\n', '\n', 'A simple implementation of the positional embedding is shown below:']'

'code' cell: '['class PositionalEmbedding(tf.keras.layers.Layer):\n', '    def __init__(self, sequence_length, output_dim, **kwargs):\n', '        super().__init__(**kwargs)\n', '        \n', '        # instead of Embedding, you can use keras_nlp.layers.SinePositionEncoding(), same as the original paper\n', '        self.position_embeddings = tf.keras.layers.Embedding(\n', '            input_dim=sequence_length, output_dim=output_dim\n', '        )\n', '        self.sequence_length = sequence_length\n', '        self.output_dim = output_dim\n', '\n', '    def call(self, inputs):\n', '        # The inputs are of shape: `(batch_size, frames, num_features)`\n', '        length = tf.shape(inputs)[1]\n', '        positions = tf.range(start=0, limit=length, delta=1)\n', '        embedded_positions = self.position_embeddings(positions)\n', '        return inputs + embedded_positions\n', '\n', '    def compute_mask(self, inputs, mask=None):\n', '        mask = tf.reduce_any(tf.cast(inputs, "bool"), axis=-1)\n', '        return mask']'

'markdown' cell: '['The next step will be defining the transformer encoder. The implementation is the same as the original paper, and the input parameters are:\n', '\n', 'embed_dim: number of the input features\n', '\n', 'dense_dim: number of neurons in the feedforward layer\n', '\n', 'num_head: number of attention heads']'

'code' cell: '['class TransformerEncoder(tf.keras.layers.Layer):\n', '    def __init__(self, embed_dim, dense_dim, num_heads, **kwargs):\n', '        super().__init__(**kwargs)\n', '        self.embed_dim = embed_dim\n', '        self.dense_dim = dense_dim\n', '        self.num_heads = num_heads\n', '        self.attention = tf.keras.layers.MultiHeadAttention(\n', '            num_heads=num_heads, key_dim=embed_dim, dropout=0.3\n', '        )\n', '        self.dense_proj = tf.keras.Sequential(\n', '            [tf.keras.layers.Dense(dense_dim, activation=tf.nn.gelu), tf.keras.layers.Dense(embed_dim),]\n', '        )\n', '        self.layernorm_1 = tf.keras.layers.LayerNormalization()\n', '        self.layernorm_2 = tf.keras.layers.LayerNormalization()\n', '\n', '    def call(self, inputs, mask=None):\n', '        if mask is not None:\n', '            mask = mask[:, tf.newaxis, :]\n', '        attention_output = self.attention(inputs, inputs, attention_mask=mask)\n', '        proj_input = self.layernorm_1(inputs + attention_output)\n', '        proj_output = self.dense_proj(proj_input)\n', '        return self.layernorm_2(proj_input + proj_output)\n', '    \n', '    def get_config(self):\n', '        config = super().get_config().copy()\n', '        config.update({\n', "            'embed_dim': self.embed_dim,\n", "            'dense_dim': self.dense_dim,\n", "            'num_heads': self.num_heads,\n", "            'attention': self.attention,\n", "            'dense_proj': self.dense_proj,\n", "            'layernorm_1': self.layernorm_1,\n", "            'layernorm_2': self.layernorm_2,\n", '\n', '        })\n', '        return config']'

'markdown' cell: '['## Building a model using a transformer encoder as a sequence modeler']'

'markdown' cell: '['In this part, we will build a model with the previously introduced transformer encoder. We want to solve a classification problem (sign language recognition using hand key points). The input shape is (number of data, number of time steps, number of features), and the "get_compiled_model" function will create a model for us to solve this classification problem. The training data will be available upon request.']'

'code' cell: '['def get_compiled_model(MAX_SEQ_LENGTH, NUM_FEATURES):\n', '    sequence_length = MAX_SEQ_LENGTH\n', '    embed_dim = NUM_FEATURES\n', '    dense_dim = 256\n', '    num_heads = 2\n', '    classes = 101\n', '\n', '    inputs = tf.keras.Input(shape=(None, None))\n', '    x = PositionalEmbedding(sequence_length, NUM_FEATURES, name="frame_position_embedding")(inputs)\n', '    x = TransformerEncoder(NUM_FEATURES, dense_dim, num_heads, name="transformer_layer")(x)\n', '    x =tf.keras.layers.Add()([inputs,x])\n', '    x = tf.keras.layers.GlobalMaxPooling1D()(x)\n', '    outputs = tf.keras.layers.Dense(classes, activation="softmax")(x)\n', '    model = tf.keras.Model(inputs, outputs)\n', '    model.compile(optimizer="Adamax", loss="categorical_crossentropy", metrics=["accuracy"])\n', '    return model']'

'markdown' cell: '['In case we wanted to use LSTM instead of the transformer, the model would be something like this:']'

'code' cell: '['def get_compiled_model_LSTM():\n', '    classes = 101\n', '    inputs = tf.keras.Input(shape=(40, 126))\n', '    x = tf.keras.layers.LSTM(64)(inputs)\n', '    outputs = tf.keras.layers.Dense(classes, activation="softmax")(x)\n', '    model = tf.keras.Model(inputs, outputs)\n', '    model.compile(optimizer="Adamax", loss="categorical_crossentropy", metrics=["accuracy"])\n', '    return model']'

'code' cell: '['model = get_compiled_model(MAX_SEQ_LENGTH = 40, NUM_FEATURES = 126)\n', 'model.summary()']'

'code' cell: '["right = np.load(r'right.npy')\n", "left = np.load(r'left.npy')\n", 'first_stream = np.concatenate((right,left),axis = 2)\n', '\n', "onehot_encoded = np.load(r'onehot_encoded.npy')"]'

'code' cell: '['optimizer = tf.keras.optimizers.Adamax()\n', '\n', 'model.compile(\n', '    optimizer=optimizer,\n', '    loss=tf.keras.losses.CategoricalCrossentropy(\n', '    label_smoothing=0.1),\n', '    metrics=[\n', '        keras.metrics.CategoricalAccuracy(name="accuracy"),\n', '        tf.keras.metrics.TopKCategoricalAccuracy(k=5, name="top_5", dtype=None)])']'

'code' cell: '['filepath = r"path_to_your_computer"\n', 'checkpoint = keras.callbacks.ModelCheckpoint(\n', '    filepath, save_weights_only=True, save_best_only=True, verbose=1)\n', '   \n', '\n', '# fit network\n', 'history = model.fit(\n', '    first_stream,\n', '    onehot_encoded,\n', '    epochs=10,\n', '    callbacks=[checkpoint],\n', '    batch_size=4,\n', '    validation_split = 0.1,\n', '    validation_batch_size=4)']'

'markdown' cell: '['Good Luck!']'

E:\courses\LangChain Project\main root\data\TransformerEncoder_(code).ipynb

'code' cell: '['import numpy as np\n', 'import os\n', 'import keras\n', '#from tensorflow_docs.vis import embed\n', 'from tqdm.notebook import tqdm\n', 'import tensorflow as tf\n', 'import matplotlib.pyplot as plt']'

'code' cell: '['class PositionalEmbedding(tf.keras.layers.Layer):\n', '    def __init__(self, sequence_length, output_dim, **kwargs):\n', '        super().__init__(**kwargs)\n', '\n', '        # instead of Embedding, you can use keras_nlp.layers.SinePositionEncoding(), same as the original paper\n', '        self.position_embeddings = tf.keras.layers.Embedding(\n', '            input_dim=sequence_length, output_dim=output_dim\n', '        )\n', '        self.sequence_length = sequence_length\n', '        self.output_dim = output_dim\n', '\n', '    def call(self, inputs):\n', '        # The inputs are of shape: `(batch_size, frames, num_features)`\n', '        length = tf.shape(inputs)[1]\n', '        positions = tf.range(start=0, limit=length, delta=1)\n', '        embedded_positions = self.position_embeddings(positions)\n', '        return inputs + embedded_positions\n', '\n', '    def compute_mask(self, inputs, mask=None):\n', '        mask = tf.reduce_any(tf.cast(inputs, "bool"), axis=-1)\n', '        return mask']'

'code' cell: '['class TransformerEncoder(tf.keras.layers.Layer):\n', '    def __init__(self, embed_dim, dense_dim, num_heads, **kwargs):\n', '        super().__init__(**kwargs)\n', '        self.embed_dim = embed_dim\n', '        self.dense_dim = dense_dim\n', '        self.num_heads = num_heads\n', '        self.attention = tf.keras.layers.MultiHeadAttention(\n', '            num_heads=num_heads, key_dim=embed_dim, dropout=0.3\n', '        )\n', '        self.dense_proj = tf.keras.Sequential(\n', '            [tf.keras.layers.Dense(dense_dim, activation=tf.nn.gelu), tf.keras.layers.Dense(embed_dim),]\n', '        )\n', '        self.layernorm_1 = tf.keras.layers.LayerNormalization()\n', '        self.layernorm_2 = tf.keras.layers.LayerNormalization()\n', '\n', '    def call(self, inputs, mask=None):\n', '        if mask is not None:\n', '            mask = mask[:, tf.newaxis, :]\n', '        attention_output = self.attention(inputs, inputs, attention_mask=mask)\n', '        proj_input = self.layernorm_1(inputs + attention_output)\n', '        proj_output = self.dense_proj(proj_input)\n', '        return self.layernorm_2(proj_input + proj_output)\n', '\n', '    def get_config(self):\n', '        config = super().get_config().copy()\n', '        config.update({\n', "            'embed_dim': self.embed_dim,\n", "            'dense_dim': self.dense_dim,\n", "            'num_heads': self.num_heads,\n", "            'attention': self.attention,\n", "            'dense_proj': self.dense_proj,\n", "            'layernorm_1': self.layernorm_1,\n", "            'layernorm_2': self.layernorm_2,\n", '\n', '        })\n', '        return config']'

'code' cell: '['filepath = r"path_to_your_computer"\n', 'checkpoint = keras.callbacks.ModelCheckpoint(\n', '    filepath, save_weights_only=True, save_best_only=True, verbose=1)\n', '\n', '\n', '# fit network\n', 'history = model.fit(\n', '    first_stream,\n', '    onehot_encoded,\n', '    epochs=10,\n', '    callbacks=[checkpoint],\n', '    batch_size=4,\n', '    validation_split = 0.1,\n', '    validation_batch_size=4)']'

E:\courses\LangChain Project\main root\data\transformerencoder_(code).py

"""TransformerEncoder (code).ipynb

    https://colab.research.google.com/drive/1IQ_hDQRWa_tsScwAabDg8NOhIcUCH56k

# TransformerEncoder Implementation

In this sample code, the transformer encoder and positional embedding classes will be implemented. First, you need to make sure that all of the required libraries are installed on your device.
"""

import os
#from tensorflow_docs.vis import embed
from tqdm.notebook import tqdm

"""## PositionalEmbedding and TransformerEncoder

Positional encoding describes the location or position of an entity in a sequence so that each position is assigned a unique representation. Transformers use a smart positional encoding scheme, where each position/index is mapped to a vector. Hence, the output of the positional encoding layer is a matrix, where each row of the matrix represents an encoded object of the sequence summed with its positional information.

A simple implementation of the positional embedding is shown below:
"""

class PositionalEmbedding(tf.keras.layers.Layer):
    def __init__(self, sequence_length, output_dim, **kwargs):
        super().__init__(**kwargs)

        # instead of Embedding, you can use keras_nlp.layers.SinePositionEncoding(), same as the original paper
        self.position_embeddings = tf.keras.layers.Embedding(
            input_dim=sequence_length, output_dim=output_dim
        )
        self.sequence_length = sequence_length
        self.output_dim = output_dim

    def call(self, inputs):
        # The inputs are of shape: `(batch_size, frames, num_features)`
        length = tf.shape(inputs)[1]
        positions = tf.range(start=0, limit=length, delta=1)
        embedded_positions = self.position_embeddings(positions)
        return inputs + embedded_positions

    def compute_mask(self, inputs, mask=None):
        mask = tf.reduce_any(tf.cast(inputs, "bool"), axis=-1)
        return mask

"""The next step will be defining the transformer encoder. The implementation is the same as the original paper, and the input parameters are:

embed_dim: number of the input features

dense_dim: number of neurons in the feedforward layer

num_head: number of attention heads
"""

class TransformerEncoder(tf.keras.layers.Layer):
    def __init__(self, embed_dim, dense_dim, num_heads, **kwargs):
        self.embed_dim = embed_dim
        self.dense_dim = dense_dim
        self.num_heads = num_heads
        self.attention = tf.keras.layers.MultiHeadAttention(
            num_heads=num_heads, key_dim=embed_dim, dropout=0.3
        )
        self.dense_proj = tf.keras.Sequential(
            [tf.keras.layers.Dense(dense_dim, activation=tf.nn.gelu), tf.keras.layers.Dense(embed_dim),]
        )
        self.layernorm_1 = tf.keras.layers.LayerNormalization()
        self.layernorm_2 = tf.keras.layers.LayerNormalization()

    def call(self, inputs, mask=None):
        if mask is not None:
            mask = mask[:, tf.newaxis, :]
        attention_output = self.attention(inputs, inputs, attention_mask=mask)
        proj_input = self.layernorm_1(inputs + attention_output)
        proj_output = self.dense_proj(proj_input)
        return self.layernorm_2(proj_input + proj_output)

        config = super().get_config().copy()
        config.update({
            'embed_dim': self.embed_dim,
            'dense_dim': self.dense_dim,
            'num_heads': self.num_heads,
            'attention': self.attention,
            'dense_proj': self.dense_proj,
            'layernorm_1': self.layernorm_1,
            'layernorm_2': self.layernorm_2,

        })
        return config

"""## Building a model using a transformer encoder as a sequence modeler

In this part, we will build a model with the previously introduced transformer encoder. We want to solve a classification problem (sign language recognition using hand key points). The input shape is (number of data, number of time steps, number of features), and the "get_compiled_model" function will create a model for us to solve this classification problem. The training data will be available upon request.
"""

def get_compiled_model(MAX_SEQ_LENGTH, NUM_FEATURES):
    sequence_length = MAX_SEQ_LENGTH
    embed_dim = NUM_FEATURES
    dense_dim = 256
    num_heads = 2
    classes = 101

    inputs = tf.keras.Input(shape=(None, None))
    x = PositionalEmbedding(sequence_length, NUM_FEATURES, name="frame_position_embedding")(inputs)
    x = TransformerEncoder(NUM_FEATURES, dense_dim, num_heads, name="transformer_layer")(x)
    x =tf.keras.layers.Add()([inputs,x])
    x = tf.keras.layers.GlobalMaxPooling1D()(x)
    outputs = tf.keras.layers.Dense(classes, activation="softmax")(x)
    model = tf.keras.Model(inputs, outputs)
    model.compile(optimizer="Adamax", loss="categorical_crossentropy", metrics=["accuracy"])

"""In case we wanted to use LSTM instead of the transformer, the model would be something like this:"""

def get_compiled_model_LSTM():
    inputs = tf.keras.Input(shape=(40, 126))
    x = tf.keras.layers.LSTM(64)(inputs)

model = get_compiled_model(MAX_SEQ_LENGTH = 40, NUM_FEATURES = 126)

right = np.load(r'right.npy')
left = np.load(r'left.npy')
first_stream = np.concatenate((right,left),axis = 2)

onehot_encoded = np.load(r'onehot_encoded.npy')

optimizer = tf.keras.optimizers.Adamax()

model.compile(
    optimizer=optimizer,
    loss=tf.keras.losses.CategoricalCrossentropy(
    label_smoothing=0.1),
    metrics=[
        keras.metrics.CategoricalAccuracy(name="accuracy"),
        tf.keras.metrics.TopKCategoricalAccuracy(k=5, name="top_5", dtype=None)])

filepath = r"path_to_your_computer"
checkpoint = keras.callbacks.ModelCheckpoint(
    filepath, save_weights_only=True, save_best_only=True, verbose=1)

# fit network
    first_stream,
    onehot_encoded,
    epochs=10,
    callbacks=[checkpoint],
    batch_size=4,
    validation_split = 0.1,
    validation_batch_size=4)

"""Good Luck!"""

ترانسفورمریه استکت یعنی پشت سر هم دیگه شاید معنیش امیر مسعود شاید معنیش اینه که ۶ تا از این چیزا رو زده تنگم خیلی زیاد بوده خب یعنی اینجوری نیست که کم باشه مثلاً شما تو کارهای خودت احتمال داره بیشتر از دو تا سه تا هد یا مثلاً چی دو تا از این ماژول پشت سر هم نتونی بزنی با کامپیوترهای شخصی این چیزایی نیست ریسرسش در اختیار همه نیست خیلی وحشت خیلی وحشتناکه دیگه چرا چرا هستش بهتون میگه نه تعدادشو که بالا ببری کامپیوتر کم میاره دیگه نمیکشه دیگه تعداد پارامترها میره بالا زیاد میشه عرض کردم نزدیک ۱۸۰ میلیارد پارامتره شوخی نیست دیگه خب بچه‌ها شروع بکنم خب سلام مجدد عرض به حضور شما

یه بار دیگه بچه‌ها به آرکتکچر یا معماری ترانسفورمر نگاه کنیم خب این مدلی بود که اینپوت که می‌گرفت از ام بدین رد میکرد به تعداد اینپوتامون درایه‌هامون یه بردار حالا با دی تا درایه بهمون میداد که اینا میرفتن وارد ماژول سلف اتنشن میشدند قرار بود خودش به خودش توجه کنه و به ازای یک هد کاری که میکرد این بود که شما سه تا دبلیو داشتید به نام دبلی کیو کی و wv که اینا قرار اینا از چپ که در ایکس ضرب بشن شما رو ببرن به فضاهای کوری کی و ولیو کووریا میومدن یک کو از تمام کی های دیگه دات میشد از سافت مکس میگذشت در ولیو مربوطه ضرب میشد و یه زد جدید به دست میومد به تعداد هدهایی که داشتید

معادل به دست میومند و تهش با یه در واقع عملیات ریاضی که مثلاً می‌تونست یه ترکیب خطی ساده یک کار ضرب ماتریسی ساده خطی باشه پروجکشن ساده باشه چیکار میکردید عرض به حضورتون که اینو می‌بردید دوباره توی فضایی که دقیقا با ورودی هم سایز بود خب و اگه دقت هم کنید دو تا اسکیپ کانکشن هم داشتیم یک بار بعد از اینکه از مالتی هد رد میشد بعد میرفت از هر کدوم از اون ایکس آی ها یا زد آی هایی که تولید شده بود از پی ساده رد میشد و باز دوباره با خودش جمع میشد و اینجا کار یه دونه از این بلوک های اینکر تمام میشد اتفاقی که افتاد و کلاهی که سرتون گذاشته بودیم این بود که بهتون نگفته بودیم کلمه اول و دوم جاشون بالاخره چه مهم این چیزی که من گفتم مثلاً اول و دوم به جاش مهم نبود اینجوری بود که ولی در حالی که تو واقعیت مهمه یعنی تو ماژول آرنت فقط اولی و دومی رو میداد دومی سومی رو میداد و الی آخر و این مهم بود اینو چجوری ببینیم که اینکه

نه تنها این کلمه‌ها در کنار هم قرار گرفتن بلکه مهمه که کی قبل کیه کی دوتا اونورتر و الی آخر یه چیزی اومد به نام پوزیشنال امبدینگ و حرفش این بود که بیا اثرات چیزم جا بده اثرات حضور این کلماتم توش جا بده تا همین امروز حرف‌های زیادی رو پوزیشنال امبدیک زده شده یعنی راهی که پیپر اتنشن ارائه داد فقط در واقع یه پیشنهاد ولی لزوما بهترین نیست خب مثل این میمونه که ما سافت مکس رو به شما پیشنهاد دادیم اگه دقت کنید تمرین سری دوم تمپرچر هم براتون گذاشتیم که سافت مکس تی توش باشه چه اتفاقایی میفته خب اینم اینجوری بود که امبدینگ های مختلفی اومد پوزیشنال امبگه حرفش این بود من باید کاری کنم که جای کلماتم بتونم چیکار کنم ببینم پیشنهادی که دادن این بود گفتن مثلاً اگه چیز شما ایکس شما چهار درایه ایه خب شما باید بیاید به ازای هر در

یه عددی پیدا کنید با اون ایکس جمع بزنید یعنی به عبارتی در کل یه بردار هم طول ایکس شماست که ام بدینینگ شما رو تو فضای یه کوچولو جابجا می‌کنه درسته مثلاً فرض کنید که ایکس شما چهارتاییه چهار تا درایه داره خب بعد پنج تا هم از این چیزا دارید پنج تا جمله‌تون پنج کلمه‌ایه ها میگه چیکار کن میگه شما به یه چیزی احتیاج داری که ایکس یک تا x5 رو ورودی ها رو یه جوری تغییر بده با یه چیزی جمع بزنه پیشنهادی که پیپر داد این بود که میگفت یه بردار داشته باشید که از درایه های زوج و فردش اینجوری باشن درایه‌های فردش کسینسه یه چیزی باشن ده های زوجش سینوس یه چیزی باشن بعد پز یا موقعیتشو تقسیم بر ۱۰ هزار به توان دو آی به دی مدل بکنید و بذارید جاش حالا یعنی چی اولا در واقع دی مدل آخرین سایز چیز

سایز عرض به حضور شما یه لحظه فقط اجازه بدید فکر کنم منظورش امبدینگ تک کلمه کلمه اول یا تعداد جملاتش یعنی جمله ۵ مثلاً کلمه‌ای داشته باشم یه لحظه الان شک کردم خب احتمالاً تعداد دی مدل و یه لحظه اگه بتونم ببینم اینجا چی بوده خوبه دی مدل می‌خوام سوالم الان اینه مثلاً تو این شکل دی مدل من دو یا ۴ الان یه لحظه اینو شک کردم خب یه مدل من دو یا ۴ این الان شکی که الان دارم خب

که به ازای تک تک نیرون‌ها منظورت بود یا به ازای تک تک کلمات منطقاً تک تک کلمات فکر کنم آره فکر کنم تک تک کلمات یعنی اینجا مثلاً دو باید باشه خب بعد میگه چیکار کن میگه که شما یه برداری باید بسازی خب که از سینوس یا کسینوس یه چیزی به وجود بیاد که اون چیز پوزیشنش هم لحاظ بکن مثلاً پوزیشن از صفر شروع کن یعنی حرف اولی جای پوز بزار صفر میشه چی میشه سینوس صفر کسینوس صفر که میشه توی درایه اول تو کلمه تو کلمه اولت مثلا فرض کن همه رو با یک جمع بزن تمام درایه هاشو تو کلمه دوم همه رو با صفر جمع بزن حالا اگه تمام شد که هیچی دیگه دو کلمه بودی اگه چهار کلمه ای بودی چی مثلا عرض به حضور شما میره بالاتر آی قبلی صفر بود بعد آی حالا

مدل چهارتایی باشه این دفعه این می‌شه ۱۰۰۰۰ به توان یه بار شد ۱۰ هزار به توان ۱۰۰۰۰ به توان اجازه بدید نه این پوزیشنه که صفر و اینا بود داشت میرفت جلو آی درایه‌های چیزه آها دیگه این الان معلوم کرد ها من یه لحظه خودم شک کردم بچه‌ها نگاه میگه پوزیشنینگ تابع پوزیشن داره که کلمتون کجاست و فکر کنم تو درایه مربوطه با چی جمع بزن فکر کنم اینه دعای دومی یعنی درایه چندم اون بردار ام بدین تو با این جمع بزن خب یه همچین چیزی فرض کنید حالا این مدلیه که مثلاً فرض کنید اگه چهار درایه ای باشه اولی و دومیش سینوس و کسینوس صفر رو داره سومی و چهارمی سینوس و کسینوس یک رو داره یعنی چی یعنی عرض به حضور شما

دعایی میشه یه بار اگه دعای بشه یک میشه نه سینوس و کسینوس پوزیشن به ۱۰۰۰۰ رو داره درسته در بدترین حالت اجازه بده باز تمرکز کنم دعایی به معادل چند میشه اینو باید اینو باید چک کنم حالا ماجرا اینه که ماجرا پیام اصلیشو بگم این تیکشو براتون چک میکنم میارم ماجرا اینه که میگه تک تک درایه‌هاشو برای اینکه جاشو بدونه باهاش جمع بزن با یه انکدی با یه به اصطلاح ضریب سینوس کسینوسی مثلاً باهاش جمع بزن که این تو خودش بره چیز کنه تو خودش بره یاد بگیره اینو که اگه کلمهت اول اومده یا پنج اومده فرق بکنه با هم ام بدینینگش یعنی حتی به اینم میخواد در واقع چیز بکنه دقت بکنه خب یه همچین چیزی یعنی میگه که دقیقا ایکس هر چی هست بیا با یه پوزیشنال ام بدیم جمع بزن

اولیتون ۵ تا کلمه است که ۴ تا درایه داره یه سری همین بردارهای پنج تا بردار چهار در یک بهتون میده این پوزیشن که این چهار تای اول با چهار تا ایکس جمع میزنی و ایکس دو که میخوان وارد ماژول اتنشن بشن قبلش چی با یه چیزی جمع زده شدن که نمادی از چی باشه جاشون باشه حالا یکی ممکنه بپرسه چرا نمیان جاشونو به عنوان یه دونه درایه کانکت کنن تهش مثلا خودش چهار تا داره یه دونه هم پنجمی نرون اضافه کن مثلاً اون نماد جاش باشه این چون می‌ره مثلاً هی میره کلی بالا این فقط یه دونه است ممکنه فراموش شه یا اثرش کم شه وقتی وقتی باهاش جمع میزنن با همه این دیگه واقعاً پوزیشن تا آخر یادش میمونه خب اگه تو یه دونه بود ممکن بود فراموش شه نمی‌دونم بعداً یادتونه کانکت میشد مکسولینگ زده میشد و و الی آخر گلوبال مکس بخواید بزنید ممکنه از یاد

پوزیشن یادش میمونه خب حالا یا شما اینجا تمام کارتون یعنی بعد از اینکه این ان تا از اینا رو گذاشتید تنگه هم دیگه می‌خواید یه کلاسیفیکیشن ساده انجام بدید مثلاً متنتون اومده می‌خواید بگید که مثلاً این نوع اخبار چی بود سیاسی بود هنری بود فلان بود اینا یا یه فیلمی اومده یه نمی‌دونم آرایه حرکتی داشتید تهش می‌خواستید بگید چه نوع حرکتی آب خوردن بوده نشستن بوده برخاستن بوده الی آخر خب و اینا یه ماجراست یا اینکه نه می‌خواید منی تو من یه چیز تولید کنید حالا فرض کنید تولید کنید حالا چیکار باید بکنیم خروجی لایه آخرش باید بدیم به دیکودر توش چه اتفاقی میفته مثلاً فرض کنید که من گفتم آی ای تنپل اون باید به فارسی بگه من سیبی خوردم اینو میخواد برام تولید کنه خب آیه تنپ رو دادم رفته جلو برای خودش چیکار کرده یه چیزی تولید کرده که دقیقا به ازای آی ایت ان اپل چی معادل داره یه سری

زدهای غنی شده وجود داره اینور که می‌خوام من سیبی خوردم و بسازه این کارو می‌کنه اولاً میگه تو ترینینگ اگه هستید خب باید مست برید اینو ترین کنید یعنی یک بار باید بگی من تولید کنه یک بار باید بگه من سی بی تولید کنه یک بار باید بگه من سیبی خوردم تولید کنه نباید یهو بهش بدید من سیبی خوردم و تولید کنه درسته میگه وقتی بهش میگید منو تو تولید کن حالا که هیچی دیگه من که خودش بخواد یه بار چیز میکنه اتنشن میکنه دیگه خودش یه دونه است منطقاً ۱۰۰ از تنشن خودشه بعد میاد چیکار میکنه ازش زدی که تولید میشه میشه کووری ما یادتونه گفتیم کووری از چیزه از چیز مقصده از اون قبلیه خروجی اینکودر آخر چی میاد کی و ولیوم میاد میره دوباره تو مالتی هد اتنشن یعنی مالتی اتنشنش شبیه قبلیه فقط اینه که کووری

ولیوش دیگه همه از یک جمله نیست این دفعه کوئری از مقصد کی و ولیو از مبدا و اینجام در واقع می‌گذره خروجیش با خودش جمع میشه از یه ام ال پی دیگه‌ای می‌گذره که لزوماً با این ام ال پی اینجا یکی نیست و دوباره با خودش جمع میشه و بعدش چی تهش چی سافت مکس زده میشه و احتمال تولید کلمه بعدی میاد منو دادن باید بگه cb خب دفعه دیگه چیو بهش میدم ورودی من و سیبی رو میدم دوتایی میدم که دوباره پوزیشن دارند میره منو سی وی به همدیگه توجه میکن به اون تعداد هدی که داره میره باید بره خوردن تولید کنه خوردمو که تولید کرد من سیب خوردم الان هست دوباره میره تولید می‌کنه اینا رو دوباره اتنشن چیز میکنه اتند میکنه به آخرین خروجی اینک باید چی تولید کنه اندف سنتس تولید کنه که جمله بسته شه خب تو ترینینگ اینا بهش میدی و تو واقعیت هم بعدا باید این کار بکنه تو واقعیت چیکار میکنن همون کاری که تو آر بهتون گفتیم دیگه تمامه دیگه همه چی

شما جمله اولتونو می‌دید با توکن استارت شروع می‌کنید میگید خروجی توکن استارتو بهش میدم باید بره کلمه اول تولید کنه اولی خودش میده به دومی دومی میره تولید می‌کنه حالا اینجا دوباره دو حالت داریدی باید برخورد کنید یعنی بالاترین احتمال رو بدید به چیز تولید کلمه که دیگه همیشه جوابتون یکسان در میاد یا اینکه نمونه برداری کنید این شانس رو بهش بدید اگه یکی ۴۸ درصد یکی ۴۷ درصده اون ۴۷% هم انتخاب بشه بعضی وقتا دیگه خودتون شانستون مثلاً دو حالا تو این میبینید اصلا خوب نبوده وقتی مثلاً این می‌رفتن با تمپچر دو مثلاً تو سافت مکسش یه چیزی رو ترین میکردن با صفر خوب میشده صفر همون گردی خودمونه ولی وقتی که مثلاً تو چت جی پی تی سه مثلاً اوضاع خیلی بهتر میشه خب اینم اینجوریه که تاکید کرده که اولا از انکر آخری به دیکودرا میاد ولی یادتون باشه از انکر آخری به تمام دیکودرا میاد اینا اینجا می‌بینید به یه دونه از این اومده بعد یه ضربدر n نوشته یعنی اگه میگه شش تا دیکود هم گذاشتی

آخر یه بار به اینجا میاد اول تولید میشه خروجی اون میره تو دیکودر دوم هی دوباره از انکودر آخر این میاد و الی آخر و یه در واقع اتفاق خیلی خیلی غیر خطی گری می‌بینید که می‌تونن چیکار کنن این کارو انجام بدن این شکل باز اینجا چی شده نمایش داده شده که از دیکودر آخر چه جوری هم اول هم به دیکودر دوم هی ورودی داده میشه به عنوان کی و ولیو کووری هم که از خودشه این احتمالا دیدن نه اینا دیدن احتمالا دیدن که وقتی این کار میکنید احتمالا نتیجه بهتری میده منطقش هم اینه که دیکودر که رمزگشا باشه می‌خواد از کیو ولیو استفاده کنید کی و ولیو که نمادی از اتنشن بودن به رفت ربط داشتن آره هی یه چیز عمیق تری پیدا میکنه دیگه خوب زبان آره دیگه اینا با زبان رشد کردن بقیه اومدن خودشونو با این همزبان کردن مثلا

ویدیو می‌خواست بیاد یا یه فیلم می‌خواست عکس می‌خواست بیاد طبقه‌بندی بشه یکی می‌گفت من سی‌ان‌ان نمی‌خوام بزنم چیکار کنم از ترانسفورمر برم بعد یه چیزی به نام ویژن ترانسفورمر اومده جلسه اول کلمه دومه بعد برو بهم بگو این اسب فیله چیه فلانه بهتون میگم اینو و مثلا تو آنالیز حرکت شما یه سیگنال زمانی چه موقعیت مفاصل بدن رو دارید تو حرکت یک ربات موقعیت موتور ها موتور ها دارید مثلا رول پیچ یاش و و و اینا بر اساس زمان دارید اینا رو هی به عنوان مثلاً ورودی میدید بعد خروجی باید ببینید چی تولید کنه مثلاً گام چیز بعدی رو تولید کنه موقعیت بعدی رو تولید کنه درسته مثلاً ۱۰۰ تای اول رو میدی صد یکمی رو بده مثلاً ۱۰۱ اول میدی صد و دومی رو بده ولی آخر هی برات بره بگیری ۵۰۰ تا پشت سر هم داشت همین دیگه همین کارو می‌کردیم دیگه

هر کسی به چند تا قبلش ربط داره چه جوری ربط داره چرا ربط بله بله دیگه مثلاً یه ربات ۵ درجه آزادی دارید خب پنج تا موقعیت مثلا موتور رو من بر حسب زمان به شما میدم این میشه پنج تا موقعیت میشه چیز شما ایکس های هر ایکس آیتون تو تی های مختلف یعنی ببخشید درایه های هر کدوم از ایکس آی ها و تی های مختلف میشن خود ایکس آی ها مثلا ۳۰ تا از این پنج تا رو بهش میدید ورودی اینکودر ورودی ترنسفور میره خودش میکنه فلان فلان از چند تا هد میگذره و اینا تهش میگه چی تولید کن برام مثلاً ممکنه بگی یه پنج تا تولید کن برای موقعیت لحظه بعد آره میتونی ۳۰ تا بهش بدی ۲۰ تا بعد برات تولید کنه یا میتونی همین محدودیت نه اتفاقاً محدودیت هم نداره هی بهش میدیم یکی بهش بده اون بعدیشو برات تولید میکنه یعنی

خیلی باهوش باشه خروجی من وقتی میخوای تولید کنی هی اینو که گرفتی برو کانکت کن به مثلا چیز بعدی ۲۹ تای بعدیش و این ۳۰ تا رو بگیر ورودی دوباره برو چیکار کن این کار بکن در ضمن مثل آرنا هیچ لزومی نداره سایز ورودی یکسان باشه خب مثلاً فرض کنید که ممکنه یه فیلمتون سه تا فریم داشته باشه یکیتون ۳۰ تا فریم داشته باشه اینو معمولا اینجوری که شما باید تشخیص بدید که کدوم ماکسیمم مثلا میبینید تو ترینینگتون ۳۰ فریم ماکسیمم اینو می‌ذارید معیار با یه دستور مس پدینگ یا مسینگ میید به اون سه فریمی ها و پنج فریمی ها میگید به اندازه به اندازه که به سی برسه صفر اضافه کن ولی به اونم میگید که آقا صفر برای من چیزه کلمه مس و نباید بهش توجه کنی و اون دیگه این حواسش هست و این کارو می‌کنه و الی آخر

اینکه در واقع محاسبه کردن در واقع ادونتیج زیادی داره کامپلک سیتی پایین‌تر داره می‌تونه پارالل و سرعتی تر چیز با سرعت بیشتری انجام بشه عرض به حضور شما اردراپ مگنیتیود تعداد محاسبات و پارامترهایی که دارن هم میتونید مشاهده بفرمایید این بود در واقع ماژول یعنی معماری ترنسفورمر که یه دور دیگه الان میتونید به این عکس نگاه بکنید الان دیگه منطقا میفهمید چه اتفاقی داره میفته دیگه اینپوت که ورودی میاد با پوزیشن جمع میشه که جای خود خودش پیدا کنه وارد سلف اتنشن میشه از چند تا هد میگذره چند تا چند بار اینو تکرار میکنه از خروجی آخرین کدش میاد به ورودی میده و میره میره تا آخر اون کار شما برسه و یه کار ترجمه زبانی چت باد پاسخگویی کوسشن انسگ و و و برای شما چیکار کنه انجام بده که این عرض کردم این الان در واقع استیت آف آرته و یه جورایی مرز دانش فعلی تو حوزه هوش مصنوعی دیگه بعد از این شبکه متفاوت تری به ذات نیومده جان

خروجی خروجی به سمت چپی میدی یک بار من تنها رو فقط بهش میدی این باید سی بی تولید کنه یک بار من سی بی رو میدی این باید خوردم رو تولید کنه یه بار من سیبی خوردی باید تولید کنه اینجوری هی تر میکنه یه چیزی نه نه نه نهپ به سمت چپ دادم که زبان انگلیسیه به فارسی یک بار میدم من تنها امبدینگشو البته امبگه اینشو میدم یه بردار ۱۲۸ تاییه که جای منو دیده خب بعد سی بی بعد خوردم یعنی من سیبی یه بار من تنها دادم سی باید تولید کنه یه بار من سی وی رو با هم میدم باید چیکار کنه خوردم تولید کنه یه بار من سیبی خوردمو میدم باید چی تولید کنه

و این تو ترینینگشه تو تست میگه شما نداری اصلاً منو نداری شما تا در واقع سمت چپیه رو میدی یه جمله جدید میدی توکن استارتو میدی به سمت راست میگه خودت تولید کن دیگه دیگه انشالله باید بگی که اون بتونه با آی شروع کنه و میکنه ها یعنی الان میگم کاریه که الان داره انجام میده اینا رو خب و اساس کارشون اینه خب عرض به حضور شما که اینو گفتیم در مورد معماری ترنسفور بود خدمتتون بچه ها عارضم که یه فیلمی اومده یه فیلمی اومده در واقع مال ترو تری بلو وان براون که دو تا فیلم ۲۷ دقیقه ای من میخواستم یکیشو امروز دور هم ببینیم اگه دوست دارید اگر میخوید امروز کلاس تموم میکنیم و میریم خوب مادام که خودتون ببینید و حسش خیلی جذابه ولی و آموزشی نیست یعنی حتماً شما باید اینو شنیده باشید قبلش درسنامه رو که

اگه نشنیده بودید با اون نمی‌تونید ترانسفورمر رو یاد بگیرید ولی با اون حس فیزیکی حس چیز تجسم بهتری دارید که ترانسفورمره داره چیکار می‌کنه خب اگه می‌خواید تا برم بیارم یکیشو ببینیم فیلماش دو تا ۲۵ دقیقه است یکیشو می‌رسیم اگه فکر می‌کنید اگر نه برای من مهم نیست می‌تونید تشریف ببرید اینم برای چیزشه اگه خودتون میبینید عرض کردم برای من چیز مسئله مهمی نیست اینم باز دوباره ویژوالایز کردن چیزهای دیگه است مثلا جملات دیگه بوده باز دوباره سل اتنشن کرده به خودش گفته که مثلاً دو تا از هدهای انکر سلف اتنشن توی لایه پنج از ششم در واقع ان کد رو رفتم براتون چیز کردم مشخص کردم که بعضی هاشون چیز میکنه بعضی هاشون میگم عرض کردم نمادی از اینه که این کلمه به چه صفتی به چه فعلی به چه چیزی توجه داره و بعضیاشم نه لزوماً برای من و شما انسان قابل فهم نیست ماشین با این اتش

کار خودشو انجام میده خوب در میاره آره آقا اگه تمایل ندارید من مشکل ندارم تشریف ببرید انشالله جلسه بعد ولی من لینک این دو تا فیلم‌ها رو براتون امشب می‌ذارم تو یوتیوب یا همین الان می‌ذارم تو cw خدمتتون عارضم که چیز کنید دلتون خواست ببینید خیلی حس خوشایندی داره من رو اون لپ تاپمه باید بیارم دو سه دقیقه است اگه کسی می‌شینه یک نفر هم میشینه من برای اون یک نفره پخش می‌کنم بقیه هم هر جور خودشون میخوان کسی خودتون میبینید خب باشه حله پس من همین الان لینکشو میزارم تو براتون به اصطلاح تو یوتیوب برید ببینید خیلی میگم خیلی حس خوشایندی داره واقعا جذابه و سوالی بهتون میگه که داره تو این ماژلا چه اتفاقی میفته یه مثال میزنه که چجوری نه آره یه جورایی تخیل خودشو میگه یه جاهایی داده های واقعی بهتون میده که آقا اینا دبلی هاش چند در چندن مثلاً چتیپتی سه چند تا

در واقع وزن داره و اینا ولی یه جاییش که مثلاً میگه که من می‌خوام مثلاً چیز بسازم یه شکلک مثلاً یه حیوون مثلاً آبی رنگ فلان بسازم دیگه واقعاً تخیل خودشو میگه ولی خب حس میده بهتون که اینا که هی با صدا جمع میشن شما رو تو فضای بدین چه جوری جابجا میکنه که شما این شانس رو دارید یه همچین چیزی آقا خیلی ممنون که همراه بودید ما جلسه آینده پیاده‌سازی ترانسفورها رو توی کراس بهتون میگیم یکی دو تا حاشیه اینه که اگر رسید به ۴ ویژن ترانسفورم رو میگم و یه سری از این ماژول های اتنشن که رو حوزه عکس میشد زد یعنی قبل از اینکه ترنسفورمر بیاد و کنار کنار ویژ ترنسفور میزارم که ببینید از ترنسففر عادی خودمون چجوری تو حوزه پردازش تصویر استفاده میشه و ممکنه کلمه وی آی تی رو شنیده باشید همونهژن ترنسفورمره عرض به حضورتون که پیاده سازی کد بهتون می‌گیم به آقای مجیبی هم سپردم که

فیلم چیزو ضبط کنه آموزش پایتور چه اینا رو پریروز بهم گفت سی ان انش آماده است تقریبا ولی ال اس دی ام و چیزش ترانسفورمرش احتمالاً هنوز آماده نیست اگرچه ایشون خودش زده اینا رو یعنی یه مقاله‌ای داره آماده میکنه الان در آستانه سابمیته با ترانسفورمر و بای دیرکشنال ال اس تی ام یه کاری رو انجام داده و هر دو رو هم از پای ترش با پای ترش انجام داده و انشالله اگه برسه ویدیو برای اون ضبط کنه خوبه تمرین سری دومتون انشالله تا جمعه فرصت داره پیرو چیست و سه روز هم طبیعتاً تا سه شنبه هم اجازه تاخیر هم داریم سه چهار روز هم تاخیر اجازه میده تا شبش دیگه تا آخر شبش عرض به حضورتون که ما تمرین سری آرنت ترانسفورمونم حداکثر سه شنبه انشالله تقدیم حضورتون میکنیم باشه کنارتون و دو تا سه هفته حداقل بهتون وقت میدیم که روش کار کنید این از مواردی که هست خیلی ممنون که همراه بودید اگه موردی هست بفرمایید خدمتتون هستم اینو در مورد پوزیشنال

اجازه بدید من یه نگاه میندازم اگرم رسیدم یه دونه ویدیو از اول ضبط می‌کنم که همه رو داشته باشه حالا مصطفی زحمت یعنی اشاره کرد که از اول ترانسفورمر رو بگم در بدترین حالت هم می‌تونید می‌تونیم چیز کنیم فیلم‌های بچه دانشکده کامپیوتر رو بگیریم مثلاً خانم دکتر سلیمانی آقای دکتر بیگی رو خب یا حتی تو درس ال ال ام پارسالشون ترم قبلشون یه بار ترنسفورم از اول گفتن چاره ای نداشتند باید معرفی میکردن میتونیم یکی از اون فیلم ها رو بذاریم یا اینکه خودم براتون ضبط کنم اگه به صدای ما عادت دارید راحت تر خوابتون میبره همه صدای خودمون انشالله براتون ضبط خب من عرض خاصی ندارم میتونید تشریف ببرید انشالله تا سه شنبه

خب به نام خدا دوستان عزیز و ارجمند عرض سلام وقت همگی بخیر شادی امروز در خدمتتون هستیم با پیشبری توضیحاتمون در مورد شبکه‌های ترانسفورمر و به اتمام رسوندن انشالله این مبحث یه چند تا کدم با همدیگه نگاه می‌کنیم که ببینید اگه خودتون بخواید ترانسفورمر استفاده کنید چه چالش‌هایی پیش روتونه یا چه کارهایی باید بکنید و خدمتتون عارضم که اگه فرصت هم بکنیم به اون ویدیو های تری بلو وان که جلسه گذشته خدمتتون معرفی کردم یه سری میزنیم حالا بستگی داره چقدر وقت کنیم من اجازه بدید ترنسفم رو یک بار دیگه از اول بگم براتون توضیح بدیم که اگر کسی جلسه قبل نبود یا متوجهش نشد از اول یه بار دیگه بشنوه و دست بخش پوزیشنال ان کدینگش هم یه بار دیگه براتون بیان بکنیم خب ماجرا اینه که ترنسفور سال ۲۰۱۷ اومد توسط

یه گروهی توی گوگل نویسنده اولش یه فردی بود به نام باستانی و یه مقاله‌ای داد به نام اتنشنید توجه همه اون چیزیه که شما بهش احتیاج دارید و اساس کارش استفاده از کلاً ماژول‌هایی بود که بهش میگفت ماژول‌های اتنشن یا توجه که این توجهه هم سلف اتنشن توش بود یعنی توجه به خود و هم توجه به دیگری پیپری که اینا دادن یه پیپری بود تو حوزه ترنسیشن که باید یه زبان یه زبان دیگه ترجمه میکرد مثلا انگلیسی به چینی خب و داستان این بود که هم انکر داشت هم دیکودر داشت و توی در واقع اتنشن که عرض میکنم اینه که وقتی یه جمله انگلیسی میگفت و میخواست معادل چینیش بسازه هم ماجرا این بود که باید انگلیسی تو خودش به هم توجه می‌کردن و یه سری اتفاقات می‌افتاد هم چینیه تو خودش باید به هم توجه می‌کرد هم انگلیسی باید به چینیه توجه میکرد یعنی کلا پر این ماژول‌هایی بود که حالا ما با نام اتن

کارهایی که ما می‌کنیم لزوماً هر دو انکودر و دیکودر رو نمی‌خواد کارهای ما میتونه انکودر آنلی باشه میتونه دی کد آنلی باشه میتونه انکودر دیکودردار باشه انکودر آنلیا یا دیکودر آنلیا مثلاً مثال‌های واقعی این کد آنلی مثلاً فکر می‌کنم می‌شه برت مدل های برت که اینجوری بوده که یه سری جملات می‌دادن چند تا کلمه بینشو برمی‌داشتن می‌گفتن تو حدس بزن چیه خب این چرا اول اولا دیکودر نمیخواسته خب این تهش که میرسیده فقط بهتون می‌گفته که کدوم کلمه حذف شده قرار نبوده هی بسازه تا ابد بره یا معادل کنه یا به سوالی پاسخ بده بره از سر به از ته به سر از همه طرف به همه طرف به اون جمله نگاه کنه خب به اینا میگفتن انکود یه شبکه‌هایی بهشون میگن دیکود آنلی مثل مثلاً چت جی پیt اینجوریه که شما یک پپ بهش میدی این تو دیک

میندازه و شروع می‌کنه هی براتون جنریت می‌کنه فقط اینه که چون اولش آخرشو نمی‌دونه کم کم شروع می‌کنه یعنی سه تا اول پرانت شما ۱۰ تا کلمه داره از رو پرانت شما میره اولین کلمه خودش میسازه میشه ۱۱ تا بعد از اون ۱۱ تا دوازدهمی رو می‌سازد رو ۱۲ تا سیزدهمیو می‌سازه و الی آخر میره جلو ها اینا دیکودرلی ایناجورین که بعدیو نمی‌دونن همیشه حق دارن از اول تا اون لحظه رو نگاه کنن تصمیم بگیرن جاهایی مثل عرض به حضور شما ترنسیشن یا اینکه کوسشنینگ و اینا که یه چیزی بپرسید یه چیزی جواب بهتون بده خب دوتاشو دارن خصوص وقتی که زبان داره عوض میشه ها یا مثلا فرض کنید یه ویدئو شما ورودی میدید بعد می‌خواید توضیحش یه جمله براتون در مورد اون وید مثلاً خلاصه این فیلم رو براتون بنویسه خب این ویدیو تو میره که خودش یه تایم سریه یا یه سیکوئنسه و توی دیکود هم باز دوباره همچین چیزی حالا ممکنه از یه جنس دیگه زبان دیگه الی آخر تولید شه حالا نگاه کنیم این چی داره می‌خوایم توضیح بدیم

شروع بریم جلو شروع این با اینپوته اینپوت چه ویژگی داره خب این پوت اینجوریه که یک برداره خب که عرض به حضور شما اینو می‌ترسم دیگه بره دیگه نمیفهمم شما بهم پس اطلاع بده من اینو هاید میکنم ولی اگر قطع شدم شما بهم بگو خب اینپوت اینجوریه که یه برداره یه برداریه که یک سایز مشخصی تو درایه هاش داره ولی سیکوئنس یا تایم سری و من چند تا از اینا رو دارم خب مثلاً اگه تو ترجمه زبانی یا توی مدل های ان ال پی و لنگویج پراسسینگ و اینا باشم فرض کنید که ایکس یک من نماد کلمه اولمه ایکس دو نماد کلمه دوم ایکس سوم تا هر جایی که میرم که ایکس تی اسمشو بزارید ویژگی همه اینا باید این باشه که ایکس

ایکس دی یک بردارهای یک بعدی هستند عموماً خب حالا یا اگه یک بعدی نباشند ما باید یک بعدی شون بکنیم که چی که سایزشون برابره یعنی اگه ایکس یک مثلاً ۱۰ تا درایه داره عرفاً ایکس دو هم همینه تا ایکس تی اینشون مشترکه ولی دنبال به دنبال میتونه متفاوت باشه مثلاً اگه اسم ایکس یک تا ایکس اول بزارم مثلا داده یکم داده دو میتونه از ایکس یک تا ایکس دو تی تا بره همچین چیزی یعنی بیشتر کمتر طول بکشه حالا اگه تو مدل های زبانی باشید مثلا فرض کنید که میخوید دیگه بسازید لامای دیگه شما بسازید خب ایکس یک نماد چی گفتیم میتونه باشه دیکشنری شما درسته مثلا من اینا رو رفتم چک کردم توی برت مثلا عرض به حضور شما دیکشنری ما حدود ۳۰ هزار تا توکن داره شما فرض کنید کلمه gpt ۵۰ هزار حدودا یعنی gpt کل دایره المعارفی که داره ۵۰ هزار توکن توش خب حالا این توکن یعنی چی جی پی سر

توکنو شما فعلاً فرض کنید تک کلمه است مثلاً ای بی علی رضا مثلاً فعل فلان فعل این و و ولی تو واقعیت این نیست یعنی توکن‌ها می‌تونن مثلاً چه میدونم آی انجی مثلاً فعل می‌چسبونن یه توکن مجزا باشه پرانتز بسته فاصله مثلاً یه توکن باشه الی آخر جی پی تی ۵۰ هزار تا از اینا داره خب gpt ۳ و طبیعتاً وقتی هم تک کلمه رو بهش میدید وان هات کد میکنه چیکار میکنه مثلا به شما میگه که چه میدونم کلمه علی هست یک بقیش صفر صفر کلمه رضا هست صفر یک بقیه اش صفر صفر الی آخر خب این برای اینپوت خوب نیست ها خودش غنی نیست یه چیز تو دیواریه و من قبل از اینکه بدمش به ورودی شبکه از یک در واقع طبقه باید رد کنم به نام امبدینگ و اینو به یک فضایی ببرمش که چیه که عصاره بیشتری داره

۵۰ هزار تا لزوما نیست و عرض به خدمت شما مفهوم قشنگ‌تر و قابل فهم‌تری داره و می‌خواد وارد شبکه شه حالا اینجا شما سه نوع دیدگاه دارید اگه دارید با مدل‌های زبانی کار می‌کنید همینه مثلاً یه دیکشنری ۵۰ هزار کلمه ۱۰۰ هزار کلمه داره که وان هاته حتماً امبدینگ میخوید ممکنه دستی خودتون فیچر داده باشید مثلاً یه سامانه مکانیکی دارید مثلا میگید که آقا ورودی های تاثیرگذار من نیروی لحظه اول نیروی دوم موقعیت فلان و ایناست مثلاً ۶ تا ۷ تا ۱۰ تا میشه دیگه شما ام بدین میخوید یا نمیخواید نمیخواید این یه جورایی غنی شده هست یا فرض کنید یه ویدئو دارید می‌خواید مثلاً بگید طرف داره توش چیکار می‌کنه می‌دوه خوابیده نشسته خب اونجا ویدوی شما ایکس هاتون چطوریرین یه ماتریس یک بعدی یا دو بعدی سه بعدیه دیگه نه یا دو بعدی یا سه بعدی که مثلا یه عکس نمی‌دونم انقدر پیکسل در اینقدر پیکسل یا با عمق هم

همه این کارا رو وقتی که اگر با حالت در واقع چیز مواجه بشید ویدئو مواجه بشید یا با حالت در واقع مدل‌های زبانی مواجه بشید شما به اینپوت ام بدینینگ احتیاج دارید خب که این بره ایکس یک وارد بشه ایکس دو وارد بشه ایکس وارد بشه تا آخر و یه چیزی بیاد بیرون که میتونه سایزش کوچیکتر باشه اما عصاره بهتری داره ولی یه ویژگی داره به ازای هر یک یه دونه اینجا متناظر می‌خوام خب حالا تو مدلای زبانی مثل چت جی پی تی یا برت و اینا باشید چه اتفاقی میفته سایزی که اینجا میاد بیرون از ۵۰0 به حدود ۱۲ هزار میشکنه خب و چه اتفاقی توش میفته به شکل خیلی در واقع راستی یه دبلیو ای در این ضرب میشه که اینو به این سایز ببره شما بگید تو چتریپتی سه اگه ۵۰ هزار بشه بخواد بشه حدوداً ۱۲ هزار دب این باید چند در چند باشه

جان ۱۲۰۰۰ در چی ۵۰ هزار باید باشه درسته که توی جی پی تی اینم ترین میشه یا باید برید از ماژول‌های آماده‌ای مثل ورتوک و اینا استفاده کنیم که از قدیم دارن رو دیتا ستای کوچکتر ترین شدن و این ام چیکار می‌کنن یه فضای ۵۰ هزار بعدی دارید یه ابر صفحه ۱۲ هزار بعدی رسم می‌کنن همشو رو اون ۱۲ هزار پروژه میکنن ولی اتفاق خوبی که توش میفته عرض کردم روزهای هفته یه جا می افتند شرکت ها کامپیوتری یه جا میفتن غذاها یه جا میفتن و الی پایتخت های کشورها یه جور خاصی در میان مثلا قبلا بهتون گفتم مثلاً اینجوری میشه که فاصله زن و مرد مثلاً تو اون ۱۲ هزار در واقع تو اون صفحه ابر صفحه یه بردار مثلاً برای کلمه زن داریم یه بردار برای کلمه مرد ۱۲ هزار تا درایه داره اینو منهای اون بکنیم میشه برداری که اینو به اون وصل کرده اگه بریم مثلاً به دختر اضافه کنین برداره رو

میره پسر میده یا مثلاً تو این مثال اگر برداری که مثلا نمیدونم روسیه رو به ایتالیا وصل می‌کنه رو برید با کلمه مثلاً یکی از سران روسی جمع بزنید معادلش توی ایتالیا پیدا میشه یعنی امبدینگمون اینجوری اینقدر بعضا شورش میره بالا خب ولی این امبگه کامل کامل چی میشه ترین میشه یعنی جی پی تی یک بار وقت گذاشته و این ماتریس ۱۲ هزار ترین کرده این ماتریس یک مفهوم داره مگه اینا نیستن وان هاتن وان هات مگه نیستن قبلش در واقع ۱۲ هزار در ۵۰ هزار نماد چیه نمادی که اون ستون شماره کام امبدینگ کلمه کام تو دیکشنری خب چون در وان هات میخواد دات دیگه مثلاً من فرض کنید که می‌خوام کلمه پنجم دیکشنری رو بکشم بیرون در واقع دارم ستون چندم دبلیو ای رو میکشم بیرون

ستون پنجمشو که ۱۲ هزار تا درایه داره می‌کشم بیرون یه جورایی اون نمادی از چیه تصویر کلمه پنجم دیکشنری روی چیه ۱۲ فرض کنید که من به جای ایکس یک تا ایکس و فلان به جای کلمه فیلم داشتم می‌خواستم فیلم به شما بدم ۲۰ تا فریم داشت شما به من بگید که چه کاری داره توش اتفاق میفته شما چیکار میکردید که به این سبزه برسید پیشنهادتون چی بود برای خودتون بفرمایید دیدگاهش درسته مثلا ایکس یک تا ایکس دو میشن عکس ها خب یا در واقع آرایه های سه بعدی اگر لازم شد اینو از یه سری سی ان ان رد میکنه دیگه دبلیو امبش به این راحتی نیست که یه ماتریس درش ضرب بشه و برسم به یه جایی که فلتن کرده بودم مثلا هزار تایی بوده ۴۰۰۰ تایی بوده اون بشه نماد ایکس یک من یعنی ایکس یکی که از ام بدینینگ رد شده و این دفعه دیگه واقعا این اسمش اینپوت هست یعنی الان رو این فلشه قرار دارم خب پس شما بالاخره یا سه حالت دارید یا دارید تو حوزه کلمه کار می‌کنید که

داشته باشید یا خودتون ترین کنید یا از دیگران بگیرید یا تو حوزه‌ای مثل عکس و ویدیو اینا کار می‌کنید که از یه شبکه‌های سی‌ان‌ای چیزی رد می‌کنه تا به یه عصاره‌ای برسید کوچکتر یا اینکه از همون اول خودتون میگید آقا من شش تا چیز یا ده تا چیز به نظرم فیچرا معتبره یعنی درجا از کجا شروع کردید از این سبزه شروع کردید دیگه خب گام بعدی اینه که اوکی شما یه سری سبز دارید و می‌خواید برید وارد ترنسفورمش کنید چون ته ماجرا رو می‌دونید دیگه الان در جا پوزیشن سوال پیش میخواستی عکس چند در چند بیارید عکس صد در صد در سه بود میشد ۳۰ هزار تا درای باید میوردی تعداد پارامتر خیلی زیاد میشد مثلا ماتریست ممکن بود خیلی گنده بشه بعد اون ۳۰ هزار اون ۳۰ هزار تا که آوردی لزوماً عصاره جذابی نیستند یعنی کلی شبکه کار داره حالا حالا تا بخواد بفهمه خب ولی ترجیح میدی که عصاره کنی و یه چیز غنی داشته باشی اون ۴۶ الکس نت در ضمن حالا ام

شما رو باید ببینی فریزش کردید یا می‌خواید ترینبل باشه یه وقتی رزنت یا الکست و اینا استفاده میکنید میگه همون وزن‌هایی که هست رو بده اصلاً نمی‌خوام دستش بزنی یه وقتی نه جز ترینینگ پارامترهای شبکه‌تونه و حتی اونم اجازه میدید بره چیز کنه خب رسیدیم به این سبزها گام بعدی که داریم پوزیشنال امبدگی که بهش میگن پی ای پی ای حرفش اینه که یک بردار دقیقا هم سایز اینا اینجا ۱۲ هزار تایی اینجا ۱۲ هزار تایی میره جدا جدا با هر کدوم جمع میزنه خب به عبارتی تو فضای ۱۲ هزار بعدی اگه شما یه برداری اینوری بودید با یه بردار دیگه جمعتون میزنه تا جاتون عوض شه خب و میگه تاثیر شماره کلمه تو جمله رو می‌خوام وارد بکنم میگه این مهمه این چیز مهمیه مهمه که کلمه مثلاً شیر خب کجای جمله ظاهر میشه و بعدا میخوام حالا توی گام های بعدی قبل و بعدش یا ۱۰ تا قبل و ده تا بعدش ببینم درسته

امبدینگ سبزهایی که براتون کشیدم بچه‌ها مهم نیست شیر من معنی شیر حیوان جنگل میده یا شیر خوراکی میده امبدینگش ثابته خب تا اینجا هیچ شعوری در این زمینه فقط می‌دونه شیر از مثلاً گلابی دو تا امبدینگ متفاوتی دارند ولی اینکه شیر جنگل یا شیر این هنوز نمی‌دونه امبدینگ بعدی که باهاش اضافه می‌کنم پوزیشنال امبدینگ که بهش میگن پی ای پی ای که مقاله اتنشن ایز آل یونیت پیشنهاد داد این بود در حالی که بعد از اون انواع پی ای های دیگه پیشنهاد شد و این چیزی نیست که لزوماً بخواید شما هم استفاده کنید ولی یه گزینه است براتون چیزی که اون پیشنهاد داد رفقا اینجوری بود من رفتم اینو چک کردم اولاً پی ای که پیشنهاد میده باید سایزش دقیقاً این ۱۲ هزاره باشه خب تا به باید باید مثلاً اگه فرض کنید ایکس تیم پنج تا دارم باید پنج تا از این ۱۲ هزار تا رو بسازم پی ای یک دو سه چهار پنج

درایه‌های pe به دو تا چیز ربط داره یک به اینکه شما رو چندمین کلمه می‌خواهید اینو اضافه کنید که منطقیه و یکی اینکه چی درایه فردی یا زوج ماجراید خب پیشنهادی که داد این بود گفت این کارو در میاره توی مسئله من گفت با سینوس پوزیشن تقسیم بر ۱۰ هزار به توان دو آی به روی دی معادل اینو بیا برام برای درایه‌های زوج و برای درایه‌های فرد چی در واقع چیز کن کسینوس فلان رو برام بساز دی مدل چیه دی مدل تا اونجا که من متوجه شدم سایز یه دونه از اون ایکس هاست مثلا تو مثل ما ۱۲ هزار آی چیه شمارنده‌ای که از یک میره تا نصف دی معادل یعنی تا ۶۰۰۰ میره که وقتی دو آی بشه باید به چند برسه به ۱۲ هزار برسه که توان بشه یک خب لحظه اول پوزیشن کلمه اول اونا کامپیوتری عادت دارند از صفر شروع میکن خب و در ضمن آی هم باز

اول برای کلمه اول چی میشه اون ۱۲ هزار تا که می‌خواد باهاش جمع بشه خب میشه سینوس صفر که کلمه اوله خب تقسیم بر ۱۰ هزار به توان حالا آیا یا از صفر بگیرید یا از یک بگیرید فرض کنید از یک میگیریم میشه دو ده هزارم خب این درایه اول میشه چند میشه صفر بعدی میشه کسینوس یک تقسیم بر باز همین این چند بود 100 به توان دو ۱۰۰۰۰ میشه چند میشه کسینوس ببخشید با صفر به توان فلان چون کلمه فعلا صفرممه میشه چند میشه یک میشه صفر یک بعدیش چند میشه میشه سینوس پز به ۱۰۰۰ به توان یه چیزی میشه چند صفر یه در میون برای کلمه اول چی در میاد صفر یک صفر یکی درمی ام بدین که پس

کلمه دوم چی با سینوس یک تقسیم بره ده هزار به توان کسینوس یک تقسیم بر این جمع میشه تا آخریش میشه چی به توان یک درسته و این ام بدیم دوم تا ام بدین جلو پس شما اومدید بردارهای سبزتونو با یه سری بردارهای دیگه‌ای جمع زدید یعنی اتفا میگن نمیشه دیگه همین چیز ۱۰۰۰۰ توضیح نداده برای چی ده هزار رو گذاشته اینقدر بزرگ گذاشته اون زمان سال ۲۰۱۷ که چیزایی که تولید میکنه چیزهای متفاوت باشد و تو ذهنشه که این انقدر شبکه هم بعداً باهوش میشه که میفهمه این نماد چی اند خب اوکی من با اینم جمع زدم حالا دیگه آماده‌ام به چی وارد شم به ماژول اینکودر در واقع به

پایین تر به همون تعدادی که اول بودند و با همون سایزی که از ام بدین خارج شدن یعنی ۱۲ هزار تاست شما باید ۱۲۰۰۰ بمونه تو چتریپتی ۱۲ هزاره تو برت ۷۶۸ حالا نزدیک ۸۰۰ خب این عدده و شما هی می‌تونید جاهای دیگه مختلف فرق بذارید خب این میخواد وارد ماژول انکودر ترنسفورمر بشه چیزی که واضحه اینه که باید به ازای هر کدوم از اینا یه دونه خارج بشه و حتماً هم باید سایز چند باشه باید همون ۱۲ یعنی باید کاری بکنید که ماژول ترنسفورمر به ازای تک تک اینا یه دونه عین خودش تولید کنه ولی لزوم نداره خودش باشه خب حالا این یه دونه که تولید میکنه چجوریه یه دونه که تولید میکنه این بلاها سرش میاد اینجا رو با هم ببینیم تو این عکس اصلیمون

اولین کاری که می‌کنه اینه که چی میره داخل یه ماژولی به نام مالتی هد اتنشن و در ضمن خروجیش با خودش جمع میشه پس چی این بنفشه که اومده وارد یه ماژولی میشه به نام مالتی هد اتنشن در ضمن خروجیش با خروجی مالتی هد اتنشن جمع میشه پس باز خروجی باید چند باشه باید دوباره به ازای هر کدومش یه دونه توکن تولید کنه و باز دوباره باید ۱۲ هزار بعدی باشه ولی خودش با این جمع میزنم یه جورایی مالتی اتنشن میشه دلتایی که میگه چقدر اون بردار امبدینگت خوب نبوده و باید تو جابجا بشی تو اون صفحه ۱۲ هزار بعدیه درسته چون با خودش میخواد جمعش کنه و دوباره بعد از اینکه از مالتی هده اومد بیرون میگه چیکار کن میگه برو از یه فیت فوروارد رد شو دوباره با چی با خودت جمع شو پس یعنی آبیه که میاد بیرون این یه اینجا دوباره میره یه فیت فوروارد ام ال پی ساده است

که با خودش جمع میشه و این ۱۲۰۰۰ رو برامون می‌سازه پس باز دوباره خروجی ام ال پی هم باید ۱۲ هزار تایی باشه و این چیزی که هست باید به ازای هر یکی که شما توکن دادید اونم هی باهاتون تولید کنه و البته چون پردازشش موازیه میندازه رو هسته‌های مختلف میگه اولی میگه تو برو اولی حساب کن دومی و ولی آخر حالا مالتی هد اتنشن توش چیکار می‌کرد اینو می‌خوام حالا بازش کنیم به محض که بنفشه به سبزه میرسه چه اتفاقی میفته سایز خودش ۱۲ هزارتایی خب سه تا ماتریس تعریف میشه به نام دبلیو کی دبلیو کوری دبلیو ولیو خب دبلیو وی که اینا رو به یه سایزی لزوما ۱۲ هزار نیست میتونن کوچکتر بشکونن کاری میکن که وقتی در این بنفش ضرب میشن یه سایز کوچتری داشته باشید مثلا تو چت جی پی تی سه این عدد ۱۲۸ باید دبلیوش چند باشه چند در چند باشه ۱۲۸ در ۱۲

همین اتفاقم برای wk و wq رخ میده یعنی هر سه تا همسایزن ولی یکی نیستند w k w q و wv در این بنفش ضرب میشن تا به شما سه تا ماتریس چی بدن سه تا بردار در واقع ۱۲۸ تایی بدن سه تا برداری که بهشون میگم کی ولیو و کوئری خب میگه چیکارشون کن حالا میگه کی ها رو کووری ها را بیا در تک تک کی های بعدی دات کن خب مثلا الان به از کلمه اول من یه دبلیو کیو پیدا کردم ۱۲۸ تایی رفتم به ازای تک تک کلماتم این ۱۲۸ تا رو پیدا کردم کیو ولیو کو ش قبوله تایید بکنید تا من بدونم میخوام یک بار بگم تموم شه بره ها میگه بیا کیو یک رو یک بار در کی یک یه بار در کی دو یه بار در کی سه تا کی ان دات کن گفتیم برای استیبل شدن محاسبات تقسیم بر رادیکال دی کی

۱۲۸ باشیم ابعاد کی ۱۲ رادیکال بعد اینم تقسیم بکن چون اوضاع دیده بهتر میشه یه سری تک عدد میشن قبول اسکالرن اینا رو از سافت مکس بگذرون یه عددهایی میشن که جمعشون یکه و بین صفر تا یک اینو چیکارش کن ضربدر بردار ولیو ۱۲۸ تایی کن یعنی سری عدد اسکالرن در ولیو ضرب میشن عدد اول در ولیو یک عدد دوم در ولی ۲ و الی آخر یک چیز میده بردار چند میده ۱۲۸ تایی بهمون میده این خروجی یه دونه هد منه خب این خروجی یه دونه هد منه که ۱۲۸ تایی بهم داد و رفت خودش به خودش اتنشن داشت یعنی خودش گفت که من چقدر باید کلمه خودم توجه کنم چقدر باید به یکی بدیم دو تا بدیم تا آخری توجه کنم مثلا تو ویدیو ممکنه این باشه که آب خوردنش شاید متوجه بشه که آقا خودم خیلی مهمم دو تای بعدی هم مهمه سومی به بعد دیگه خیلی مهم نیست

اگه یه دونه هد داشتیم کار به نظر تمام بود ما فقط باید یه جوری پروجکتش می‌کردیم که چند تایی بشه ۱۲۸ حق نداره باشه باید ۱۲ هزار تایی میشد ها در یه دبلیو ضرب میکردم که اینو بزرگش کنه و با اون ۱۲ هزار اول بنفشه جمع میکردم تا بره وارد ام ال پی بشه ولی این تازه یه دونه هد منه خب که گفتیم مفهوم فیزیکی این مثلا این بود که بره مثلاً تو یه جمله پیدا کنه کیا مثلاً صفتن کیا قیدن و الی آخر بعد میگه همونطور که شما تو سی ان ان ها مثلا کی تا فیلتر دید میذاشتید مثلا ۲۰ تا فیلتر سه در سه میذاشتید اینجا بیشتر از یه هد بزار مالتی هد بشه بیاد دوباره دبلیو وی2 wk2 دوباره با همین سایز بزار که اونم بزار ترین بشه ها اولش رندوم باید بزار ترینچ دوباره همین کار بکن تا چی به ازای تک تک هدا کلی از این ۱۲۸ ۱۲۸ تایی ها تولید کنی خب حالا میگه چیکارش کن حالا میخوای این بهش میگن مالتی هد

۱۲۸ تایی تولید کردم تازه اینا آره اینا تازه برای کلمه اول برای دومی سومی تا آخری هم به ازای تعداد هدا اینو انجام دادم ۹۶ تا هد داره ۹۶ تا از این ۱۲۸ تاییا تولید میشه بعد برای هر کلمه برای هر کلمه بعد میگه چیکارش کن میگه اینا رو کانکت کن تنگه هم ۱۲۸ ۱۲۸ ۱۲۸ بزار تنگه هم که مثلا ۹۶ تا از این ۱۲۸ تا باشه باید در یه دبلیو مناسبی ضربش کن که چی بشه سایزش بشه چند ۱۲ هزار اینو شما بگید حالا باز سایزش چنده ۹۶ تا ۱۲۸ حالا اینجا اینجوری شد خب دیگه پس هیچی مثلاً فقط در یه دبلیو ۱۲ هزار در ۱۲ هزار زرد کنه چیزه اینو به ۱۲ هزار میبره ولی حالا به هر حال اگه نمیبرد هم مشکلی نداشت خب پس ۱۲۸ ۱۲۸ زده فرض کنید مثلاً تعداد شده بود بیشتر یا کمتر شده

۹۶ تا از اینا بذارم ۹۶ تا هد گذاشته تو یه دونه انکرش برای هر ورودی یعنی یک ورودی تا میاد تو اینکودر شماره ۱ ۹۶ بار از ۱۲ ورودی دوم بعد حالا تازه جی پی تی ۹۶ تا لیر اینکودر داره خب حالا بچه ها یه دونه یه دونه ۱۲ هزار در یک برای کلمه اول تولید شد هسته بعدی هم داره همین کار برای کلمه بعدی و تا آخر انجام میدن الان به نقطه رسیدیم که چی به ازای تک تک کلمات توکن ورودییم یه ۱۲ هزار در یکی تولید شده که به خودش اتند کرده و از مالتی هم گذشته و کانکت هم شده و در دبلی لازم هم ضرب شده شده

حالا می‌خواد وارد بعدی بشه چیکار می‌کنه وارد یه ام ال پی میشه ام ال پی هاشو معمولاً یه لایه می‌ذارن یه لایه هیدن یه لایه پایانی لایه پایانیش باید چند تایی باشه ۱۲۰۰۰ باید باشه لایه هیدنش آپ بیشتر از ۱۲ خب یکم تفسیرشو آسون نیست مثلاً فرض کنید توی جی پی تی حدود ۴۸۰۰۰ تعداد هیدنی که میندازن مثلا توی عرض به حضور شما برت عدد فکر کنم ۳۰ هزار بود ۳۷۲ بود یعنی برت برت مثلاً ۷۶۸ تاشو میبره به ۳ هزار و خورده ای دوباره برش میگردونه به ۷۶۸ چت جی پی تی سه ۱۲ هزار رو میبره به ۴۸۰۰۰ فکر کنم بعد میبره دوباره به ۱۲۰۰۰ حالا فرض کنیم این عددا رو درست دارم میگم الان مطمئن نیستم خب یه امl پی میزنه ۱۲زاری که خروجی شد با یه خودش جمع میزنه درسته اینجا دیگه چی تولید شده یعنی خروجی این لایه یه ۱۲ هزار تایی

که دقیقاً معادل توکن پایینی جای اونه خب و برای بعدی‌ها و بعدی‌هاشم چی تا آخر این اتفاق افتاده این تازه شد یک لایه انکودر با مثلاً ۹۶ هد یا سر اینجا مثلاً ۹۶ ۹۶ تا هد داره یعنی چی یعنی قرمزه این الان آبیه که اومد این تازه انکودر شماره یک بود میره وارد انکر دو میشه همین اتفاق براش دوباره میفته دوباره میره بالا تا ۹۶ بار میره بالا یه حسابش کنید دیگه اینجوریه فضا مثلاً فرض کنید یک فضای سه بعدی دارید یا دو بعدی حتی مثلاً اینجا دوشنبه است اینجا سه شنبه است اینجا چهارشنبه است ببین این دیگه تقریباً به قدر باهوش میشه که تک تک اینا رو هم حتی بهت میگه چیه مثلا ممکنه اینجا باشه مثلاً فردی که در دوشنبه به دنیا آمده است میدونی چی میگم یعنی

دوشنبه مثلاً ممکنه مثلاً یه چیز دیگه‌ای بشه یه چیزی که تو دوشنبه اتفاق افتاده خب اگه مثلاً بین دوشنبه و ایران باشه مثلا دوشنبه هفته دوم تقویم شمسی در ایران مثلاً یه همچین ممکنه مفهومی داشته باشه که این ام بدینگه هی میره چی غنی و غنی تر میشه بله بفرمایید تعدادشون فرق میکنه نگاه دبلیو هد اول با دبلی هدای بعدی فرق میکنه تازه میریم هدای بالاتر هم باز دبلی هاشون متفاوت تعدادش یکی میگیرن عرف که یکی میگیرن اگه میخوای خودتو اذیت کنی میتونی دلت بخواد ان کد رو اول دوم اصلا یکی نگی فقط باید قید اینه که خروجی هاش باید همون ۱۲ هزاره باشه در حالی که شما چیز نمی‌کنید دیگه اینو رعایت میکن اینا معمولاً عرفاً هد رو میدن پنج نامبر آف رو میدن پنج تمام میشه

آره دیگه بعد از ترند شدن یعنی شما استفاده می‌کنید ترند شده تموم شده دیگه دبلیوها فیکس شدن ۱۷۵ میلیارد تا بوده دیگه فیکس شدن دیگه ولی انقدر دیتا ستش غنی بوده که فعلا چیز میکنه اینا رو داره جمع میکنه خب چتری قدیم اینجوری بودن که تا یه جایی ترند شده بودند مثلا فرض کنید تا سال ۲۰۲۰ و شما اگه می‌پرسیدی قهرمان جام جهانی ۲۰۲۲ قطر کی شد نمی‌تونست بگه ولی الان مثلاً باهوش شدن یعنی قابل چیز هم دارن سرچ هم بکنن یعنی اتفاق دیشب حتی میتونه بهتون بگه بازی پریشب رئال بارسلونا چند چند شد میتونه پیدا کنه خب عرض به حضور شما که اینا رو رفتیم گفتیم حالا انکراش میره بالا بستگی داره شما اینجا چی بخواید فرض کنید که می‌خواید چیز کنید فقط کلاسسیفیکیشن کنید و گفتم یه فیلم بهش دادید بگید که چیزه بگید که توش چیکار میکنه کار شماره یک یا دو یا سه چیکار میکنید الان

مثلاً فیلمتون ۱۰ تا فریم داره یا ۲۰ تا فریم داره مثلاً هر کدومشم ۱۲ هزار تا ۱۲ هزار تا اومده بیرون چیکار می‌کنید الان خب نه الان ۱۰ تا از این ۱۲ هزار تا دارید یه کار آره بدین می‌کنن یا چیز میزنن گلوبال مکس پولینگ میزنن مثلا میگن درایه‌های اول همه رو نگاه کن یا کلا به جای ۱۲ هزار تا ماکسیمومشو بیار بیرون یا به جای ردیف اول اینا ماکسیمم بیار بیرون یه چیز یه لایه اش میکنن بعد یه فول کانکتد یه لایه میزنند که مثلا ۱۲ هزار بکنه مثلاً به ۵ تا ۱۰ تا کاری که شما دارید صفت مکس بزنه تهش بهتون بگه دیگه تمام دیگه چی احتیاج هم نداشتی تمام میشه کار خب که خیلی از کارهای ما اینجوریه ما این کد ما که مدل ترانسلیشن که شما لزوما کار نمیکنید درسته و اینو میدید میره یه جایی تصمیم می‌خواید بگیرید دیگه آقا چه اتفاقی افتاد و فلان من اینجا کار تمام میشه طبیعتاً اگه می‌خواستید تو دیکودر برید فقط فرقش این بود که همه این اتفاقایی که می‌افتاد هیچی

یه جایی تو دیکودر هست که علاوه بر اینکه به خودش توجه میکنه گام بالاترش چیه باید بره به قبلیه توجه کنه که اونجا گفتیم کی از اینه کدومشون کی کدومشون از اینا بین کوئری کی و ولیو کدومشون از مبدا کدوم از مقصده کوئری از مقصد کی و ولیو از مبدا فقط ممکنه بسیار هم متداول اتفاق بیفته که کوری با کی و ولیو هم سایز نباشه باید چیکار کنیم با یه دبلیو مناسب کنیم که هم سایز بشه با کوری و چی که اونم میشه پارامتر شبکه و دیگه حالا کو اینجا هم سایته دات میکنید فلان فلان میره جلو بقیه اتفاقات همینه و دیگه زبان تو زبان مقصد تولید می‌کنید و الی آخر این شد تمام اتفاقاتی که توی اینکودر شما لازم یعنی توی ترنسفور شما لازم بوده بدونید خب چه کارهای دیگه‌ای داره اینجا که اد میکیم جلوش نور هم نوشته نوشته نرمالایز هم بکنید نرمالایز کردنش من اینجوری برداشت

میانگینش صفر و در واقع نرمال شده باشه روی نرمال با استانداریشن یک برای همشون این کارو میکنه ولی این مال هفت سال قبل بوده جدیداً مثلاً قبل از اینکه وارد مالتی هد اتنشن بشن دیدن نرمالایز کنم خوبه نتیجه بهتری میگیرن بخاطر همین اگه شما الان رفتید جای سرچ زدید هاگ فیسسی یا اینور اونور رفتید شبکه پیدا کردید دیدید قبلش نورمال کرده یه سری از این اتفاقات زده نگران نباشید اینا کارهای عجیب غریبیه که کوچولو کوچولو انجام دادن و دیدن دقت مثلاً یه مقدار بهتره چون اینا وحی منزل که نیستن که حتماً باید اینجا نرمالایز کنیم ها یا ام ال پی الان اون یه لایه گرفتیم برای چی یه لایه باید بگیری یکی دلش می‌خواد دو لایه می‌گیره خب دلش میخواد مشکلی نداره یه همچین اتفاقاتیه ولی ماجرا اینه که این در واقع ورژن همون

ساده‌ترین خودش ۷ سال قبل بوده ارائه شده و اینم خیلی داره کار می‌کنه خب این توضیحات ترانسفورمر بوده اگه سوالی دارید در خدمتتون هستم وگرنه ۱۰ دقیقه استراحت بفرمایید برگردیم نمونه کدها رو بهتون بگم شما اگه دلتون خواست ویدئو رو پاز بزنید و بعدش مجدداً ادامه بدیم که حالا یه سری توضیحات تکمیلی خدمتتون ۱۰ تا اتفاق میفته شما ابزارهای متفاوتی دارید برای استفاده کردن ترنسفورمرها خب عرض به حضور شما یه سال قبل این موقع ها هنوز ماژول ترنسفورمر اینکودر پکیجی با هم توی کراس نبود خب و ما برای اینکه ترنسفورمر این کد رو براتون در واقع نشون بدیم یه همچین کدی رو دوستان اون آماده کردن دادن که این بارگذاری شده از سویتون به نام در واقع ترنسفور انکودر کد ووش هست که آقای قدمی ۱۶ دقیقه روش حرف میزنن و این کد هم هست این کدیه که خودش برای تستش

دسترسی ندارم کارهایی که باید بکنید اینه فقط یکی از اینا رو باید چیز کنم این خطشو یادم باشه همینو براتون بارگذاری کنم این خطش نیازی نیست چون ارور میده تنسرفلو که آپدیت شده این خط ارور میده آقا کاری که باید بکنید اینه که من فقط اجازه بدید یه ران آل بزنم ارور هم میده برام مهم نیست اصلا فقط میخوام در موردش براتون صحبت کنم بچه یک کلاس داره به نام پوزیشنال امبدینگ که شما نمیخواد بهش دست بزنید احتمالاً اگه دلتون خواست دست بزنید یعنی به هر دلیلی خواستید پوزیشنال امبدینگ دیگه استفاده کنید وگرنه در حالت عادی اگه تمرین ترنسفرمری بهتون دادن یا خودتون خواستید کارت ترنسفورمر بکنید به یه سری چیزا اصلاً نیازی نیست اینجا دست بزنید یه سری چیزا رو فقط تغییرات ساده میدید

کلاس که تعریف شده شما نیاز نیست بهش دست بزنید خب عرض به حضور شما که یه سری توابع تو خودش داره که باز نیاز نیست بهش دست بزنید نگاه می‌کنید لبخند میزنید رد میشید کدی که اینجا وجود داره کد ترانسفورمر انکودره خب که عرض به حضور شما یه سری پارامتر داره که این پارامترها شما بیرون تابع تو فراخوانیش فقط معرفی می‌کنید ولی به هر دلیلی اگه خواستید تو ترنسفور انکرتون دست ببرید باید اینجا بیاید وارد بشید مثلاً اینه که چه میدونم اکتیویشنش مثلا جایی که به تابع چه میدونم دس میرسه مثلا جلو بوده حالا شما اگه بخواید یه چیز دیگه بزنید خب باید بیاید طبیعتاً اینجا رو تغییر بدید خب عرض به حضور شما که در حالت عادی احتمالا نیازی ندارید اینم دست بزنید و برید برید رد بشید چهار جای جان تابع ترنسفورم رکودر بود که میخویم صداش بزنیم که داخل داخلش چی بگذره یعنی بیاد دات بشن یارو بشه عرض به حضور شما

بردار محاسبه شو الی آخر اینو شما باید چیز کنید اینو شما با یعنی شما کاریش ندارید اینجا شما کار دارید تو شماره در واقع باکس شماره چنده ۴ بود دیگه تو شماره ۴ شما یه سری تغییرات باید بدید عرض به حضور شما که یکی دنس دایمنشنتون چند باشه یعنی ام ال پی بود که می‌خواست مثلاً ۱۲ هزار بکنه یه عدد بزرگتر این عدد بزرگترتون چند باشه آقای قدمی مثلاً کاری که زده بود مثلا فرض کنید ایکس های خودش صدایی بودن اینجا ۲۵۶ تایی گذاشته بود خب که بزرگ بشه و دوباره کوچولو میشه این ۲۵۶ جایی که شما باید دست بزنید نامبر آف هدز باید چند باشه خب که توی هر ماژول اینکودرتون چند تا هد داشته باشید ایشون مثلاً دوتا گذاشته بوده احتمالا کامپیوتر نمیکشیده بیشترش اینا یا داده نبوده نامبر آف کلسش هم چون یه مسئله طبقه بندی بود ۱۰۱ بود که ۱۰۱ کلمه زبان اشاره شده بود توسط در واقع دوستان دیگه حالا افراد ناشنوا و اینا کلسی

الی آخر بعد ایمپورتش بهش دست نمی‌زنید میگه چیکار کن میگه این پوتسو که گرفتی اول پوزیشنال امبدینگ بزن روش خب روی اینپوت بریز توی اکس بعد گفته ترانسفورمر انکودر رو روی اکس ران کن دوباره بریز روی اکس حالا که ترانس بالا نوشته بود کیو ولیو کوئری و اینا باشن دات بشن درهم و اینا نامبر آفچرز ورودی میدید که تعداد درایه‌های ایکس مثلاً توی مسئله مثالی که زدم ۱۲ هزار بود برای حدود ۴۸ هزار فکر کنم نامبر آف که توی چی جی پی تی سه ۹۶ اینا رو عدد میدید نیم هم گذاشته براش این مثلاً ترنسپور لیر یک اسمشو بزارید خب حالا بعد یک چیکار میکنه میگه اد بکن با چی اینپوتس با اکس جمع بزن این چیکار میکنه همون یارو حاشیه ای است که میرفت جمع میزد هنوز وارد ام ال پی هم نشده بعد چیکار میکرد

خودش متوجه شد که بعد از خروجی انکودرش خب اگر یه دونه از ورودی به خروجی وصل کنه نتیجه بهتری میگیره دستی دستی دید که یه اسکیپ کانکشن از ورودی خاکستری به خروجی خاکستری دستی بزنه قدمی تو مسئله‌ش اینو بذاره بهتر نتیجه میگیره یعنی در واقع اون ایکس اول خیلی مهم بود اون دلتا دلتاهایی که داشتن محاسبه میشدند انگار کمتر مهم بودن فقط چکش کاری ماجرا بود تو مسئلش اینجوری بود و اینم دستی اضافه کرد فرض کنید شما می‌خواستید بیشتر از یک لایه انکر داشته باشید اینجا کاری که میکردید یه خط عین خودش کپی میکردید زیر این اکس بین اینجا اینجا یه دونه من کنترل ندارم خب کپی کپی میبینید داستانه الان من ببخشید این چیزو باز کنم

کیبورد مجازیمو باز کنم کامپیوتر مشکلش اینه کنترل v کار نکرد اجازه بدید کنترل سی اینجا کنترل وی خب کار کرد این فقط کاری که باید بکنید اینه که برای اینکه ارور نده اینجا اسم لیر یک و اسم لیر ها را متغیر بگذارید ۱ ۲ الی آخر کاری که میکنه چیه هی میره بعدی این کد دیگه باز دوباره بهش اضافه می‌کنه و الی آخر تا جایی که دلتون میخواد فقط یه چکشم بکنید که اسکیپ کانکشن ها جا نیفتاده باشن و اینا تا هر جا دلتون می‌خواد مثلاً ۹۶ تا از این بزنید ادای تی پی تی سه رو دارید در میاد ولی دیگه اجازه بهتون نمیده رام بگیرید خب عرض به حضور شما که اینم دستی اد کرده بعد اومده گلوبال مکس پولینگ زده برای اینکه مثلا فرض کنید ۱۰ فریم داشته باشید و هر کدوم ۱۰۰ تایی باشن شما ۱۰ درصد دارید ولی می‌خواسته یه دونه یک درصد داشته باشه

گلوبال مکس پولینگ زده بعد داده به چی اکتیویشن کلاس بندی کنه خب تعداد کلاس‌هاش ببر و بعد میگه مدلمو چه جوری تعریف کن مدلش کراس بیس ها میگه تیf.modle inputs و outputs حالا اسم اینپوت چی بود همون اول کار اینپوت بود که شما اینپوت خودتون رو دارید تو مثل خودتون و امبدینگ یک بعدی یک بعدی در میارید مثلا به تعداد بردارهای یک بعدی ضرب در ببخشید معمولا اینجوری اند معمولا سه تا درایه دارن هر بچ در واقع چیز درایه اولش نامبر وجه درای دومش تایم تی که چند تا فریم داره اون بچه یعنی اون شماره بچه شماره یکه و سومیش چیه نام فیچرز که مثلا ۱۲۸ تا درایه داره الی آخر هرچی داره اینو شما اینپوت میدید برای خودتون و اوت پوتتون هم این شد که اکتیویشن

مدل فیت خودمونه دیگه کار نداره شما تا اینجاشو لازم دارید استفاده کنید به ترتیب میره جلو دیگه شما وقتی مدل که میرسه آخر اعمال شده اگه دلت میخواد حافظه زیادی اشغال کنه شما اینجا بزار ایکس یک مساوی با اینپوت فلان رو اینپوت بعد اینجا بنویس ایکس دو مساوی با ترنسفور این کد روی ایکس یک اجرا کن برو جلو نخواسته حافظه زیاد اشغال اینو باید چک کنم توی دفش خب که چرا نان ن ولی شاید برای این بوده که چیزه برای این بوده که خودت مثلا هرچی دادم قبول کن یعنی برو بشناس دیگه مثلا ممکنه یه مسئله بیاد ۱۲۸ تایی باشه یه بار ۲۵۶ تایی باشه ارور نده حدس میزنم برای این بوده

بچه‌هامون بیشتر از همین چهار تا چیز باکس استفاده کردن و زدن فقط مسائل خودشون رو دادن ورودی بهش بدید اینجا ران نمیشه چون ورودی ایشون چیزه دیگه دیتا ست خودشه دیگه تو شماره هفت دیگه بهتون گیر میده میگه من اینو ندارم دیتا ستتو دسترسی آره این کار کرده اینجوری بوده کار اگه گیر کردید بگید یا خودم رفع اشکال میکنم یا میدم قدمی که براتون رفع اشکال خاصی دقت بهتری نسبت های دیگه دارند با توجه به پارامتر این مطمئن نیستم ببین یه چیزی که هست الان اگه تو دنیای هوش مصنوعی عمومی دارید میپرسید این که یکی یه شبکه رو از اسکرج بیاره بالا بی زحمت ببندید ممنون میشم از شبکه رو از اسکرج از صفر صفر بیاره بالا لزوما نتیجه خوبی نمیرسه ها

معمولا شبکه‌های خیلی قوی می‌گیرند فانتیون می‌کنن خب مثلاً مثل همون خودمون دیگه ترانسفر لرنینگ خودمون یا لایه آخرشون فقط عوض میکنن یا یه تغییرات دیگه‌ای میدن یعنی مثلا از یه جی پی تی تو که چیز استفاده می‌کنند یعنی بیرون الان یا لامای که الان پارامترهاش بیرون ملت استفاده میکنن برای کاراشون بخاطر همین احتمالاً هایپر پارامترها جستجو کنید نتیجه خوب می‌گیریم خب آره الان تعداد مشخص چی میخوید تعداد فریم های اول تعداد فریم ها میتونه یکی نباشه که گفتم با مس میکنیم با صفر و اینا ها خب ما شبکه رو تو شکل ۳۲ ۳۲ کرده باشیم ۷۰ رسیده آها آها خب حالا اگر ما کنیم با ۲۸ در ۲۸ نکنه

شاید مجبور باشیم که ما بالاخره ما ایکس ام بدیم باید اون سایزی در بیاریم که این میخواد فکر نمیکنم آزاد باشیم دیگه در این حد یعنی شما اگه اولش ۳۲ در ۳۲ ترین کردی یه عکس ۵۰ در ۵۰ برات اومد فقط یه دستی ۳۲ در ۳۲ش بکن بهش بده حالا اینو میگم که فضای جستجو و اینکه کدومش بهتره نیست فعلا بیشتر یه شبکه است که داره کار میکنه براتون همین خب عرض به حضور شما رفقا یه چیزی هست به نام هاگینگ فیس خب خیلی وقت نیست اومده کار توش خیلی راحت کردن خب یک چیز داره یه لایبری داره به نام ترنسفوررز خبکس فکر کنم دات سیo خب حالا من چیزم ندارم کنترل هم ندارم بنویسم هاگینگ فیس دات سیo همین

آقا این کلاً اساس کارش ترانسفورمرز خب و کلی مدلم توشه مثلاً مدل برتو داره جی پی تی تو داره لاماها رو داره خب لاما یک و اینا مثلاً چه میدونم فکر می‌کنم اوردرتشم چند صد هزار ۲۰۰ هزار مثلاً دیتا ست توشه خب و کلاً سطح دسترسیتونو پایین میاره تعداد خطاتونو بسیار کوتاه میکنه یعنی کاری میکنه شما آماده بپرید توش من مثلاً برتو با پنج خط فقط مدل لود میکنید همینت مثلا فرض کنید چند صد میلیون پارامتره خب یه همچین چیزی این هم ترچ بیس میشه نوشت هم کراس بیس میشه نوشت ما یک فایل براتون گذاشتیم که مثلاً چجوری برتو توش آپلود کنید و مثلاً یه عکس بهش بدید حالا البته چیز کنید لود کنید خب اینکه هم ترچش هستش هم چیزشه کلا این مدلیه که دیوایس مساوی با کودا که بنویسید قابلیت

جی پی یو رو بهتون میده می‌نویسید توکنایزر حالا برای ترکش می‌نویسید مساوی با آتو توکنایزر.فرام پری ترند birt bast onkest in سایتش پیدا کنید که چیو می‌خواید لود کنید خب که اینجا بالا اتو مدل رو اد کردین خب بعد می‌نویسید مادل مساوی با اتو مدل دات پریترینت اینو برام بیار بالا که برت اصلی رو میاره و مدل دات تو دیوایس میزنید فکر کنم باز برای ماجرای جی پی یو اینجا تا اینجا مدل اومده بالا یه مدل تورچ بیس یه تکست دادید بهش که هر چی دلتون میخواد مینویسید یا کلا میتونه بیشتر از یه دونه هم باشه میگید ان کد اینپوت هست توکنایزر این تکست و ریتر تنسور pt که همون چیز باشه تورچ باشه خب تو دیوایس میزنید بعد میگید چه میدونم اینو بهم نشون بده یا بیار روش ران کن اوت پوت مساوی با مدل ستاره فلان شیپشو بهم بده که

چند در چند همین کارو اگه می‌خواستید برای کلاسش انجام بدید تنسور فلوش انجام بدید همین خط ۱ ۲ ۳ ۴ ۵ ۶ ۷ تا ۷ خط می‌نویسید مدل برت میاد بالا و می‌تونید هر تکستی دلتون میخواد بهش بدید و نتایجتون رو بگیرید خب ماجرای بعدی که می‌خوایم در موردش صحبت کنیم یه چیزیه به نام vit یا ویژن ترانسفورمر btsformers سال ۲۰۱۷ اومد برت که یه جورایی زد همه رو درید مثل مثلا رزنت بود که رفت قبلیا رو کرد تو در واقع چیز اصطلاح جیبش این برت ۲۰۱۸ اومد یه سال بعد عرض به حضور شما که یه عده‌ای به این داشتن فکر می‌کردن که خب این تو مدل زبانی اومده چه توی حوزه های تصویر و صوت و ویدیو و این به کارمون میاد که یکی دو سال بعدش نمونه‌های دیگه‌ای اومد یه چیزی دادن بیرون به نام ویژ ترنسفورر یا وی آی تی خبژن ترنس فورمر عرض به حضور شما که از ساخت

برای عکس استفاده کردن ولی از ترانسفورمر خب حالا چیکار کردن ایمیل یه نمونه کد گذاشته از صفر صفر بنده خدا اسم خودشم نوشته سال ۲۰۰۱ آپلود کرده خیلی هم چیز صادقانه گفته از این پیپر استفاده کردم پیپر ویژن ترانسفورمره که باز فکر می‌کنم کار برای بچه‌های گوگله و اولش اومدن گفتن از رفیقمون استفاده کردیم و فلان و اینا بعد گفته چیکار کن اساس کارشو فقط براتون میارم بچه‌ها خیلی الگو ساده است میگه من چجوری میتونم از ترنسفورمر برای یارو استفاده کنم برای ویژ استفاده کنم میگه که عکستون رو بگیرید پچ پچ کنید مثلا سه در سه میگه هر عکسی میاد سه در سهش کنید که بشه نه تا تیکه عکس این نه تا تیکه عکس رو به عنوان ورودی مثل کلمه اول تا کلمه نهم بدید به یه ساختار ترنسفورمری فقط مثلاً این عکسه فرض کنید

ترین میشه قرمزه میشه همون کاری که ۵۰ هزاره رو می‌برد ۱۲ هزار تو چتریپتیه که مثلاً ببره به یه سایز ۱۲۸ تایی فلان تایی پس ۱ تا ۹ تا عکس دارید درسته یه توکن کناری هم کنارش میارن به نام توکن سی ال اس که مخفف فکر کنم کلسیفیکیشن این توکن هم ترین میشه که اینا شروع می‌کنن به وارد ترنسفورمر میشن الان انگار ۱۰ تا کلمه باید ترنسپر شده اولیش نه تای بعدی هم چی اند پت شده های عکس اصلی من که چی شدن قبل از یه امبگی رد شدن به یه برداری یه بعدی تبدیل شدن قبوله اینا ترنسفور میشن به ازای هر لایه چی میشه یه دونه دوباره هم سایز خودشون تولید میشه میرن بالا میرن بالا میگه برو مثلاً چه می‌دونم ۱۰ تا هد بزار از ام ال پی

بالای سی ال اس بود اینو ببر تو چیز سافت مکس و خروجی بگیر نگاه همشون دارن تولید میکننا خب ایده‌ای که ایشون زد گفت که آقا تو ام ال پی لایه آخر این فقط خروجی بالای چیزه رو توکن اولمو ببر بالا توکن اولی که توکن استارت یا cls هم بوده قرار تو این راهش به همه اتند کرده دیگه به همه توجه کرده یعنی خیالمون راحته که ۹ توجه لازم به اون ۹ تا شده و رفته یک دو هد سه هد رفته بالا اون تعدادی که شما می‌خواید و چی آخرش مثلاً اگه نه تا با یکی خودش ۱۰ تا ۱۰ تا ام پی تولید شده میگه کدوم رو استفاده کن یه راه اینه که چرا گلوبال مکس پولینگ کنید یه جورایی همه رو ببینید بعد اونو بدید صاف مکس این گفته نه فقط برو از اولی استفاده کن اینو بده به سافت مکس و خروجی بهم بده بعد ادعا کرده که آقا من چه میدونم با یه سری حقه‌هایی که زدم یارو کردم حتی از مثلاً شبکه‌های سی ان ان هم رد کردم خب یه همچین چیزایی و چجوری فاینتیون کردم ولی آخر این ایده کلی پشت ماجرا بوده

الان کدی که اینجا براتون تو کراس باز کردم خیلی یعنی خیلی با حوصله اینو براتون زده خب که شما می‌تونید استفاده کنید بچه‌ها راحته‌ها ایناشو بخونید یعنی همینجوری چشمی من چک کردم قابل دنبال کردن عین کپی پیست کنید اینا این عکس رو که می‌گیره ۱۲× ۱۲ می‌کنه تا پلاتم کرده براتون یعنی یه کد زده که ۱۲ در ۱۲ پلا هم بکنید که واقعاً ببینید پچ هاش آماده است بعد این پچ ها رو چیکار میکنه پودر میزنه یعنی میره از امبدینگ رد میکنه با توکن است همون سی میکنه میده به ترنسفورمر اسمش گذاشتن وی آی تی ویژ ترنسفورمر عرض به حضور شما که این دیگه بقیش عادی خودمونه و تهش یه کلاس باید بهتون بده تهش یه سری اعتراف کرده اینم حالا مثلاً چند تا هی پاپ گذاشته ولی گفته ببینید این من مثلاً ۱۰۰ تا ایپاک رفتم دقت هم ۵۵ درصد فایو وان چیزه تاپ وان اکوریسی ۸۲ درصد تاپ فایو هنوز عقب تر از شبکه های خوف و خفنم مثل سی و اینا این چون رو سی

اگه می‌خواید بهتر بشه مثلاً بهتره برید از مدل آماده استفاده کنید و الی آخر تا اینکه بخواید از اسکرج بیارید ولی داره کار میکنه فعلا به عنوان ابزار ببینید جایگزین سی ان ان نبینید این برای ما زوده برای ما مکانیکی زوده که سی ان ان و شیفت دیلیت کنیم این بیاد جاش یه چیز دیگه اومد به نام ویدیو ویژ ترنسفورمر خب باز بعد این دادن یعنی ملت مثلا انگار چیز داشتن اینا اینجا هستش خب بچه ها ویدئو بهتون بدیم بخواید شما کلاسسیفای کنید چیکار میکنید ایده اول اگه ترنسفور بلد نبود چیکار میکردید فریم فریم از سی ان ان رد میکردید عصاره هاش به کی میدادید ال اس تی ام میدادید این یک نوع کاره که کارم میکنه یه نوع کار اینه که الان ترنسفور بلدید فریم فریم هاشو به سی ان ان بدید

یه عصاره بگیرید اونو به ترانسفورمر عادی بدید ویژن ترانسفورمر میگه من کاری کردم که دیگه نخواید حتی از سی‌ان استفاده کنید باز دوباره یه پیپر دادن دوستان رفقا دو تا مثال دیگه هم گذاشته همینایی که عرض کردم هم خودتون گفتید ویدئو کلاس خواستید ببینید نمونه کد آماده است ولی میگه من از چیز پیپر vvt vd ویدیوویژن ترنسفور استفاده کردم که این مثلاً کی چاپ شده نه سابمیتد میخوام ببینم جایی چاپ شده یا نه چون این از کجا من باز از گوگلن درسته از گوگلن چند تا بچه‌ها ایده مختلف میده میگه من چند نوع ایده مختلف دارم برای یکی از ترانسفورمر استفاده کنید و دیگه سی ان ان دخیل نکنید یکیش چیزه تیوبلت امب

میگم این ویدئوتونو ببین این ویدئویی که مثلاً توش یه مشتی چیز پنگوئن تکون خوردن و اینا این فریم شماره ۱ ۲ ۳ ۴ تا الی آخر میگه بیا چیکار کن پچ اولی که انتخاب می‌کنی هم توش تمپرال هم اسپشاله یعنی هم یه بخشی از مکان و یه بخشی از زمانه داره می‌بینه از کجا نگاه کنید از فریم شماره ۱ تا دهم زمانی و مثلاً ۲۰ تا ۲۰ تا فریم بغلیشو انتخاب کرده میگه اسم این کلا بزار ایکس یک بعدی ایکس دو بعدی هم ندارند کل عکس رو پچ کرده کل ویدیو رو به پچ های سه بعدی تقسیم کرده بعد اینو از یه امبدینگ رد میکنه چیزش میکنه وکتورش میکنه وکتور رو میده ترنسفورمر روش حرف میزنه کلاسیفیکیشن ترین میکنه و فلان فلان چرا اینا پوزیشن کدینگ هم دارن دیگه یعنی تو قبلی هم داشت مطمئن نیستم ولی فکر کنم اونم حتی ترین میکنه یا میتونید همین عادی خودمون بذارید همین که بهتون گفتیم چون ترتیبش برای اینکه حفظ بشه

بعداً یاد بگیره شما تمام این ترتیب‌هایی که تو ترانسفورمر دادید باید با چیزم جمع بزنید با پوزیشن جمع بزنید که یکیش همون سینوس کسینوس دوره بود که بهتون گفتم برید پیدا کنید این تو این مودی که بهتون گفتم دوتاش مهمه هم زمانو داره میبینه هم مکان بهش میگه اسپشی تمپرال با هم بعد چیزای دیگه هم داره چیزایی داره که فقط اسپشیال فقط تمپرال دلتون خواست برید ببینید دیگه این گردالی بغلش فکر کنم پوزیشن اینا نوشته پوزیشن به علاوه توکن خب اگه خواستید پیپرشو برید ببینید و ببینید اصلاً آیا برای آنالیز ویدئو نیاز دارید که به وی تی مراجعه کنید یا نه ولی میخوام بگم ایده‌هاییه که الان مثلاً ۲۰۲۲ اومده ها مثلاً دو سال نیست و اینا تا دیدن ترنسفورها رشد کردن هی دارن دیگه روش چی میکنن کار میکن نوامبر 221 میشه آخر ۲۰۲۲ اول 222 آخر 22 اول 2 اول 222 اومده الان دو سال نیست دو سال و مثلاً

کلاً اومده و این احتمالاً چند سال دیگه ممکنه دیگه واقعا خودشو نشون بده ولی به عنوان ابزار کنارتون باشه شما یه پچ میکنید پچه رو بدین کنید وکتورش کنید دیگه بقیش کار نداره اینجا اینجا چیزی که نوشته اینه اینجا چیزی که نوشته اول امبت کرده بله امبت توکن کرده ام تو توکن کرده بله با چون چیز دیگه توکن یارو هم سایز توکن هاتونه آره بعد عرض به حضور شما بچه ها این ریاضی هاش هم نگاه کنید خیلی سعی کرده راحت بنویسه ببینید اینجوری کرده گفته زد صفر چجوری بدست میاد خب گفته از چیز کانکت کردن اون ایکس سی اس و ایکس پچ اول عکس تا پچ انوم عکس که مث برای ما نه تایی فرض کن بود ضرب در چی بردار ام بدین که برای ۹ تا عکس ها ثابته قبوله بعد

زدهای بعدی چی میشن ام اس ای میشه مالتی سلف اتنشن همون ماژولی که می‌رفت به خودش اتن میکرد و با زد قبلیش جمع کن اسمشو بزار زد پرایم بعد از ام ال پی ردش کن اسمشو بزار زد ال بعد گفته وای خروجی کدومه رو زد ال درایه اولش فقط یادتونه گفتم به ازای هر زد الی تو لایه آخر من خروجی دارم گفتم کدوم یعنی اولیه رو نگاه کن و سافت مکس و اینا بزن به همین بیان ساده بیان کردن حالا ویژ ویدیوژن همین کار کرده گفته چجوری مثلاً من ساده بچه های مختلف بیان کردم و اینا اینم شد گام بعدی عرض به حضور شما بعدی که ویدئوژن ترنسفور یا ویژ ترنسفورم رو برید کراس براتون نمونه کد گذاشته و سمپل گذاشته خیلی سمپل های خوبی اند برای وش هم گذاشته باز از صفر صفر روی دیتا ست خاصی ترین میکنه

و گیتاباشو اینارم گذاشته گفته دلتون می‌خواد برید ببینید بعد فقطم این مودشو گذاشته پچ‌های این مدلی و گفته بقیشو خواستیدم برید مثلاً فلان جا ببینید کدهای آماده‌ای که داره حالا اگه می‌خواستید فیس بزنید همینو خب یعنی ویژن ترانسفورمر تو هاگینگ فیس براتون زدیم باز اینم براتون آپلود می‌کنم کلاً هفت هشت ده خط فکر کنم از دیگر نهایتا ده خط عرض به حضور شما که اینجا اسمش هست وی آی تی پایتون ولش کنید حالا چون به همه یک دو سه چهار پنج شش هفت هشت نه ده ۱۱ چیکار کرده گفته تنسور ترانسفورمرز اینا رو چیز کن ایمپورت کن که چی باشه تی اف وی آی تی فور ایمی کلاسسیفیکیشن تی افش مخفف تنسور فلو تنسور فلو وی آی تی فور ایمیج کلاسیفیکیشن خود تنس فلو اد کردیم دیتا ستس رو لود کردیم گفتیم از دیتا ستس برو فولدر کتس رو لود بکن

ایمیج شماره یکشو بگیر الان یه دونه گربه توی ظرف ایمیج ریختم می‌خوام بهش بدم ببینم میفهمه تو همون مدل ویژن ترانسفورمری که ترین شده ببینم میفهمه کت هست یا نیست بعد گفتم که ایمیج پروسسور بکنه این این میره همون وی آی تی بیست رو میاره بالا بعد بریزش با این دستور تو مدل الان این مدلی که ساخته شده بچه‌ها این مدل کراسه یه مدل پیچیده ترنسفور بیسیه که الان تو مدله دیگه همون کار قبلی میتونی بکن ترین هم شده ها آماده است همه چی توش گفته اینپوتشو بگیر نمیدونم ایمیج پروسسور ایمیج و ریتر تنسور تنسورز تی اف که همون مخفف تنسرفلو بعد لاجیتس اینو بهم بده رو لایه آخرش برو ببین در واقع اون هزار تا خروجی چیز ایمیجمنت بود یادتونه قبلا بهتون گفته بودیم که روش مسابقه بود رزنت برنده شد هزار تا لاجیت داره یعنی هزار تا عکس براتون احتمال میده برو اینو در بیار بریز تو لا

بعد تبدیلش کن به چیز ماکسیمومشو بگیر بعد به تکست تبدیلش کن و این کارو که کردیم حالا نمی‌دونم من چقدر طول می‌کشه بهتون میگه ایجپشنکته یعنی قشنگ واقعاً به شکل خیلی خفن چیزه یه گربه مصریه که جز کتگوری اون هزار تا کتگوری که بوده و درست هم تشخیصش میده فقط نمیدونم چقدر طول میکشه حالا اینو زدم بچه‌ها اینم شد پس چی ماجرا بعدی یعنی ما الان تونستیم ترانسف رو برای خودمون بگیم نمونه بگیم حاشیه های مثل ویژن ترانسپور هم بگیم این باید آره چی شد ران کنیم کار میکنه دیروز کردیم کار کرد آره شاید بالا چیزی کاری باید

'markdown' cell: '['# 1D harmonic oscillator physics-informed neural network (PINN)\n', '\n', 'This notebook contains the code to reproduce the plots presented in my blog post ["So, what is a physics-informed neural network?"](https://benmoseley.blog/my-research/so-what-is-a-physics-informed-neural-network/).\n', '\n', 'Please read the post for more details!\n', '\n', '## Problem overview\n', '\n', 'The example problem we solve here is the 1D damped harmonic oscillator:\n', '$$\n', 'm \\dfrac{d^2 x}{d t^2} + \\mu \\dfrac{d x}{d t} + kx = 0~,\n', '$$\n', 'with the initial conditions\n', '$$\n', 'x(0) = 1~~,~~\\dfrac{d x}{d t} = 0~.\n', '$$\n', 'We will focus on solving the problem for the under-damped state, i.e. when\n', '$$\n', '\\delta < \\omega_0~,~~~~~\\mathrm{with}~~\\delta = \\dfrac{\\mu}{2m}~,~\\omega_0 = \\sqrt{\\dfrac{k}{m}}~.\n', '$$\n', 'This has the following exact solution:\n', '$$\n', 'x(t) = e^{-\\delta t}(2 A \\cos(\\phi + \\omega t))~,~~~~~\\mathrm{with}~~\\omega=\\sqrt{\\omega_0^2 - \\delta^2}~.\n', '$$\n', '\n', 'This problem was inspired by the following blog post: https://beltoforion.de/en/harmonic_oscillator/.\n', '\n', '## Workflow overview\n', '\n', '>First we will train a standard neural network to interpolate a small part of the solution, using some observed training points from the solution.\n', '\n', '>Next, we will train a PINN to extrapolate the full solution outside of these training points by penalising the underlying differential equation in its loss function.\n', '\n', '\n', '## Environment set up\n', '\n', 'We train the PINN using PyTorch, using the following environment set up:\n', '```bash\n', '\n', 'conda create -n pinn python=3\n', 'conda activate pinn\n', 'conda install jupyter numpy matplotlib\n', 'conda install pytorch torchvision torchaudio -c pytorch\n', '```\n', '\n']'

'code' cell: '['from PIL import Image\n', 'import os\n', 'import numpy as np\n', 'import torch\n', 'import torch.nn as nn\n', 'import matplotlib.pyplot as plt\n', 'from IPython.display import Image as IPImage, display']'

'code' cell: '['def save_gif_PIL(outfile, files, fps=5, loop=0):\n', '    "Helper function for saving GIFs"\n', '    imgs = [Image.open(file) for file in files]\n', "    imgs[0].save(fp=outfile, format='GIF', append_images=imgs[1:], save_all=True, duration=int(1000/fps), loop=loop)\n", '\n', 'def oscillator(d, w0, x):\n', '    """Defines the analytical solution to the 1D underdamped harmonic oscillator problem.\n', '    Equations taken from: https://beltoforion.de/en/harmonic_oscillator/"""\n', '    assert d < w0\n', '    w = np.sqrt(w0**2-d**2)\n', '    phi = np.arctan(-d/w)\n', '    A = 1/(2*np.cos(phi))\n', '    cos = torch.cos(phi+w*x)\n', '    sin = torch.sin(phi+w*x)\n', '    exp = torch.exp(-d*x)\n', '    y  = exp*2*A*cos\n', '    return y\n', '\n', 'class FCN(nn.Module):\n', '    "Defines a connected network"\n', '\n', '    def __init__(self, N_INPUT, N_OUTPUT, N_HIDDEN, N_LAYERS):\n', '        super().__init__()\n', '        activation = nn.Tanh\n', '        self.fcs = nn.Sequential(*[\n', '                        nn.Linear(N_INPUT, N_HIDDEN),\n', '                        activation()])\n', '        self.fch = nn.Sequential(*[\n', '                        nn.Sequential(*[\n', '                            nn.Linear(N_HIDDEN, N_HIDDEN),\n', '                            activation()]) for _ in range(N_LAYERS-1)])\n', '        self.fce = nn.Linear(N_HIDDEN, N_OUTPUT)\n', '\n', '    def forward(self, x):\n', '        x = self.fcs(x)\n', '        x = self.fch(x)\n', '        x = self.fce(x)\n', '        return x']'

'markdown' cell: '['## Generate training data\n', '\n', '> First, we generate some training data from a small part of the true analytical solution.\n', '\n', 'For this problem, we use $\\delta=2$, $\\omega_0=20$, and try to learn the solution over the domain $x\\in [0,1]$.']'

'code' cell: '['d, w0 = 2, 20\n', '\n', '# get the analytical solution over the full domain\n', 'x = torch.linspace(0,1,500).view(-1,1)\n', 'y = oscillator(d, w0, x).view(-1,1)\n', 'print(x.shape, y.shape)\n', '\n', '# slice out a small number of points from the LHS of the domain\n', 'x_data = x[0:200:20]\n', 'y_data = y[0:200:20]\n', 'print(x_data.shape, y_data.shape)\n', '\n', 'plt.figure()\n', 'plt.plot(x, y, label="Exact solution")\n', 'plt.scatter(x_data, y_data, color="tab:orange", label="Training data")\n', 'plt.legend()\n', 'plt.show()']'

'markdown' cell: '['## Normal neural network\n', '\n', '> Next, we train a standard neural network (fully connected network) to fit these training points.\n', '\n', '>We find that the network is able to fit the solution very closely in the vicinity of the training points, but does not learn an accurate solution outside of them.']'

'code' cell: '['def plot_result(x,y,x_data,y_data,yh,xp=None):\n', '    "Pretty plot training results"\n', '    plt.figure(figsize=(8,4))\n', '    plt.plot(x,y, color="grey", linewidth=2, alpha=0.8, label="Exact solution")\n', '    plt.plot(x,yh, color="tab:blue", linewidth=4, alpha=0.8, label="Neural network prediction")\n', '    plt.scatter(x_data, y_data, s=60, color="tab:orange", alpha=0.4, label=\'Training data\')\n', '    if xp is not None:\n', '        plt.scatter(xp, -0*torch.ones_like(xp), s=60, color="tab:green", alpha=0.4,\n', "                    label='Physics loss training locations')\n", '    l = plt.legend(loc=(1.01,0.34), frameon=False, fontsize="large")\n', '    plt.setp(l.get_texts(), color="k")\n', '    plt.xlim(-0.05, 1.05)\n', '    plt.ylim(-1.1, 1.1)\n', '    plt.text(1.065,0.7,"Training step: %i"%(i+1),fontsize="xx-large",color="k")\n', '    plt.axis("off")\n', '\n', '\n', '# train standard neural network to fit training data\n', "os.makedirs('plots', exist_ok=True)\n", 'torch.manual_seed(123)\n', 'model = FCN(1,1,32,3)\n', 'optimizer = torch.optim.Adam(model.parameters(),lr=1e-3)\n', 'files = []\n', 'for i in range(1000):\n', '    optimizer.zero_grad()\n', '    yh = model(x_data)\n', '    loss = torch.mean((yh-y_data)**2)# use mean squared error\n', '    loss.backward()\n', '    optimizer.step()\n', '\n', '\n', '    # plot the result as training progresses\n', '    if (i+1) % 10 == 0:\n', '\n', '        yh = model(x).detach()\n', '\n', '        plot_result(x,y,x_data,y_data,yh)\n', '\n', '        file = "plots/nn_%.8i.png"%(i+1)\n', '        plt.savefig(file, bbox_inches=\'tight\', pad_inches=0.1, dpi=100, facecolor="white")\n', '        files.append(file)\n', '\n', '        if (i+1) % 150 == 0: plt.show()\n', '        else: plt.close("all")']'

'code' cell: '['save_gif_PIL("nn.gif", files, fps=20, loop=0)\n', 'display(IPImage(filename="nn.gif"))']'

'markdown' cell: '['## PINN\n', '\n', '> Finally, we add the underlying differential equation ("physics loss") to the loss function.\n', '\n', 'The physics loss aims to ensure that the learned solution is consistent with the underlying differential equation. This is done by penalising the residual of the differential equation over a set of locations sampled from the domain.\n', '\n', "Here we evaluate the physics loss at 30 points uniformly spaced over the problem domain $([0,1])$. We can calculate the derivatives of the network solution with respect to its input variable at these points using `pytorch`'s autodifferentiation features, and can then easily compute the residual of the differential equation using these quantities."]'

'code' cell: '['x_physics = torch.linspace(0,1,30).view(-1,1).requires_grad_(True)# sample locations over the problem domain\n', 'mu, k = 2*d, w0**2\n', '\n', 'torch.manual_seed(123)\n', 'model = FCN(1,1,32,3)\n', 'optimizer = torch.optim.Adam(model.parameters(),lr=1e-4)\n', 'files = []\n', 'for i in range(20000):\n', '    optimizer.zero_grad()\n', '\n', '    # compute the "data loss"\n', '    yh = model(x_data)\n', '    loss1 = torch.mean((yh-y_data)**2)# use mean squared error\n', '\n', '    # compute the "physics loss"\n', '    yhp = model(x_physics)\n', '    dx  = torch.autograd.grad(yhp, x_physics, torch.ones_like(yhp), create_graph=True)[0]# computes dy/dx\n', '    dx2 = torch.autograd.grad(dx,  x_physics, torch.ones_like(dx),  create_graph=True)[0]# computes d^2y/dx^2\n', '    physics = dx2 + mu*dx + k*yhp# computes the residual of the 1D harmonic oscillator differential equation\n', '    loss2 = (1e-4)*torch.mean(physics**2)\n', '\n', '    # backpropagate joint loss\n', '    loss = loss1 + loss2# add two loss terms together\n', '    loss.backward()\n', '    optimizer.step()\n', '\n', '\n', '    # plot the result as training progresses\n', '    if (i+1) % 50 == 0:\n', '\n', '        yh = model(x).detach()\n', '        xp = x_physics.detach()\n', '\n', '        plot_result(x,y,x_data,y_data,yh,xp)\n', '\n', '        file = "plots/pinn_%.8i.png"%(i+1)\n', '        plt.savefig(file, bbox_inches=\'tight\', pad_inches=0.1, dpi=100, facecolor="white")\n', '        files.append(file)\n', '\n', '        if (i+1) % 2000 == 0: plt.show()\n', '        else: plt.close("all")']'

'code' cell: '['save_gif_PIL("pinn.gif", files, fps=20, loop=0)\n', 'display(IPImage(filename="pinn.gif"))']'