thảo luận [Deep Learning/Machine Learning/AI] Thread dành cho anh em nghiên cứu ngành trí tuệ nhân tạo

Vấn đề mình với timeseries chủ yếu là cái tìm y dựa trên multiple x á, không hiểu làm sao mình tìm toàn ra hướng dẫn tìm y trên duy nhất 1 x là thời gian thôi, chứ đụng vào multiple X thì bó tay.

Không biết mấy cái mô hình trên của bạn có đoán được multiple x không. Để lúc nào mình xem thử.

Nói chứ mấy cái dự đoán này các sếp thì muốn chứ mình chả ham mấy, cái hệ thống analytic team mình đang build còn đang hỗn loạn, tranh tối tranh sáng đủ mọi vấn đề, nhân lực thì ít mà phân tâm đi lo ba cái predictive analytic làm gì không biết. :burn_joss_stick:

Mô hình RNN đầu ra có thể là many to one, many to many mà thím.
rnn_classification.jpeg
 
Cho mình hỏi, hiện giờ mình đang có 1 nhiệm vụ giải bài toán thế này ở công ty.

Hiện giờ công ty mình đang có nhu cầu dự đoán số lượng sản phẩm y sẽ được đặt trong 1 tháng nào đó ở tương lai, để từ đó phân phối nhân sự, với các biến đầu vào x1 là ngày (dd/mm/yyyy), x2 số lượng khách hàng lớn (những khách hàng trước đây có lịch sử xài nhiều), x3 số lượng khách hàng nhỏ, x4 là tình hình thế giới (vd disaster level: wolf, tiger, demon, dragon, god)....

Thì với yêu cầu dự đoán theo timeseries trên, mình cần phải dùng mô hình dự đoán gì. Trước giờ mình chỉ biết làm tree với regressor, mà yêu cầu đưa ra là timeseries nên mình bó tay, ko tài nào làm được.

Mình làm data engineer thôi, ko phải data scientist, team data của mình hiện cũng không có data scientist, nhưng mọi vấn đề về data trong công ty thì team mình đều phải giải quyết, và vấn đề này đang làm mình khá đau đầu khi bên trên họ rất muốn nhưng mình thì ko đủ năng lực. Hóng cao nhân ở đây chỉ điểm
Riêng mô hình hoá cái tình hình thế giới như nào cho đúng/đủ đã là một cái khó khăn rồi. Nếu được bác có thể cho một vài mẫu dữ liệu của công ty lên ko? Tất nhiên thay đổi giá trị đi.
 
1588409041909.png


Chỗ này tron quyển Deep Learning, nếu 2 cái trên và dưới là giống nhau thì cần gì phải dùng các stride = 1 nữa vậy các bác, cho nó phí tài nguyên ??
 
View attachment 50840

Chỗ này tron quyển Deep Learning, nếu 2 cái trên và dưới là giống nhau thì cần gì phải dùng các stride = 1 nữa vậy các bác, cho nó phí tài nguyên ??
qZV215Z.png
Giống là giống ở kích thước đầu ra thôi, chứ downsampling thì có nhiều kiểu: max pooling, avg. pooling, interpolation...từ đos ảnh hưởng đầu ra. strided conv. thì 1 đầu ra phụ thuộc vào các đầu vào ở vị trí cố định.
 
qZV215Z.png
Giống là giống ở kích thước đầu ra thôi, chứ downsampling thì có nhiều kiểu: max pooling, avg. pooling, interpolation...từ đos ảnh hưởng đầu ra. strided conv. thì 1 đầu ra phụ thuộc vào các đầu vào ở vị trí cố định.

Thế người ta còn vẽ cái hình so sánh này làm chi bác, có tác dụng gì đâu @@
 
Thế người ta còn vẽ cái hình so sánh này làm chi bác, có tác dụng gì đâu @@
Bạn nhìn kĩ cái hình kia thì thấy rằng nó khác nhau. Mình ko đồng ý lắm với cái nhận định rằng về mặt toán học chúng tương đương nhau. Có thể do toán mình ko chuẩn
2y9npcU.png
Nhưng nhìn vào s1 ở hình trên thì nó phụ thuộc vào x1, x2. Trong khi ở hình dưới thì s1 phụ thuộc ít nhất đến x3.
 
