Machine learning là gì

Supervised classification
Supervised classification

Khi làm việc trong lĩnh vực Machine learning, ắt hẳn một ngày đẹp trời, bạn sẽ được đồng nghiệp hay những đứa bạn của mình hỏi rằng “Machine learning là gì?”. Để trả lời ngay câu hỏi trên không phải là điều đơn giản vì trên thực tế ta có nhiều hơn một định nghĩa về Machine learning. Do đó, hãy thủ sẵn cho mình câu trả lời ngắn gọn và dễ hiểu nhất để thể hiện bạn không phải là tay mơ trong lĩnh vực này.

Từ việc quan sát thế giới tự nhiên

thay-boi-xem-voi

Con người quan sát thế giới thông qua các giác quan của mình gồm thị giác, thính giác, xúc giác, khứu giác, và vị giác. Từ những thông tin nhận được, mỗi người sẽ có các góc nhìn, phân tích và đánh giá riêng. Nhưng điều quan trọng là làm sao ta có được cái nhìn tổng quát, thấu đáo nhất về các quy luật tự nhiên.

Vào thời đại mà kiến thức con người còn hạn hẹp, những câu hỏi lớn như: ta là ai, ta đến từ đâu, chết đi ta có bị biến mất hoàn toàn không, được đặt ra để thách thức các nhà chiêm tinh học, triết học, tôn giáo, và các nhà khoa học tìm ra được câu trả lời hợp lý nhất.

Đối với máy tính cũng vậy, ta cố gắng xây dựng AI (Trí tuệ nhân tạo) thông qua các giác quan là các sensor để thu nhận thông tin về thế giới (thị giác: camera, thính giác: sound recording, ngôn ngữ tự nhiên, etc). Với mỗi giác quan như vậy ta sẽ ứng dụng các mô hình máy học tương ứng để đạt được mục đích ban đầu là giúp máy tính có thể hiểu được thế giới xung quanh như người. Vậy:

Ta xem máy tính cũng như con người. Bằng những mô hình (góc nhìn) khác nhau, máy tính sẽ cho ra những kết quả với độ chính xác khác nhau khi nhìn nhận về thế giới tự nhiên. Do đó, việc lựa chọn đúng mô hình cho từng bài toán cụ thể là một yếu tố quan trọng.

Đến các nhà thống kê

Trong cuốn sách Pattern recognition của Christopher Bishop ông có phát biểu như sau:

Pattern recognition has its origins in engineering, whereas machine learning grew out of computer science. However, these activities can be viewed as two facets of the same field.

Pattern recognition (nhận diện mẫu hay nhận diện quy luật) là cách nhìn khá thú vị. Từ xa xưa, ông cha ta có đưa ra một số quy luật nhờ biết quan sát hiện tượng tự nhiên như “Chuồn chuồn bay thấp thì mưa, bay cao thì nắng, bay vừa thì râm”. Do tập dữ liệu quá lớn, với khả năng quan sát hữu hạn của con người, ta khó có thể nhận diện được các quy luật để xây dựng mô hình dự đoán chính xác. Vì vậy, dựa vào các mô hình thống kê, ta hy vọng rằng máy tính có thể đưa ra những quy luật tìm ẩn có giá trị để chúng ta có thể khai thác và phục vụ cho những nghiên cứu của mình.

Dự báo thời tiết nhờ quan sát hoạt động của chuồn chuồn
Dự báo thời tiết nhờ quan sát hoạt động của chuồn chuồn

Data science là một nhánh sinh bởi  ngành thống kê mà ta đã nghiên cứu và ứng dụng từ lâu. Nhờ có các công cụ từ thống kê mà ta có thể thách thức được Big Data, thường là mớ hỗn độn dữ liệu vô nghĩa nếu không được khai thác. Machine learning dựa trên nền tảng thống kê rất nhiều từ Computer Vision, Natural Language Processing đến Voice recognition, etc nên để bắt đầu nghiên cứu, nếu có một vốn kiến thức tốt về xác suất và thống kê, các bạn sẽ có lợi thế lớn trong ngành nghiên cứu này.

