10/18/2021

Chia sẻ các website học Machine Learning, Deep Learning và liên quan | Share


Nếu các bạn học Khoa học máy tính thì sẽ có 1 mô đun có môn học sâu và ứng dụng. Môn học sẽ giới thiệu tới mọi người các kĩ thuật cơ bản của học sâu, ứng dụng của học sâu, các phần cứng, phần mềm sử dụng trong học sâu,... Nhưng về cơ bản thì mọi thứ chỉ là mang tính giới thiệu là chính. 

Nếu muốn đi theo hướng này thì các bạn hãy tự mình tìm hiểu thêm, xin lên lab các thầy cô để được các thầy, các anh chị hướng dẫn và quan trọng hơn trên nếu cố gắng thì các bạn sẽ được các thầy cô giới thiệu tới các công ty để giành những suất học bổng, việc làm,...

Trong bài viết này mình sẽ chia sẻ tới mọi người một số website tốt nhất hỗ trợ việc học AI, ML, DL.

https://stanford.edu/~shervine/l/vi/

Blog của tác giả Shervine Amidi và người anh em song sinh của anh là Afshine Amidi. Website chia sẻ lại các nội dung là kết quả sau quá trình làm trợ giảng tại đại học Stanford gồm rất nhiều các phần, mục hay: 

  • Trí tuệ nhân tạo

  • Học máy

  • Học sâu

  • Phương trình vi phân thường

  • Xác suất và thống kê

Tek4 - tự học Tensorflow

Tensorflow là một thư viện deep learning mã nguồn mở được phát triển bởi Google và đây là một trong những công cụ phổ biến nhất sử dụng trong deep learning. Loạt bài viết này của Tek4 rất phù hợp cho người mới bắt đầu, biết ít hoặc chưa biết về tensorflow.

https://machinelearningcoban.com/

Chắc chắn là không thể thiếu website của anh Tiệp machinelearningcoban. Anh Vũ Hữu Tiệp là tiến sĩ ngành học máy và thị giác máy tính tại Đại học bang Pennsylvania (Pennsylvania State University), Hoa Kỳ. Blog này mình nghĩ khá là nổi tiếng vì có ranking khá cao trên Google và nếu mình không chia sẻ thì nhiều người cũng sẽ biết tới blog này rồi.

https://nttuan8.com/

Chúng ta đã có blog về machine learning cơ bản vậy thì cũng không thể thiếu blog deep learning cơ bản được. 


Blog deep learnig cơ bản được viết bởi tác giả Nguyễn Thanh Tuấn là thạc sĩ chuyên ngành Machine Learning, đại học Bristol, Anh Quốc. 

Anh Tuấn cũng là tác giả cuốn sách Deep Learning cơ bản. Blog của anh Tuấn cũng chia sẻ các các kiến thức về deep learning, Pytorch, mô hình GAN.

https://trituenhantao.io/

trituenhantao.io cũng là một cộng đồng lớn chia sẻ các kiến thức về AI, ML và DL, các bài viết về công nghệ, các tin tức về trí tuệ nhân tạo trên thế giới. Các bạn có thể tham gia đóng góp bài viết cùng với trituenhantao.io tại community.trituenhantao.io (bạn sẽ nhận được hoa hồng khi đóng góp các bài viết trên community.trituenhantao.io nhận từ Medium).

CS224N: Natural Language Processing with Deep Learning


Đây là loạt video bài giảng về xử lý ngôn ngữ tự nhiên với deep learning được đăng trên kênh youtube stanford online. Các bài giảng đều hấp dẫn và chi tiết với độ dài sấp xỉ 1 tiếng / 1 video.

Một số các blogs khác bạn có thể tham khảo thêm như là: 

10/16/2021

Native với Cross Platform: ưu và nhược điểm | Sharing


Khi mà chục năm trước thì web là sự theo đuổi của bao các lập trình viên kì nay kỉ nguyên của web đang dần khép lại, khép lại không phải là không tìm được việc nữa nha, mà là nó không còn hot, không còn là trend như chục năm về trước nữa chứ việc làm thì sẽ không bao giờ là thiếu. Thay vào đó thì ngày nay thiết bị di động, các thiết bị cầm tay đang dần trở lên phổ biến, vì thế phát triển ứng dụng cho các thiết bị di động đang dần trở lên phổ biến và tương lai trong mấy năm tới phát triển ứng dụng cho thiết bị di động sẽ là một trend mới.

Hiện nay có 4,4 triệu ứng dụng trên 2 chợ ứng dụng lớn nhất là Google Play và AppStore, nhắm vào thị trường 14 tỷ thiết bị di động trên toàn thế giới (xem biểu đồ bên trên). Dự kiến tới năm 2025 thì số thiết bị di động có thể lên tới 18,2 tỷ cái. Đây rõ ràng là một thị trường màu mỡ, giàu tiềm năng mà rõ ràng là ai cũng muốn chiếm lấy. Tiền lương trả cho các lập trình viên mobile cũng không hề thấp, với các bạn từ 2-3 năm kinh nghiệm thì mức lương 40 triệu đồng / tháng là bình thường, tuy nhiên vấn đề lương là khó nói chúng ta chỉ nhìn vào để làm động lực thôi. Mình sẽ không nói tới lương nữa vì nó là vấn đề nhạy cảm, các bạn chỉ biết rằng lập trình mobile app là một xu hướng và nếu các bạn giỏi thì các công ty hoàn toàn chải thảm đỏ mời các bạn về làm mới mức lương cực kì hấp dẫn.

OK! Nói qua vậy để mọi người thấy rằng phát triển ứng dụng cho thiết bị di động sẽ là xu hướng trong các năm tiếp theo. Vậy học lập trình mobile thì phải học cái gì? Có 2 loại ứng dụng mobile app là native app và cross platform app. Chúng ta sẽ đi từng vào từng loại một nha.

Native App Development

Phát triển ứng dụng native hay ứng dụng gốc tức là đề cập tới việc xây dựng ứng dụng dành riêng cho một nền tảng bằng các ngôn ngữ dành riêng cho nền tảng đó, ví dụ như Android sẽ là Java hoặc Kotlin, iOS sẽ là Swift hoặc Objective-C. 

Các ứng dụng gốc được hỗ trợ từ trực tiếp các nhà phát triển nền tảng nên các ứng dụng native là các ứng dụng có hiệu năng cao, trải nghiệm người dùng tốt. Tuy nhiên chi phí phát triển ứng dụng native là cao vì các công ty phải phát triển ứng dụng trên cả 2 nền tảng Android và iOS là độc lập với nhau. 

Ưu điêm việc phát triển ứng dụng Native: 

  • ‍Broad Functionality: bạn sẽ có quyền truy cập vào mọi API và công cụ do nền tảng mà bạn đang làm việc cung cấp. Về mặt kỹ thuật, không có giới hạn nào về cách các lập trình viên có thể làm việc với ứng dụng mới.

  • Hỗ trợ tốt hơn từ các store: một ứng dụng native sẽ dễ dàng xuất bản và được xếp hạng cao hơn trên các chợ ứng dụng vì chúng mang lại hiệu suất và tốc độ tốt hơn.

  • Khả năng mở rộng: các ứng dụng được xây dựng cho môi trường gốc cũng có xu hướng mở rộng hơn, nhờ sự linh hoạt trong quản lý tài nguyên và hàng loạt công cụ có sẵn.‍

  • Hiệu năng cao và trải nghiệm người dùng tốt: các ứng dụng native được hỗ trợ trực tiếp từ các nhà phát triển nền tảng nên mang lại hiệu năng tốt hơn, trải nghiệm người dùng tuyệt vời hơn.

Hạn chế của phát triển ứng dụng native: 

  • Giá thành và thời gian: việc phát triển ứng dụng native chỉ giúp cho ứng dụng của bạn chạy trên 1 nền tảng, điều đó dẫn tới bạn phải có 1 team khác để build lại 1 ứng dụng khác, mới hoàn toàn để chạy trên các nền tảng khác, điều này là rất tốn kém và mất thời gian.

Cross-platform App Development

Phát triển ứng dụng đa nền tảng chỉ ra quá trình tạo ra một ứng dụng hoạt động trên một số nền tảng. Điều này được thực hiện bằng cách sử dụng các công cụ như React Native, Xamarin và Flutter, nơi các ứng dụng được tạo có thể được triển khai trên cả Android và iOS.

Khi ứng dụng được viết một lần và có thể chạy đa nền tảng thì điều này giúp cho bạn có thể tiết kiệm được thời gian cũng như tiền bạc bỏ ra so với khi xây dựng các ứng dụng Native.

Về ưu điểm và hạn chế của cross-platform? Gần như mọi thứ là ngược lại so với app native. Khi phát triển các ứng dụng platform các bạn có thể gặp khó khăn khi truy cập vào các chức năng của điện thoại thông minh như micro, máy ảnh, ... (‍Limited Functionality), các ứng dụng đa nền tảng thường chậm hơn so với các ứng dụng gốc vì chúng cần một lớp khác ở giữa bổ sung, các ứng dụng đa nền tảng không thể tận dụng các UX gỗc nên mang lại trải nghiệm người dùng không tôt.