Bạn nhìn kĩ cái hình kia thì thấy rằng nó khác nhau. Mình ko đồng ý lắm với cái nhận định rằng về mặt toán học chúng tương đương nhau. Có thể do toán mình ko chuẩn
2y9npcU.png
Nhưng nhìn vào s1 ở hình trên thì nó phụ thuộc vào x1, x2. Trong khi ở hình dưới thì s1 phụ thuộc ít nhất đến x3.
à mình hiểu rồi, còn cái chỗ nữa rất khó hiểu là :

"Convolution and Pooling as an Infinitely Strong Prior", cái này nghĩa là sao hả bác.

Có tra thêm ở medium https://medium.com/inveterate-learn...chapter-9-convolutional-networks-45e43bfc718d

1588410919864.png


Nhưng mà đọc xong cũng ko hiểu lắm, bác giải thích cho mình chỗ này vs, sợ lại đi hiểu lung tung @@
 
à mình hiểu rồi, còn cái chỗ nữa rất khó hiểu là :

"Convolution and Pooling as an Infinitely Strong Prior", cái này nghĩa là sao hả bác.

Có tra thêm ở medium https://medium.com/inveterate-learn...chapter-9-convolutional-networks-45e43bfc718d

View attachment 50863

Nhưng mà đọc xong cũng ko hiểu lắm, bác giải thích cho mình chỗ này vs, sợ lại đi hiểu lung tung @@
2y9npcU.png
Nói thật là mình đọc thì cũng hiểu sơ sơ, nhưng giải thích thì hơi khó. Còn cái câu kia thì có nghĩa là 2 loại toán tử kia nó phù hợp với định nghĩa về ISP thôi.
 
Riêng mô hình hoá cái tình hình thế giới như nào cho đúng/đủ đã là một cái khó khăn rồi. Nếu được bác có thể cho một vài mẫu dữ liệu của công ty lên ko? Tất nhiên thay đổi giá trị đi.

Đơn giản là thế này, công ty mình nhận một một số đơn hàng để gia công xử lý cho họ, để xử lý thì cần phải chuẩn bị nhân lực và hạ tầng, vì vậy các cấp trên rất cần một con số dự đoán tương đối tổng số đơn hàng có thể được đặt theo ngày/tháng để họ dễ dàng đưa ra các quyết định tuyển dụng/nâng cấp - cắt giảm hạ tầng, nhất là trong giai đoạn dịch bệnh, họ cần phải cắt giảm chi phí/sử dụng tiền hiệu quả

Hiện tại nếu chỉ là tính dựa theo chu kì tháng thì mình có thể dùng polinominal regression dựa trên x1 là tháng, x2 là năm để tính ra các con số khá sát với số thực tế, tháng 1 mình có thể dự đoán tương đối đúng. Tuy nhiên, dịch bệnh bắt đầu trong tháng 2 và tất cả các con số của mình đều đã sai sạch sẽ.

Dữ liệu nó chỉ đơn giản thế này thôi

DateNumber of Big CustomerNumber of normal CustomerWorldSituationTotal order
01-2019510Normal1000
02-2019510Normal1100
03-2019512Normal1300
...............
02-2020615Disaster level: Wolf1250
03-2020615Disaster level: Demon500
04-2020615Disaster level: Dragon200
05-2020614Disaster level: Dragon?

Với date là tháng,
Big customer là những khách hàng thường xuyên đặt nhiều đơn trong quá khứ.
Normal customer là các khách hàng sử dụng nhưng ko dùng quá nhiều.
WorldSituation là tình hình thế giới, được category theo thứ tự từ bình thường đến nguy hiểm Normal -Wolf - Tiger - Demon - Dragon - God. Tình hình thế giới hiện đang ở cấp nào là do bọn mình tự phán dựa trên cảm nhận tình hình thế giới.
Total Order là tổng số đơn hàng mà công ty nhận được trong tháng đó.

Ngoài ra với cái này mình còn muốn tính rằng, ví dụ nếu có tin tình báo từ bộ phận sale nhận được rằng 1 khách hàng nào đó lớn sắp vào từ tháng 6, thì tổng số đơn tháng 6 sẽ tăng lên bao nhiêu, hay ngược lại có một số khách hàng nhỏ đột nhiên thông báo sẽ sử dụng nhiều hơn trong tương lai, họ đã kí quỹ trước -> trở thành khách hàng lớn, thì con số total kia sẽ thay đổi thế nào, để họ còn chuẩn bị nhân lực, hạ tầng.
 
