Automata không có gì khó hiểu!

Khi nhắc đến Lý thuyết tính toán (Theory of Computation) nghĩa là chúng ta đang bàn đến một nhánh của Khoa học máy tính (Coputer Science), lĩnh vực có thể giải quyết các vấn đề tính toán bằng cách sử dụng thuật toán (algorithm) và các mô hình tính toán (model of computation).
Automata không có gì khó hiểu!
Automata không có gì khó hiểu!
Nguyễn Văn Hiến
10:51 ngày 02/11/2023
0
0

Automata không có gì khó hiểu!

Khi nhắc đến Lý thuyết tính toán (Theory of Computation) nghĩa là chúng ta đang bàn đến một nhánh của Khoa học máy tính (Coputer Science), lĩnh vực có thể giải quyết các vấn đề tính toán bằng cách sử dụng thuật toán (algorithm) và các mô hình tính toán (model of computation).

Khi cần xử lý một bài toán bằng máy tính, chúng ta sẽ tự hỏi rằng:

- Liệu vấn đề này có thể giải quyết bằng cách sử dụng thuật toán hay không?
- Nếu có thì làm thế nào để cách xử lý được tối ưu nhất?
- Và đáp án cho bài toán này là tuyệt đối hay tương đối?

Từ lý thuyết (theory), thuật toán (algorithm), đến mô hình (model) - hay gọi là tiến trình hoàn hảo để xử lý một vấn đề

Automata là gì?

Chúng ta đều biết, căn bản là máy tính không thể hiểu ngôn ngữ của con người. Bởi vì ngôn ngữ của con người khá phức tạp: từ các quy tắc ngữ pháp rối rắm, đến từ lóng, thổ ngữ địa phương... Và ngay cả một cụm từ, khi nó xuất hiện trong ngữ cảnh này có ý nghĩa khác, còn trong ngữ cảnh kia lại có hàm ý khác hẵn.

Tuy nhiên, sự phát triển của công nghệ, khoa học kỹ thuật đã buộc con người nhảy đến một bước tiến mới: nảy sinh nhu cầu giao tiếp với máy móc và điều khiển máy móc làm việc theo ý mình. Và để giải quyết nhu cầu này, việc tìm kiếm các giải pháp để tự động hóa quy trình sản xuất được nghiên cứu.

Lý thuyết Automata thuộc về trường phái ngôn ngữ hình thức (formal languages), nơi có nhiệm vụ nghiên cứu lĩnh vực lý thuyết về khoa học máy tính và tìm kiếm các giải pháp ứng dụng học máy. Ý tưởng về Automata dược khởi đầu từ 2 nhà thần kinh học người Mỹ Warren McCullough và Walter Pitts trong một bài báo, đại ý rằng, có khả năng mô mình hóa suy nghĩ của con người thành một quy trình và người máy có thể bắt chước theo quy trình này và trở nên thông minh hơn.

Về cơ bản, automata tương đối giống với Lý thyết tính toán (Theory of Computation) nhưng automate phải tuân theo một quy trình có quy tắc. Bên trong automate chứa đựng các thuật toán. Khi có dữ liệu đầu vào, thuật toán chịu trách nhiệm xử lý cho đến khi cung cấp đầu ra (giải pháp).

Nếu nói riêng về lĩnh vực xử lý ngôn ngữ tự nhiên: Automata là quá trình đi từ từ lý thuyết, thử nghiệm thuật toán, thu thập dữ liệu, xử lý dự liệu, đào tạo mô hình cho đến khi hoàn thành các model có thể đưa vào áp dụng trong cuộc sống, như Chat GPT, gọi là automata.

Vài thuật ngữ cơ bản về automata

Sự xuất hiện của lý thuyết Automata trở thành nền tảng quan trọng trong lĩnh vực học máy, giúp máy tính có khả năng tiếp nhận đầu vào, xử lý, chuyển trạng thái và chọn phương án tốt nhất để giải quyết vấn đề.

Trước khi tìm hiểu về 4 giải pháp (mô hình) tính toán automata, chúng ta điểm qua vài thuật ngữ cơ bản như sau: 

(1) Symbols (Các biểu tượng)

Symbols là các biểu tượng, đối tượng, hoặc ký tự, hoặc một hình ảnh nào đó.

Ví dụ: a, A, c, d, e, f

(2) States (Các trạng thái)

Automata luôn tập hợp các trạng thái, một trong những trạng thái của nó là trạng thái khởi động.

(3) Alphabets - Σ (Các ký tự)

Alphabets là một tập hợp của các biểu tượng, trạng thái của nó luôn là HỮU HẠN, viết tắt là Σ.

Ví dụ: 

∑ = {a, b}  
  
∑ = {A, B, C, D}  
  
∑ = {0, 1, 2}  
  
∑ = {0, 1, ....., 5]  
  
