Saturday, May 16, 2020

[BOOK] - PHÁT TRIỂN ỨNG DỤNG CAMERA THÔNG MINH

Kiến thức về xử lý ảnh, các thuật toán thị giác máy tính như phân lớp, phát hiện đối tượng - cùng các bài tập thực hành bằng Python.
- Thông tin chi tiết đặt sách: http://bit.ly/2RgRJaY
- Mục lục: http://bit.ly/2N2X56d
- Sample chapter: http://bit.ly/2DDM77A


Monday, July 30, 2018

[BLOG] - Nhập môn Data Science với Python - 1

Loạt bài Nhập môn Data Science dành cho nhiều đối tượng hiểu một chút tổng quan về Data Science. Loạt bài Nhập môn Data Science với Python này sẽ dành cho các đối tượng biết (hoặc muốn biết) về lập trình.
Chúng ta có dữ liệu - chúng ta có máy tính - giờ là đến lúc phải lập trình (i.e viết chương trình) để máy tính xử lí dữ liệu - và cho ra kết quả mà chúng ta mong muốn. Python là một ngôn ngữ dùng cho việc lập trình - và tất nhiên còn nhiều ngôn ngữ khác như R, Java, C++, PHP, Scala, etc. Nếu bạn chưa rành bất cứ một ngôn ngữ lập trình nào - hãy học Python cho thành thạo - sẽ giúp cho bạn kiếm việc dễ hơn, làm được nhiều việc hơn.
Câu hỏi đặt ra là với người chưa biết gì, để lập trình được thì cần học cái gì? Quan điểm của tôi là phải học 3 thứ cốt lõi: Tư duy lập trình - Nhập môn lập trình - Cấu trúc dữ liệu. Tư duy lập trình giúp các bạn ' chuyển hoá' bài toán thực tế thành cách máy tính có thể giải được (ví dụ mã giả - pseudo code) - Nhập môn lập trình giúp các bạn hiện thực bằng một ngôn ngữ lập trình nào đó, ví dụ Python - Cấu trúc dữ liệu giúp các bạn hiểu rõ các dữ liệu được lưu trữ và xử lí trong máy tính như thế nào.
Việc dạy lập trình đã tiến hoá rất nhiều so với 20 năm trước đây. Bây giờ việc học lập trình được mở rộng cho cả đối tượng trẻ con từ 6 tuổi trẻ lên với nhiều công cụ và phương pháp dạy học khác nhau. Nhưng trong rất nhiều chương trình giảng dạy của các Trường ĐH ở VN, việc này hầu như ít có nhiều thay đổi. Với các bạn khá giỏi - việc được dạy lập trình bằng phương pháp nào cũng không ảnh hưởng nhiều; nhưng với các bạn không tệ nhưng 'nhát gan' thì có một số cách dạy lập trình sẽ mang đến ' ác mộng' - làm cho sự tự tin biến mất và thay vào đó là ngán - ngại mỗi khi nhắc đến lập trình.
Để mang lại sự tự tin, niềm yêu thích lập trình - tốt nhất là nên chấp nhận học lại từ đầu như người chưa biết gì - và tốt nhất là phải chọn phương pháp học hợp lí. Với việc trẻ con cũng có thể lập trình thì việc các bạn không thích, không rành lập trình không phải là do năng lực của các bạn không có - mà chủ yếu là do phương pháp học chưa đúng mà thôi.
Vậy cách học lập trình dành cho người mới bắt đầu là gì? Tôi sẽ giải thích từ góc nhìn của tôi ở các bài tới. Nhưng có lẽ nhiều bạn học ĐH KHTN và ĐH CNTT biết về một Thầy giảng rất 'khét tiếng' về lập trình đó là Tổ Chức (Nguyễn Tấn Trần Minh Khang)

Link: https://www.facebook.com/bigdata.deeplearning.uit/posts/2067926213524488

Sunday, July 29, 2018

[BLOG] - Nhập môn Data Science - 8