Ưu điểm duy nhất mà cross-platform mang lại chính là tiền, chi phí. Việc phát triển ứng dụng đa nền tảng sẽ giúp bạn chỉ cần viết 1 lần mà ứng dụng có thể chạy trên các nền tảng khác nhau. Ưu điểm tuy ít nhưng nó là mấu chốt để cho các nền tảng cross-platform phát triển ngày càng mạnh.

Tại trường Đại Học Bách Khoa Hà Nội các bạn có 2 môn học là "Phát triển ứng dụng cho thiết bị di động" và "Phát triển ứng dụng đa nền tảng" là được học về phát triển mobile app. Với môn "Phát triển ứng dụng đa nền tảng" các bạn được học về các nguyên lý đa nền tảng, các framework đa nền tảng như là React Native và Flutter. Với môn "Phát triển ứng dụng cho thiết bị di động" các bạn được dạy tập chung vào phát triển ứng dụng native trên Android với công cụ Android Studio, mình sẽ nói kĩ hơn về 2 môn này trong các bài viết sau nha.

Nếu các bạn muốn theo mobile app thì nên học gì? Với ý kiến của mình các bạn nên chọn cho mình 1 nền tảng  để phát triển app native để học (Android hoặc iOS) và 1 framework hỗ trợ phát triển các app cross-platform (React Native hoặc Flutter). Đó là ý kiến của mình thôi, còn dĩ nhiên các bạn có thể học tập chung vào Android, hoặc học tập chung vào iOS hoặc là học tập chung vào 1 trong các framework đa nền tảng cũng không hoàn toàn có vấn đề gì.

Tham khảo: https://www.uptech.team/https://www.statista.com/

10/05/2021

Công nghệ web và dịch vụ trực tuyến | Tài liệu, chuyên ngành


Công nghệ web và dịch vụ trực tuyến và một môn chuyên ngành, nằm trong module 4, module phát triển ứng dụng nghiệp vụ. Trong môn này các bạn sẽ được học tất cả những thứ có thể làm ra 1 trang web từ các ngôn ngữ phát triển phía máy khách như HTML, CSS, JS, các ngôn ngữ phát triển phía máy chủ PHP, Java, Nodejs, học về XML, DTD, học về các mô hình lập trình như MVC. Và dĩ nhiên rồi, vì kiến thức là rất nhiều mà khoảng thời gian học chỉ có 1 kì học nên có những thứ sẽ học kĩ, nhưng có những thứ chỉ mang tính chất giới thiệu là chính.

Ngôn ngữ backend chính được dạy trong môn học là PHP, vì thế nếu các bạn sử dụng các ngôn ngữ khác thì phải tự mày mò tìm hiểu là chủ yếu.

Nhìn chung thì mình thấy lý thuyết của môn này học cũng không cuốn hút, đa phần là lượng kiến thức mà các bạn đã biết chỉ có 1 số ít là các kiến thức mới thì lại học rất ít. Tuy nhiên thì bài tập lớn môn này rất là mở và sẽ thỏa mãn được đam mê của các bạn, thường và hầu hết các thầy/ cô dạy môn này sẽ cho mọi người xây dựng 1 trang web bất kì nào, nếu các bạn học Đào Thành Chung thì thầy sẽ không cho sử dụng framework trong bài tập lớn vì thế nếu bạn nào học thầy Chung thì xem xét nha, tuy nhiên thầy cho điểm rất thoải mái, nhóm có điểm bài tập lớn đứng đầu còn được miễn thi.

Ngoài ra môn này sẽ có bài tập hàng tuần về kiến thức đã học trong tuần đó, các thức kiểm tra bài tập tuần của mỗi thầy/cô là khác nhau nhưng nói chung là các bạn phải làm bài tập tuần nha. 

Tóm lại mình nhìn nhận về môn này là rất dễ kiếm điểm, các bạn có thể không cần học nhiều đâu, chỉ cần dựa vào kiến thức mà các bạn đã có về web từ trước tới giờ cộng với ôn tập 1 tí thôi là A+ rồi.

Tài liệu

  • Slide công nghệ web và dịch vụ trực tuyến mới từ viện: LINK 1 | LINK 2
    (Đường link 1 là slide mới hơn mà mình nhận được, nhưng link 2 lại có thêm 1 số slide về servlet và 1 số thứ khác mà các bạn có thể tham khảo thêm)

  • Slide công nghệ wb và dịch vụ trực tuyến - thầy Đào Thành Chung: TẢI VỀ SLIDE

Bài tập lớn

Bài tập lớn như mình đã nói bên trên là đề tài tự do và các bạn hoàn toàn có thể chọn làm bất cứ cái gì mà các bạn thích. Sau khi làm xong các bạn có thể đẩy web lên các host, việc đẩy web lên host và demo trực tiếp để mọi người cùng vào thử nghiệm sẽ được các thầy/cô đánh giá cao và ưu ái hơn trong việc cho điểm, dĩ nhiên là hơn hết các bạn phải tập chung vào sản phẩm của mình, còn thời gian hãy nghĩ tới việc này. Có nhiều thầy/cô không hẳn là thích giao diện đẹp đâu, vì các thầy/cô đều nghĩ đẹp hầu như là các bạn đi cop, vì thế hãy cố gắng tập chung vào logic và phần backend nha, giao diện có thể phèn phèn 1 tí nhưng website có nhiều chức năng sẽ là 1 điểm mạnh. Dĩ nhiên là phần giao diện cũng phải đáp ứng được các yêu cầu của thầy giáo đưa ra như responsive,...

Mình sẽ có 1 bài hướng dẫn đẩy 1 website viết bằng PHP lên host, các bạn theo dõi nha.

Cuối cùng là bạn có thể tham khảo 1 project của mình tại đây nha: https://github.com/trannguyenhan/selling-computer (mặc dù giao diện không đẹp bằng các nhóm khác tuy nhiên project may mắn có điểm cao nhất)

9/21/2021

Tính toán tiến hóa | Tài liệu, chuyên ngành


Trong CTDL hay thuật toán ứng dụng các bạn đã biết tới bài toán người du lịch (TSP) là 1 bài toán NP-Khó, tức là để có thể đưa ra lời giải của bài toán chúng ta chỉ có cách là duyệt toàn bộ. Tuy nhiên thì điều này chỉ thỏa mãn và hợp lí với những bài mà N nhỏ khi N lớn thì không gian tìm kiếm tăng nhanh và việc duyệt toàn bộ để tìm ra kết quả tối ưu là gần như không thể. Trong các môn CTDL hay thuật toán ứng dụng chúng ta cũng chỉ được làm quen bài toán TSP với những giá trị N nhỏ để thực hiện duyệt toàn bộ tìm ra lời giải tối ưu của bài toán.

Tuy nhiên khi N tăng thậm chí là N rất lớn chúng ta vẫn có thể tìm được lời giải tối ưu của bài toán này (chỉ là có thể thôi nha) bằng các giải thuật tiến hóa. Các giải thuật tiến hóa đang được phát triển và sử dụng rộng rãi trong việc giải quyết các bài toán tối ưu NP-Khó, NP-Đầy đủ.


Có thể các bạn hơi ngỡ ngàng nhưng tính toán tiến hóa là 1 nhánh của trí tuệ nhân tạo nghiên cứu các giải thuật tối ưu tìm kiếm dựa trên học thuyết tiến hóa Darwin.

Có nhiều bạn đọc từ đầu tới giờ cứ tưởng như là chúng ta đang làm quen với môn sinh học mất, nhưng chỉ là lấy ý tưởng từ sinh học thôi nha, giải thuật tiến hóa là các giải thuật mình thấy rất là hay và lab cô Bình là lab tối ưu làm rất nhiều về giải thuật tiến hóa, bạn nào quan tâm tới vấn đề tối ưu thì có thể xin vào lab cô Bình nha, mình sẽ có riêng 1 bài viết khác về lab cô Bình nên bài viết này mình không lan man nhiều về vấn đề này.

Môn học này theo mình biết thì hiện tại chỉ có cô Bình dạy thôi, cô dạy môn này thì nói chung là rất thoải mái cả về giờ giấc lẫn cách học, chủ yếu là các bạn sẽ được phân vào các nhóm nghiên cứu trên lab của cô để làm bài tập lớn thôi, giữa kì các bạn sẽ trình bày về 1 cái gì đó mà mình học được trong nhóm cùng các anh/chị như là trình bày lại 1 bài báo mà mình đọc được hay là trình bày cách giải quyết 1 đề tài được các anh/chị trong nhóm giao. Về cơ bản thì không nhất thiết phải sử dụng các giải thuật di truyền mà các bạn có thể sử dụng các giải thuật heuristic, trình bày về các giải thuật heuristic cô đều chấp nhận và đồng ý hết. 

Dưới đây mình chia sẻ tới các bạn 1 số bài giảng, tài liệu dành cho môn học này gồm có slide bài giảng, và 1 số bài báo đã được public về k-coverage, q-coverage: 

  • Slide môn học tính toán tiến hóa: PDF | PPTX | ZIP (các bạn lên mang slide đi in ra nha, nhớ khi in dùng bản powerpoint - pptx nha để có thể in được full các phần, bản pdf nhiều trang các hình ảnh sẽ bị đè nên chữ)

9/17/2021

Tạo biểu đồ ER Diagram cho cơ sở dữ liệu với MySQL Workbench | Share


