rStar-Math dari Microsoft: Panduan dengan Implementasi
Pelajari cara membuat implementasi sederhana dari kerangka kerja RStar menggunakan kombinasi jaringan saraf, penalaran simbolik, dan Monte Carlo Tree Search (MCTS).
Makalah RStar-math dari Microsoft menyajikan pendekatan inovatif untuk menyelesaikan masalah matematika menggunakan kombinasi reinforcement learning, penalaran simbolik, dan Monte Carlo Tree Search (MCTS).
Dalam blog ini, saya akan membahas kerangka kerja RStar dan komponen intinya. Selanjutnya, saya akan memandu Anda langkah demi langkah melalui implementasi sederhana yang mendemonstrasikan konsep-konsep kuncinya menggunakan Gradio. Meskipun demo ini terinspirasi oleh makalah tersebut, beberapa kompleksitas telah disederhanakan agar lebih mudah diakses.
Apa itu rStar-Math dari Microsoft?
RStar math bertujuan menjembatani penalaran simbolik dengan kemampuan generalisasi model neural pra-latih. Kerangka kerja ini mengintegrasikan komponen seperti Monte Carlo Tree Search (MCTS), model bahasa pra-latih, dan reinforcement learning untuk memungkinkan eksplorasi strategi pemecahan masalah secara efisien.
Gagasan utamanya adalah merepresentasikan penalaran matematika sebagai proses pencarian di atas pohon terstruktur dari langkah-langkah yang mungkin, di mana setiap simpul mewakili solusi parsial atau keadaan.
Beberapa alasan yang membuat rStar-Math menarik bagi saya antara lain:
Mencakupjaringan saraf (model kebijakan) yang memprediksi aksi berikutnya dalam menyelesaikan masalah matematika, membimbing eksplorasi MCTS.
Sebuah jaringan (model penghargaan) yang mengevaluasi keberhasilan aksi yang diambil selama rollout MCTS dan memberikan umpan balik untuk pelatihan.
RStarmenggunakan pustaka komputasi simbolik seperti SymPy untuk operasi matematika yang presisi atau penalaran simbolik seperti menyelesaikan persamaan atau menghitung turunan.
Menyematkan algoritma Monte Carlo Tree Search yang secara sistematis mengeksplorasi jalur solusi yang mungkin menggunakan simulasi, menyeimbangkan eksplorasi dengan mencoba jalur baru dan eksploitasi.
Mekanisme umpan balik di mana model kebijakan dan penghargaan dilatih secara iteratif berdasarkan hasil rollout MCTS, sehingga meningkatkan proses pengambilan keputusan dari waktu ke waktu.
Proses penalaran disusun sebagai pohon hierarkis di mana simpul merepresentasikan keadaan dan sisi merepresentasikan transisi.
Gambaran Proyek Demo: Penyelesai Masalah Matematika dengan Gradio
Demo ini menunjukkan bagaimana model kebijakan dan model penghargaan, dipadukan dengan penalaran simbolik menggunakan pustaka sympy, dapat menangani masalah matematika secara terstruktur. Fitur utama dari implementasi ini meliputi:
Model kebijakan: Jaringan saraf yang memprediksi aksi berikutnya dalam proses pemecahan masalah.
Model penghargaan: Jaringan yang mengevaluasi keberhasilan aksi yang diambil selama rollout MCTS.
Penalaran simbolik: Memanfaatkan SymPy untuk komputasi matematika presisi dan penyelesaian persamaan.
Monte Carlo Tree Search: Menerapkan versi MCTS yang disederhanakan untuk mengeksplorasi solusi secara efisien.
Siklus reinforcement learning: Loop pelatihan dasar untuk meningkatkan model kebijakan dan penghargaan berdasarkan umpan balik.
Dukungan untuk persamaan satu dan multi-variabel: Pengguna dapat memasukkan satu atau dua persamaan untuk mencari nilai variabel seperti x dan y.
Agar demo tetap sederhana dan fokus, beberapa fitur lanjutan yang disebutkan dalam makalah berada di luar cakupan tutorial ini. Fitur-fitur tersebut antara lain:
Skalabilitas: Makalah asli menggunakan model pra-latih berukuran besar dan sumber daya komputasi yang ekstensif. Demo menggunakan jaringan saraf yang lebih kecil dan menghindari pra-pelatihan yang kompleks.
Strategi MCTS lanjutan: Teknik seperti UCT adaptif dan strategi eksplorasi beragam belum diimplementasikan sepenuhnya.
Generalisasi tugas: Implementasi ini berfokus hanya pada penyelesaian persamaan aljabar, sedangkan RStar dirancang untuk melakukan generalisasi di berbagai tugas matematika yang lebih luas.
Dataset: Alih-alih menggunakan dataset terkurasi untuk pelatihan, demo mengandalkan penalaran simbolik dan masukan dari pengguna.
Langkah 1: Prasyarat
Demo ini dibagi menjadi beberapa komponen, masing-masing mencerminkan bagian dari metodologi RStar. Sebelum mulai, pastikan Anda telah memasang hal-hal berikut:
Python 3.8+
Pustaka yang diperlukan: Pasang paket Python yang diperlukan menggunakan pip:
import gradio as gr
import numpy as np
import torch
import re
import torch.nn as nn
import torch.optim as optim
from sympy import symbols, Eq, solve, N, sin, cos, tan, exp, log, E, sympify
from random import choiceDidukung oleh
Kini semua dependensi telah terpasang, mari siapkan komponen utamanya.
Langkah 2: Jaringan Saraf untuk Kebijakan dan Penghargaan
Jaringan ini adalah versi ringan dari model yang dijelaskan dalam makalah, digunakan untuk memprediksi aksi berikutnya dan mengevaluasi keberhasilan. Model kebijakan memprediksi langkah berikut untuk menyelesaikan persamaan yang diberikan. Ia menggunakan jaringan saraf feedforward untuk memproses representasi masalah yang terenkode.
Serupa, model penghargaan mengevaluasi solusi parsial untuk membimbing proses MCTS. Kedua model diimplementasikan menggunakan PyTorch.
classPolicyModel(nn.Module):def__init__(self, input_size, hidden_size, output_size):super().__init__()
self.fc1 = nn.Linear(input_size, hidden_size)
self.fc2 = nn.Linear(hidden_size, output_size)
self.relu = nn.ReLU()defforward(self, x):
x = self.relu(self.fc1(x))
x = self.fc2(x)return x
classRewardModel(nn.Module):def__init__(self, input_size, hidden_size, output_size):super().__init__()
self.fc1 = nn.Linear(input_size, hidden_size)
self.fc2 = nn.Linear(hidden_size, output_size)
self.relu = nn.ReLU()defforward(self, x):
x = self.relu(self.fc1(x))
x = self.fc2(x)return xDidukung oleh
Selanjutnya, kita membuat kelas node untuk pohon MCTS.
Langkah 3: Kelas TreeNode untuk merepresentasikan Status MCTS
Kelas TreeNode merepresentasikan simpul dalam pohon MCTS. Setiap simpul berkaitan dengan suatu keadaan dalam proses pencarian, berisi:
Keadaan (misalnya, persamaan atau solusi parsial).
Referensi ke simpul induknya.
Daftar simpul anak (keadaan yang diperluas).
Kunjungan dan nilai-Q, yang melacak seberapa sering simpul dijelajahi dan akumulasi hadiahnya.
classTreeNode:"""Represents a node in the MCTS tree."""def__init__(self, state, parent=None):
self.state = state # Current state
self.parent = parent
self.children =[]
self.visits =0
self.q_value =0.0# Accumulated rewardsdefis_fully_expanded(self):returnlen(self.children)>0defbest_child(self, exploration_weight=1.4):"""Select the best child using UCT formula."""defuct_value(child):return(child.q_value /(child.visits +1e-6))+ exploration_weight * np.sqrt(np.log(self.visits +1)/(child.visits +1e-6))returnmax(self.children, key=uct_value)defadd_child(self, child_state):"""Add a child node with the given state."""
child = TreeNode(state=child_state, parent=self)
self.children.append(child)return childDidukung oleh
Kini struktur dasar telah siap, berikutnya kita akan bekerja dengan komponen inti demo.
Langkah 4: Kelas MathSolver
Kelas MathSolver adalah inti dari demo, menggabungkan penalaran simbolik dengan pencarian berbasis neural. Kelas ini mengimplementasikan beberapa komponen kunci:
A. Model kebijakan dan penghargaan
PolicyModel memprediksi langkah-langkah berikut untuk menyelesaikan persamaan, sementara RewardModel mengevaluasi keberhasilan solusi parsial atau lengkap.
Metode di atas menginisialisasi kelas MathSolver dengan menyiapkan komponen yang diperlukan untuk menyelesaikan masalah matematika. Kelas ini secara opsional menerima dataset masalah matematika dan menginisialisasi dua jaringan saraf: model kebijakan, yang memprediksi aksi berikutnya, dan model penghargaan, yang mengevaluasi keberhasilan aksi.
Kini kita memiliki fungsi kebijakan dan penghargaan. Selanjutnya, kita perlu mengurai dan mengenkode persamaan masukan.
B. Parsing dan pengenkodean persamaan
Persamaan diurai menggunakan sympy dan dienkode menjadi vektor fitur untuk diproses oleh model kebijakan dan penghargaan.
defencode_problem(self, problem):# Advanced encoding using symbolic representation and problem length
variables =len(re.findall(r'[a-zA-Z]', problem))
operators =len(re.findall(r'[\+\-\*/\^]', problem))
problem_length =len(problem)return np.array([variables, operators, problem_length]+[0]*125)Didukung oleh
Metode encode_problem mengonversi masalah matematika menjadi representasi numerik berdimensi tetap untuk model. Metode ini mengekstrak fitur seperti jumlah variabel, operator, dan panjang masalah, lalu mengenodenya ke dalam array NumPy berdimensi 128. Representasi ini menangkap struktur masalah, sehingga memungkinkan pemrosesan model yang efektif.
C. Prediksi model kebijakan
Kode berikut menghasilkan langkah-langkah untuk menyelesaikan persamaan yang diberikan, termasuk mendefinisikan variabel, membuat persamaan, dan menyelesaikannya.
defpolicy_model_predict(self, equation1, equation2=None):try:
equations =[]if equation1:
equations.append(sympify(equation1.strip()))# Sympify only equationsif equation2:
equations.append(sympify(equation2.strip()))
all_variables =set()for eq in equations:
all_variables.update(eq.free_symbols)
var_definitions =[f"{v} = symbols('{v}')"for v in all_variables]
steps =[("Define variables","\n".join(var_definitions)),("Define equation(s)",f"equations = {equations}"),("Solve equation(s)",f"solution = solve(equations, {list(all_variables)})"),("Print solution","print(solution)")]return steps
except Exception as e:print(f"Error during policy model prediction: {e}")return[]Didukung oleh
Fungsi policy_model_predict mengurai persamaan masukan menggunakan sympify dari SymPy untuk memastikan persamaan tersebut valid. Fungsi ini kemudian mengidentifikasi semua variabel yang ada dalam persamaan dan menyelesaikannya menggunakan fungsi solve dari SymPy. Metode ini berfungsi sebagai panduan tingkat tinggi untuk alur kerja pemecahan masalah.
D. Prediksi model penghargaan
Metode reward_model_predict berperan penting dalam reinforcement learning dengan memberikan umpan balik untuk aksi yang diambil selama rollout Monte Carlo Tree Search (MCTS).
Fungsi ini mengenode langkah-langkah pemecahan masalah ke dalam format numerik dan mengevaluasinya melalui model penghargaan, mengembalikan nilai positif untuk keberhasilan dan negatif untuk kegagalan. Umpan balik ini melatih model kebijakan, membimbingnya untuk memprioritaskan aksi yang efektif dan meningkatkan pengambilan keputusan. Dengan fungsi prediksi model kebijakan dan penghargaan yang sudah siap, kini kita dapat mengerjakan tugas eksekusi.
E. Fungsi eksekusi kode
Metode ini menangani solusi multi-variabel sebagai tuple atau kamus dan mengonversi hasil simbolik ke pendekatan numerik menggunakan fungsi N dari SymPy.
defexecute_code(self, code):try:# Ensure necessary imports and variables are in the execution contextexec("from sympy import symbols, Eq, solve, N, sin, cos, tan, exp, log, E", self.execution_context)# Dynamically initialize variables in the contextfor var_def in self.execution_context.get('var_definitions',[]):exec(var_def, self.execution_context)exec(code, self.execution_context)if"solution"in self.execution_context:
symbolic_solution = self.execution_context["solution"]# Handle multi-variable solutions as tuplesifisinstance(symbolic_solution,list):
self.execution_context["solution"]=[tuple(map(N, sol))ifisinstance(sol,tuple)else N(sol)for sol in symbolic_solution]elifisinstance(symbolic_solution,dict):
self.execution_context["solution"]={k: N(v)for k, v in symbolic_solution.items()}else:
self.execution_context["solution"]= N(symbolic_solution)returnTrueexcept Exception as e:print(f"Error executing code: {e}")returnFalseDidukung oleh
Metode ini memastikan komputasi yang akurat dan mendukung penanganan fleksibel untuk berbagai format solusi. Jika terjadi kesalahan, metode akan mencatat masalahnya dan mengembalikan False, sehingga menjaga penanganan kesalahan yang tangguh.
F. Monte Carlo Tree Search (MCTS)
Metode MCTS secara iteratif memilih keadaan terbaik, memperluas pohon pencarian, dan mensimulasikan solusi yang mungkin. Hadiah dari simulasi disebarkan kembali untuk meningkatkan pengambilan keputusan.
Metode mcts melakukan empat langkah kunci secara iteratif:
Seleksi: Membantu menavigasi turun ke pohon menggunakan simpul anak terbaik.
Ekspansi: Pada langkah ini, simpul anak baru dibuat menggunakan metode policy_model_predict.
Simulasi: Semua aksi dijalankan, dan keberhasilan ditentukan pada langkah ini.
Backpropagasi: Hadiah dihitung menggunakan metode reward_model_predict dan dipropagasikan ke atas pohon untuk memperbarui nilai simpul.
Setelah jumlah rollout yang ditentukan, metode ini mengembalikan keadaan dari simpul anak terbaik, yang merepresentasikan solusi paling menjanjikan yang dieksplorasi selama pencarian.
G.Eksekusi solusi
Metode solve mengorkestrasi seluruh proses, mulai dari parsing persamaan hingga mengeksekusi dan memvalidasi solusi.
defsolve(self, equation1, equation2=None):
self.execution_context ={}
steps = self.policy_model_predict(equation1, equation2)
variables =set()for eq in[equation1, equation2]if equation2 else[equation1]:if eq:
variables.update(sympify(eq.strip()).free_symbols)
self.execution_context['var_definitions']=[f"{v} = symbols('{v}')"for v in variables]
steps_output =["Best solution found:"]for step, code in steps:
steps_output.append(f"Step: {step}")
steps_output.append(f"Code: {code}")if self.execute_code(code):
steps_output.append("Execution successful.")else:
steps_output.append("Execution failed.")if"solution"in self.execution_context:
final_answer = self.execution_context["solution"]ifisinstance(final_answer,dict):for var, value in final_answer.items():
steps_output.append(f"{var} = {value}")elifisinstance(final_answer,list):for solution in final_answer:ifisinstance(solution,tuple):for idx, var inenumerate(variables):
steps_output.append(f"{list(variables)[idx]} = {solution[idx]}")else:
steps_output.append(f"Solution: {solution}")else:
steps_output.append(f"Final Answer: {final_answer}")else:
steps_output.append("No final answer found.")return"\n".join(steps_output)Didukung oleh
Metode solve memproses satu atau dua persamaan yang diberikan pengguna dengan menginisialisasi konteks eksekusi dan menghasilkan langkah-langkah melalui policy_model_predict. Metode ini mengeksekusi setiap langkah, mencatat progres, dan melaporkan keberhasilan atau kegagalan. Solusi, termasuk hasil satu dan multi-variabel, diformat dengan nama variabel dan nilainya untuk kejelasan. Jika tidak ditemukan solusi, pesan yang sesuai akan ditampilkan.
Semua komponen inti telah siap, jadi kita dapat mengerjakan aplikasi Gradio berikutnya.
Langkah 5: Membuat Antarmuka yang Ramah Pengguna dengan Gradio
Antarmuka Gradio memungkinkan pengguna memasukkan persamaan (satu atau lebih), menyelesaikannya, dan melihat hasilnya secara interaktif.
with gr.Blocks()as app:
gr.Markdown("# Math Problem Solver with Advanced Multi-Step Reasoning and Learning")with gr.Row():
equation1_input = gr.Textbox(label="Enter the first equation (e.g., x + y - 3)", placeholder="x + y - 3")
equation2_input = gr.Textbox(label="Enter the second equation (optional, e.g., x - y - 1)", placeholder="x - y - 1")
solve_button = gr.Button("Solve")
solution_output = gr.Textbox(label="Solution", interactive=False)
solve_button.click(solve_math_problem, inputs=[equation1_input, equation2_input], outputs=[solution_output])
app.launch(debug=True)Didukung oleh
Kode di atas membuat antarmuka pengguna Gradio untuk menyelesaikan persamaan matematika dengan penalaran tingkat lanjut. Antarmuka dibungkus dalam kontainer gr.Blocks, yang berisi dua bidang input menggunakan gr.Textbox: satu untuk persamaan pertama (wajib) dan satu lagi untuk persamaan kedua (opsional).
Keluaran ditampilkan dalam satu gr.Textbox berlabel "Solution". Perintah interface.launch() meluncurkan aplikasi Gradio di browser, dan flag debug=True mengaktifkan log terperinci untuk membantu melacak kesalahan.
Langkah 6: Pengujian dan Validasi
Saatnya menguji aplikasi Penyelesai Masalah Matematika kita. Berikut beberapa pengujian yang saya jalankan:
1.Satu variabel satu persamaan: Saya mencoba mencari nilai yang mungkin dari satu variabel x dengan memberikan satu persamaan sebagai masukan.
2. Masalah multi-variabel multi-persamaan: Saya memasukkan dua persamaan dengan dua variabel untuk mencari nilai yang mungkin dari variabel x dan y.
Kemungkinan Ekstensi
Demo ini adalah versi dasar dari apa yang dapat kita capai dengan kapabilitas metode rStar-math. Masih banyak pekerjaan yang dapat dilakukan untuk memperluas kemampuannya.
Tambahkan model bahasa pra-latih untuk meningkatkan kemampuan penalaran model kebijakan.
Integrasikan strategi MCTS lanjutan atau coba teknik eksplorasi beragam untuk meningkatkan efisiensi dan akurasi proses pencarian.
Perluas demo untuk menyelesaikan persamaan polinomial derajat lebih tinggi dan sistem persamaan yang kompleks.
Latih model pada dataset persamaan yang lebih besar untuk meningkatkan generalisasi.
Perluas demo untuk menangani tugas penalaran tambahan di luar matematika.
Anda dapat merujuk ke repositori asli dari makalah rStar-math diGitHub.
Kesimpulan
Demo ini menampilkan implementasi praktis penalaran multi-langkah untuk menyelesaikan persamaan matematika. Dengan menggabungkan jaringan saraf, penalaran simbolik, dan MCTS, demo ini memberikan gambaran tentang bagaimana teknik AI tingkat lanjut dapat menangani tugas penalaran terstruktur. Peningkatan di masa depan dapat membawanya lebih dekat ke kapabilitas penuh kerangka kerja RStar.
Saya adalah Google Developers Expert di ML (Gen AI), Kaggle 3x Expert, dan Women Techmakers Ambassador dengan pengalaman lebih dari 3 tahun di bidang teknologi. Saya ikut mendirikan startup health-tech pada 2020 dan sedang menempuh studi magister ilmu komputer di Georgia Tech dengan spesialisasi machine learning.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Pelajari cara membuat aplikasi yang didukung oleh kecerdasan buatan (AI) menggunakan alat pengembangan AI terbaru, termasuk OpenAI API, Hugging Face, dan LangChain.
Coba gunakan Llama 3 untuk menjalankan inferensi pada model yang telah dilatih sebelumnya, menyesuaikan model tersebut pada dataset kustom, dan mengoptimalkan kinerjanya.
Makalah RStar-math dari Microsoft menyajikan pendekatan inovatif untuk menyelesaikan masalah matematika menggunakan kombinasi reinforcement learning, penalaran simbolik, dan Monte Carlo Tree Search (MCTS).
Dalam blog ini, saya akan membahas kerangka kerja RStar dan komponen intinya. Selanjutnya, saya akan memandu Anda langkah demi langkah melalui implementasi sederhana yang mendemonstrasikan konsep-konsep kuncinya menggunakan Gradio. Meskipun demo ini terinspirasi oleh makalah tersebut, beberapa kompleksitas telah disederhanakan agar lebih mudah diakses.
Apa itu rStar-Math dari Microsoft?
RStar math bertujuan menjembatani penalaran simbolik dengan kemampuan generalisasi model neural pra-latih. Kerangka kerja ini mengintegrasikan komponen seperti Monte Carlo Tree Search (MCTS), model bahasa pra-latih, dan reinforcement learning untuk memungkinkan eksplorasi strategi pemecahan masalah secara efisien.
Gagasan utamanya adalah merepresentasikan penalaran matematika sebagai proses pencarian di atas pohon terstruktur dari langkah-langkah yang mungkin, di mana setiap simpul mewakili solusi parsial atau keadaan.
Sumber: Guan et al., 2025
Beberapa alasan yang membuat rStar-Math menarik bagi saya antara lain:
Gambaran Proyek Demo: Penyelesai Masalah Matematika dengan Gradio
Demo ini menunjukkan bagaimana model kebijakan dan model penghargaan, dipadukan dengan penalaran simbolik menggunakan pustaka
sympy, dapat menangani masalah matematika secara terstruktur. Fitur utama dari implementasi ini meliputi:Agar demo tetap sederhana dan fokus, beberapa fitur lanjutan yang disebutkan dalam makalah berada di luar cakupan tutorial ini. Fitur-fitur tersebut antara lain:
Langkah 1: Prasyarat
Demo ini dibagi menjadi beberapa komponen, masing-masing mencerminkan bagian dari metodologi RStar. Sebelum mulai, pastikan Anda telah memasang hal-hal berikut:
Lalu, impor pustaka-pustaka ini:
Kini semua dependensi telah terpasang, mari siapkan komponen utamanya.
Langkah 2: Jaringan Saraf untuk Kebijakan dan Penghargaan
Jaringan ini adalah versi ringan dari model yang dijelaskan dalam makalah, digunakan untuk memprediksi aksi berikutnya dan mengevaluasi keberhasilan. Model kebijakan memprediksi langkah berikut untuk menyelesaikan persamaan yang diberikan. Ia menggunakan jaringan saraf feedforward untuk memproses representasi masalah yang terenkode.
Serupa, model penghargaan mengevaluasi solusi parsial untuk membimbing proses MCTS. Kedua model diimplementasikan menggunakan PyTorch.
Selanjutnya, kita membuat kelas node untuk pohon MCTS.
Langkah 3: Kelas TreeNode untuk merepresentasikan Status MCTS
Kelas
TreeNodemerepresentasikan simpul dalam pohon MCTS. Setiap simpul berkaitan dengan suatu keadaan dalam proses pencarian, berisi:Kini struktur dasar telah siap, berikutnya kita akan bekerja dengan komponen inti demo.
Langkah 4: Kelas MathSolver
Kelas
MathSolveradalah inti dari demo, menggabungkan penalaran simbolik dengan pencarian berbasis neural. Kelas ini mengimplementasikan beberapa komponen kunci:A. Model kebijakan dan penghargaan
PolicyModelmemprediksi langkah-langkah berikut untuk menyelesaikan persamaan, sementaraRewardModelmengevaluasi keberhasilan solusi parsial atau lengkap.Metode di atas menginisialisasi kelas
MathSolverdengan menyiapkan komponen yang diperlukan untuk menyelesaikan masalah matematika. Kelas ini secara opsional menerima dataset masalah matematika dan menginisialisasi dua jaringan saraf: model kebijakan, yang memprediksi aksi berikutnya, dan model penghargaan, yang mengevaluasi keberhasilan aksi.Kini kita memiliki fungsi kebijakan dan penghargaan. Selanjutnya, kita perlu mengurai dan mengenkode persamaan masukan.
B. Parsing dan pengenkodean persamaan
Persamaan diurai menggunakan
sympydan dienkode menjadi vektor fitur untuk diproses oleh model kebijakan dan penghargaan.Metode
encode_problemmengonversi masalah matematika menjadi representasi numerik berdimensi tetap untuk model. Metode ini mengekstrak fitur seperti jumlah variabel, operator, dan panjang masalah, lalu mengenodenya ke dalam array NumPy berdimensi 128. Representasi ini menangkap struktur masalah, sehingga memungkinkan pemrosesan model yang efektif.C. Prediksi model kebijakan
Kode berikut menghasilkan langkah-langkah untuk menyelesaikan persamaan yang diberikan, termasuk mendefinisikan variabel, membuat persamaan, dan menyelesaikannya.
Fungsi
policy_model_predictmengurai persamaan masukan menggunakansympifydari SymPy untuk memastikan persamaan tersebut valid. Fungsi ini kemudian mengidentifikasi semua variabel yang ada dalam persamaan dan menyelesaikannya menggunakan fungsi solve dari SymPy. Metode ini berfungsi sebagai panduan tingkat tinggi untuk alur kerja pemecahan masalah.D. Prediksi model penghargaan
Metode
reward_model_predictberperan penting dalam reinforcement learning dengan memberikan umpan balik untuk aksi yang diambil selama rollout Monte Carlo Tree Search (MCTS).Fungsi ini mengenode langkah-langkah pemecahan masalah ke dalam format numerik dan mengevaluasinya melalui model penghargaan, mengembalikan nilai positif untuk keberhasilan dan negatif untuk kegagalan. Umpan balik ini melatih model kebijakan, membimbingnya untuk memprioritaskan aksi yang efektif dan meningkatkan pengambilan keputusan. Dengan fungsi prediksi model kebijakan dan penghargaan yang sudah siap, kini kita dapat mengerjakan tugas eksekusi.
E. Fungsi eksekusi kode
Metode ini menangani solusi multi-variabel sebagai tuple atau kamus dan mengonversi hasil simbolik ke pendekatan numerik menggunakan fungsi
Ndari SymPy.Metode ini memastikan komputasi yang akurat dan mendukung penanganan fleksibel untuk berbagai format solusi. Jika terjadi kesalahan, metode akan mencatat masalahnya dan mengembalikan
False, sehingga menjaga penanganan kesalahan yang tangguh.F. Monte Carlo Tree Search (MCTS)
Metode MCTS secara iteratif memilih keadaan terbaik, memperluas pohon pencarian, dan mensimulasikan solusi yang mungkin. Hadiah dari simulasi disebarkan kembali untuk meningkatkan pengambilan keputusan.
Metode
mctsmelakukan empat langkah kunci secara iteratif:policy_model_predict.reward_model_predictdan dipropagasikan ke atas pohon untuk memperbarui nilai simpul.Setelah jumlah rollout yang ditentukan, metode ini mengembalikan keadaan dari simpul anak terbaik, yang merepresentasikan solusi paling menjanjikan yang dieksplorasi selama pencarian.
G. Eksekusi solusi
Metode solve mengorkestrasi seluruh proses, mulai dari parsing persamaan hingga mengeksekusi dan memvalidasi solusi.
Metode
solvememproses satu atau dua persamaan yang diberikan pengguna dengan menginisialisasi konteks eksekusi dan menghasilkan langkah-langkah melaluipolicy_model_predict. Metode ini mengeksekusi setiap langkah, mencatat progres, dan melaporkan keberhasilan atau kegagalan. Solusi, termasuk hasil satu dan multi-variabel, diformat dengan nama variabel dan nilainya untuk kejelasan. Jika tidak ditemukan solusi, pesan yang sesuai akan ditampilkan.Semua komponen inti telah siap, jadi kita dapat mengerjakan aplikasi Gradio berikutnya.
Langkah 5: Membuat Antarmuka yang Ramah Pengguna dengan Gradio
Antarmuka Gradio memungkinkan pengguna memasukkan persamaan (satu atau lebih), menyelesaikannya, dan melihat hasilnya secara interaktif.
Kode di atas membuat antarmuka pengguna Gradio untuk menyelesaikan persamaan matematika dengan penalaran tingkat lanjut. Antarmuka dibungkus dalam kontainer
gr.Blocks, yang berisi dua bidang input menggunakangr.Textbox: satu untuk persamaan pertama (wajib) dan satu lagi untuk persamaan kedua (opsional).Keluaran ditampilkan dalam satu
gr.Textboxberlabel"Solution". Perintahinterface.launch()meluncurkan aplikasi Gradio di browser, dan flagdebug=Truemengaktifkan log terperinci untuk membantu melacak kesalahan.Langkah 6: Pengujian dan Validasi
Saatnya menguji aplikasi Penyelesai Masalah Matematika kita. Berikut beberapa pengujian yang saya jalankan:
1. Satu variabel satu persamaan: Saya mencoba mencari nilai yang mungkin dari satu variabel
xdengan memberikan satu persamaan sebagai masukan.2. Masalah multi-variabel multi-persamaan: Saya memasukkan dua persamaan dengan dua variabel untuk mencari nilai yang mungkin dari variabel
xdany.Kemungkinan Ekstensi
Demo ini adalah versi dasar dari apa yang dapat kita capai dengan kapabilitas metode rStar-math. Masih banyak pekerjaan yang dapat dilakukan untuk memperluas kemampuannya.
Anda dapat merujuk ke repositori asli dari makalah rStar-math di GitHub.
Kesimpulan
Demo ini menampilkan implementasi praktis penalaran multi-langkah untuk menyelesaikan persamaan matematika. Dengan menggabungkan jaringan saraf, penalaran simbolik, dan MCTS, demo ini memberikan gambaran tentang bagaimana teknik AI tingkat lanjut dapat menangani tugas penalaran terstruktur. Peningkatan di masa depan dapat membawanya lebih dekat ke kapabilitas penuh kerangka kerja RStar.