Tiêu chí để đánh giá một câu hỏi là gì?
Câu hỏi cần phải đủ chi tiết (sharp question) - tránh mơ hồ (vague question). Ví dụ: câu hỏi mơ hồ là giá cổ phiếu sẽ thế nào - còn câu hỏi chi tiết là giá cổ phiếu là bao nhiêu (có tính định lượng ở trong đó)?
Việc chọn câu hỏi cũng sẽ ảnh hưởng đến thuật toán tương ứng. Ví dụ thường gặp là classification và regression - classification là bài toán phân loại mà output là category/label A or B or C or D, trong khi đó regression là bài toán hồi qui mà output là con số.
Đầu vào là một bộ phim - nếu đầu ra là bộ phim thuộc thể loại nào (Hành động, Tình cảm, Kinh dị) thì đó là bài toán classification - nhưng nếu đầu ra là mức độ hấp dẫn được thể hiện qua điểm trên thang 10 (ví dụ 9.2) - thì đó là bài toán regression.

Saturday, July 28, 2018

[BLOG] - Nhập môn Data Science - 7

Trong các bài viết trước, có hai vấn đề được đề cập đó là dữ liệu 'nhà' (dữ liệu mà mình có thể có được để xử lí) - và với dữ liệu đó, các dạng câu hỏi là gì?
Chuyện điểm thi của Hà Giang và Sơn La là một ví dụ rất phù hợp cho hai vấn đề trên. Với dữ liệu về điểm thi (được cung cấp công khai trên trang web của Bộ GD-ĐT - ko có tên, chỉ có SBD), và câu hỏi đặt ra là có bất thường không (anomaly detection)?
Công cụ ở đây rất đơn giản - không cần lập trình - chỉ cần dùng Excel để vẽ các biểu đồ - và tất nhiên phải cần thêm một số kiến thức về Toán và Xác suất là có thể đưa ra các phân tích và dự đoán để kiểm chứng.
1. Nếu chúng ta nhìn hình hàng trên, bên phải - tương ứng với phân bố điểm thi môn Lý của cả nước và Sơn La - nhìn kĩ một chút chỗ trục X bên tay phải - sẽ thấy đường màu đỏ (Sơn La) cao hơn đường màu xanh (VN) - tức là số thí sinh điểm cao (tầm 9-10) của Sơn La cao hơn trung bình VN.
2. Nếu nhìn phân bố thì thấy đường màu đỏ luôn nằm bên trái đường màu xanh - tức là điểm của Sơn La thấp so với cả nước.
==> Bất thường ở chỗ này - chẳng lẽ thí sinh Sơn La giỏi vậy?
Lưu ý - phân tích từ dữ liệu chỉ cho ta các giả thuyết (hypothesis) - và việc tiếp theo là cần kiểm chứng các giả thuyết đó - và không phải giả thuyết nào cũng đúng.
====
GS Nguyễn Văn Tuấn, Viện Garvan (Australia) đã phân tích dữ liệu điểm và chỉ ra một số vấn đề mà ông cho rằng bất thường trong phổ điểm thi THPT Quốc gia của Sơn La.
Theo GS Nguyễn Văn Tuấn, tính trung bình điểm thi môn Toán, lí, Hóa và Sinh học của Sơn La đều thấp hơn so với cả nước. Chẳng hạn như môn Toán, điểm trung bình (độ lệch chuẩn) của Sơn La là 3,43 (1,33), so với cả nước là 4,88 (1,44). Đáng chú ý độ lệch chuẩn của Sơn La (1,33) thấp hơn so với cả nước (1,44).
“Sơn La có vẻ có số thí sinh điểm 9,0 đến 9,8 cao bất thường. Nếu theo phân bố quốc gia, chúng ta kì vọng Sơn La có 6 thí sinh, nhưng trong thực tế thì có đến 30 thí sinh, tức cao hơn 5 lần so với kì vọng” - ông Tuấn nói.
Đối với môn Lý cũng có sự bất thường, số học sinh có điểm 9.0 trở lên là 13 em, trong khi đó theo kì vọng quốc gia thì chỉ có 1 thí sinh. Nói cách khác, số thí sinh có điểm vật lí cao ở Sơn La chênh lệch gấp 12 lần so với phân bố quốc gia.
Ông phân tích dựa trên cơ sở nào để ra được kết quả này?
GS Nguyễn Văn Tuấn: Đặt câu hỏi đơn giản rằng nếu phân bố điểm thi của một tỉnh (như Hà Giang hay Sơn La) giống với phân bố điểm toàn quốc, thì sẽ có bao nhiêu thí sinh có điểm 0; 0,2; 0,4; 0,6, …, 10. Tôi gọi đó là "số kì vọng". Sau đó, tôi so sánh số kì vọng với số thí sinh thực tế cho từng thang điểm, và qua đó có thể thấy ở thang điểm nào, phân bố của tỉnh có vẻ bất thường. Một cách khác là dùng phương pháp phân tích thống kê có tên là "Hồi qui tuyến tính".
Theo phương pháp này, tôi tìm hiểu mối tương quan giữa điểm môn Toán và điểm các môn như Lý, Hoá, Sinh, Văn, Tiếng Anh, Sử, và Địa lí; dựa vào mối tương quan này, tôi ước tính giá trị tiên lượng điểm môn Toán cho mỗi thí sinh; sau đó tôi tính toán độ lệch chuẩn giữa điểm thí sinh đạt được và điểm tiên lượng; và dựa vào độ lệch này, tôi có thể xác định có bao nhiêu thí sinh có điểm bất bình thường sau khi đã xem xét "hồ sơ" điểm của thí sinh đó.

