Saturday, September 23, 2017

[SHARE] - MIT 6.S094: Deep Learning for Self-Driving Cars

This class is an introduction to the practice of deep learning through the applied theme of building a self-driving car. It is open to beginners and is designed for those who are new to machine learning, but it can also benefit advanced researchers in the field looking for a practical overview of deep learning methods and their application.

Xem slides, videos tại đây: http://selfdrivingcars.mit.edu/

Saturday, September 16, 2017

[SHARE] - Deep Learning giống như bong bóng sắp nổ?

Xem trả lời của Andrew Ng - giáo sư hàng đầu về lĩnh vực này - trên quora cho câu hỏi: When will the deep learning bubble burst?

Các lợi ích của deep learning là không thể chối cãi - và việc (xem xét) ứng dụng deep learning trong nhiều lĩnh vực cần được nghiên cứu. Tuy nhiên, deep learning không phải là thuốc trị bá bệnh.

There was also a lot of hype about electricity about 100 years ago. That particular bubble still hasn’t burst yet and we find electricity pretty useful!

More seriously, because deep learning is already creating tons of value—it’s used in web search, advertising, speech recognition, recommender systems, and many more—it is clearly here to stay. Deep learning, plus more broadly other AI tools (graphical models, planning, KR, etc.), now has a clear path to transforming industry after industry. Its impact will be felt well beyond the tech world.

Nonetheless, I think outside the core technical community, there are some overinflated expectations about “sentient AI”; I’ve also spoken with CEOs that seemed to think AI could be panacea to all their technical problems. So there is some unnecessary froth around deep learning, and I hope these smaller bubbles will burst—the sooner the better—before they have time to grow bigger.

Tuesday, September 12, 2017

[SHARE] - Facebook và Microsoft giới thiệu hệ sinh thái mới cho AI

Facebook và Microsoft vừa thông báo họ đã cùng nhau hợp tác để cung cấp hệ sinh thái (mã nguồn) mở về AI (trí tuệ nhân tạo) đến với tất cả mọi người.

Facebook và Microsoft gọi đây là Open Neural Network Exchange (ONNX), nền tảng chia sẻ thuật toán sẽ cho phép các nhà phát triển chuyển đổi giữa các giai đoạn phát triển AI khác nhau.

Kết quả của mối hợp tác này sẽ cho phép bất kỳ ai bắt đầu nghiên cứu về AI tận dụng được nguồn lực này nếu không có sẵn.

Xem bản tiếng Anh tại trang MicrosoftFacebook.

We developed ONNX together with Microsoft to bridge this gap and to empower AI developers to choose the framework that fits the current stage of their project and easily switch between frameworks as the project evolves. Caffe2, PyTorch, and Cognitive Toolkit will all be releasing support for ONNX in September, which will allow models trained in one of these frameworks to be exported to another for inference. We invite the community to join the effort and support ONNX in their ecosystem. Enabling interoperability between different frameworks and streamlining the path from research to production will help increase the speed of innovation in the AI community.

Sunday, September 10, 2017

[SHARE] - Có phải Deep Learning giải quyết hết các bài toán AI?

Trả lời của Prof. Yoshua Bengio - tiền bối về deep learning cho câu hỏi: Why aren't artificial neural networks used for everything? Of course you wouldn't do colliding galaxy simulations with them or anything ridiculous; but it seems that in AI, they have a very good applicability range.

If you have enough prior knowledge on a problem you don't need any learning, or it is enough to design the appropriate fully observed graphical model (you know what all the relevant random variables are and you either know their relationship or observe them in enough data), or just learn the "top layer"  (e.g. with a good feature space or a good similarity/kernel you can just plug your favorite SVM brand).