Hiện tại nếu chỉ là tính dựa theo chu kì tháng thì mình có thể dùng polinominal regression dựa trên x1 là tháng, x2 là năm để tính ra các con số khá sát với số thực tế, tháng 1 mình có thể dự đoán tương đối đúng. Tuy nhiên, dịch bệnh bắt đầu trong tháng 2 và tất cả các con số của mình đều đã sai sạch sẽ.
Phần sau thì mình đang suy nghĩ nhưng phần này thì có vẻ hơi ảo
lmAlC57.gif
vì thực ra thì nhu cầu nếu ko có biến cố thì trong cùng một khoảng thời gian của các năm nó cũng ko thay đổi mạnh, nên ko thể nói chỉ dùng thời gian mà dự đoán được.
 
Phần sau thì mình đang suy nghĩ nhưng phần này thì có vẻ hơi ảo
lmAlC57.gif
vì thực ra thì nhu cầu nếu ko có biến cố thì trong cùng một khoảng thời gian của các năm nó cũng ko thay đổi mạnh, nên ko thể nói chỉ dùng thời gian mà dự đoán được.

Mình dự đoán dùng Polinominal như thế này thôi, mình dự đoán từng tháng một

VD data cho tháng 1 vào các năm là

MonthTotal
201610
201730
201870
2019150
2020?

thì mình sẽ đoán năm 2020 là khoảng 350 chẳng hạn.

Đồng thời làm như vậy cho các tháng khác.
 
Đơn giản là thế này, công ty mình nhận một một số đơn hàng để gia công xử lý cho họ, để xử lý thì cần phải chuẩn bị nhân lực và hạ tầng, vì vậy các cấp trên rất cần một con số dự đoán tương đối tổng số đơn hàng có thể được đặt theo ngày/tháng để họ dễ dàng đưa ra các quyết định tuyển dụng/nâng cấp - cắt giảm hạ tầng, nhất là trong giai đoạn dịch bệnh, họ cần phải cắt giảm chi phí/sử dụng tiền hiệu quả

Hiện tại nếu chỉ là tính dựa theo chu kì tháng thì mình có thể dùng polinominal regression dựa trên x1 là tháng, x2 là năm để tính ra các con số khá sát với số thực tế, tháng 1 mình có thể dự đoán tương đối đúng. Tuy nhiên, dịch bệnh bắt đầu trong tháng 2 và tất cả các con số của mình đều đã sai sạch sẽ.

Dữ liệu nó chỉ đơn giản thế này thôi

DateNumber of Big CustomerNumber of normal CustomerWorldSituationTotal order
01-2019510Normal1000
02-2019510Normal1100
03-2019512Normal1300
...............
02-2020615Disaster level: Wolf1250
03-2020615Disaster level: Demon500
04-2020615Disaster level: Dragon200
05-2020614Disaster level: Dragon?

Với date là tháng,
Big customer là những khách hàng thường xuyên đặt nhiều đơn trong quá khứ.
Normal customer là các khách hàng sử dụng nhưng ko dùng quá nhiều.
WorldSituation là tình hình thế giới, được category theo thứ tự từ bình thường đến nguy hiểm Normal -Wolf - Tiger - Demon - Dragon - God. Tình hình thế giới hiện đang ở cấp nào là do bọn mình tự phán dựa trên cảm nhận tình hình thế giới.
Total Order là tổng số đơn hàng mà công ty nhận được trong tháng đó.

