About

JAIST - Japan Advanced Institute of Science And Technology
JAIST – Japan Advanced Institute of Science And Technology

Xin chào, tên tôi là Ông Xuân Hồng, tốt nghiệp master ngành Khoa học máy tính tại JAIST – School of Information Science (Dec 2015). Tôi lập ra blog về Machine learning này với mục đích đóng góp một chút sức lực vào cộng đồng Khoa học máy tính Việt Nam cũng như giúp mọi người tiếp cận lĩnh vực này một cách nhanh chóng và dễ dàng nhất để giải quyết những bài toán phức tạp mà chúng ta đang đối mặt hiện nay.

Ắt hẳn khi chúng ta tìm kiếm từ khóa “Machine learning”, có rất nhiều kết quả gồm các tài liệu, các khóa học, các trang blog và các phần mềm để cho chúng ta tìm hiểu. Thông thường, ta sẽ đọc hết các nguồn tài liệu này với hy vọng nắm bắt các khái niệm nhanh nhất có thể. Tuy nhiên, việc làm này đòi hỏi rất nhiều thời gian và công sức, đồng thời phải có người hướng dẫn để chúng ta bắt đầu. Thay vì vậy, blog này hướng mọi người đến sự hiểu biết thấu đáo về lĩnh vực Machine learning cả về kĩ năng làm việc lẫn kiến thức thời sự trong ngành công nghiệp này.

Đầu tiên, thông qua các ví dụ thực tế và ngôn ngữ lập trình cụ thể, ta sẽ đóng vai như một nhà phân tích dữ liệu thật thụ. Ta quan tâm nhiều đến bài toán cần giải quyết hơn là các lý thuyết về các thuật toán. Vì các thuật toán này thường đã có các thư viện cài đặt sẵn cũng như đã được tối ưu cho từng mô hình xác định. Ta không nên mất nhiều thời gian xây dựng lại những gì đã có, để rồi trở nên chán nản và từ bỏ mục tiêu ban đầu của mình.

Thêm vào đó, tôi sẽ cập nhật tình hình thời sự của ngành thông qua những kênh thông tin đặc sắc nhất để giúp mọi người hiểu biết nhiều hơn về xu hướng ngành. Từ đó, ta sẽ có khả năng trau dồi thêm động lực nghiên cứu cho bản thân. Đồng thời, tôi cũng chia sẻ những kinh nghiệm và suy ngẫm trong học tập và nghiên cứu của mình. Hy vọng những gì tôi đem lại ở blog này sẽ giúp mọi người ngày càng đam mê hơn với Machine learning. Mọi thắc mắc, các bạn có thể liên hệ qua form đặt ở sidebar bên phải.