∑ = {#, β, Δ}  

(4) Strings (Chuỗi văn bản)

Là một tập hợp hữu hạn được lấy từ bảng chữ cái. Chuỗi String được ký hiệu là |w|.

ví dụ:
w = 010
Number of Sting |w| = 3  

(5) Language (Ngôn ngữ)

Ngôn ngữ là tập hợp của một chuỗi các từ được định sẵn và được nó chấp nhận. Nếu ngôn ngữ của automata là tập hợp "hello", "word" thì khi dữ liệu đầu vào là "hello" thì nó sẽ ở trạng thái chấp nhận, nếu ngôn ngữ ngoài phạm vi thì nó sẽ ở trạng thái từ chối.

(6) Rules (Các quy tắc)

Automate có một bộ quy tắc mô tả cách thức hoạt động của nó. Khi có dữ liệu đầu vào, nó sẽ phản ứng và cho biết trạng thái tiếp theo.

(7) States: Các trạng thái

Bây giờ chúng ta xem xét một ví dụ về đèn giao thông để làm rõ thế nào là <b>trạng thái máy học hữu</b> hạn.

3 trạng thái của đèn giao thông là:

Đèn đỏ: Phải dừng;
Đèn vàng: Chuẩn bị;
Đèn xanh: Phải đi;

Và rõ ràng là tại một thời điểm, đèn giao thông chỉ có một trạng thái duy nhất.

Bây giờ chúng ta xem xét ví dụ được triển khai bằng Java:

public class TrafficLightFSM {
    private enum State { RED, YELLOW, GREEN }
    
    private State currentState;
    
    public TrafficLightFSM() {
        currentState = State.RED; // Khởi tạo trạng thái ban đầu là Đỏ.
    }
    
    public void changeState() {
        switch (currentState) {
            case RED:
                System.out.println("Chuyển từ Đỏ sang Vàng.");
                currentState = State.YELLOW;
                break;
            case YELLOW:
                System.out.println("Chuyển từ Vàng sang Xanh.");
                currentState = State.GREEN;
                break;
            case GREEN:
                System.out.println("Chuyển từ Xanh sang Đỏ.");
                currentState = State.RED;
                break;
        }
    }
    
    public String getCurrentState() {
        return currentState.toString();
    }
    
    public static void main(String[] args) {
        TrafficLightFSM trafficLight = new TrafficLightFSM();
        
        for (int i = 0; i < 10; i++) {
            System.out.println("Trạng thái hiện tại: " + trafficLight.getCurrentState());
            trafficLight.changeState();
        }
    }
}

 

Tác giả

Nguyễn Văn Hiến

Tôi là Nguyễn Văn Hiến, Founder của Tummosoft. Tôi có hơn 20 năm lập trình, vào thời điểm máy vi tính còn là tài sản quý giá của người giàu. Nhưng sức đam mê công nghệ của tôi đã giúp tôi vượt qua những khó khăn và theo đuổi nghề lập trình. Đối với tôi, sáng tạo các sản phẩm công nghệ bằng ngôn ngữ cũng giống như người nghệ sĩ sáng tác những họa phẩm.

Tổng quan về xử lý ngôn ngữ tự nhiên

Chatbot ngày nay đã vượt qua vai trò là công cụ tiêu khiển, nó thông minh hơn, hiểu biết nhiều vấn đề hơn, biết lập trình và biết xử lý cả tình huống…. Và để có được thành tựu như hôm nay, chatbot đã khởi đầu bằng công nghệ kiểu như robot ELIZA.

Hệ thống lý luận Bayesian

Từ những năm 1960, việc sử dụng kho ngữ liệu lớn để xử lý ngôn ngữ tự nhiên bắt đầu được định hình. Bộ sưu tập Ameriacan English đã tổng hợp được hơn một triệu văn bản từ các tạp chí, báo, tiểu thuyết...

Mô hình xác xuất The Noisy Channel, giải pháp xử lý tín hiệu bị nhiễu sau truyền dẫn

Giai đoạn thứ 3 (1970-1983) chứng kiến sự phát triển mạnh mẽ của ngành xử lý ngôn ngữ tự nhiên và nhận dạng tiếng nói và đồng thời các thuật toán và mô hình đã được phát triển đó vẫn được duy trì phát triển.

Mô hình ẩn Hidden Markov Model (HMM), bước tiến lớn trong lĩnh vực trí tuệ nhân tạo

Mô hình ẩn Hidden Markov Model (HMM) được phát triển trên lý thuyết xác xuất thông kê, giả định rằng: Có 2 nguồn thông tin: (1) Một nguồn thì có thể thu thập được; và nguồn thứ (2) thì không thu thập được (bị ẩn). Và chúng ta có thể giải mã nguồn thông tin thứ 2 qua xác xuất và suy luận.

Xác suất có điều kiện (conditional probability) và ví dụ bằng Java

Xác suất có điều kiện là bài toán dùng để tính một sự kiện B có (hoặc không) khả năng xảy ra khi biết rằng sự kiện A đã xảy ra. Công thức dùng để tính xác xuất có điều kiện là P(B|A).

Automata không có gì khó hiểu!

Khi nhắc đến Lý thuyết tính toán (Theory of Computation) nghĩa là chúng ta đang bàn đến một nhánh của Khoa học máy tính (Coputer Science), lĩnh vực có thể giải quyết các vấn đề tính toán bằng cách sử dụng thuật toán (algorithm) và các mô hình tính toán (model of computation).