Ngoài ra với cái này mình còn muốn tính rằng, ví dụ nếu có tin tình báo từ bộ phận sale nhận được rằng 1 khách hàng nào đó lớn sắp vào từ tháng 6, thì tổng số đơn tháng 6 sẽ tăng lên bao nhiêu, hay ngược lại có một số khách hàng nhỏ đột nhiên thông báo sẽ sử dụng nhiều hơn trong tương lai, họ đã kí quỹ trước -> trở thành khách hàng lớn, thì con số total kia sẽ thay đổi thế nào, để họ còn chuẩn bị nhân lực, hạ tầng.
Đọc sơ qua thì mình nghĩ dữ liệu không có tính sequence lắm, bởi total của tháng sau không bị chi phối bởi total tháng trước.
Case này bác thử chia ngày tháng thành categorical data theo chu kì kinh tế (quý 1,2,3,4). Vì số lượng cột cũng không nhiều và dự là bộ dữ liệu cũng không lớn nên cũng không cần dùng thuật toán learning gì quá phức tạp, bác cứ áp thử linear hoặc non linear regression tuỳ bộ dữ liệu xem thế nào.
Một cách nữa nó không machine learning lắm là thiết kế AI dự đoán theo kiểu knowledge based. :D

via theNEXTvoz for iPhone
 
Đơn giản là thế này, công ty mình nhận một một số đơn hàng để gia công xử lý cho họ, để xử lý thì cần phải chuẩn bị nhân lực và hạ tầng, vì vậy các cấp trên rất cần một con số dự đoán tương đối tổng số đơn hàng có thể được đặt theo ngày/tháng để họ dễ dàng đưa ra các quyết định tuyển dụng/nâng cấp - cắt giảm hạ tầng, nhất là trong giai đoạn dịch bệnh, họ cần phải cắt giảm chi phí/sử dụng tiền hiệu quả

Hiện tại nếu chỉ là tính dựa theo chu kì tháng thì mình có thể dùng polinominal regression dựa trên x1 là tháng, x2 là năm để tính ra các con số khá sát với số thực tế, tháng 1 mình có thể dự đoán tương đối đúng. Tuy nhiên, dịch bệnh bắt đầu trong tháng 2 và tất cả các con số của mình đều đã sai sạch sẽ.

Dữ liệu nó chỉ đơn giản thế này thôi

DateNumber of Big CustomerNumber of normal CustomerWorldSituationTotal order
01-2019510Normal1000
02-2019510Normal1100
03-2019512Normal1300
...............
02-2020615Disaster level: Wolf1250
03-2020615Disaster level: Demon500
04-2020615Disaster level: Dragon200
05-2020614Disaster level: Dragon?

Với date là tháng,
Big customer là những khách hàng thường xuyên đặt nhiều đơn trong quá khứ.
Normal customer là các khách hàng sử dụng nhưng ko dùng quá nhiều.
WorldSituation là tình hình thế giới, được category theo thứ tự từ bình thường đến nguy hiểm Normal -Wolf - Tiger - Demon - Dragon - God. Tình hình thế giới hiện đang ở cấp nào là do bọn mình tự phán dựa trên cảm nhận tình hình thế giới.
Total Order là tổng số đơn hàng mà công ty nhận được trong tháng đó.

Ngoài ra với cái này mình còn muốn tính rằng, ví dụ nếu có tin tình báo từ bộ phận sale nhận được rằng 1 khách hàng nào đó lớn sắp vào từ tháng 6, thì tổng số đơn tháng 6 sẽ tăng lên bao nhiêu, hay ngược lại có một số khách hàng nhỏ đột nhiên thông báo sẽ sử dụng nhiều hơn trong tương lai, họ đã kí quỹ trước -> trở thành khách hàng lớn, thì con số total kia sẽ thay đổi thế nào, để họ còn chuẩn bị nhân lực, hạ tầng.
Trước hết có thể thử chia 2 bên khách hàng lớn và nhỏ ra, vì xu hướng của mỗi loại lại khác nhau.
Sau đó thì không nhất thiết phải dùng các thuật toán tuần tự vì dữ liệu đầu vào chỉ có ít đầu vào (4 cái) nên hoàn toàn có thể dùng trực tiếp toàn bộ dữ liệu của 6/12/24 tháng trước để làm đầu vào dự đoán cho tháng hiện tại.
53Vd285.gif

Đây là suy nghĩ của mình, còn triển khai model cụ thể thì chắc là cần nhiều thử nghiệm
tf1VcQ8.gif
 
Đọc sơ qua thì mình nghĩ dữ liệu không có tính sequence lắm, bởi total của tháng sau không bị chi phối bởi total tháng trước.
Case này bác thử chia ngày tháng thành categorical data theo chu kì kinh tế (quý 1,2,3,4). Vì số lượng cột cũng không nhiều và dự là bộ dữ liệu cũng không lớn nên cũng không cần dùng thuật toán learning gì quá phức tạp, bác cứ áp thử linear hoặc non linear regression tuỳ bộ dữ liệu xem thế nào.
Một cách nữa nó không machine learning lắm là thiết kế AI dự đoán theo kiểu knowledge based. :D