Link: https://www.facebook.com/bigdata.deeplearning.uit/posts/2060087260975050

Friday, July 27, 2018

[BLOG] - Nhập môn Data Science - 6

Không ít người nghĩ rằng cứ có dữ liệu/dữ liệu lớn, cùng các công cụ phân tích - khai thác dữ liệu tiên tiến là có thể thành công. Tuy nhiên, câu hỏi đặt ra trước tiên đó là dữ liệu đó đã sẵn sàng chưa? Trong bài giảng video (xem link bên dưới), tác giả Brandon Rohrer đã chỉ ra các ý chính gồm:
1. Relevant 
2. Connected
3. Accurate
4. Enough to work with
Việc này cũng giống như để có bánh pizza ngon, các thành phần chế biến phải đầy đủ.
Lấy ví dụ liên quan đến việc các xe vận tải hành khách phải gắn hộp đen. Có dữ liệu từ hộp đen của số lượng lớn xe chỉ mới thoả được tiêu chí thứ 4. Accurate dùng để chỉ dữ liệu của hộp đen có đủ chính xác và tin cậy (ví dụ không bị làm giả hoặc thay đổi). Connected để chỉ dữ liệu có đầy đủ không (ví dụ nếu xe tắt hộp đen thì dữ liệu sẽ không đầy đủ). Và Relevant để chỉ dữ liệu có phù hợp cho trả lời câu hỏi không (ví dụ với các dữ liệu đó, có đủ để trả lời câu hỏi xe nào sẽ có tiềm năng gây tai nạn ở lần chạy kế tiếp).

Thursday, July 26, 2018

[BLOG] - Nhập môn Data Science - 5