ERD là một loại lưu đồ minh họa cách các “thực thể” như con người, đối tượng hoặc khái niệm liên quan với nhau trong một hệ thống. Sơ đồ ER thường được sử dụng để thiết kế hoặc gỡ lỗi cơ sở dữ liệu quan hệ trong các lĩnh vực kỹ thuật phần mềm, hệ thống thông tin kinh doanh, giáo dục và nghiên cứu.

Biểu đồ ER được sử dụng để lập mô hình và thiết kế cơ sở dữ liệu quan hệ, về mặt logic và các quy tắc nghiệp vụ (trong mô hình dữ liệu logic) và về công nghệ cụ thể sẽ được thực hiện (trong mô hình dữ liệu vật lý.) Trong kỹ thuật phần mềm, một sơ đồ ER thường là bước đầu tiên để xác định các yêu cầu cho một dự án hệ thống thông tin. Sau này nó cũng được sử dụng để lập mô hình một cơ sở dữ liệu hoặc các cơ sở dữ liệu cụ thể. Cơ sở dữ liệu quan hệ có một bảng quan hệ tương đương và có thể được biểu diễn theo cách đó khi cần thiết.

Hầu hết các công cụ UI hỗ trợ các cơ sở dữ liệu đều có chức năng chuyển trực tiếp từ cơ sở dữ liệu thành biểu đồ ERD, với MySQL Workbench thì hơi khó để tìm ra điều này, mình có một hướng dẫn ngắn để giúp mọi người có thể tạo ERD rất nhanh và ngắn gọn, cùng xem video dưới của mình nha.



Xem thêm về biểu đồ ERD bạn có thể tham khảo thêm TẠI ĐÂY

9/12/2021

Nhập môn học máy và khai phá dữ liệu | Phần 1


Trong seri bài này mình sẽ tóm tắt các phần liên quan tới học máy và khai phá dữ liệu dựa trên slide và bài giảng môn học được thầy Thân Quang Khoát giảng dậy https://bkai.ai/ (facebook BK AI fb.com/bk.ai ). Bài viết gạch ra một số ý mà theo mình thì nên trọng tâm, tuy nhiên mình khuyên các bạn nên học bài bản và xem video vì cá nhân mình xem 1-2 lần thì vẫn hơi mông lung :(  . Đây là môn học nên tảng, cung cấp kiến thức cơ bản nhất cho các bạn theo định hướng data scientis (hiểu sơ sơ  là sử dụng các kĩ thuật học máy (cluster analysis, decision trees, random forest, neural networks, logistics regression, ...) để xây dựng các mô hình toán học phục vụ các bài toán kinh doanh ), còn cụ thể data scientis, data engineer, data analysis như nào các bạn có thể tham khảo yt.com/dataGuyStory và theo mình tìm hiểu data scientis thường là người có mức lương cao nhất.

Bài này mình sẽ tóm tắt 2 phần giới thiệu chung và Hồi quy (Regression) , còn lại một số khác như -Phân cụm(Kmean) , Học dựa trên láng giềng KNN, Cây quyết định, ... có lẽ (chỉ là có lẽ :D ) mình sẽ ra ở bài sau. Tài liệu môn học này sẽ được đăng sau nha :D 

Giới thiệu chung

  • Học máy : xây dựng hệ thống tự cải thiện bản thân bằng cách học từ dữ liệu

  • Khai phá dữ liệu : tìm ra tri thức

  • Học : improve Performance at Task, following Experience.
    ví dụ với bài toán phân loại thư rác :
    • P : độ chính xác của phân loại thư đó là rác 

    • T : phân loại

    • E : tập thư thường/ rác đã có từ trước thời điểm phân loại 

  • Bản chất của việc học : học hàm f : x -> y. f còn gọi là model (dữ liệu theo 1 mô hình nào đó ). học model là học tham số của model đó.

  • Dữ liệu học : tập học (training set, tập quan sát ) gồm X, Y (tập các x và y tương ứng). x là dữ liệu đầu vào và y là đầu ra của dữ liệu đó 

  • Phân loại: 

    • Học có giám sát ( supervised learning): 

      • Classification : Multiclass (phân loại nó vào 1 lớp), Multilabel(phân nó vào nhiều lớp - gán nhiều nhãn)

      • Regression : khác với classification là đây đầu ra liên tục.

    • Unsupervised learning (không có y, dữ liệu không có nhãn)

      • Phân cụm

      • Phát hiện xu hướng

    • Học bán giám sát :  Semi-Supervised Learning

    • Học tăng cường : Reinforcement Learning

  • Vấn đề: 

    • Giải thuật học ( chủ yếu là lặp để tối ưu) không hội tụ : No-free-lunch. không có thuận toán luôn hiệu quả trên mọi ứng dụng. mỗi bài toán cần thử nghiệm nhiều thuật toán xem cái nào tốt nhất.

    • Lựa chọn dữ liệu : nhiễu, lỗi

    • Khả năng học: khả năng khái quát hóa ( generalization) tập học để có thể  phân loại tốt trên tập thực tế(tập dữ liệu mới, tập dữ liệu tương lại  ), tránh vấn đề overfitting.

    • Overfitting (xảy ra khi khái quát hóa tốt khi học nhưng với tập dữ liệu tương lai, cái cần thì lại rất tệ ) : mô hình quá phức tạp, dữ liệu lỗi, quá bé.

    • Mong muốn tổng quát hóa cao , tương đương với việc không dính overfitting

    • Giải quyết : 1 trong số đó là kĩ thuật Regularization

Hồi quy

  • Học hàm, đầu ra liên tục

  • Linear model

  • x là đầu vào(các x i là các thuộc tính của 1 dữ liệu đầu vào / trong tập dữ liệu đầu vào ), w là trọng số, là cái cần đi học, tương đương với việc xác định đầu vào x đóng góp bao nhiêu phần vào việc quyết định đầu ra cho mô hình 

  • Cách học :

    • Hàm lỗi(lost, cost function) : với tập w hiện tại , ta sẽ tính được đầu ra, đầu ra đó là đầu ra của model (linear model ), nó hoàn toàn có thể khác với thực tế. đại loại lấy sai khác 2 cái này (đầu ra dự đoán của model với thực tế) 

    • Mong muốn lỗi này trên tất cả dữ đầu vào mà mình sở hữu trung bình thấp nhất

    • Thuật toán học : 

      • Cực tiểu hóa lỗi ordinary least squares: dùng gradient descent(từ từ cập nhật trọng số cho phù hợp )  có thể giải bằng toán học : chuyển vị gì đấy …(cho đạo hàm bằng 0 tìm luôn w cho nhanh ), vấn đề không có ma trận chuyển vị ?

      • phương pháp trên quá tập trung vào dữ liệu,không có bất cứ gì để điều chỉnh  khả năng tổng quát hóa cho tương lai =>sinh ra Ridge regression  bằng cách thêm lamda nhân bộ w(một đại lượng hiệu chỉnh mà mình đã nhắc trong bài 1 -Regularization ), hiểu là sau khi cho vào thì bạn sẽ cố gắng ép bọn w vê càng 0 càng tốt => kéo theo mỗi thuộc tính sẽ đóng góp rất ít vào việc quyết định đầu ra, tổng quát hơn (đoán thế :D). Nói chung turning lamda sẽ điều chỉnh đc độ overfitting. lamda càng lớn w càng nhỏ, lỗi tập train tăng, độ tổng quát tăng. (đánh đổi). lamda > 0 thì ma trận luôn khả nghịch

      • Lasso : cái lamda nhân bộ w ở trên cụ thể là nhân với L2 bộ w. ở đây thay L2 bằng L1. điểm hay của L1 là giảm miền tìm kiếm, lựa chọn thuộc tính(sẽ có 1 số thuộc tính không tác dụng cho w của nó = 0 ). dùng cho các bài toán nghiệm thưa . mất tính chất luôn  khả nghịch.

