Chuyển đến nội dung chính

Data-Driven Programming

Data-Driven Programming Data driven progamming is a programming model where the data itself controls the flow of the program and not the program logic. It is a model where you control the flow by offering different data sets to the program where the program logic is some generic form of flow or of state-changes. set1: DOWN - STOP - START - STOP - UP - STOP set2: UP - DOWN - UP - DOWN For example if you have program that has four states: UP - DOWN - STOP - START You can control this program by offering input (data) that represents the states: The program code stays the same but data set (which is not of a dynamic input type but statically given to the computer) controls the flow. Although there are more than a few ideas as to what data driven programming is, allow me to give an example using a data structure and a function. Non data driven example: data_lloyd = {'name': 'Lloyd', 'lives': 'Alcoy } data_jason = {'name': 'Jason', 'lives':...

Machine Learning ( Máy học)

 Machine Learning ( Máy Học)

1. Machine learning là gì?

Machine learning là gì? Machine learning là một lĩnh vực con của Trí tuệ nhân tạo(Artificial Intelligence) sử dụng các thuật toán cho phép máy tính có thể học từ dữ liệu để thực hiện các công việc thay vì được lập trình một cách rõ ràng.

Bạn đã hiểu rồi chứ? Chúng ta có thể làm cho máy tính học để làm công việc gì đó! Điều này nghe có vẻ khá trừu tượng. Nó có nghĩa rằng, chúng ta có thể lập trình cho các máy tính có khả năng tự học.

Khả năng học tập là một yếu tố then chốt của trí thông minh.

Nếu mang khái niệm này sang machine learning, có vẻ đây là một bước tiến lớn làm cho máy móc thông minh hơn. Trên thực tế, hiện nay Machine learning đang là lĩnh vực cho thấy sự tiến bộ trong tiến trình của Trí tuệ nhân tạo. Nó đang là một chủ đề nóng và có khả năng làm cho máy móc trở nên thông minh hơn.

Bài viết này sẽ cố gắng giúp mọi người hiểu machine learning là gì qua những khái niệm đơn giản nhất. Tôi sẽ trình bày tổng quan về các khái niệm quan trọng, các ứng dụng và thách thức của Machine learning. Bài viết này không thể cung cấp tất cả mọi thứ về ML. Mà tôi sẽ đưa ra các khái niệm nền tảng để mọi người có thể tiếp tục tìm hiểu.

2. Machine learning trên thực tế

Okay, chẳng có gì là hoàn hảo hết. Machine learning cũng có những giới hạn của nó. Chúng ta không thể nào xây dựng một cỗ máy thông minh để học dữ liệu từ cổ chí kim tới hiện tại. Tuy nhiên, đã có những ứng dụng thực tế mà machine learning làm rất tốt. Sau đây là các lĩnh vực phổ biến mà machine learing góp mặt:

2.1. Xử lý ảnh

Bài toán xử lý ảnh(Image Processing) giải quyết các vấn đề phân tích thông tin từ hình ảnh hay thực hiện một số phép biến đổi. Một số ví dụ là:

  • Gắn thẻ hình ảnh(Image Tagging), giống như Facebook, một thuật toán tự động phát hiện khuôn mặt của bạn và bạn bè trên những bức ảnh. Về cơ bản, thuật toán này học từ những bức ảnh mà bạn tự gắn thẻ cho mình trước đó.
  • Nhận dạng ký tự(Optical Character Recognition), là một thuật toán chuyển dữ liệu trên giấy tờ, văn bản thành dữ liệu số hóa. Thuật toán phải học cách nhận biết ảnh chụp của một ký tự là ký tự nào.
  • Ô tô tự lái(Self-driving cars), một phần cơ chế sử dụng ở đây là xử lý ảnh. Một thuật toán machine learning giúp phát hiện các mép đường, biển báo hay các chướng ngại vật bằng cách xem xét từng khung hình video từ camera.

2.2. Phân tích văn bản

Phân tích văn bản(Text analysis) là công việc trích xuất hoặc phân lọi thông tin từ văn bản. Các văn bản ở đây có thể là các facebook posts, emails, các đoạn chats, tài liệu,… Một số ví dụ phổ biến là:

  • Lọc spam(Spam filtering), là một trong những ứng dụng phân loại văn bản được biết và sử dụng nhiều nhất. Ở đây, phân loại văn bản là xác định chủ đề cho một văn bản. Bộ lọc spam sẽ học cách phân loại một email có phải spam không dựa trên nội dung và tiêu đề của email.
  • Phân tích ngữ nghĩa(Sentiment Analysis), học cách phân loại một ý kiến là tích cực, trung tính hay tiêu cực dựa trên nội dung văn bản của người viết.
  • Khai thác thông tin(Information Extraction), từ một văn bản, học cách để trích xuất các thông tin hữu ích. Chẳng hạn như trích xuất địa chỉ, tên người, từ khóa,…

2.3. Khai phá dữ liệu

Khai phá dữ liệu(Data mining) là quá trình khám phá ra các thông tin có giá trị hoặc đưa ra các dự đoán từ dữ liệu. Định nghĩa này có vẻ bao quát, nhưng bạn hãy nghĩ về việc tìm kiếm thông tin hữu ích từ một bảng dữ liệu rất lớn. Mỗi bản ghi sẽ là một đối tượng cần phải học, và mỗi cột là một đặc trưng. Chúng ta có thể dự đoán giá trị của một cột của bản ghi mới dựa trên các bản ghi đã học. Hoặc là phân nhóm các bản ghi của bản. Sau đây là những ứng dụng của khai phá dữ liệu:

  • Phát hiện bất thường(Anomaly detection), phát hiện các ngoại lệ, ví dụ như phát hiện gian lận thẻ tín dụng. Bạn có thể phát hiện một giao dịch là khả nghi dựa trên các giao dịch thông thường của người dùng đó.
  • Phát hiện các quy luật(Association rules), ví dụ, trong một siêu thị hay một trang thương mại điện tử. Bạn có thể khám phá ra khách hàng thường mua các món hàng nào cùng nhau. Dễ hiểu hơn, khách hàng của bạn khi mua món hàng A thường mua kèm món hàng nào? Các thông tin này rất hữu ích cho việc tiếp thị sản phẩm.
  • Gom nhóm(Grouping), ví dụ, trong các nền tảng SaaS, người dùng được phân nhóm theo hành vi hoặc thông tin hồ sơ của họ.
  • Dự đoán(Predictions), các cột giá trị(của một bản ghi mới trong database). Ví dụ, bạn có thể dự đoán giá của căn hộ dựa trên các dữ liệu về giá các căn hộ bạn đã có.

2.4. Trò chơi điện tử & Robot

Trò chơi điện tử(Video games) và robot(Robotics) là lĩnh vực lớn có sự góp mặt của machine learning. Nếu ta có một nhân vật cần di chuyển và tránh các chướng ngại vật trong game. Machine learning có thể học và giải quyết công việc này thay bạn. Một kỹ thuật phổ biến được áp dụng  trong trường hợp này là Học tăng cường(Reinforcement learning). Ở đó, máy sẽ học tăng cường với mục tiêu là giải quyết nhiệm vụ trên. Học tăng cường là tiêu cực nếu nó va phải chướng ngại vật, là tích cực nếu nó chạm tới đích.

Một thành tựu gần đây nhất là cỗ máy Alpha Go của Google DeepMind đã đánh bại kỳ thủ cờ vậy số 1 thế giới. Trong khi cờ vây là một trò chơi có không gian trạng thái cực kỳ lớn.

Okey, tôi đã hiểu machine learning là gì rồi. Tôi cũng đã thấy được những giá trị mà nó đem lại rồi. Nhưng làm sao machine learning làm được điều đó?

Bài đăng phổ biến từ blog này

Hệ Điều Hành

Hệ điều hành là gì? Các loại hệ điều hành trên máy tính, điện thoại Các bạn đã từng nghe nhiều về hệ điều hành trên các thiết bị điện tử như:  Laptop ,  điện thoại ,... Vậy nó là gì và có vai trò quan trọng như thế nào? Hôm nay chúng ta cùng tìm hiểu thông qua bài viết này nhé! 1. Hệ điều hành là gì? - Giới thiệu chung Hệ điều hành (tiếng Anh:  Operating System  - viết tắt: OS) là một phần mềm dùng để điều hành, quản lý toàn bộ tất cả thành phần (bao gồm cả phần cứng và phần mềm) của thiết bị điện tử. Có vai trò trung gian trong việc giao tiếp giữa người sử dụng và thiết bị. hệ điều hành là gì - Hệ điều hành dành cho máy tính Được thiết kế để sử dụng trên những thiết bị như: Máy tính để bàn, laptop,… Đây là hệ điều hành sử dụng GUI. GUI cho phép bạn sử dụng chuột để nhấp vào mọi thứ trên màn hình hiển thị (bao gồm các biểu tượng , nút, menu,…) và được diễn tả bằng cách kết hợp hình ảnh cùng với văn bản. GUI của mỗi hệ điều hành có giao diện khác nhau, tuy nhiên các ...

CÁC THUẬT TOÁN SẮP XẾP CƠ BẢN

CÁC THUẬT TOÁN SẮP XẾP CƠ BẢN Khái niệm Bài toán sắp xếp là bài toán giải quyết việc tổ chức dữ liệu theo một trật tự nhất định, thường là tăng dần hoặc giảm dần. phép toán cơ bản cho bài toán sắp xếp: Phép toán đổi chỗ: Là phép toán đảo giá trị 2 biến void swap(datatype &a, datatype & b) { datatype temp = a ; a = b; b = temp ; } Phép toán so sánh: Trả về true nếu a > b và trả về false cho trường hợp ngược lại. bool compare (datatype a, datatype b) { if (a > b) { return true ; } else { return false ; } } Bảng ghi về độ phức tạp của các thuật toán sắp xếp Độ phức tạp càng lớn đồng nghĩa với việc thuật toán chạy càng chậm và càng lâu Ba thuật toán sắp xếp cơ bản 1. Sắp xếp chèn (Insertion Sort) Ý tưởng: Insertion Sort lấy ý tưởng từ việc chơi bài, dựa theo cách người chơi "chèn" thêm một quân bài mới vào bộ bài đã được sắp xếp trên tay. Thuật toán: Tại bư...

Công cụ Lập Trình Vim

Vim là gì Vim là một trình soạn thảo văn bản Unix được bao gồm trong Linux, BSD và macOS. Nó được biết đến với tốc độ nhanh và hiệu quả, một phần vì nó là một ứng dụng nhỏ có thể chạy trong một thiết bị đầu cuối (mặc dù nó cũng có giao diện đồ họa), nhưng chủ yếu là vì nó có thể được điều khiển hoàn toàn bằng bàn phím mà không cần menu hoặc chuột. . Ví dụ, để chèn văn bản vào một tệp, bạn nhấn I và nhập. Để điều hướng hoặc ra lệnh (chẳng hạn như Lưu, Xóa lùi, Trang chủ, Kết thúc, v.v.), bạn nhấn Esc trên bàn phím rồi nhấn bất kỳ phím hoặc tổ hợp phím nào tương ứng với hành động bạn muốn thực hiện. Đó là một cách rất khác để chỉnh sửa văn bản so với những gì người dùng máy tính hiện đại mong đợi, nhưng đó là cách quản trị viên Unix trên toàn thế giới chỉnh sửa các tệp cấu hình, thay đổi, tập lệnh và hơn thế nữa. Vim cũng thường được gọi là Vi vì khi nó được viết bởi Bill Joy vào cuối những năm 1970, nó là viết tắt của visual editor. Trước Vi, ít ai tưởng tượng rằng máy tính có thể hoạt ...