via theNEXTvoz for iPhone

Hiện giờ mình đang làm theo kiểu mình dự đoán cho từng tháng 1, dùng dữ liệu từ năm 2016-2019, rồi vẽ 1 đường cong polinominal để dự đoán cho tháng đó của năm 2020. Hiện giờ chỉ dùng 1 biến duy nhất là số năm (2016, 2017, 2018, 2019, 2020....), còn số tháng là trong luôn câu hỏi. Với mỗi tháng mình sẽ chạy dự đoán 1 lần với data đưa vào là data của tháng đó trong các năm trước, giống như dưới đây.

MonthTotal
201610
201730
201870
2019150
2020?

Rồi dùng Linear hoặc Polinominal để tính ra các y của các tháng sau. Hình dưới là hình mình predict tháng 1 của năm 2020 và 2021 dựa vào data của 2016-2019

Capture.PNG


Ý bạn có phải giống thế này không?

Trước hết có thể thử chia 2 bên khách hàng lớn và nhỏ ra, vì xu hướng của mỗi loại lại khác nhau.
Sau đó thì không nhất thiết phải dùng các thuật toán tuần tự vì dữ liệu đầu vào chỉ có ít đầu vào (4 cái) nên hoàn toàn có thể dùng trực tiếp toàn bộ dữ liệu của 6/12/24 tháng trước để làm đầu vào dự đoán cho tháng hiện tại.
53Vd285.gif

Đây là suy nghĩ của mình, còn triển khai model cụ thể thì chắc là cần nhiều thử nghiệm
tf1VcQ8.gif

Ý bạn có phải là dùng sơ kiểu dự đoán bằng tree không?

Vấn đề của dự đoán kiểu tree là nó không thể dự đoán được số y cao hơn số y cao nhất trong bộ data để train (hoặc là do mình ko biết xài). Mà công ty mình vẫn đang trong giai đoạn phát triển nóng, tháng này của năm sau mà ko có các biến cố như dịch bệnh thì nó thường là theo cấp số mũ so với cùng kì các năm trước. Nên mình toàn phải dùng regressor để dự đoán.

Ủa mà ý các bạn nói là sequence có phải ý là các bài toàn dùng regressor để giải không. Mình ko hiểu khái niệm này.
 

Attachments

  • Capture.PNG
    Capture.PNG
    40.9 KB · Views: 70
Last edited:
Ý bạn có phải là dùng sơ kiểu dự đoán bằng tree không?

Vấn đề của dự đoán kiểu tree là nó không thể dự đoán được số y cao hơn số y cao nhất trong bộ data để train (hoặc là do mình ko biết xài). Mà công ty mình vẫn đang trong giai đoạn phát triển nóng, tháng này của năm sau mà ko có các biến cố như dịch bệnh thì nó thường là theo cấp số mũ so với cùng kì các năm trước. Nên mình toàn phải dùng regressor để dự đoán.

Ủa mà ý các bạn nói là sequence có phải ý là các bài toàn dùng regressor để giải không. Mình ko hiểu khái niệm này.
Chắc chắn là phải dùng các thuật toán regression rồi. Theo hình trên của bạn, để dự đoán nhu cầu cho 1 tháng trong năm nay, bạn sẽ dùng dữ liệu về tháng đó ở các năm còn lại để huấn luyện mô hình. Sau khi huấn luyện, bạn có 1 mô hình với đầu vào là năm và đầu ra là sản lượng.

Theo comment đầu tiên về vấn đề này thì bạn đang muốn:
1. Có sự phụ thuộc của đầu ra vào các tháng trước chứ không chỉ là cùng tháng của năm trước
2. Có nhiều đầu loại dữ liệu đầu vào hơn cho mô hình như tình hình thế giới, số lượng khách hàng