Người trong ngành Computer Science

Trong cuốn sách Machine learning của Tom Mitchell, ông có định nghĩa:

A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.

Từ định nghĩa trên, ta có thể diễn giải như sau: máy tính được gọi là học từ kinh nghiệm (dữ liệu) E với tác vụ (dự đoán, phân lớp, gom nhóm) T và được đánh giá bởi độ đo (độ chính xác) P nếu máy tính khiến tác vụ T này cải thiện được độ chính xác P thông qua dữ liệu E cho trước.

Thoạt đầu ta có thể lúng túng trước phát biểu này, nhưng đây là các thành phần cở bản mà bất cứ hệ thống Machine learning nào cũng có. Đó là, dữ liệu E cho trước (tập dữ liệu email) nhằm hoàn thành tác vụ T (xác định email là spam hay không). Mô hình này được đánh giá bởi độ đo P (độ chính xác), từ đó ta có thể tiến hành cải thiện mô hình dựa vào độ đo P này.

Góc nhìn của engineer

Để có thể cài đặt được mô hình Machine learning, ta tiến hành các bước sau:

  1. Chuẩn bị dữ liệu. (Data preparation)
    • Data exploration
    • Visualization
    • Preprocessing data
    • Feature engineering
    • etc.
  2. Xây dựng, lựa chọn và đánh giá mô hình. (Algorithm)
    • Supervised learning
    • Unsupervised learning
    • Reinforment learning
    • Train, validation, test splitting
    • Evaluation metrics (Accuracy, precision, recall, RMSE)
    • etc.
  3. Mô hình thu được. (Model)
Machine learning framework
Machine learning framework

Tóm lại

Để máy tính có thể học ta cần có dữ liệu. Không có dữ liệu thì máy tính không thể học. Từ dữ liệu này, tùy vào bài toán cần giải quyết mà ta sẽ quyết định lựa chọn mô hình nào phù hợp để có thể thu được kết quả chính xác nhất.

Kinh nghiệm: tôi cũng như các bạn mới bắt đầu học Machine Learning thường giải quyết vấn đề theo thứ tự:

  • Bài toán này là supervised hay unsupervised?
  • Trong supervised thuật toán nào là state-of-the-art?
  • Áp dụng Deep learning ngay lập tức mà không quan tâm đến data như thế nào?
  • Làm thực nghiệm rất nhiều và failed!!

Nhưng trong thực tế, các bạn cần giải quyết theo hướng khác để quá trình nghiên cứu được chặt chẽ hơn:

  • Bài toán cần giải là gì?
  • Dữ liệu cần sử dụng vào bài toán là gì?
  • Exploring dữ liệu xem có gì bất thường không (missing, duplicate, outlier, etc)?
  • Visualize để có hình dung tốt về bản chất của dữ liệu hiện tại.
  • Tìm kiếm mô hình và giải pháp phù hợp.
  • Prototype mô hình đơn giản để làm baseline.
  • Áp dụng các mô hình Machine Learning tiềm năng nhất để giải bài toán.
  • Làm feature engineering và lặp lại bước xây dựng mô hình.
  • Scale cho Big Data.
  • Deploy lên production server.

Nguồn tham khảo:

Một suy nghĩ 27 thoughts on “Machine learning là gì

  1. Em Chào anh.
    Em mới tốt nghiệp cử nhân kinh tế, vô tình em đã đọc được những bài viết của anh trên mạng, em đã đọc hầu hết những bài viết rất tâm huyết của Anh về lĩnh vực machine leaning và em đã tìm được đam mê thực sự của mình ở lĩnh vực này. Em đã tìm hiểu về machine learning và em cũng tự học Python được gần 2 tháng. Nhưng em thấy lĩnh vực này rất rộng và khá mơ hồ với em.
    Dựa vào kinh nghiệm của Anh thì Anh có thể giúp em biết lộ trình để học về Machine Learning với 1 người mới bắt đầu như em được không ạ?
    Trong quá trình học đại học thì em cũng có tự học và khá nắm vững về C++, C#.
    Em cảm ơn Anh.

    Thích

    1. Hi em,

      Đối với machine learning, muốn học tường tận thì tốt nhất em nên chuẩn bị cho mình background thật vững về Toán (đại số tuyến tính, giải tích, toán rời rạc, và xác suất thống kê – cái này chắc khoa kinh tế có làm việc nhiều).

      Giai đoạn này khá mất thời gian, có khi gây ra chán nản, nên anh nghĩ tốt nhất em nên bắt đầu với Kaggle Titanic sau đó chọn tiếp cho mình những project tương tự từ thấp đến cao để tìm hiểu. Mục đích để vừa học vừa làm, có gì không hiểu thì ta sẽ tra lại các kiến thức về toán để hiểu hơn về thuật toán họ sử dụng.

      Trên thực tế, xây dựng mô hình machine learning chỉ là một công đoạn nhỏ trong toàn bộ quy trình (còn có tiền xử lý, phân tích dữ liệu, feature engineering, …). Nếu cần có một công việc liên quan, em có thể bắt đầu với vị trí Data Analyst/ Data Engineer (nếu em code giỏi). Nhờ làm việc cùng với Data Scientists em sẽ có cơ hội học hỏi nhều hơn với các dự án trong thực tế. Dần dần phát triển bản thân mình trong lĩnh vực này.

      Chúc em thành công 🙂

      Thích

  2. em chào anh !
    Em là sinh viên chuẩn bị làm web về thương mại điện tử có liên quan hệ thống gởi ý như trang amozon , em không biết bắt đầu từ đâu anh à, xây dựng csdl sau , thuật toán gì khi và làm sau để hiểu nó và code ,rối quá anh à , em là sinh viên không có học về khoa học máy tính mà cái này có liên quan đến giải thuật ! anh tư vấn giúp em với anh ?
    Em cảm ơn anh nhiều lắm !

    Đã thích bởi 1 người

    1. Em search từ khoá recommender system và association rules để tìm thư viện cài đặt.
      Web e có thể sử dụng ngôn ngữ PHP hoặc Ruby on Rails để phát triển.
      CSDL cũng bình thường gồm categories, products, users, quan trọng là table transaction dùng để khai phá dữ liệu gợi ý

      Thích

          1. Em xin mô tả hệ thống như sau :
            Hệ thống gợi ý bán hàng trực tuyến được cài đặt theo mô hình ứng dụng web. Hệ thống thực hiện ghi nhận thông tin phản hồi từ người dùng (số lần click xem sản phẩm, số lần mua sản phẩm) để làm dữ liệu huấn luyện cho xây dựng mô hình gợi ý. Khi mô hình huấn luyện được xây dựng hoàn tất, hệ thống sẽ thực hiện dự đoán mức độ yêu thích của người dùng trên các sản phẩm, đưa ra gợi ý TOP-N các các sản phẩm mới. Hệ thống gợi ý sản phẩm này, còn gợi ý cho người dùng mới theo giá trị dự đoán trung bình toàn cục của các sản phẩm, đồng thời liệt kê những sản phẩm tương tự với sản phẩm đang xem, bên cạnh đó còn thể hiện các sản phẩm bán chạy nhất, sản phẩm mới nhất.
            Gợi ý sản phẩm cho khách hàng: Sau khi người dùng đăng nhập vào hệ thống, sẽ nhận được các sản phẩm gợi ý dựa trên các phản hồi mà hệ thống ghi nhận được từ người dùng

            như vậy table transaction nó sẽ liên kết user và product như bài toán thì table transaction nó sau anh , mong anh giúp đỡ , nếu như bài toán toán thì dùng implicit feedbacks có được không anh ?
            Em cảm ơn anh !

            Thích

  3. em chào anh ,
    Hiện tại em làm ở fpt em đang học tập để trở thành Data Scientists em đã có thời gian và có 1 chút kinh nghiệm làm viêc trong lĩnh vực Data Engineer. Nhưng em còn thấy mình còn yếu trong lĩnh vưc toán để có thể áp dụng trong Machine Learning . Nên em muốn anh tư vấn cho em một số tài liệu và 1 số khóa học online .

    Em xin trân thành cảm ơn ạ.

    Thích

      1. Em chào anh ,

        Trước tiên em cảm ơn anh ạ .Hiện tại em cũng đã theo học khóa học này ạ của thấy Andrew Nguyen . Em muốn hỏi anh là với vấn đề của em anh có thể cho theo học 1 cuốn sách nào không ạ .

        Em xin cảm ơn ạ .

        Thích

  4. Chào anh, em đang sử dụng SVR cho phân tích dữ liệu của mình, nhưng em gặp vấn đề trong lập công thức tương quan dựa trên SVR. Em đã tính toán được giá trị w và b cho công thức y = w.x +b thông qua R sofware. Em đã ước tính giá trị y trên phần mềm R, đồng thời áp dụng công thức này để chiết xuất giá trị y theo x trên excel, nhưng kết quả trên R và excel hoàn toàn khác nhau. Có phải em đã làm thiếu giai đoạn nào rồi không. Mong anh giải đáp giúp. Em chân thành cám ơn.

    Thích

      1. Anh xem đoạn code này giúp em.
        m73 <- svm(AGB_ex ~ VH+SHV+Vvol+Vsurf, data=trainDF)
        predictedY <- predict(m73, data=trainDF)
        predictedY
        error <- trainDF$AGB_ex – predictedY
        svrPredictionRMSE <- rmse(error)
        rmse(error)
        tuneResult <- tune(svm, trainDF$AGB_ex ~ trainDF$VH+trainDF$SHV+trainDF$Vvol+trainDF$Vsurf, data = trainDF,
        + ranges = list(epsilon = seq(0,1,0.1), cost = 2^(2:9))
        )
        tunedModel <- tuneResult$best.model
        tunedModelY <- predict(tunedModel, trainDF)
        error <- trainDF$AGB_ex – tunedModelY
        tunedModelRMSE b
        [1] -2.422306
        Nên em lập công thức như sau:
        AGB = 24.7482xVH + 14.29785x SHH-VV + 17.32415x Vvol + 0.8475509x Vsurf -2.422306
        Anh có thể giúp em xem công thức trên có chính xác hay không với ạ. Em cám ơn anh rất nhiều.

        Thích

          1. dạ không. Em so sánh kết quả predict Y của tunedModel được tính trong R software và tự tính trong excel thì thấy khác nhau. Trong excel em lấy công thức đã lập như trên rồi tính lại, nhưng kết quả predict Y cho ra toàn bộ <0, trong khi R sofware là khác hẳn.

            Thích

              1. Dạ vâng. Vậy anh có thể giải thích giúp em biết công thức ước tính giá trị Y trong R không ạ. Có phải R software cũng sử dụng công thức “AGB = 24.7482xVH + 14.29785x SHV + 17.32415x Vvol + 0.8475509x Vsurf -2.422306” này để tính không, hay áp dụng thuật toán khác.
                Sau khi tính được w và b thì em chỉ cần áp vào công thức y= wx+b thì sẽ được công thức cuối cùng luôn, hay em phải thực hiên thêm bước nào nữa không ạ.

                Thích

  5. E chào anh, anh cho e hoi chút được k ạ. em có đề tài là xây dựng hệ thống gợi ý mua sắm các thiết bị điện tử thì e nên học thuật toán nào hoặc học từ đâu để làm được nó ạ? Thanks a

    Thích

Bình luận về bài viết này