Another basic reason why I believe that artificial neural nets are not used for "everything AI" is simply that we are far from having captured from the cortex and from our ingenuity a learning algorithm as powerful as biological brains (in particular primates', and to some extent mammals and birds) enjoy, i.e., more real fundamental research is needed!

Saturday, September 9, 2017

[DEEP LEARNING] - Ứng dụng của DL trong nông nghiệp thông minh - phân loại dưa leo

Bài giới thiệu một ví dụ của việc ứng dụng deep learning trong phân loại dưa leo từ blog của Google Cloud.

Theo bài viết này, gia đình Makoto ở Nhật muốn phân loại dưa leo mà họ trồng được thành các loại khác nhau - tương ứng với các mức giá khác nhau (xem Hình 1 ở dưới). Việc phân loại hiện vẫn đang thực hiện bằng tay (manual).

Hình 1: Phân loại dưa leo tương ứng với chất lượng và mức giá

Việc cải tiến đã được thực hiện thông qua giải pháp nhận dạng hình ảnh (image recognition) sử dụng deep learning - kết hợp với các thiết bị nhúng như Arduino Micro và Raspberry Pi 3 theo mô hình như hình dưới đây:


Và đây là demo hoạt động của hệ thống:


Bạn muốn tìm hiểu về nguyên lí hoạt động để phát triển các ứng dụng nhận dạng và tích hợp với các thiết bị nhúng - hãy theo dõi blog này và đăng kí các khóa học liên quan - ví dụ như khóa học về Nhận dạng dựa trên thông tin thị giác và Ứng dụng.

@Lê Đình Duy

[SHARE] - Phỏng vấn kĩ năng lập trình từ góc nhìn người phỏng vấn

Bài chia sẻ thú vị và hiếm hoi ở góc độ của người phỏng vấn: How to conduct a good Programming Interview

Đoạn bên dưới trích từ bài viết trên, bản đầy đủ xem chi tiết link đến bài viết.
======

Any software engineer who has ever looked for a job has had the interview experience: being locked in a small room for an hour, asked to write code to solve some arbitrary programming task, while being grilled by one or two interviewers whether or why the code they've written is correct.

You can find lots of material online about how to ace the interview as an interviewee, but very little has been written about how to conduct one as the interviewer. This post will lay out a coherent set of principles and cover many concrete steps you can use to make the most out of the next time you find yourself interviewing a potential software-engineering hire.

Goals
While there are a variety of ways you can conduct a programming interview, the goals typically are the same:


  • Will the candidate be able to write working code if they join the team?
  • Can the candidate discuss code and problems with the people they'll be working with?
  • Can the candidate reason about arbitrary problems and constraints?
  • Is the candidate someone we would enjoy working with?


There are a lot of more tactical goals that you can try to accomplish, along with specific skills you may want to test (e.g. knowledge of a specific platform or programming language) but at a high level these are the primary questions you are trying to answer in a programming interview. There are other interviews (e.g. resume review, architecture design, etc.) that cover other things you'd want to know before hiring the fellow.

While you usually give the candidate a programming task to work on during the interview, it is the process through which a candidate finds a solution that reveals the most about whether they can write code. As an interviewer, you should end up with a much more holistic view of the candidate than "finished task X in Y minutes":

Everyone makes mistakes. Were they stupid mistakes, or were they mistakes that any reasonable person would make? Do they indicate sloppiness on the part of the candidate, or just unfamiliarity with the problem? How fast were they able to recover from them?

When the candidate makes a decision that turns out to be correct, were they just lucky or did they have a solid reason for doing so?

Was the candidate able to discuss and convey what they were trying to do, in a way you could understand?

Did the candidate have a good grasp of their own code, and be able to smoothly make changes when necessary? Or did they get lost in their code, tangled up in their own logic totally independent from the task they were trying to solve?

From these observations, you should be able to come up with answers to the four questions posed above, and then decide whether you'd call this candidate a "hire" or "no hire"

About the Author: Haoyi is a software engineer, an early contributor to Scala.js, and the author of many open-source Scala tools such as the Ammonite REPL and FastParse.

If you've enjoyed this blog, or enjoyed using Haoyi's other open source libraries, please chip in (or get your Company to chip in!) via Patreon so he can continue his open-source work

Friday, September 8, 2017

[SHARE] - Vai trò của Deep Learning trong các bài toán thực tế

Bài sau từ Quora

What types of machine learning algorithms are used in solving some popular real-world problems?

  • Snapchat FiltersConvolutional Neural Networks (allegedly)
  • Netflix Recommendation SystemRestricted Boltzmann Machines
  • Google Translate (Machine Translation): Recurrent Neural Networks
  • Siri (Personal Assistants): Hidden Markov Models (2011-2014), Long Short Term Memory Networks (2014+), which is a type of Recurrent Neural Networks.
  • Self-driving cars (Image recognition, Video recognition): Convolutional Neural Networks (among other things)
  • Speech recognition, Hand-writing recognition: Recurrent Neural Networks
  • Market Segmentationk-means clustering
  • Google AlphaGoConvolutional Neural Networks
  • Image generationGenerative Adversarial Networks (GANs)
    This one is really cool. It deserves a picture for itself. GANs can do this for example (Picture credits: Newmu/dcgan_code):
Yeah, look again at that smiling man that was generated. And don’t forget to say hello to him in your nightmare tonight :P

Wednesday, September 6, 2017

[SHARE] - Lựa chọn cấu hình GPU cho Deep Learning - 1

Câu hỏi chọn cấu hình GPU nào để phù hợp với túi tiền và nhu cầu chạy thí nghiệm deep learning luôn được đặt ra.

Bài viết sau (cập nhật 30/01/2016) của tác giả YOLO khá hữu ích - Hardware Guide: Neural Networks on GPUs

Giá của PC vào khoảng 1,000 USD, và 4,000 USD cho 4 card Titan X.



Khi chọn cấu hình, cần lưu ý:


  • Loại card GPU
  • Motherboard
  • CPU
  • Power Supply
  • RAMRAM
  • HDD
  • Case
Một bài khác cũng có thể tham khảo tại đây: Which GPU(s) to Get for Deep Learning

Tuesday, September 5, 2017

[SHARE] - Elon Musk cảnh báo nguy cơ chạy đua trí tuệ nhân tạo


TTO - Một lần nữa tỉ phú công nghệ Elon Musk lên tiếng cảnh báo về nguy cơ xảy ra Thế chiến thứ 3 từ việc chạy đua phát triển công nghệ trí tuệ nhân tạo (AI) giữa các nước lớn.
              
Theo đài CNBC (Mỹ), lời cảnh báo của ông chủ công ty SpaceX rõ ràng là một phản hồi với quan điểm về AI mà tổng thống Nga Vladimir Putin nêu ra tuần trước. Khi đó ông Putin cho rằng ai giành được ngôi vị thủ lĩnh toàn cầu về AI cũng sẽ "trở thành người thống trị thế giới".

Tỉ phú Elon Musk nêu quan điểm trên tài khoản Twitter: "Trung Quốc, Nga và chẳng mấy nữa tất cả các nước đều sở hữu khoa học máy tính mạnh mẽ. Cuộc ganh đua để giành thế vượt trội về AI ở cấp độ các nước chắc chắn sẽ gây ra Thế chiến thứ 3 theo quan điểm của tôi".

Mỹ hiện được xem là nước đi đầu trong xu hướng phát triển AI khi các tập đoàn công nghệ lớn nhất của họ như Google và Microsoft đều đang dốc đáng kể nguồn lực tài chính vào các dự án nghiên cứu và phát triển công nghệ này.

Tuy nhiên tuần trước một thông tin từ ngân hàng Goldman Sachs cho biết Trung Quốc rất có thể đã phát triển năng lực AI của họ và phần nào đã bắt kịp với Mỹ.

Ngân hàng đầu tư này cho rằng: "Chúng tôi tin là công nghệ AI sẽ trở thành một ưu tiên trong chương trình hành động của chính phủ và chúng tôi đồ rằng kéo theo đó sẽ là một loạt các chính sách ở phạm vi khu vực và quốc gia cũng như các nguồn ngân sách hỗ trợ dành cho AI".

Xem tiếp tại đây và tại đây.

Keyword: AI, trí tuệ nhân tạo, khoa học máy tính


[BIG DATA] - Scale Up vs Scale Out

Co giãn theo chiều dọc hay chiều ngang (Scale Up vs Scale Out) là vấn đề cốt lõi trong xử lí dữ liệu lớn nói riêng và các hệ thống lớn nói chung.

Để có thể hiểu về vấn đề co giãn (scalability) trong các hệ thống dữ liệu lớn - Dhãy lấy một ví dụ đó là bán vé xe lửa ngày thường và ngày Tết.

Thông thường, số lượng giao dich và lượng truy cập cho website bán vé xe lửa không lớn; tuy nhiên vào các đợt lễ Tết thì lượng truy cập tăng lên đột biến, có thể gây nghẽn mạng như đã từng xảy ra vào các năm trước đây.

Có hai cách tiếp cận: thứ nhất là mua một máy tính cấu hình thật mạnh để hi vọng có xử lí được trường hợp lượng truy cập tăng - hoặc thứ hai là mua nhiều máy tính cấu hình tương đối - và khi có lượng truy cập tăng thì tăng thêm máy vào hệ thống, và khi lượng truy cập giảm thì giảm đi.

Cách thứ nhất sẽ gây lãng phí tài nguyên khi lượng truy cập tăng chỉ thỉnh thoảng xảy ra, và tiềm ẩn nguy cơ rủi ro khi nếu sự cố xảy ra thì hệ thống shutdown; Ucách thứ hai mềm dẻo hơn - nhưng bù lại, việc xử lí trên nhiều máy sẽ phức tạp hơn, chậm hơn, và tốn năng lượng hơn.

Hai cách tiếp cận trên minh họa cho hai hướng tiếp cận khi xử lí bài toán co giãn - scale up (dồn hết vào một máy tính cực mạnh) và scale out (tản ra nhiều máy tính cấu hình tương đối). Việc chọn cách tiếp cận nào thì tùy vào trường hợp cụ thể - và mềm dẻo nhất là kết hợp cả hai cáchY.


Một ví dụ thực tế khác đó là chúng ta có cần xe bus trong Tp.HCM loại lớn - 2 tầng (scale up), hay là cần các xe bus loại nhỏ (scale out) - và việc vận hành sẽ thế nào khi mà nhu cầu đi lại tăng đột biến vào đầu giờ sáng và cuối giờ chiều tương ứng với thời gian đi học và đi làm của mọi người. Để giải quyết bài toán thực tế này, nên học cách thiết kế và vận hành của Hadoop (v2).

Tham khảo: https://www.brianjgraf.com/2013/05/17/scalability-scale-up-scale-out-care/

Keyword: big data, scale up, scale out, vertical, horizontal, scalability, hadoop, dynamic scaling 

@Lê Đình Duy

Monday, September 4, 2017

[SHARE] - Tại sao Data Science lại thu hút sự chú ý của nhiều người đến vậy?

Câu trả lời thú vị từ Quora cho thấy data science đóng vai trò rất quan trọng trong các cuộc đua bầu tổng thống Hoa Kỳ.

Because data science helped elect Donald Trump!

If there’s one person who deserves much more respect than he gets and (I think) is much smarter than people think, it’s Jared Kushner (Trump’s son-in-law), who oversaw the data operation for the Trump campaign.

According to this Forbes article, he built a 100-person data hub in Texas, which dictated every campaign decision including travel, fundraising, advertising, rally locations and even the topics of the speeches. He seems to have understood the true power of data-driven decision making and machine learning for sentiment manipulation and message tailoring.

As a simple example, the data operation extensively used social media micro-targeting to move from selling $8000 worth of merchandise per day to $80,000 per day, thus massively increasing the number of human billboards (aka “Make America Great Again” hats) in key swing states.

Yes, Obama did something similar in 2007. But a lot has changed in 9 years, especially the relevance of social media. From the same article:

"Jared Kushner is the biggest surprise of the 2016 election," adds Eric Schmidt, the former CEO of Google, who helped design the Clinton campaign's technology system. "Best I can tell, he actually ran the campaign and did it with essentially no resources."

And that is why data science is important. The amount of data the world generates is increasing exponentially and with that, the number of “unconventional” fields (politics, sports, journalism, etc.) that can now benefit from data is also ever increasing.

In short, data science is going to be important because it is not just a “tech” topic anymore.

Sriraman Madhavan, Stanford Statistics, Facebook Analytics Intern 

Keyword: data science, election, social-media

[HADOOP] - What is Big Data - Nhìn từ góc nhìn Hadoop

What is Big Data? Định nghĩa về dữ liệu lớn hay Khái niệm về dữ liệu lớn hay Dữ liệu lớn là gì?

Có thể tìm các câu trả lời cho các câu hỏi này trên Internet; và nói chung đa số sẽ nói về các đặc tính của dữ liệu lớn đó là 3V chính bao gồm Volume (kích thước), Velocity (tốc độ), Variety (tính đa dạng); và 2V khác bao gồm Veracity (tính xác thực) và Value (giá trị) - xem hình dưới đây:


Một cách rõ hơn có thể xem hình sau



Tuy nhiên, nếu đứng ở góc nhìn của những người làm, học, và ứng dụng Hadoop, thì đơn giản như trong video clip này - đó là: big data dùng để chỉ dữ liệu quá lớn đến nỗi không thể xử lí trên một máy đơn.

Như vậy, Dnếu máy đơn của bạn có cấu hình mạnh - ví dụ 10TB đĩa cứng - thì kích thước dữ liệu mà hệ thống của bạn cần lưu trữ và xử lí phải trên 10TB mới được coi là dữ liệu lớnU. Trong khi đó, một máy đơn chỉ có 500GB đĩa cứng thì dữ liệu trên 1TB đã được coi là dữ liệu lớn.

Với góc nhìn này, không nhất thiết một hệ thống xử lí dữ liệu cỡ 10TB cần phải dùng Hadoop. Và do đó, không phải ứng dụng dữ liệu lớn nào cũng cần đến Hadoop (Ecosystem)Y.



Keyword: big data, hadoop, udacity, cloudera, velocity, veracity, volume, variety, value

@Lê Đình Duy

Sunday, September 3, 2017

[SHARE] - Sử dụng Python tại Google

Câu trả lời thú vị từ quora cho câu hỏi: What is Python used for at Google?

Python is an official language at Google. Alongside two other prominent languages Java and C++. Google even supports the development of Python programming language and sponsors various Pyhon conferences like PyCon. Until 2012, the designer and creator of Python, Guido van Rossum was employed by Google when left to work for DropBox.

Well, coming to the question, Python is used at Google for its countless internal systems as well as:

  • Most of the core search algorithms at Google are written in Python and C++.
  • Various build systems, log analysis, code review tools etc are written in Python by Googlers.
  • Lots of Open Source libraries .
  • Various Data and API libraries like Google Data Python Client Library, Google APIs Client Library for Python and Google AdWords API Python Client Library.
  • YouTube : Previously it was written in PHP but eventually it was replaced by Python and the site uses Python heavily for various purposes like view video etc.
  • One of the main website for hosting for Google developers code.google.com as well.
  • And currently, most of the Machine Learning, AI as well as robotics projects at Google are implemented using Python and lots of C++.
Chandan Chaurasia



Keyword: Python, Google, machine learning, AI

[HADOOP] - HDFS và MapReduce: Hai thành phần chính của Hadoop

Các tiếp cận cơ bản nhất trong thiết kế của Hadoop đó là việc sử dụng các commodity hardware (phần cứng giá vừa phải, không quá đắt - dung lượng RAM và đĩa cứng, tốc độ CPU không cần quá mạnh) kết nối lại với nhau, Dnhư minh họa ở hình dưới đây:


Cách tiếp cận này để giải quyết bài toán co giãn của hệ thống (scalability) - khi nhu cầu lưu trữ và xử lí tăng lên - chỉ cần mua thêm máy gắn vào hệ thống; chứ không mua một cái máy thật đắt tiền (với dung lượng RAM và đĩa cứng lớn, CPU cực mạnh). Ngoài ra, khi có hỏng hóc (chuyện xảy ra thường xuyên khi vận hành các hệ thống lớn và hoạt động liên tục, chỉ cần tháo máy hư ra và lắp máy mới vào.

Với cách tiếp cận này, hai vấn đề phải giải quyết đó là:

1. Làm thế nào để lưu trữ các tập tin trên nhiều máy sao cho đối với người dùng, người dùng có cảm giác như là lưu trữ trên một máy? UVí dụ, khi mua một sản phẩm từ nguyenkiem hay dienmayxanh, người dùng không biết thực sự là sản phẩm đó nằm ở kho hàng nào, một cách tương tự - khi yêu cầu đọc một tập tin - người dùng cũng không cần biết nó lưu trữ trên máy nào.

2. Làm thế nào để tận dụng được năng lực xử lí của các máy tính trong hệ thống để thực hiện các tác vụ đòi hỏi năng lực tính toán lớn? Ví dụ, cần xử lí dữ liệu của CoopMart gồm hàng trăm cửa hàng, cần phải chia nhỏ việc xử lí thành nhiều máy cùng chạy SONG SONG, thay vì xử lí tập trung ở một máy.

Do đó, trong Hadoop có hai thành phần chính đó là - như giới thiệu trong video clip dưới đây:

1. HDFS - Hadoop Distributed File System - dùng cho vấn đề lưu trữ.

2. MapReduce - dùng cho vấn đề xử lí song song/phân tánY.


Lưu ý rằng, đây là thời điểm của năm 2006 khi Hadoop ra đời - theo thời gian, công nghệ lưu trữ và tính toán ngày càng phát triển, và Hadoop cũng đã tiến hóa từ phiên bản ban đầu đến phiên bản tích hợp nhiều thành phần khác nhau - hợp thành Hadoop Ecosystem.



Tham khảo: https://www.slideshare.net/cloudera/chicago-data-summit

Keyword: hdfs, mapreduce, file distributed system, scalable, hadoop, commodity hardware, scale out, udacity, cloudera


@Lê Đình Duy

Saturday, September 2, 2017

[HADOOP] - Doug Cutting nói về sự ra đời của Hadoop

Trong video dưới đây, Doug Cutting nói về sự ra đời của Hadoop.



Năm 2003, Doug phát triển phần mềm mở Nutch (máy tìm kiếm - we search engine) và gặp vấn đề khi số lượng các trang web phải thu thập và xử lí ngày càng lớnD. Hệ thống phải có tính co giãn (scalable) cao cả về mặt LƯU TRỮ và XỬ LÍ. Nói cách khác, cần phải có các giải pháp (thuật toán, phần mềm, etc) để có thể sử dụng tài nguyên của NHIỀU máy trong việc lưu trữ và tính toán (thay vì một máy như trước đây). Vào thời điểm đó, hệ thống Nutch chỉ có thể chạy trên 4-5 máy (nhưng không ổn định).

Năm 2004, Google công bố một số bài báo khoa học về hệ thống lưu trữ PHÂN TÁN (DFS) và và mô hình XỬ LÍ MapReduce; Doug Cutting và cộng sự tìm cách cài đặt lại dựa trên các bài báo của Google và hệ thống có thể chạy trên 20-40 máy. YSau đó, năm 2006, Doug Cutting làm việc tại Yahoo và tách phần tính toán phân tán (distributed computing plaform) từ Nutch ra và phát triển thành Hadoop;

Phiên bản Hadoop đầu tiên ra đời năm 2006 và từ đó được sử dụng rộng rãi và liên tục phát triển, có khả năng xử lí dữ liệu cực lớn trên hàng ngàn máy. Ngày nay, có nhiều phần mềm được bổ sung vào hệ thống ban đầu tạo nên một hệ sinh thái (ecosystem) như Spark, Pig, Hive, etcU - nên Hadoop bây giờ còn có thể hiểu như là Hadoop Ecosystem.



Tham khảo:
https://www.informationweek.com/big-data/software-platforms/hadoop-at-10-doug-cutting-on-making-big-data-work/d/d-id/1324138

Keyword: hadoop, map reduce, distribute file system, distributed computing platform, storage, big data, hadoop ecosystem, HDFS, doug cutting, udacity, cloudera

@Lê Đình Duy