50 thoughts on “About

  1. cảm ơn bạn, ở đây có nhiều thông tin hữu ích cho cá nhân tôi cũng như rất nhiều bạn đang nghiên cứu về các vấn đề liên quan.
    Hiện tại mình cũng đang nghiên cứu về vấn đề này, mình muốn Hồng tư vấn cho mình một chút. Hồng có thể cho mình cách liên hệ trực tiếp với Hồng để trao đổi.
    Cảm ơn bạn rất nhiều, chúc bạn thành công!

    Like

  2. Chaò bạn! mình đang nghiên cứu về big data và linked data, tìm hiểu về hadoop, cách xử lý dữ liệu lớn! những bài viết của bạn thật sự rất thú vị và hữu ích với mình, chân thành cảm ơn bạn!

    Liked by 1 person

  3. Hi Mr.Hong,
    Mình là Thiên, Mình mới nghiên cứu về big data thôi. Mình có một thắc mắc mà chưa giải đáp được, rất mong Hồng giúp mình với.
    Bài toán của mình, là crawl tin tức từ các website, và lưu xuống database. Sau đó, mình sẽ sử dụng các tin tức này là report. Hiện tại data ngày càng lớn nên mình đang tìm hệ thống lưu trữ phân tán , xử lý song song.
    Mình tính sử dụng Hadoop, nhưng Hadoop là hệ thống file phân tán, nếu dùng chắc mình sẽ phải ghi tin tức xuống file rồi mới cho lưu trữ trên Hadoop. Không biết điều này có tốn thời gian và thêm xử lý cho hệ thống của mình không ?

    Với kinh nghiệm làm việc của Hồng, Hồng có tư vấn nào tốt hơn cho hệ thống bên mình (crawl tin tức => lưu xuống hệ thống database => lấy thông tin lên làm report)

    Cảm ơn Hồng đã đọc comment của mình.

    Like

    1. Hi Thiên,

      Hadoop là hệ thống chắc chắn bạn sẽ dùng khi muốn lưu trữ và tính toán phân tán vì đây là một hệ sinh thái để cho các công nghệ khác như Spark, Shark, Kafka, Habase, Mhout, Hive kế thừa và phát huy.

      Lúc đầu bạn có thể lưu dưới dạng file, nhưng cần được chuyển sang định dạng khác dễ xử lý hơn. Vì lưu ở dạng file bạn sẽ cần viết các hàm MapReduce để xử lý dữ liệu. Nếu sử dụng định dạng khác ta có thể sử dụng các câu truy vấn tựa SQL (Spark SQL, Pig, Hive) để tổng hợp dữ liệu và đạt hiệu suất cao hơn do đã được hãng khác tối ưu lại. Hiện nay, Spark đã có nhiều cải tiến về kiểu dữ liệu của mình có thể tăng tốc đọc ghi cao hơn so với làm việc trên file, hoặc Parquet cũng có những ưu điểm hỗ trợ cho Spark trong việc truy vấn.

      Craw tin tức: bạn có thể dùng Kafka hoặc đơn giản chỉ cần dùng MongoDB để lưu dữ liệu nhanh.
      Database: bạn có thể dùng Parquet hoặc Spark dataset.
      Lấy thông tin report: bạn có thể dùng Spark SQL.

      Bạn có thể tham khảo các bài viết sau:
      https://ongxuanhong.wordpress.com/2016/04/10/kinh-nghiem-lam-viec-voi-big-data/
      https://ongxuanhong.wordpress.com/2016/01/19/so-sanh-pig-hive-va-sql/
      https://ongxuanhong.wordpress.com/2015/08/17/nen-chon-hadoop-hay-spark-cho-he-thong-big-data/
      https://databricks.com/blog/2016/03/31/introducing-our-new-ebook-apache-spark-analytics-made-simple.html

      Like

  4. Hi Hồng,
    Cảm ơn bạn nhiều lắm. Bữa giờ mình đọc AUC và ROC rồi cross-validation mình không hiểu. May quá bài viết của bạn rất rõ ràng, đầy đủ và hay. Cảm ơn bạn rất nhiều! Bạn có thể cho mình email để mình liên lạc để hỏi một số vấn đề không? email của mình là caongoctrinh2003@yahoo.com.

    Like

  5. Cảm ơn Hồng đã giúp mình. Rất mong Hồng viết thêm nhiều bài viết, để giúp thêm nhiều bạn như mình, hiểu biết nhiều hơn về BigData. Thanks Hồng . Mình ở TP Hồ Chí Minh, rất mong ngày nào đó được mời Hồng ly cafe.

    Like

  6. Hi anh, em mới là học sinh lớp 12. Em dự định sau này sẽ theo Khoa học máy tính. Hiện giờ em đang luyện tập sử dụng python thông thạo. Kĩ năng toán của em cũng khá tốt, tiếng anh cũng tạm ổn. Em thấy rất hứng thú với machine learning, đặc biệt là deep learning. Em mơ ước sau này có thể trở thành Data Scientist. Không biết có thể nhận được lời khuyên hữu ích gì từ anh không.

    Rất cảm ơn anh đã lập ra blog rất hữu ích này. Em thực sự rất hâm mộ anh và mong anh viết thêm thật nhiều bài viết có giá trị hơn nữa.

    Like

  7. Trong CNN, mình thắc mắc về các giá trị của filter (đọc trong bài CNN for text mining), ví dụ có một filter ma trận làm mờ {0 1 0, 1 4 1, 0 1 0}, vậy tính như thế nào được các số đó mà không phải là các số ví dụ như {3 3 1, 3 2 5, 100 200 3}. Mong được giải đáp, cám ơn bạn nhiều

    Like

  8. Chào Anh Hồng,
    Em học python được hơn 1 năm rồi mà vẫn không biết trình độ mình tới đâu.
    Khi quên 1 số hàm thì em có thể search. Không biết mình học python như thế nào để được gọi là giỏi để làm được việc ạ ?
    Cảm ơn anh vì các bài viết bổ ích.

    Like

    1. – Cách làm của em thật sự là khoa học, bởi vì bộ não của con người được dùng để tư duy chứ không phải dùng để nhớ. Nếu chỉ dùng để nhớ thì giá trị của em chỉ bằng một cuốn sách giáo khoa hay chỉ đơn thuần là một trang web ở trên internet.
      – Một người được gọi là làm được việc khi thời gian bỏ ra để giải quyết xong bài toán ít hơn thời gian ước tính ban đầu, nên trình độ như thế nào cũng không quan trọng bằng em làm được việc.
      – Theo anh thì học nhiều ngôn ngữ mới nói chung hay Python nói riêng đều có mục đích giúp em phát triển thêm nhiều tư duy hay ho về cách mà mọi người giải quyết vấn đề. Ví dụ như Python mặc dù có tốc độ xử lý chậm hơn nhiều C/C++ nhưng ưu điểm của ngôn ngữ này mang lại thật sự hữu ích nên thường được các nhà nghiên cứu sử dụng để prototype/phác thảo ý tưởng của mình: dễ hiểu do gần với mã giả, có nhiều thư viện hỗ trợ cho tính toán thống kê thiên về khoa học, không cần phải biên dịch tốn nhiều thời gian, cấu trúc dữ liệu đơn giản dễ sử dụng, …
      – Anh nghĩ nếu em đã nắm chắc cấu trúc dữ liệu và giải thuật (như vậy đã là giỏi rồi) thì không có bài toán nào mà em không giải quyết được. Vì mọi ngôn ngữ sinh ra đều có chung các bước input -> process -> output. Do vậy, em hoàn toàn có thể dùng mã giả như ngôn ngữ thuần thục của mình để lập trình trên giấy hay phác thảo ý tưởng của mình. Khi đó, em sẽ không còn phụ thuộc vào bất kỳ ngôn ngữ nào và tự tin hơn về khả năng lập trình của mình.

      Liked by 1 person

      1. Hi,
        Em cảm ơn anh vì lời khuyên bổ ích.
        Hiện tại em cũng tìm hiểu và học về data engineer.
        Em tìm hiểu được lộ trình cần học là cấu trúc dữ liệu giải thuât, data warehouse, Big Data (spark) và Machine Learning. Liệu đó có phải là một lộ trình đúng không ạ ?
        Nguồn em học trên coursera.
        Thanks.

        Like

        1. Data engineer thiên về kỹ thuật xử lý dữ liệu nên các môn em nên follow gồm:

          • Cấu trúc dữ liệu và giải thuật, Lập trình hướng đối tượng (cơ sở để làm việc)
          • Cơ sở dữ liệu (khái niệm cơ bản, các dạng chuẩn, các câu truy vấn cơ bản để lấy dữ liệu từ doanh nghiệp)
          • Hệ điều hành (phân quyền và quản lý tiến trình)
          • Mạng máy tính (triển khai các hệ thống phân tán)
          • Quản trị kinh doanh (một số kiến thức liên ngành để làm việc)
          • Machine Learning (biết sơ về các khái niệm để hỗ trợ cho nhóm Data Scientists)

          Liked by 1 person

  9. hi anh em có một số câu hỏi về hadoop và sql như sau

    1. hadoop có thể thay thế được hệ thống cơ sở dữ liệu truyền thông như mysql , sql không ?
    2. có thể xây dựng một hệ thống backend dùng 100% bằng hadoop thay thế các hệ cở sở dữ liệu truyền thống được không?

    Like

    1. 1. không. hadoop chỉ là một format (như fat32, ntfs, ext4, RAID-0 …) hỗ trợ truy xuất phân tán, hiện tại vẫn còn đang nghiên cứu phát triển. CSDL truyền thống vẫn còn nhiều giá trị nhờ những nghiên cứu vững vàng và tính ổn định cao hơn.
      2. được. nhưng sẽ cực hơn nhiều, vì hadoop thuần chỉ làm việc với files, bạn phải viết code lại để truy vấn theo mục đích (SELECT, FROM, WHERE, GROUPBY, …). Tuy nhiên, bạn có thể sử dụng các platform build trên hadoop để hỗ trợ bạn việc này bằng syntax của SQL-like (Pig, Hive, …)

      Like

  10. Cảm ơn vì những bài blog của bạn, mình cũng đang phải tìm hiểu về thu thập và phân tích dữ liệu. Công nghệ và tool hỗ trợ chỉ là 1 phần như bạn nói. Mình cần tìm ra bài toán mình cần giải mới là cái quan trọng. Vì vậy mà mong muốn bạn chia sẽ thêm những bài về các vấn đề như các phương pháp xử lí dữ liệu, những nguyên tắc xử lí, các vấn đề hay gặp phải, những cái bản chất nhất như này sẽ giúp mình hiểu nhanh hơn những công nghệ cũng như giải quyết được các bài toàn 1 cách chính xác.
    Cảm ơn bạn rất nhiều.

    Like

    1. Hi, cám ơn bạn đã quan tâm tới blog của mình. Blog sẽ luôn cập nhật những kiến thức liên quan đến Data Science.
      Bạn có thể tham khảo trước một số đề tài này:
      https://ongxuanhong.wordpress.com/category/kien-thuc/statistical-inference/
      https://ongxuanhong.wordpress.com/category/kien-thuc/getting-and-cleaning-data/
      https://ongxuanhong.wordpress.com/category/kien-thuc/exploratory-data-analysis/

      Like

  11. Cám ơn bạn về những chia sẻ hữu ích về học máy. Nhân tiện mình muốn hỏi bạn một vấn đề. Mình đang nghiên cứu về Tokenizer và POStagger. POStagger mình dùng CRFs train với bộ corpus gán nhãn sẵn, còn Tokenizer mình mới tách từ dựa vào từ điển, độ chính xác còn hạn chế. Giờ mình muốn tách từ kết hợp huấn luyện và dùng từ điển. Bạn có thể gợi ý cách tiếp cận Tokenizer bằng cách dùng mô hình học máy không ? Cám ơn bạn 😀

    Like

      1. Mình đang làm trên corpus Vietnamese, tập corpus gắn nhãn sẵn tương tự của VLSP. Hiện mình đang làm tokenize với cách tiếp cận gắn nhãn 0 cho từ có 1 tiếng và gắn nhãn 1 cho từ có nhiều tiếng, kết quả chưa đc cao. 90 % cho 1000 sentences

        Like

        1. Bạn có thể sử dụng language modeling để chọn ra câu có tokenize cao nhất. Ví dụ p(em yêu Bác_Hồ_Chí_Minh) > p(em yêu Bác_Hồ Chí_Minh).
          Hướng khác là áp dụng Graph, mỗi từ sẽ là các cạnh nối với nhau (dùng n-gram để tính), bạn áp dụng Viterbi để tìm đường đi ngắn nhất.
          Hoặc sử dụng automata và regular express kết hợp lại theo các luật bạn đã đề ra.
          Và còn nhiều hướng tiếp cận khác… đòi hỏi bạn phải đọc và áp dụng nhiều nghiên cứu khác nhau.
          Vấn đề của TV là thiếu ngữ liệu nên phân bố các n-gram không đồng đều dẫn đến các trường hợp bị bias cho một số từ so với từ khác. Do đó bạn khó beat lại các phương pháp trên cùng tập ngữ liệu mà thường chuyển hướng sang xây dựng tập ngữ liệu khác để tạo ra công trình riêng của mình.
          Mình thấy một số bạn có xây dựng ngữ liệu từ các trang tin tức như Tuổi trẻ, Foody, VnExpress để nghiên cứu.

          Like

  12. Hi Hồng, mình sinh năm 1983. Mình đang muốn làm hệ thống chatbot để hỗ trợ bà con nông dân. Ban đầu mình sẽ tập trung vào cây hồ tiêu. Mình có nhiều kinh nghiệm trong việc phát triển phần mềm nhưng kiến thức về AI gần như bằng 0 (chỉ học một số khái niệm cơ bản khi học đại học). Mong bạn tư vấn cho mình hướng tiếp cận, các thư viện/framework có sẵn để mình xây dựng ứng dụng chatbot này. Dự kiến các chức năng như sau:
    – Người dùng chat trực tiếp với chatbot bằng tiếng Việt, trong quá trình chat có thể gửi hình ảnh (nếu khó quá thì có thể làm sau).
    – Chatbot dựa trên câu hỏi sẽ trả lời cho người dùng. Ví dụ: mô tả biểu hiện cây trồng, chatbot sẽ tư vấn đó là bệnh gì, phương pháp chữa trị ra sao. Chatbot có thể đưa thêm các link của diễn đàn, FB có thảo luận liên quan.
    – Mình đang có rất nhiều tài liệu về trồng trọt, phân bón và thuốc bảo vệ thực vật. Chatbot có thể dùng nguồn dữ liệu này hoặc học thêm qua internet hoặc các người dùng chuyên gia (nông dân giỏi hoặc các kỹ sư nông nghiệp).
    Mong nhận hồi âm của bạn. Rất cảm ơn bạn, chúc bạn hạnh phúc và thành công!

    Like

    1. Chào bạn,

      Cám ơn bạn đã quan tâm đến blog của mình. Về chatbot, bạn có thể tham khảo các link bên dưới
      http://www.wildml.com/2016/04/deep-learning-for-chatbots-part-1-introduction/
      https://www.quora.com/What-is-the-best-way-to-learn-and-write-a-AI-Chat-bot

      Theo như bạn đề cập thì ứng dụng của bạn bước đầu nên phát triển theo hướng truy vấn văn bản dựa vào domain có sẵn là các tài liệu về trồng trọt, phân bón và thuốc bảo vệ thực vật (bước đầu là cây hồ tiêu).

      Khi người dùng nhập đoạn chat vào hệ thống, thì hệ thống sẽ thực hiện phân tích câu thành các từ khóa. Sau đó, hệ thống sẽ truy vấn đến văn bản được tiền xử lý theo TFIDF (term frequency-inverse document frequency) bạn có thể dùng ElasticSearch cho tác vụ này. Văn bản trả về sẽ chứa thông tin liên quan đến từ khóa như bệnh gì, phương pháp chữa trị ra sao, các link của diễn đàn, FB …

      Mình không chuyên về chatbot nên hy vọng những gợi ý trên giúp ích được cho bạn.

      Chúc bạn thành công,

      Liked by 1 person

  13. Cảm ơn Hồng đã trả lời rất nhanh! Mình đã đọc các bài viết ở trên, mình sẽ chọn hướng tiếp cận dễ nhất: closed domain và Retrieval-based models. Mình đang gặp khó khăn như sau:
    – Tổ chức các tài liệu đã có thành dữ liệu AI (entity, property, action, event…). Mình có tìm hiểu thì thấy ở đây có cách tổ chức khá dễ hiểu: http://yokobot.com/index.php?p=data&s=knowledge. Mình có nên tham khảo cách tổ chức này không? Yêu cầu của mình là làm sao chatbot của mình có thể phát triển tri thức về sau.
    – Xử lý tiếng Việt để biết người dùng đang hướng đến entity nào. Hiện tại, mình đã download một số corpus và từ điển: danh sách địa danh, tên riêng tiếng Việt, từ điển Việt-Anh, banktree và một số API để xử lý tiếng Việt. Mình có nên sử dụng các template (ngữ pháp) giống như ở đây không http://yokobot.com/index.php?p=data&s=language?
    – Việc xử lý ảnh là một thách thức khác. Mình đang tham khảo các Vision API của Google và Microsoft nhưng có lẽ phải để sau. Nếu bạn có lời khuyên nào thì giúp mình nhé.
    Cảm ơn Hồng 1 lần nữa.

    Like

    1. Cách tổ chức của yokobot cũng khá hay, dễ dàng truy xuất và xử lý. Bạn có thể lưu cách tổ chức này vào database để dễ dàng quản lý hơn.

      Chatbot có nhiều hướng tiếp cận, nhưng nguyên lý chung tương tự như search engine, điểm khác biệt ở chỗ bạn summarize lại các văn bản tìm được theo cấu trúc có thể hiểu được. Bạn có thể tham khảo bài báo sau:
      http://dl.acm.org/citation.cfm?id=1073092
      http://www.kdnuggets.com/2016/07/deep-learning-chatbots-part-2.html

      Về xử lý TV bạn cũng nên tạo corpus liên quan đến domain của mình, vì có một số thuật ngữ mà corpus bạn download không tồn tại dẫn đến độ chính xác không cao. Bạn có thể nhờ 3-5 người bạn gán nhãn và thực hiện kiểm chứng chéo kết quả gán nhãn để đảm bảo corpus chính xác nhất có thể.

      Về xử lý ảnh, bạn có thể tự xây dựng tập dữ liệu cây trồng của mình và gán nhãn các loại bệnh liên quan. Sau đó, thực hiện bài toán multiclass-classification để từ đó rút trích ra từ khóa liên quan để tìm kiếm trong cơ sở tri thức của hệ thống.

      Like

  14. Cảm ơn Hồng vì tất cả! Mình đã có một cái nhìn sơ bộ về những gì phải làm. Mình biết đây là dự án khó vì nó liên quan nhiều thứ nên mình đang liên hệ thêm một số bạn để làm cùng. Bây giờ thì mình chỉ đang ở bước tập hợp dữ liệu thôi. Nhân tiện, mình có cái Web API test framework viết bằng .Net Core (sử dụng NUnit), nếu Hồng có dự án nào cần phải test API hoặc crawl data thì có thể dùng.
    Chúc một năm mới hạnh phúc và thành công!

    Liked by 1 person

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s