Mong nhận được bình luận cảm nhận, góp ý từ các bạn :(

9/10/2021

Học sâu và ứng dụng | Tài liệu, chuyên ngành


Môn này là một môn nằm trong mô-đun "Phân tích dữ liệu thông minh" của bên khoa học máy tính tức là nó đã là một môn chuyên ngành rồi, không còn là môn cơ sở ngành nữa, môn này cũng là môn chuyên ngành đầu tiên mà mình viết và chia sẻ trên website.

Deep Learning thì là một trend hot trong những năm gần đây rồi, khi mà nhà nhà học Deep, người người học Deep và môn này mang lại cho bạn những gì cơ bản nhưng cũng không hề thiếu những phần nâng cao nha vì nó là một môn chuyên ngành rồi. Các bạn sẽ được học về: 

  • Tổng quan về mạng nơ ron
  • Mạng CNN 
  • Cách huấn luyện mạng nơ ron 
  • Bài toán Object detection 
  • RNN
  • NLP
  • Ngoài ra các bạn còn được giới thiệu các phần cứng cho học máy, các công cụ phần mềm hay sử dụng trong học máy


Tuy nhiên thì thực sự mình thấy là mỗi bài tuy đề cập tới những phần nâng cao nhưng lại nói 1 cách khá tổng quát và không được chi tiết, tất nhiên rồi cũng vì thời gian của các tiết học là có hạn và các bạn muốn hiển sâu hơn bắt buộc phải tự học rất nhiều nha, môn này cũng rất nhanh mất gốc nếu 1-2 tuần mà không động vào là tối cổ luôn rồi.

Có một câu hỏi về môn này là không biết gì thì có thể học được không? tất nhiên là nếu bạn đăng kí được môn tức là bạn đã đủ điều kiện để học môn này khi đã học hết các môn điều kiện, tuy nhiên lời khuyên thực sự chân thành của mình là hãy đăng kí môn này khi đã có cho mình một ít kiến thức về hoc sâu rồi, thế nào là có kiến thức? cái này thực sự là khó định nghĩa, tùy vào bạn tin tưởng vào năng lực của bạn thân thế nào thôi, mình có thể lôi ra 1 số tiêu chí để bạn có thể xem nha: 

  • Bạn phải hiểu được luồng đi của Deep Learning, chúng ta cần làm gì, phải làm gì trong từng bước

  • Có thể tự code 1 lại 1 mạng cơ bản, bạn có thể tham khảo TẠI ĐÂY nha

  • Biết qua về 1 số framework cơ bản, qua thôi nha có thể là mxnet, tensorfow hoặc pytorch

Về tiêu chí thứ 3 mình đưa ra ý là vì bài tập lớn chắc chắn các bạn phải dùng tới các framework này nhưng trong quá trình học các bạn không được dạy đâu, mà chỉ được các thầy cô giáo nhắc tới và sẽ được nhắc là về tự tìm hiểu mà lúc đấy mới tự tìm hiểu xong làm bài tập lớn thì thực sự là khó trừ khi có ai đó trong team gánh.

Ngoài ra, trong kì học bạn phải thực sự dành ra thời gian cho môn học, 1 ít thôi không cần nhiều đâu, chỉ là không bỏ bê là được. 


TOÀN BỘ TÀI LIỆU ĐỂ HỌC MÔN NÀY BẠN CÓ THỂ TẢI VỀ TẠI ĐÂY NHA

(sẽ bao gồm slide môn học, đề thi, các tài liệu, bài báo về học sâu, các ví dụ và 1 số bài lab để mọi người tham khảo)


BÀI TẬP LỚN

Môn này bạn sẽ phải làm một project về Deep Learning theo nhóm, ngoài ra bạn có thể chọn việc là review lại 1 paper nào đó ( cái này tùy thầy/ cô dạy nha). Các đề tài mà hay được chọn có thể như là: nhận diện biển số xe, thêm chú thích cho ảnh, dịch máy, ... Nếu như các bạn nghĩ đề tài mình đơn giản quá sợ không được điểm cao hay là quá phức tạp sợ không làm được có thể nhờ các thầy/ cô review qua về đề tài nha, các thầy/ cô luôn luôn sẵn lòng để trả lời các câu hỏi của các bạn đó.

9/02/2021

Nhập môn công nghệ phần mềm | Tài liệu, cơ sở ngành CNTT


Nhập môn công nghệ phân mềm, nghe tên chắc chắc các bạn sẽ liên tưởng tới việc học môn này sẽ được các thầy dạy về code 1 phần mềm như nào và rồi bài tập lớn sẽ được làm 1 project về tạo một phần mềm nào đó nghe cũng đã thấy thích rồi. Thực chất nếu ai suy nghĩ như trên thì chỉ đúng được 1 phần nhỏ thôi. Môn này chúng ta sẽ được học 1 quy trình đầy đủ để tạo ra 1 phần mềm gồm rất nhiều bước không chỉ riêng gì bước xây dựng phần mềm bằng các ngôn ngữ lập trình, chúng ta sẽ phải: 

  • Đặc tả yêu cầu, phân tích yêu cầu, thương lượng với khách hàng
  • Đặc tả chức năng, trạng thái,... bằng các biểu đồ như DFD, Use-case,...
  • Thiết kế UI
  • Xây dựng phần mềm
  • Kiểm thử

Nói chung thì rất là lý thuyết, nhàm chán nhưng cũng là những thứ mà mình nghĩ là nên biết chút ít để biết đường sau có thể còn tìm hiểu tài liệu trên Google, chứ nếu không biết gì thì sau còn không cả biết cách search như nào.

Ngoài ra khi làm bài tập lớn môn này các bạn phải làm quen với rất nhiều công nghệ như là git để quản lý mã nguồn hay là một số công cụ để mô hình hóa khác. Bài tập lớn môn này thì là các bạn sẽ phải làm một phần mềm nha, tùy vào thầy/ cô và tùy vào kì học thì yêu cầu sẽ khác nhau với từng kì nhưng sẽ giống nhau cho các lớp. Thường thì sẽ là các thầy sẽ cho trước đề tài và các bạn sẽ phải xây dưng phần mềm để đáp ứng yêu cầu đó, và nên nhớ là không chỉ code đâu nha, các bạn còn phải đặc tả, vẽ use-case, DFD,... các kiểu, xong rồi test,... Mình sẽ nói rõ hơn ở phần dưới nha.

Môn này bạn có thể học thầy Tuấn, thầy dạy thì đều đều giọng nên rất buồn ngủ, tuy nhiên thì thầy cho điểm khá thoáng, chấm bài tập lớn cũng khá thoáng nên điểm cũng rất cao. Còn thầy Nguyễn Nhất Hải các bạn cũng có thể cân nhắc, nhưng thầy Hải cho điểm khá chặt nên điểm không được cao cho lắm.

Môn này thì nói chung rất là phong phú, kiến thức để học phải nói là cực nhiều, ôn thi bạn nên ôn thi theo hướng dẫn của thầy/ cô giáo chứ để đọc lại slide mà nhớ hết để thi chắc khó, các bạn có thể tham khảo 1 số tài liệu của mình dưới đây nha: 

  • Slide bài giảng môn NM CNPM - thầy Nguyễn Mạnh Tuấn: TẢI VỀ SLIDE

BÀI TẬP LỚN

Mình muốn nói qua về phần bài tập lớn này thôi, các bạn có thể xem qua 1 báo cáo về bài tập lớn TẠI ĐÂY và các bạn cũng có thể thấy là chúng ta cần phải làm rất nhiều việc và mỗi việc không phải chỉ làm qua loa mà phải chi tiết để ghi lại trong báo cáo này. Mẫu báo cáo các bạn sẽ được cho sẵn nên yên tâm phần này.

Ví dụ về 1 bài tập lớn, các bạn sẽ được cho một ngữ cảnh về 1 khu dân phố nào đó và có 7 yêu cầu cần làm cho tổ dân phố đấ ví dụ như là: 

  • Quản lý thông tin sổ hộ khẩu
  • Quản lý thu phí, đóng góp
  • Quản lý sử dụng nhà văn hóa
  • Quản lý sinh hoạt, họp tổ dân phố 
  • Quản lý cấp phần thưởng
  • Quản lý thông tin phản ánh, kiến nghị 
  • Quản lý thông tin phòng tránh COVID-19

Với đề tài (1) - "Quản lý thông tin sổ hộ khẩu" thì các bạn đã được các thầy/ cô cung cấp đầy đủ từ 1 file báo cáo đầy đủ tới 1 sản phẩm được bằng App sử dụng Java Swing. Các bạn được quyền lựa chọn các đề tài từ (2) tới (7) và phát triển từ App mà các thầy/ cô đã cung cấp ( có thể là sửa đổi từ App của thầy/ cô giáo) hoặc các bạn có thể tự làm 1 App mới có thể trên nền tảng Web hoặc App bằng bất cứ ngôn ngữ gì bạn muốn nha. Tuy nhiên, như mình nói là không chỉ ra sản phẩm các bạn còn phải làm rất nhiều việc để có 1 quy trình tạo ra phần mềm hoàn chỉnh và bước xây dựng phân mềm chỉ là 1 bước nhỏ mà hầu hết các bạn sẽ tập chung vào nó dẫn tới chểnh mảng các phần khác.

Các bạn có thể xem danh sách các BÀI TẬP TUẦN ở đây nha, từng tuần các bạn sẽ có những task riêng để hoàn thành và nó chính là một phần trong bài tập lớn của các bạn, sau chỉ cần kết hợp lại thôi (Bài tập tuần 1 sẽ bao gồm cả đề tài để cả nhóm lựa chọn). 

Các bạn có thế lựa chọn công nghệ JavaFX cho sản phẩm của mình, nếu ai chưa biết có thể xem 1 bài chia sẻ của website về JavaFX TẠI ĐÂY nha.

8/25/2021

Background cần thiết khi ứng tuyển vào lab thầy Khoát | Góc lên LAB học gì?


LAB của thầy Khoát là một LAB nghiên cứu về Machine Learing và là một LAB cũng khá to, sinh viên tham gia LAB được đào tạo khá bài bản và được tuyển vào LAB cũng không phải dễ dàng. Các bạn phải trải qua 2 vòng, vòng 1 thầy sẽ xem qua về bảng điểm của các bạn, điểm CPA, GPA và 1 số môn nền tảng quan trọng như Đại số, Giải tích,... (Mình nghe nói nếu mà D Đại số thì thôi auto trượt nên nếu D đại số chắc không cần ứng tuyển vào lab thầy làm gì cho mất công). Sau khi vượt qua vòng 1 các bạn sẽ được cho 1 list các kiến thức background cần thiết để học, sau 2-3 tháng các bạn sẽ được phỏng vấn trực tiếp cùng các thầy, qua được vòng này các bạn mới chính thức là thành viên của LAB (các kiến thức background cần thiết để ứng tuyển vào LAB mình sẽ chia sẻ ở bên dưới nha)



Vào LAB thầy các bạn sẽ được đào tạo rất bài bản vì thế nên các bạn mất khá nhiều thời gian ban đầu cho việc training. Thế nên lời khuyên của mình là nếu apply vào LAB thầy Khoát thì các bạn nên xin vào ngay từ năm thứ 2, vì bây giờ cũng khá nhiều bạn học 4 năm và nếu năm 3 các bạn mới tham gia thì đã mất gần 1 kì để training rồi thì sẽ không còn bao nhiêu thời gian nữa cả. Khi tuyển thành viên cho LAB các thầy cũng khá ưu tiên các sinh viên năm 2 hơn là năm 3 vì thời gian gắn bó sẽ lâu dài hơn.

Background cần thiết khi học Machine Learning

Algebra (Đại số tuyến tính)

I. Set and mapping (Tập hợp và ánh xạ)
  1. Sets and elements
  2. Operations on sets
  3. Finite sets, countable sets, uncountable sets.
  4. Mapping
  5. Complex linear algebra

II. Matrix, determinant, system of linear equations (Ma trận, định thức, hệ phương trình)
  1. Matrix
  2. Determinant
  3. Invertible matrix
  4. Matrix rank
  5. System of linear equations

III. Vector space (Không gian véctơ)
  1. Vector space
  2. Subspace and span
  3. Linearly independent/dependent vectors
  4. Scalar product, metric space

IV. Linear mapping (Ánh xạ tuyến tính)
  1. Properties – kernel and image
  2. Matrix of linear mapping

V. Eigenvalues and eigenvectors (Giá trị riêng và véctơ riêng)
  1. Eigenvalues and eigenvectors
  2. Diagonalizing matrix
  3. Orthogonal diagonalizing

VI. Quadratic forms (Dạng toàn phương)



Analytics (Giải tích)

I. Real number (Số thực)
  1. Real sets
  2. Real chains

II. Real univariate function (Hàm 1 biến)
  1. Function graph
  2. Even/odd functions, monotonous functions, circular functions
  3. Composition functions
  4. Inverse functions
  5. Basis functions

III. Limit and continuity of univariate functions (Giới hạn, tính liên tục của hàm đơn biến)

IV. Derivative and differential of  an univariate function (Vi phân và đạo hàm của hàm đơn biến)

V. Primitive function and integration (Tích phân)

VI. Real multivariate function (Hàm đa biến)


Mathematical Optimization (Tối ưu hoá)

I. Linear programing (Quy hoạch tuyến tính)

II. Nonlinear programming

III. Convex optimization (Quy hoạch lồi, tối ưu lồi)
  1. Convex sets (tập lồi)
    1. Affine and convex sets
    2. Operations that preserve convexity
  2. Convex functions (hàm lồi)
    1. Basis properties
    2. Operations that preserve convexity
    3. The conjugate functions
    4. Quasiconvex functions
    5. Log-concave and log-convex functions
  3. Convex optimization problems (bài toán quy hoạch lồi)
    1. Quasiconvex optimization
    2. Linear optimization
    3. Vector optimization
  4. Duality (đối ngẫu)
    1. Lagrange dual problem
    2. Weak and strong duality
    3. Optimality conditions
  5. Unconstrained optimization (tối ưu không ràng buộc)
    1. Gradient descent/ascent method
    2. Steepest descent/ascent method
    3. Newton’s method



Probability and Statistics (Xác suất và Thống kê)

I. Probability (Xác suất)
  1. Sample space
  2. Events
  3. Probability of an event
  4. Additive rules
  5. Conditional probability, independence and the product rule
  6. Bayes’ Rule

II. Random variable and Probability distributions (Biến ngẫu nhiên và phân bố xác suất)
  1. Random variable
  2. Discrete probability distributions
    1. Poisson distribution
    2. Bernoulli distribution
  3. Continuous probability distributions
    1. Continuous Uniform distribution
    2. Normal distribution
    3. Gamma and Exponential distribution
    4. Beta distribution
    5. Chi-Squared distribution
  4. Joint probability distributions

III. Mathematical expectation (Kỳ vọng toán học)
  1. Mean
  2. Variance and covariance

IV. Functions of random variables (Hàm của các biến ngẫu nhiên)

V. Sampling distributions (Phân bố mẫu)
  1. Random sampling
  2. Sampling distributions
  3. Sampling distribution of means and the Central Limit Theorem
  4. t-Distribution
  5. F-Distribution

VI. One- and Two-sample tests of Hypotheses (Kiểm định giả thuyết)

Các bạn có thể thấy nền tảng toán là rất nhiều phải không, đúng là như vậy khi AI mà không có toán thì không thể gọi là AI được. Các bạn học AI không cần là những người xuất sắc về Toán ( dĩ nhiên là giỏi, xuất sắc thì dĩ nhiên là càng tốt rồi và mình khuyên những bạn này nên theo AI ngay và luôn, đây chính là nơi để các bạn thể hiện mình) nhưng các bạn phải nắm vững được những kiến thức cơ bản nhất là LAB thầy Khoát thiên hướng nghiên cứu, học thuật rất là nhiều chứ không phải là theo hướng ứng dụng.

Thầy Khoát đã public 1 khóa về học máy trên Youtube, khóa học rất hay và chất lượng, nếu mùa dịch quá nhàm chán thì hãy tham gia ngay khóa hoc này nha, xem thông tin về khóa học tại: https://users.soict.hust.edu.vn/khoattq/ml-dm-course/

8/17/2021

8/15/2021

Chia sẻ 1 số bài test IQ | Share


Nếu như bài test IQ theo chuẩn quốc tế được biên soạn công bằng với tất cả mọi người, mọi nền văn hóa thì bài test IQ tuyển dụng là dạng bài test dành riêng cho các doanh nghiệp trong việc tuyển dụng nhân sự nhằm đánh giá khả năng tư duy và năng lực lập luận của ứng cử viên. Vì vậy bên cạnh hình ảnh thì tính toán số học, trí nhớ cũng như kiến thức và tư duy về không gian cũng được đưa vào bài test IQ tuyển dụng. Hiện nay các công ty ở Việt Nam nhất là các công ty về công nghệ thông tin đã có rất nhiều các công ty sử dụng bài test IQ làm các bài test đầu vào phỏng vấn.


Lợi ích của việc sử dụng các bài testIQ là gì? Các bài testIQ đem lại cho doanh nghiệp rất nhiều lợi ích như là: 

  • Đánh giá toàn diện và chính xác năng lực của ứng viên
  • Kiểm tra được năng lực tư duy 
  • Giúp doanh nghiệp có thể xếp ứng viên vào đúng vị trí để có thể phát huy tốt khả năng của mỗi người 
  • ...


Mình có sưu tầm lại 1 số đề testIQ của một số công ty các bạn có thể tham khảo dưới đây nha: 

  • TestIQ đầu vào công ty MIGI: IQTEST

Sách The Ultimate IQ Test Book, rèn luyện IQ: TẢI VỀ SÁCH

8/13/2021

Calendar Queue : A Fast O(1) Priority Queue Implementation for the Simulation Event Set Problem | Share


Chúng ta thường được học về hàng đợi ưu tiên cài đặt bằng cấu trúc dữ liệu Heap, tuy nhiên đây không phải là cách duy nhất để cài đặt hàng đợi ưu tiên và như ta được học mặc dù việc cài đặt bằng cấu trúc dữ liệu Heap thì các thao các như insert hay delete phần tử cũng đã rất nhanh rồi, tuy nhiên cài đặt hàng đơi ưu tiên bằng cấu trúc dữ liệu Heap cũng chưa phải cách nhanh nhất.

Chúng ta có rất nhiều các cài đặt hàng đợi ưu tiên khác mang lại hiệu quả cao hơn việc sử dụng cấu trúc dữ liệu Heap, ví dụ như sử dụng cây S-Play, Calendar Queue,...

Việc cài đặt hàng đợi ưu tiên bằng Calendar Queue mang lại hiệu quả rất tốt, nó được đánh giá là một trong những phương pháp tốt nhất để cài đặt hàng đợi ưu tiên.

Nếu bạn muốn tìm hiểu về Calendar Queue để sắp xếp cho số lượng lớn các sự kiện thì có thể tham khảo qua bài báo Calendar Queue : A fast O(1) priority queue implementation for the simulation event set problem

Mình có một vài code Calendar Queue bằng C TẠI ĐÂY, mọi người có thể tham khảo nha.

8/11/2021

Quản trị dự án CNTT | Tài liệu, cơ sở ngành CNTT


Cũng giống như làm việc nhóm và kỹ năng giao tiếp thì môn này cũng có thể coi là một môn kỹ năng mềm. Môn học nói về các kỹ năng quản lý dự án, quản lý nhân sự, tiền bạc, thời gian... khi bạn làm một dự án CNTT. Kiểu như môn này là môn học làm leader ý, học cũng rất là vui, mình học thầy Tiến thì thầy thường chia sẻ về các dự án thầy làm như nào, cách tính tiền 1 dự án CNTT ra sao, rất là thú vị luôn ấy, có những cái mà mình chưa bao giờ được biết và chắc chắc là rất bổ ích vì hầu như ở các môn học khác trong trường bạn sẽ không thể nghe được những câu chuyện như vậy (còn thú vị như nào bạn có thể đăng kí học môn này thầy Nguyễn Đức Tiến nha).

Môn này hoc khá là nhẹ nhàng thôi, các thây/cô dạy cũng biết điều này và cũng không hề yêu cầu cao ở sinh viên. Bạn có thể học thầy Tiến hoặc thầy Lê Đức Trung cũng được, các thầy khá dễ tính và cho điểm khá thoải mái. Riêng học thầy Tiến có thể là sẽ đỡ buồn ngủ hơn thầy Trung đấy.

Thi môn này các câu hỏi cũng khá là mở, đa số là ý kiến đưa ra của chính bản thân mình là chính. Mình ví dụ nhá. Có một đề bài: "Một công ty A yêu cầu được giảm 30% số tiền của dự án do khó khăn của dịch COVID-19, nếu không thì họ sẽ hủy dự án và chấp nhận mất 20% phí cọc của dự án. Những chi phí của dự án ảnh hưởng trực tiếp tới công ty B là người nhận làm dự án này. Nếu bạn là ban lãnh đạo công ty B thì bạn sẽ làm gì?"

Câu hỏi đơn giản là một câu hỏi mở như vậy và bạn trả lời là đồng ý giảm, hoặc không đồng ý giảm hoặc là thương lượng giảm 20% thôi đều đúng và thầy giáo vẫn cho bạn điểm tối đa khi bạn đưa ra bất kì câu trả lời nào nha. Bạn cần tránh các câu trả lời không có định lượng như là "giảm 1 ít", 1 ít là bao nhiêu cái này trong quản lý cần phải tránh, mọi thứ đều phải được định lượng rõ ràng.

Mình chia sẻ slide môn học Quản trị dự án CNTT của thầy Nguyễn Đức Tiến, các bạn có thể tải về TẠI ĐÂY

Đề thi cuối kì 20202 các bạn có thể tải về TẠI ĐÂY


8/04/2021

Thiết kế mỹ thuật công nghiệp | Tài liệu, môn tự chọn


Như mình đã nói trong bài viết Quản trị học đại cương thì với sinh viên viện CNTT&TT phải học 3 học phần tự chọn (trừ môn technical là bắt buộc), thì combo Kỹ năng mềm + Tâm lý học ứng dụng là một combo dễ nhất, gần như các bạn học đều từ A tới A+ hết (dĩ nhiên là 2 trong 3 học phần tự chọn mình khuyên các bạn nên chọn 2 môn này) và 1 môn còn lại tùy theo sở thích của các bạn có thể chọn Văn hóa kinh doanh, Quản trị học đại cương hay Thiết kế mỹ thuật công nghiệp,...

Một bài viết rất hay review về môn thiết kế mỹ thuật công nghiệp được đăng tại group HỖ TRỢ HỌC TẬP ĐẠI CƯƠNG ĐH BKHN của tác giả Phạm Trung Hiếu có lẽ sẽ giúp các bạn hiểu hơn phần nào về môn học này.

REVIEW "THIẾT KẾ MỸ THUẬT CÔNG NGHIỆP" 

Có lẽ ai trong số chúng ta đều đã, đang và sẽ đứng giữa lựa chọn các môn học phần tự chọn. Mọi người thường nhắc đến các môn như Kỹ năng mềm, Tâm lý học ứng dụng, Văn hóa kinh doanh và tinh thần khởi nghiệp (VHKD&TTKN),... nhưng còn một môn khá mới mà mọi người có thể cân nhắc lựa chọn, đó là Thiết kế Mỹ thuật công nghiệp.

Kỳ 20201 vừa rồi, mình học cô Hoàng Thanh Thủy, nhưng chắc các Cô khác cũng tương tự.

1. Ấn tượng đầu tiên của mình là làm slide nhiều. Bạn nào có lợi thế về slide hay muốn trau dồi slide thì có thể lựa chọn môn này. Cứ 2, 3 tuần là lại cần nộp 1 bài slide tầm đâu đó 60 trang.

2. Có chia nhóm. Nhóm tối đa 6 người, nhưng nhóm mình chỉ cần 5 người thôi. Một bạn nữ chuyên phụ trách thuyết trình (vì có năng khiếu ăn nói nên ae vote luôn). Mấy ae còn lại thì tập trung kiếm tài liệu với làm slide. Vậy nên nếu bạn tự tin hoặc muốn nâng cao khả năng thuyết trình trước lớp thì cũng có thể học môn này và nhận vị trí thuyết trình như bạn nữ của nhóm mình, cả kỳ thuyết trình 2 lần là đủ (có những slide chỉ cần nộp, không cần thuyết trình).

3. Về cách tính điểm môn này. Điểm GK là chấm slide (+ điểm danh, thuyết trình). Điểm CK là điểm ở buổi thuyết trình cuối cùng. Lợi thế mà mình thấy là có được sự chủ động trong cả học kỳ, ví dụ ở các môn khác thì kết quả dựa phần nhiều vào bài thi giấy thì môn này dựa vào slide và bài thuyết trình của nhóm. Mình có thể chuẩn bị từ trước, thậm chí biết chắc A môn này vì khá tự tin về slide do nhóm mình chuẩn bị cũng như khả năng ăn nói của bạn nữ thuyết trình.

4. Về quá trình học. Cô cũng hay điểm danh ngẫu nhiên vài buổi nên tốt nhất là đi học đầy đủ. Trong lớp khá thoải mái, nhiều khi mình mở lap, lấy môn khác ra làm cũng được. Nhưng nhóm nên cử 1 bạn tập trung nghe cô giảng và note lại các lưu ý của Cô để về còn làm slide.

5. Phân công công việc nhóm. Như đã nói, nhóm mình 5ng. Bạn nữ duy nhất thì sẽ phụ trách thuyết trình trước lớp. 2ng phụ trách kiếm tài liệu về làm thành bản word, 2ng còn lại thì dựa vào bản word đó để làm slide.

6. Về các bài slide. Mỗi nhóm sẽ được lựa chọn một đề tài về sản phẩm nào đó như: Nồi cơm điện Cuckoo, đồng hồ Apple Watch 6, tai nghe Airpod 2, tủ lạnh,... Nhóm mình thì chọn SH 150i 2020. Tổng cả kỳ có 4 bài tập làm slide tương ứng với các yếu tố trong mỹ thuật công nghiệp như lịch sử, thương hiệu, màu sắc, đường nét, chất liệu,... Còn bài slide chốt (tính điểm CK) thì là gộp của 4 bài slide kia lại, chau chuốt tí.

7. So sánh với các môn khác. Nếu là bảo lời khuyên cho các em khóa sau thì mình vẫn khuyên ưu tiên học Kỹ năng mềm và Tâm lý học ƯD trước. Còn môn thứ ba thì cân nhắc giữa môn này và môn VHKD&TTKN. Mình đọc reiview về môn VHKD&TTKN thì thấy bảo GK là tiểu luận chép tay. CK là bài thi trên giấy (chép được tài liệu nhưng dài và mỏi tay). Lúc mình chọn cũng phân vân nhưng vì ngại viết và cũng muốn chốt điểm sớm nên chọn TK MTCN. (Đợt vừa rồi thì nhóm mình chuẩn bị xong slide từ trước nên cuối kỳ chỉ việc cầm slide đi thuyết trình, không cần lo ôn thi gì nhiều nữa mà tập trung ôn các môn khác. À trừ bạn nữ thuyết trình thì vẫn cần chuẩn bị tí). VHKD&TTKN mình lo cuối kỳ mà chép không kịp thì cũng chẳng điểm cao được.

Trên đây là những trải nghiệm của CÁ NHÂN mình và kể lại với mọi người. Có thể các bạn khác sẽ có trải nghiệm khác. Mục đích bài này là để reiview cho các bạn, nếu sắp tới nếu lựa chọn các môn thì có thể tham khảo. Chỗ nào sai thì mong các bạn góp ý để mình sửa.

Hy vọng với những gì mình ghi lại như này có thể giúp các bạn được phần nào.
Goodluck!

(c) Phạm Trung Hiếu | 25.02.2021

7/24/2021

Tổng quan cơ sở ngành khoa học máy tính - Viện CNTT&TT (Phần 3)


Chào các bạn, sau khoảng 2 tuần mình trầm cảm, rồi ốm, rồi lại trầm cảm thì nay mình lại tiếp tục lên đây xàm xí với các bạn chút. Ở bài viết này, mình sẽ nói về khối cơ bản về trí tuệ nhân tạo, là một xu hướng lớn hiện nay. Sắp tới mình sẽ có một số bài viết thêm, chi tiết về mảng này, hy vọng tạo động lực, hướng đi cho các bạn mới học( trong đó có mình :v ). Vì cũng chỉ là một newbie, mình sẽ cố hết sức viết đúng kiến thức trong tầm hiểu biết :D, mong nhận được ý kiến góp ý của mọi người.

Sau đây là hình minh họa cho 3 môn học tương ứng với mức độ bao quát trí tuệ nhân tạo(artificial intelligence ) > học máy(machine learning) > học sâu (deep learning)


1. Trí tuệ nhân tạo

Ở mức độ khái quát nhất, môn học cung cấp kiến thức nền tảng, thế nào là một trí tuệ nhân tạo, cần những yêu cầu như nào thì được gọi là một trí tuệ nhân tạo. Theo mình khái quát được, một trí tuệ nhân tạo sẽ cần đảm bảo được Hành động một cách hợp lý, tức là bên ngoài tác động vào chương trình trí tuệ nhân tạo (gửi request chẳng hạn, tác động làm thay đổi trạng thái bất kì ) thì nó phải tác động lại(gửi lại thông tin, hoặc hành động gì đó ), và quan trọng tác động đó phải hợp lí(đúng mục tiêu, đúng lợi ích...)
Trong một phần môn học bạn sẽ được học về các chiến luwcocj tìm kiếm. tại một thời điểm , ứng với một môi trường bên ngoài bất kì, trí tuệ nhân tạo (AI) có thể có nhiều lựa chọn hành động, và sau khi lựa chon theo một/rất nhiều hành động đó, môi trường ngoài lại có thể thay đổi, rồi lại hành động, rồi thay đổi,... tạo nên một đồ thị (từ trạng thái này sang trạng thái kia ). vì vậy, ta cần hcoj cách tìm kiếm để sao cho có thể đạt được mục tiêu (ít nhất là đạt được mục tiêu, rộng hơn thì có thể là thỏa mãn ràng buộc, chi phí tối ưu,...)

Ví dụ về bài toán hút bụi trong slide của thầy Khoát:



Cụ thể các Phương pháp thì có:


Phần còn lại các bạn sẽ được học về Logic, suy diễn , biểu diễn tri thức và cuối cùng là giới thiệu qua một số phần nhỏ của học máy (Bayes, KNN )

2. Học máy

Thay vì đi đưa ra quyết định hành động thì ở đây mình thấy thông thường là có tập data rồi tiến hành dự đoán.

Điều thực sự mà máy cần làm là từ tập x là tập data đã có, y là dự đoán cho từng data/ data đã có, tìm một cách nào đó tổng quan quy luật thành hàm f (model ) để khi cho vào một data mới ta có thể output được dự đoán từ data đó sao cho chính xác nhất .


Trong môn học bạn sẽ đi lần lượt về các khái niệm cơ bản, các vấn đề của học máy , các thành phần của học máy, về tiền xử lý dữ liệu, đánh giá hiệu năng hệ thống. Sau đó sẽ được đi sâu dần vào các thuật toán:


Hồi quy (hồi quy tuyến tính,.. )



Phân lớp (KNN - cái mà đã từng được học phần cuối môn AI , Naive-Bayes, cây quyết định ) 

Ví dụ về KNN:



Học về ANN (nền tảng cho học sâu )




Phân cụm (Kmean )


Trong môn này mình nghĩ cái bạn lãi nhất đó là những tiết học bảo vệ bài tập lớn vì khi đó các thầy sẽ chỉ ra vấn đề tồn đọng trong mô hình mà các bạn sử dụng, cách thức xử lí với data…

3. Học sâu

Như đã nói ở trên thì ANN là cơ sở cho các mô hình trong Deep learning, trong môn này các bạn sẽ được học cơ bản về các mô hình, tuy không phải là cập nhật mới nhất và chi tiết nhưng sẽ cho bạn nền tảng phát triển theo định hướng học sâu.

Đây là môn học không bắt buộc, không có trong các môn cơ sở cốt lõi ngành, thuộc module phân tích ứng dụng thông minh.


7/22/2021

Công cụ mô phỏng mạng OMNeT++ | Góc lên LAB học gì?


CNTT là một ngành nghề có tính ứng dụng rất cao vì thế viện CNTT&TT có rất nhiều các LAB nghiên cứu thuộc nhiều các lĩnh vực khác nhau như: LAB công nghệ phần mềm, LAB hệ thống thông tin, LAB khoa học máy tính, BKC LAB, ... Và các thầy/ cô trong LAB luôn luôn mở rộng cửa để chào đón các bạn sinh viên cùng tham gia. 

Bài viết này là bài viết đầu tiên tại series Góc lên LAB học gì? nên mình sẽ nói cụ thể và chi tiết hơn về những vấn đề ban đầu để mọi người hiểu được rõ hơn những vấn đề khi tham gia các LAB nghiên cứu khoa học của viện nha.

Đầu tiên là việc khi tham gia các LAB nghiên cứu thì mang lại những lợi ích gì? Lợi ích thì là vô cùng nhiều, khi tham gia các LAB cùng các thầy/ cô và các anh/ chị trên LAB các bạn được tiếp cận với các anh/ chị, các bạn, các thầy/ cô phải nói là rất giỏi và rất tâm huyết. Được học những kiến thức chuyên sâu về một lĩnh vực, được traing theo lộ trình, được tham gia vào các dự án nghiên cứu trong LAB, được có tên trong các bài báo khoa học,...

Tuy nhiên khi tham gia LAB các bạn sẽ mất thời gian để dành cho các công việc trên LAB, mất thêm thời gian để học các kiến thức trên LAB mà có thể trên lớp không học tới.

Làm thế nào để được lên LAB? Dĩ nhiên là không phải ai muốn lên LAB là sẽ được lên đâu. Có những LAB thì xét duyệt khá dễ nhưng cũng cần có 1 bảng điểm đẹp như LAB khoa học máy tính của cô Bình các bạn chỉ cần gửi mail cho cô kèm theo bảng điểm, nếu cô đọc qua thấy điểm cao, OK thì cô sẽ nhắn lại cho các bạn là hôm sau có thể lên LAB. Còn có 1 số LAB tuyển thành viên rất khắt khe như LAB của thầy Khoát phải trải qua bao vòng với lên được thành viên chính thức.

Các phòng LAB hay các không gian học tập và làm việc tại tòa B1 của viện đang được chỉnh sửa và hiện đại hơn rất nhiều, nhìn đã là thấy thích rồi, các bạn có thể theo dõi thầy Tạ Hải Tùng (Viện trưởng) thầy có đăng lên rất nhiều hình ảnh về các không gian học tập, làm việc mới trên LAB, nhìn là muốn được ngồi đây mãi rồi.





Ngoài việc lên LAB để có thể học hỏi thêm các kiến thức thì các bạn có thể chọn đi thực tập. Mình đã từng thấy một số người rất giỏi nhưng họ lại không chọn lên LAB mà lại chọn đi thực tập. Khi bạn đi thực tập thì bạn vẫn có đầy đủ lợi ích khi bạn tham gia LAB chỉ khác là kiến thức mà bạn học được tại các doanh nghiệp sẽ thực tế hơn là các công nghệ mà chính các doanh nghiệp đang sử dụng để kiếm ra tiền, còn kiến thức mà các bạn được học trên LAB sẽ hàn lâm hơn, mang tính nghiên cứu nhiều hơn.

OK! Lan man như vậy thôi, bây giờ mình sẽ vào chủ đề chính của bài viết này về OMNeT++.

OMNeT++ là một phần mềm mô phỏng mạng sử dụng C++, mục đích chính là mô phỏng hoạt động của mạng thông tin, ngoài ra do tính linh hoạt OMNeT++ còn được sử dụng trong một số lĩnh vực khác nữa.

Tại Bách Khoa thì không có môn học chính thức nào giảng dạy về OMNeT++ và thế dĩ nhiên nếu không thích các bạn có thể không đọc bài viết này. Nhưng các bạn cũng có thể tìm hiểu về OMNeT, biết đâu nó lại là hướng đi phù hợp với bạn.

OMNeT được các thầy/ cô trong LAB công nghệ phần mềm sử dụng để mô phỏng giao thức mạng, có rất nhiều các nghiên cứu của các thầy/ cô có sử dụng OMNeT các bạn có thể xem qua TẠI ĐÂY

LAB công nghệ phần mềm của thầy Nguyễn Khanh Văn mình thấy không tuyển sinh viên, hầu như là các sinh viên làm project I, II, III của các thầy trong LAB, sau đó sẽ được các thầy định hướng thêm để tham gia các nghiên cứu với các thầy/ cô thôi, vì thế mà LAB này mình thấy khá trầm và không nổi bật cho lắm.

Mình có một số tài liệu về OMNeT, nếu muốn tìm hiểu về OMNeT các bạn có thể xem qua tài liệu này: TÀI LIỆU VỀ OMNET++

Những bài viết sau mình sẽ viết về một số LAB khác hoạt động sôi nổi hơn trong viện như là LAB của thầy Khoát hay LAB cô Bình nha.

7/13/2021

Thực tập kỹ thuật | Học phần thực tập


Rất nhiều bạn thắc mắc về học phần thực tập doanh nghiệp, về sự rắc rối của nó,... Bài viết này mình sẽ giải đáp một số thắc mắc để mọi người có cái nhìn rõ hơn về thực tập doanh nghiệp của viện CNTT & TT nha và nó cũng không rắc như mọi người nghĩ đâu.

Chuẩn bị

Đầu tiên là các bản phải chuẩn bị cho mình một bản CV nha, ngắn gọn thôi cũng được, nhưng CV nhớ phải nhét cái ảnh vào nha.

Tiếp theo là cái tinh thần thôi, đi thực tập theo trường này hầu như công ty đều không bắt buộc các bạn phải biết cái gì trước đâu dĩ nhiên là biết thì tốt thôi, vào đấy các bạn sẽ được dạy nha nên một số bạn lo không có kiến thức gì có thể đi thực tập không thì là  nha.

Đăng ký học phần, nguyện vọng

Nếu đầy đủ quy trình thì các bạn phải đăng ký học phần trên ctt trước, sau đó sẽ đăng ký nguyện vọng trên qldt. Việc đăng ký học phần trên ctt thì đăng ký bình thường như mọi học phần khác thôi, đăng ký đúng với mã học phần của môn học là được.


Sau khi kết thúc quá trình thực tập doanh nghiệp sẽ đánh giá điểm của các bạn qua hệ thống qldt và điểm được nhập vào ctt.

Đấy là quy trình đầy đủ, còn mình thấy viện mình rất là tạo điều kiện cho sinh viên. Các bạn có thể đăng ký nguyện vọng trên qldt để xin thực tập tại các công ty mà không cần phải đăng ký trên sis trước. Điểm thực tập của các bạn sau khi kết thúc sẽ được bảo lưu và sau này khi đăng ký học phần trên sis bạn có thể chọn điểm cao nhất trong 2 kỳ gần nhất được bảo lưu trên qldt làm điểm cho môn học thực tập kỹ thuật của bạn.

Để xem danh sách các công ty và đề tài của các công ty các bạn có thể xem tại mục DS Doanh Nghiệp trên quản lý đào tạo hoặc vào trực tiếp link https://qldt.hust.edu.vn/#company


Sau khi tìm được công ty có nguyện vọng phù hợp với bản thân thì bạn có thể đăng ký nguyện vọng tại https://qldt.hust.edu.vn/#dang-ky-nguyen-vong. Điền đầy đủ thông tin và chọn nguyện vọng, mỗi người có tối đa là 3 nguyện vọng và phải chọn tối thiểu là 2 nguyện vọng.

Có một số bạn đã đi thực tập thì sao? nếu các bạn đã đi thực tập rồi thì nếu doanh nghiệp có nằm trong hệ thống hợp tác của trường thì các bạn có thể đăng ký học phần ở kỳ tiếp theo rồi thương lượng với anh leader team bạn nhận các bạn trên hệ thống qldt của trường. Còn một số bạn thực tập ở doanh nghiệp không liên kết với trường thì lời khuyên của mình là thôi bỏ đi, các thầy/cô cũng bảo là có thể lấy điểm nhưng phải xin đủ loại giấy, nói chung rất rắc rối. Còn việc không đăng ký ở kỳ tiếp theo mà xin lấy điểm luôn vì đã thực tập tại công ty được không thì cái này mình cũng không nhớ rõ nữa, nhưng có lẽ cũng sẽ lại phải xin đủ loại giấy tờ, lời khuyên của mình là các bạn lên làm theo quy trình cho dễ. 

Từ kỳ trước thì mọi người đều nhận được mail từ viện là không phải tới đợt mới có thể đăng ký nguyện vọng mà bất cứ lúc nào cũng có thể đăng ký nguyện vọng thực tập ở các công ty nhưng có lẽ mình thấy nó mới chỉ dừng lại ở mức lý thuyết, các bạn vẫn đăng ký nguyện vọng theo các đợt trong năm mà thôi. Mà hầu như các công ty cũng tuyển theo đợt chứ chả công ty nào tuyển rải rác cả năm cả.

Về tính điểm của học phần

Điểm của học phần được cho bởi người phụ trách của bạn trên công ty và hoàn toàn không liên quan gì tới trường, trường chỉ ghi nhận điểm của các bạn mà thôi. Vì thế khi đi thực tập thì cố thân với các anh lead 1 chút để các anh cho điểm cao. Thực ra mình thấy trừ 1 số công ty thì hầu như các anh phụ trách đều đánh giá rất là thoáng vì các anh tính ra cũng còn khá trẻ chắc cũng thấu hiểu nỗi khát điểm của sinh viên chúng ta.

Hỗ trợ

Viện mình hỗ trợ rất tích cực vấn đề thực tập kỹ thuật cho sinh viên, các kỳ đều có những group Facebook riêng để giải đáp thắc mắc của các bạn và trước mỗi kì thực tập đều có các livestream, một buổi talk nhỏ để các bạn đặt câu hỏi.

Để nhận thông tin các group thực tập các kỳ thì các tham tham gia group SOICT - CNTT&TT của viện nha, các thông tin mình thấy các thầy/cô đăng lên đây khá nhiều.

Một số group hỗ trợ thực tập của các kỳ trước: 

Trợ cấp/ lương khi đi thực tập

Một số bạn lại đi thực tập thì kinh nghiệm là chủ yếu chứ lương lậu gì, nhưng theo mình thấy các bạn đi thực tập mà kiêu không có lương thì nói chung khá là nản (chúng ta cứ gọi là lương cho dễ nha chứ thực ra phải là trợ cấp mới hợp lý). Thế nên lời khuyên của mình là nên chọn công ty nào có trợ cấp mà đăng ký vì đầu tiên là nó thể hiện thực lực của công ty, tiếp là nó sẽ khiến mình có động lực hơn nhiều đấy. Các bạn check trong danh sách đề tài thực tập của từng doanh nghiệp nha.


Đánh giá

Sau khi kết thúc các bạn nhớ để ý thông báo trên group Facebook và đánh giá doanh nghiệp theo mẫu nha. Việc đánh giá nên trung thực để nhà trường cũng như các sinh viên khác có cái nhìn thiết thực về doanh nghiệp hơn.


Nếu các bạn còn gì thắc mắc thì hãy comment bên dưới nha, mình sẽ trả lời bằng tất cả những gì mình biết để giải đáp các thắc mắc của mọi người.

7/06/2021

Tổng quan cơ sở ngành khoa học máy tính - Viện CNTT&TT (Phần 2)


Trong bài viết này mình sẽ tiếp tục giới thiệu về một số phần nhỏ trong khối cơ sở ngành khoa học máy tính tại đại học bách khoa hà nội . link bài phần 1.

Sau đây mình sẽ điểm qua một số nội dung, keyword mà bạn sẽ được học mà theo mình là nên nắm chắc, các bạn có thể google để tìm hiểu. Những kiến thức cụ thể mình sẽ nói trong seri bài viết riêng về từng môn học, hy vọng được các bạn đón nhận trong tương lai.


Khối liên quan hệ thống máy tính 


Trong môn nguyên lý hệ điều hành bạn sẽ được học về các phần

    1. Tổng quan

  • Các khái niệm : Tiến trình(process), Luồng (thread), tài nguyên của máy tính, shell, system call

  • phân loại hệ điều hành : xử lý theo lô, theo thời gian, phân tán,..

  • tính chất mà một hệ điều hành cần có: tin cậy, an toàn, tổng quát theo thời gian,..

  • Cấu trúc, thành phần hệ thống : vấn đề về quản lý tiến trình, bộ nhớ, input/ output, quản lý file

    2. Quản lý tiến trình

  • về tiến trình: bài toán điều phối(dùng hàng đợi), thao tác, hợp tác(bài toán sản xuất, tiêu thụ), truyền thông(đệm, socket)

  • về luồng

  • về điều phối CPU: khái niệm trưng dụng tài nguyên, các thuật toán điều phối (SJF, FCFS, RR, )

  • tài nguyên găng và điều độ tiến trình- khái niệm và công cụ xử lý(khóa trong, test and set, đèn báo, monitor )

  • bế tắc và xử lí bế tắc :khái niệm, 4 điều kiện, phương pháp phòng ngừa(tác động 1 trên 4 điều kiện), phòng tránh(chuỗi an toàn), nhận biết và khắc phục(chỉ ra bế tắc và xử lý)

    3. Quản lí bộ nhớ

  • Tổng quan : bộ nhớ, chương trình, liến kết địa chỉ (logic- vật lí) 

  • Chiến lược tuản lí bộ nhớ: phân chương cố định, phân chương động, phân đoạn chương trình, phân trang

  • Bộ nhớ ảo, đổi trang 

    4. Quản lí file 

  • các khải niệm tổng quan , cách tổ chức tài nguyên trên đĩa(vật lí- logic )

  • các khái niệm FAT,NTFS, EXT3,..


Tiếp đến là trong môn Kiến trúc máy tính 

    1. Giới thiệu 

  • CPI

  • time CPU

  • bài tập so sánh thời gian time CPU

    2. logic số, mạch cộng 

    3. Thanh ghi, bus

  • bus address

  • databus

  • bài tập xác định bus đánh địa chỉ tối thiểu

    4. Số học máy tính

  • bài tập : biểu diễn -77 dưới dạng 8bit ?

    5. MISP

  • yêu cầu hiểu lệnh mips

  • bài tập viết chương trình bằng mips

    6. Bộ xử lí 

  • chu trình load lệnh

  • hazard

    7. Bộ nhớ máy tính

  • sự liên quan thanh ghi- bộ nhớ chính- cache- bộ nhớ ngoài

  • tổ chức bộ nhớ cache, chiến lược thay thế bộ nhớ trong cache

  • bài tập tính số bit trên địa chỉ, nằm ở băng nhớ nào,..

    8. .. mấy chương cuối hình như không thi.

Bài cung cấp cho các bạn khá nhiều keyword và khá hoa mắt rồi, các bạn có thể ghé trang Kiến trúc máy tính hoặc Nguyên lý hệ điều hành để lấy tài liệu về tự đọc nhé, tương lai thì mình sẽ có bài chi tiết viết về những môn này (cụ thể hơn là hướng dẫn giải bài tập ) nhưng bao giờ viết thì mình chưa biết :>