'Theo báo cáo Hype Cycle Report năm 2014 của Gartner, Big Data đã qua thời đỉnh cao và đang trải qua giai đoạn vỡ mộng có thể kéo dài từ 5 đến 10 năm với những ứng dụng được triển khai và thất bại. Thậm chí năm 2015, Gartner dự đoán đến 2017 sẽ có tới 60% các dự án Big Data sẽ không vượt qua nổi phòng nghiên cứu để đến với khách hàng. Kết quả còn tệ hơn vậy, chỉ có 17% các dự án Big Data sử dụng Hadoop là được dùng thật, tức là có tới 83% dự án khác thất bại.'
Vậy câu chuyện này nên được hiểu thế nào?
Sở dĩ Big Data & Data Science trở thành trend vì người ta kì vọng vào việc hỗ trợ ra quyết định nhờ phân tích dữ liệu lớn (data driven decision making). Lấy cảm hứng từ các đại công ty như Facebook, Google, Amazon, Netflix, etc - với các kịch bản sử dụng hiệu quả big data cho việc ra quyết định trong các bài toán như recommendation (Netflix có thể đề xuất video phù hợp với bạn, Google đề xuất quảng cáo phù hợp với người dùng), prediction (Amazon có thể dự đoán được món hàng mà bạn sẽ mua) - nhiều công ty cũng muốn thử.
Tuy nhiên, business của mỗi công ty khác nhau - và việc khai thác dữ liệu không lúc nào cũng thành công - thậm chí có công ty còn không thể biết được với câu hỏi dạng nào thì có ích? Ví dụ, trong trường ĐH, dữ liệu được phát sinh và thu thập rất nhiều - có bao giờ bạn đặt các câu hỏi và hi vọng câu trả lời sẽ giúp cải tiến trong việc ra quyết định?
Nói một cách khác, với các dự án Big Data Analytics trong thực tế có thể thất bại vì một trong các lí do sau:
1. Có dữ liệu - nhưng không biết có tìm được insight nào đáng giá không? Tôi có một anh bạn ở UK kể về một dự án - trong đó bệnh viện mời data scientists vào để làm việc với một đống dữ liệu được tạo ra trong quá trình làm việc của họ - câu hỏi đặt ra là đánh giá tính hiệu quả của qui trình hiện tại và có cách nào để cải thiện được qui trình hiện tại thuận tiện hơn cho bệnh nhân hay không. Với câu hỏi dạng này - không biết trước được dự án có thành công hay không.
2. Có công cụ - nhưng không có dữ liệu nào đáng giá để triển khai. Ví dụ ko có dữ liệu của bank transactions, MRI images, user behaviors, etc thì những thứ được học chỉ dừng ở mức lí thuyết, ko có ứng dụng gì.
Chúng ta được học thiên về trang bị công cụ - nhưng thực ra, cái cần thiết hơn cả đó là biết đặt câu hỏi và biết cách tạo ra dữ liệu để có thể tìm được insight đáng giá.
Trong danh sách 10 điều Data Scientists thường làm - kĩ năng đặt câu hỏi là number 1.
==== 10 Things Data Scientists Do ====
1. Ask good questions! What don’t we know? What do we know?
2. Define and test hypothesis — run experiments.
3. Scoop, scrap, sink and sample business relevant data
4. Munge and wrestle data. Tame the data!
5. Explore data, discover data, discover its unknowns.
6. Model data, model algorithms.
7. Understand data relationships.
8. Tell the “machine” how to learn from data.
9. Create data products that deliver actionable insight.
10. Tell relevant business stories from the data.
>>> Why are data scientists so important these days? Two words: Big Data.

Link: https://www.facebook.com/bigdata.deeplearning.uit/posts/2054183618232081

Wednesday, July 25, 2018

[BLOG] - Nhập môn Data Science - 4

Hãy quên Python, Machine Learning, Deep Learning, etc đi. Giờ hãy nghĩ về Data trước. Câu hỏi đặt ra ở đây là: cho bạn một đống dữ liệu - bạn sẽ làm được gì?
Theo như bài giảng Data Science For Beginners - thông thường sẽ có 5 loại câu hỏi mà thôi:
- Classification
- Anomaly Detection
- Regression
- Clustering
- Reinforcement Learning
(Xem video trong Comment)
Nếu chỉ chọn một câu hỏi để đi sâu vào thì câu hỏi đó là gì? - Classification
Để xem các bài toán/ứng dụng của Classification, có thể xem trên Kaggle: https://github.com/ShuaiW/kaggle-classification. Các bài toán Classification có thể diễn đạt dưới các thuật ngữ khác nhau như phân loại, tiên đoán, etc.
Ví dụ
1. Hãy tiên đoán một người có khả năng sống sót hay không trong thảm hoạ tàu Titanic?
2. Hãy tiên đoán một ảnh chẩn đoán y khoa để xem người bệnh có bị ung thư/tiểu đường hay không?
3. Hãy tiên đoán khách hàng của Airbnb sẽ book phòng ở nước nào đầu tiên?
Hãy nhìn vào dữ liệu quanh bạn và tìm cách đặt câu hỏi dưới dạng bài toán Classification nhé

Link: https://www.facebook.com/bigdata.deeplearning.uit/posts/2052863431697433