Comment lúc trước của mình muốn nói rằng có thể ko cần dùng các mô hình như RNN để mô hình sự phụ thuộc mà có thể cố định khoảng thời gian mà đầu ra phụ thuộc vào đầu vào và xử lý nó như một cái regression bình thường. Đầu vào có thể gồm những cái như sau:
- Năm hiện tại
- Tháng
- (Tình hình thế giới, sản lượng) trước đó 1 tháng
- (Tình hình thế giới, sản lượng) trước đó 2 tháng
....
- (Tình hình thế giới, sản lượng) trước đó 12 tháng
- (Tình hình thế giới, sản lượng) trước đó 24 tháng
- (Tình hình thế giới, sản lượng) trước đó 36 tháng

Đây là suy nghĩ đơn giản của mình, rất mong nhận được chia sẻ để học được điều mới từ case thực tế này
sF1PhJr.png
 
Chắc chắn là phải dùng các thuật toán regression rồi. Theo hình trên của bạn, để dự đoán nhu cầu cho 1 tháng trong năm nay, bạn sẽ dùng dữ liệu về tháng đó ở các năm còn lại để huấn luyện mô hình. Sau khi huấn luyện, bạn có 1 mô hình với đầu vào là năm và đầu ra là sản lượng.

Theo comment đầu tiên về vấn đề này thì bạn đang muốn:
1. Có sự phụ thuộc của đầu ra vào các tháng trước chứ không chỉ là cùng tháng của năm trước
2. Có nhiều đầu loại dữ liệu đầu vào hơn cho mô hình như tình hình thế giới, số lượng khách hàng
...

Trước mình có một vấn đề vướng mắc là vì cùng kì các năm trước (ví dụ tháng 3, 4 của các năm 2016, 2017, 2018, 2019) không có năm nào từng có dịch bệnh, nên mình không biết làm thế nào máy nó học biết được là nếu có dịch bệnh thì số đơn sẽ giảm thế nào cho tháng đó. Hóa ra là có thể tạo 1 feature kiểu "(Tình hình thế giới, sản lượng) trước đó 1 tháng ".

Mình nghĩ là mình có thể tạo ra 1 feature kiểu (tăng giảm của tháng trước so với cùng kì năm ngoái của tháng trước), để mình biết được trend sẽ giảm trong năm nay.

VD:
NămTăng giảm so với cùng kì của tháng trước của tháng trướcTotal
01-2020+1001000
02-2020+501200
03-2020-500500
04-2020-800?

Mà cho mình hỏi thêm 1 cái nữa, hiện giờ mình biết rằng con số tăng theo năm thường là tăng theo cấp số mũ -> dùng polinominal sẽ chính xác hơn là linear. Vấn đề là hiện tại mình muốn dùng regressor để tiên đoán y với nhiều x. Vậy làm thế nào để dự dùng polinominal khi dự đoán nhiều x? VD mình có 3 biến X, gồm Xnăm, X tổngkháchhàng, Xtìnhhình. Mình biết biến Y chắc chắn có khuynh hướng sẽ có khuynh hướng tăng với Xnăm theo đường cong polinominal, vậy mình có thể transform 1 biến Xnăm thành poli, còn các biến còn lại giữ nguyên, rồi ném vào model để tiên đoán ko?

Mà cho mình hỏi thêm sequence rồi RNN là thế nào nhỉ. Có bạn trên nói

"Đọc sơ qua thì mình nghĩ dữ liệu không có tính sequence lắm, bởi total của tháng sau không bị chi phối bởi total tháng trước. "

Ý là những dữ liệu có tính tích lũy kiểu, doanh thu từ khi lập công ty đến giờ à. Rồi cái RNN này là một kiểu model như regression hoặc tree hay sao nhỉ. Cái này trong các course nhập môn ML trên Kaggle mình chưa từng thấy.

Tay mơ ML nên hỏi nhiều câu ngô nghê, các bác thông cảm. :sweat:
 
Last edited:
Rồi cái RNN này là một kiểu model như regression hoặc tree hay sao nhỉ.
RNN là recurrent neural network, "lịch sử" của các bước trong chuỗi được "encode" vào trong trạng thái của RNN, do đó đầu ra tại 1 bước theo lý thuyết sẽ phụ thuộc vào tất cả các bước trước nó.
OG0lsXv.png
Bạn có thể đã nghe tới LSTM hay GRU rồi, đó là các dạng RNN được cải tiến để giải quyết các vấn đề của RNN gốc.
 
Back
Top