Meezo ML نشر 1 يوليو 2021 أرسل تقرير نشر 1 يوليو 2021 خوارزمية التحسين Adam Optimization واستخدامها في Keras؟ اقتباس
1 Ali Haidar Ahmad نشر 1 يوليو 2021 أرسل تقرير نشر 1 يوليو 2021 (معدل) هو طريقة لتسريع خوارزمية GD وتخفيف التذبذب وهي فعالة من الناحية الحسابية وتأخذ ذاكرة قليلة ومناسبة للمشكلات الكبيرة في التعلم الآلي التي تكون فيها البيانات كبيرة أو عدد الأوزان في الشبكة كبير جداً، تعتمد على حساب متوسط الأوزان الأسية للمشتقات السابقة وتخزينها في متحول v وكذلك حساب متوسط الأوزان الأسية لمربعات المشتقات السابقة ووضعها في متحول s و تقوم أيضاً بالخلط بين الطريقتين. يتم حساب متوسط الأوزان الأسية للمشتقات السابقة عن طريق القوانين: vdw = B1* vdw + (1-B1)*dw vdb = B1*vdb + (1-B1)*db حيث vdw هيي متوسط الأوزان اأاسي لجميع الأوزان في الشبكة. و vdb متوسط الأوزان اأاسي لل bias في الشبكة. و B1 يمثل معدل الاضمخلال الأسي. يتم حساب متوسط الاوزان الاسية لمربعات المشتقات السابقة عن طريق القوانين: Sdw = B2*Sdw + (1-B2)*dw^2 Sdb = B2*Sdb + (1-B2)*db^2 حيث vdw هيي متوسط الأوزان الاسي لجميع الأوزان في الشبكة. و vdb متوسط الأوزان الاسي لل bias في الشبكة. و B2 معدل التضاؤل الأسي. في كيراس يتم استيراده من خلال الموديول: keras.optimizers لاستخدامه في نموذج نمرره للدالة compile بإحدى الطريقتين: model.compile( optimizer=Adam(learning_rate=0.001) ... ) # أو model.compile( optimizer='adam' ... ) # لاحظ أنه في الطريقة الثانية سيستخدم معمل الخطوة الافتراضي # لذا إذا أردت تغييرها استخدم الصيغة الأولى مثال عن طريقه الاستخدام حيث يأخذ adam الوسيط learning_rate الذي يمثل معامل التعلم أو مقدار الخطوة. # استدعاء المكتبات from keras.models import Sequential from keras import layers from keras.datasets import mnist from keras.optimizers import Adam # تحميل الداتا (X_train,y_train),(X_test,y_test)=mnist.load_data() # تقييس الداتا وتغيير حجم الدخل منعنا لحدوث خطأ X_train = X_train.reshape((60000, 28 * 28))/255.0 X_test = X_test.reshape((10000, 28 * 28))/255.0 بناء الشبكه العصبونيه بطبقه واحده وطبقة خرج ب 10 أصناف model = Sequential() model.add(layers.Flatten()) model.add(layers.Dense(512, activation='relu', input_shape=( 28*28,))) model.add(layers.Dense(10, activation='softmax')) #مع معامل تعلم 0.001 adam استخدام model.compile(optimizer=Adam(learning_rate=0.001), loss='sparse_categorical_crossentropy',metrics=['accuracy']) # تدريب الموديل model.fit(X_train,y_train) تم التعديل في 1 يوليو 2021 بواسطة Ali Haidar Ahmad 1 اقتباس
1 ريم المهدي نشر 3 يوليو 2021 أرسل تقرير نشر 3 يوليو 2021 لقد تحدثت عن خوارزميات التحسين و أهميتها للنموذج هنا، يمكنك مراجعة المقدمة لتتعرف على أهميتها. والان بعد أن قمت بفهم أهمية خوارزميات التحسين لنتحدث عن Adam optimizer بالتحديد. Adam هو من خوارزميات الإتزان البديلة لstochastic gradient descent وهو يعد من أفضل الخوارزميات و ذلك لسهولة تعامله مع البيانات الضخمة و معدل التعلم المتغير حسب ال يمكن إستخدام Adam بإحدى طريقتين: بعد إستيراد المكتبات اللازمة، تم تعريف نموذج و إضافة عدد 2Layers الأولى تحتوي على شكل البيانات المدخلة و عدد الneurons الثانية تحتوي على دالة التنشيط activation function وهي المسؤولة عن إضافة non-linearity للنموذج. بعد ذلك عرفنا دالة الموانة Adam بإستخدام القيم الإفتراضية. ومن ثم نقوم بتعريف الoptimizer في model.compile. from tensorflow import keras from tensorflow.keras import layers model = keras.Sequential() model.add(layers.Dense(64, kernel_initializer='uniform', input_shape=(10,))) model.add(layers.Activation('softmax')) opt = keras.optimizers.Adam() model.compile(loss='categorical_crossentropy', optimizer=opt) تذكر أن model.compile تقوم بالأتي: اقتباس Compile defines the loss function, the optimizer and the metrics. بالتالي نحن نحتاج إلى عملية التجميع قبل أن نقوم بأي عملية تدريب للنموذج. يمكننا أن نقوم بتمرير الoptimizer إلى دالة التجميع مباشرة دون التعريف المسبق كالتالي: model.compile(loss='categorical_crossentropy', optimizer='Adam') اقتباس
1 ريم المهدي نشر 3 يوليو 2021 أرسل تقرير نشر 3 يوليو 2021 لقد تحدثت عن خوارزميات التحسين و أهميتها للنموذج هنا، يمكنك مراجعة المقدمة لتتعرف على أهميتها. والان بعد أن قمت بفهم أهمية خوارزميات التحسين لنتحدث عن Adam optimizer بالتحديد. Adam هو من خوارزميات الإتزان البديلة لstochastic gradient descent وهو يعد من أفضل الخوارزميات و ذلك لسهولة تعامله مع البيانات الضخمة و معدل التعلم المتغير حسب البيانات و بذلك فهو يصل لنتائج النماذج العميقة بصورة أسرع. الشكل الإفتراضي لAdam optimizer: tf.keras.optimizers.Adam( learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-07, amsgrad=False,name='Adam') [إضغط و إسحب للتحريك] والذي يحتوى على الparameters hالتالية: learning_rate: هو المعدل الذي تتغير به الأوزان في النموذج. beta_1: معدل التناقص التسارعي لمعدل التعلم (exponential decay) للمرة الأولى. beta_2: معدل التناقص التسارعي لمعدل التعلم (exponential decay) للمرة الثانية. epsilon: معامل حفظ توازن النموذج الرياضي (لمنع القيام بعمليات مثل القسمة على 0). لابد أنك لاحظت وجود معدلين للتناقص التسارعي أو الأسي في الخوارزمية، و السبب يرجع لطريقة حساب الخوارزمية، فهي تحسب التغير في متوسط الأوزان و في متوسط مربعات الأوزان للتحكم في معدل التغير. يمكن إستخدام Adam بإحدى طريقتين: بعد إستيراد المكتبات اللازمة، تم تعريف نموذج و إضافة عدد 2Layers الأولى تحتوي على شكل البيانات المدخلة و عدد الneurons الثانية تحتوي على دالة التنشيط activation function وهي المسؤولة عن إضافة non-linearity للنموذج. بعد ذلك عرفنا دالة الموانة Adam بإستخدام القيم الإفتراضية. ومن ثم نقوم بتعريف الoptimizer في model.compile. from tensorflow import keras from tensorflow.keras import layers model = keras.Sequential() model.add(layers.Dense(64, kernel_initializer='uniform', input_shape=(10,))) model.add(layers.Activation('softmax')) opt = keras.optimizers.Adam() model.compile(loss='categorical_crossentropy', optimizer=opt) تذكر أن model.compile تقوم بالأتي: Compile defines the loss function, the optimizer and the metrics. بالتالي نحن نحتاج إلى عملية التجميع قبل أن نقوم بأي عملية تدريب للنموذج. يمكننا أن نقوم بتمرير الoptimizer إلى دالة التجميع مباشرة دون التعريف المسبق كالتالي: model.compile(loss='categorical_crossentropy', optimizer='Adam') [إضغط و إسحب للتحريك] 1 اقتباس
السؤال
Meezo ML
خوارزمية التحسين Adam Optimization واستخدامها في Keras؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.