Leifeng.com [Tinjauan Teknologi AI] Catatan: Artikel ini didasarkan pada fase kedua AIDL dari Chinese Society of Artificial Intelligence oleh Profesor Wang Liwei Workshop Artificial Intelligence Frontier * Pembelajaran Mesin Frontier Laporan "Teori Pembelajaran Mesin: Review dan Prospek" telah disusun dan dikompilasi, dan Leifeng.com telah sedikit menghapusnya atas dasar maksud asli yang tidak berubah.
Wang Liwei
Wang Liwei adalah seorang profesor di Universitas Peking yang bidang penelitian utamanya adalah pembelajaran mesin. Dia telah menerbitkan lebih dari 60 makalah di jurnal konferensi resmi termasuk COLT, NIPS, JMLR, PAMI, dll. Dipilih dalam AI's 10 to Watch pada tahun 2010, dia adalah sarjana Asia pertama yang menerima penghargaan tersebut. Pada tahun 2012, ia memenangkan Dana Pemuda Luar Biasa dari Yayasan Ilmu Pengetahuan Alam Nasional, Bakat Luar Biasa di Abad Baru. Menjabat sebagai Ketua Area konferensi otoritatif seperti NIPS, dan anggota dewan editorial dari banyak jurnal akademik. Berikut ini adalah bagian kedua dari pidato langsung yang diberikan oleh Profesor Wang Liwei, yang terutama mencakup pengenalan teori VC.
Selanjutnya, saya ingin memperkenalkan kepada Anda teori pertama dalam pembelajaran mesin, yang sejauh ini merupakan teori paling berpengaruh dan terluas dalam pembelajaran mesin. Teori ini disebut "teori VC", dan huruf VC mewakili inisial nama dua orang, yaitu Vapnik dan Chervonenkis. Di awal saya sebutkan bahwa selain deep learning, ada banyak algoritma terpenting dalam machine learning, bahkan semuanya dikemukakan oleh ahli teori murni. Diantaranya, SVM diajukan oleh Vapnik dalam teori VC. Mari kita lihat "teori VC" adalah tentang pengertian teori pembelajaran mesin.
Ada banyak definisi di dalamnya. Saya tidak akan memperkenalkannya satu per satu kepada Anda. Saya hanya akan menjelaskan kepada Anda istilah individual. Beberapa data, misalnya data ini berupa gambar, kita bisa menganggapnya sebagai data yang ada di ruang gambar. Jika gambar ini diklasifikasikan, kita juga bisa menganggap label kategori sebagai satu set. Dalam pembelajaran sebenarnya terdapat asumsi yang sangat penting, yang juga merupakan kerangka teori dasar, yaitu kita harus berasumsi bahwa data yang kita amati dihasilkan menurut derajat keacakan tertentu. Misalnya, sekarang kita mendapat tugas untuk mempelajari masalah klasifikasi gambar. Saat ini saya memiliki 10 juta gambar di tangan saya, seperti ImageNet. Anda dapat membayangkan bahwa ImageNet ini dipilih secara acak dari semua gambar yang mungkin dan relevan di dunia. Asumsi ini sebenarnya cukup masuk akal. Data di dalamnya dianggap dipilih secara acak, dan pengambilan sampel acak ini dapat dianggap dipilih secara acak menurut status distribusi tertentu. Dan kami juga dapat berasumsi bahwa di masa mendatang, saat kami mempelajari pengklasifikasi dan model dari data ini, kami akan menggunakan data acara tersebut. Artinya, ketika kita benar-benar ingin membuka aplikasi praktis, datanya juga diekstrak secara acak, dan harus diekstraksi dari distribusi yang sama dengan data pelatihan. Asumsi ini tidak dapat dihindari. Jika aplikasi saya di masa mendatang dan skenario pelatihan tidak memiliki distribusi yang sama, sedikit perbedaan tidak masalah, tetapi jika skenario aplikasi dan skenario pelatihan tidak terkait dengan cara apa pun, maka pembelajaran mesin tidak dapat berhasil.
Ini adalah beberapa definisi dasar. Ada juga definisi, yaitu harus ada model saat belajar, model ini bisa berupa model linier seperti contoh sebelumnya, bisa juga model nonlinier seperti SVM. Jika itu adalah model linier, semua orang memahaminya, dan SVM dapat dianggap sebagai ruang berdimensi tinggi atau bahkan model linier berdimensi tak hingga. Atau Anda sedang mempelajari deep learning atau mempelajari jaringan, tetapi apa pun model yang Anda gunakan, Anda sebenarnya membatasi pengklasifikasi ke himpunan tertentu. Model linier adalah kumpulan dari semua model linier, dan SVM adalah pengklasifikasi linier di ruang Hilbert. Jika Anda adalah sebuah jaringan, ketika Anda memperbaiki hierarki dan struktur jaringan, itu adalah kumpulan dari semua jaringan yang memungkinkan di bawah struktur lapisan tetap. Karena parameter yang berbeda akan mendapatkan Jaringan yang berbeda. Tentu saja, jika jumlah lapisan dan struktur Anda bervariasi, saya dapat memperluas koleksi saya. Koleksi semacam itu biasanya disebut ruang hipotesis. Dengan kata lain, model yang Anda pelajari selalu berasal dari batas, bukan pilihan yang begitu saja. Konsep ini sebenarnya sangat penting.
Melihat kembali "hukum Hooke" dan "hukum Kepler" yang baru saja disebutkan, mereka sebenarnya terlibat dalam masalah ini. "Hukum Hooke" sebenarnya membatasi ruang hipotesis pada model linier. Setelah pembatasan, Anda kemudian menemukan model linier terbaik yang sesuai dengan data Anda. "Model Kepler" terbatas pada model elips. Jadi semua orang bisa melihat bahwa model hipotetis itu sangat penting.
Dengan konsep dasar tadi, mari kita jelaskan konsep terpenting dari pembelajaran teori-generalisasi. Yang namanya generalisasi, sebenarnya generalisasi itu sangat sederhana. Seperti yang telah disebutkan sebelumnya, tujuan pembelajaran adalah untuk mempelajari suatu model dengan baik dan membuat model ini memiliki akurasi yang sangat tinggi pada data skenario aplikasi yang akan datang. Kesalahan generalisasi yang disebut mengacu pada tingkat kesalahan model dalam skenario aplikasi masa depan, yang disebut generalisasi. Mengapa disebut generalisasi? Kami dapat membandingkannya dengan kesalahan dalam pengalaman kami, atau kesalahan dalam data pelatihan. Biasanya saat Anda melatih suatu masalah, Anda mendapatkan banyak data pelatihan, Anda bisa mempelajari pengklasifikasi, dan mendapatkan tingkat kesalahan pada data pelatihan. Dan tingkat kesalahan pelatihan ini dan tingkat kesalahan dari generalisasi yang baru saja disebutkan sebenarnya akan dilihat nanti, ada perbedaan yang sangat mendasar antara keduanya. Perbedaan ini persis seperti yang ingin dipelajari oleh teori pembelajaran mesin.
Tadi kita berbicara tentang "Hukum Bilangan Besar" dan "Teorema Batas Pusat" Mereka semua berbicara tentang, misalnya, melempar koin, dan nilai rata-rata setelah banyak lemparan pada akhirnya akan cenderung pada ekspektasi matematika. Jika kita dengan hati-hati memikirkan pembelajaran kita dari detail teknis, jika ada pengklasifikasi tertentu, tingkat kesalahan pengklasifikasi ini, seperti tingkat kesalahan pada data pelatihan, sebenarnya untuk setiap data pelatihan Benar atau tidak, nilai ini adalah rata-rata yang dilakukan pada semua data pelatihan: catatan yang salah adalah 1, dan catatan yang benar adalah 0, yang merupakan rata-rata tersebut. Menurut "Hukum Bilangan Besar", "Teorema Batas Pusat" dan bahkan ketidaksamaan yang baru saja kami sebutkan, semuanya menunjukkan bahwa saat data pelatihan meningkat, tingkat kesalahan data yang diberikan pada set pelatihan harus cenderung ke ekspektasi matematisnya. . Mari kita lihat ekspektasi matematis ini yang disebut sebagai kesalahan generalisasi yang kita definisikan sebelumnya. Kesalahan generalisasi sebenarnya adalah ekspektasi matematis Anda dari tingkat kesalahan, dan tingkat kesalahan dari data yang tidak terlihat di masa mendatang adalah nilai yang Anda harapkan.
Bukankah "Hukum Angka Besar" menyelesaikan masalah Anda secara langsung? Saya hanya perlu melatih dan menemukan model terlatih. Ada kesalahan kecil dalam pelatihan. Menurut "Hukum Angka Besar", apakah tingkat kesalahan yang diharapkan sangat rendah, dan "Tingkat Kesalahan yang Diharapkan" merupakan skenario aplikasi kami di masa mendatang Tingkat kesalahan. Apa ada masalah disini?
Ada kesalahan logika yang sangat penting di sini, yaitu, setiap orang harus menyadari bahwa proses pembelajaran adalah proses memilih model tertentu dari sekumpulan besar model, dan proses pemilihan membuat "jumlah besar" Hukum tidak bisa lagi diterapkan. Jika Anda tertarik dengan detail ini, silakan lihat lebih dekat konten PPT saya di halaman sebelumnya. Proses seleksi sangatlah penting. Karena Anda memiliki berbagai model untuk dipilih, tingkat kesalahan pelatihan model yang Anda pilih saat ini mungkin tidak mendekati harapan, dan perbedaannya mungkin sangat besar. Gunakan "Hukum Hooke" untuk memberikan contoh yang lebih intuitif. Misalnya, Anda memiliki pegas di sini dan melakukan 100 eksperimen. Jika saya meletakkan ruang model ini di semua kemungkinan polinomial berorde 99, saya pasti dapat menemukan 99 dari ruang model ini. Urutan polinomial sepenuhnya mencakup 100 data yang kami amati. Saat ini, tingkat kesalahan pelatihan Anda nol, tetapi bagaimana hasil generalisasi saat ini? Artinya, saat Anda melakukan percobaan baru dan mendapatkan sekumpulan data baru, berapa tingkat kesalahan yang diharapkan. Jika Anda memberi Anda polinomial 99 urutan, polinomial tersebut memiliki banyak osilasi, maka setelah potongan data baru, polinomial 99 urutan ini pasti memiliki kinerja yang sangat buruk, dan Anda secara intuitif dapat melihat bahwa ia tidak memiliki stabilitas. Ini disebut terlalu pas. Karena Anda memilih model ini dari sekumpulan besar, meskipun model ini memproses data Anda dengan sangat baik, Anda telah melakukan overfitting dan gagal mencapai tujuan generalisasi.
Izinkan saya menambahkan kalimat di sini. Meskipun saya akan fokus pada masalah ini nanti, mungkin ada banyak guru dan siswa di kelas yang menggunakan pembelajaran mendalam hari ini. Mungkin ada beberapa guru dan siswa di ruangan ini yang telah melatih jaringan saraf. pengalaman dari. Apakah Anda memiliki pengalaman seperti itu dalam proses melatih jaringan saraf? Dalam sebagian besar eksperimen pelatihan, kesalahan pelatihan Anda bisa sangat rendah. Tetapi pada data pengujian saya, data pengujian mungkin masih menurun pada awalnya, tetapi setelah pelatihan ke level tertentu, kesalahan pengujian akan meningkat. Ini adalah masalah yang sering dihadapi saat melatih pembelajaran mendalam. Ini adalah overfitting yang khas. Dilakukan dengan baik dalam data pelatihan, tetapi data pengujian sangat berbeda.
Faktanya, fenomena ini juga merupakan fenomena paling mendasar dari pembelajaran mesin, dan menurut saya bukan karena munculnya pembelajaran yang dalam sehingga overfitting tidak ada. Itu tetap ada meskipun Anda menggunakan kumpulan data yang besar. Baru saja, Mr. Zhu Jun berkata kepada semua orang bahwa dengan perkembangan deep learning dalam beberapa tahun terakhir, semua orang percaya bahwa mencegah overfitting semakin penting. Jadi semua orang harus menyadari bahwa di era sekarang yang disebut big data, di era deep learning sebenarnya masih sering terjadi. Nanti saya akan membahas masalah ini lebih detail, dan membahas cara mengatasi masalah tersebut. ide.
Kembali ke pertanyaan barusan, bagaimana cara memastikan bahwa pembelajaran mesin memiliki kemampuan generalisasi yang baik? Konsep yang sangat penting dari pembuatan seragam disebutkan di sini. Sederhananya, itu berarti bahwa tujuan Anda sekarang adalah memastikan bahwa pengklasifikasi yang telah Anda pelajari akan memiliki hasil yang baik di masa mendatang, dan jika Anda ingin memastikan hal ini, pada kenyataannya, untuk sebagian besar, Anda harus memastikan bahwa Anda adalah kandidat model sekarang. Hampir semua pengklasifikasi pada ruang ini harus memiliki kemampuan generalisasi yang relatif baik dan sekaligus memiliki kemampuan generalisasi yang relatif baik. Hanya dengan melakukan ini, Anda dapat mempelajari pengklasifikasi agar memiliki kemampuan generalisasi yang lebih baik, karena sebelum Anda mengamati data pelatihan, Anda tidak tahu pengklasifikasi mana yang akan Anda pelajari, jadi jika Anda bisa Pastikan bahwa semua pengklasifikasi yang mungkin dalam himpunan memiliki kemampuan generalisasi yang baik, dan Anda dapat memastikan bahwa apa yang Anda pelajari memiliki kemampuan tersebut.
Jadi bagaimana kita bisa memastikan bahwa semua pengklasifikasi kandidat dalam himpunan memiliki kemampuan generalisasi yang baik? Apa hubungannya dengan itu? Saya tidak akan membahas terlalu banyak detail matematika hari ini. Intinya adalah seberapa besar kumpulan model kandidat Anda. Khusus untuk simbol ini, ini berarti bahwa jika kumpulan model kandidat Anda terbatas dan hanya berisi pengklasifikasi dalam jumlah terbatas, simbol ini mewakili jumlah pengklasifikasi yang dikandungnya. Singkatnya, semakin banyak pengklasifikasi yang dimuat model, semakin banyak data yang dibutuhkan untuk memastikan bahwa pengklasifikasi yang dipelajari memiliki kemampuan generalisasi yang lebih baik.
Kembali ke contoh Hooke, jika Anda menggunakan model yang sangat sederhana, seperti model linier orde pertama, saya akan membicarakannya nanti. Meskipun model linier orde pertama adalah himpunan yang relatif kecil, sebenarnya model ini berisi bilangan tak hingga. Karena model linier memiliki jumlah elemen yang tak terbatas, model ini kontinu. Dari sudut pandang intuitif, tempat ini dapat dianggap sebagai model yang relatif kecil, dan hanya mengandung sedikit elemen. Karena model linier orde pertama adalah himpunan yang relatif kecil dalam artian, untuk saat ini, hanya diperlukan sedikit eksperimen. Dimungkinkan untuk mempelajari model yang lebih baik dengan 10 data observasi, dan kemudian datang dengan data baru. Kemampuan kimianya lebih baik. Tetapi jika Anda benar-benar ingin mempelajari model seperti polinomial 99 urutan, jumlah data yang diperlukan terlalu banyak. Tadi kami mengatakan bahwa Anda memiliki 100 data dan ingin mempelajari polinomial 99 urutan. Teori pembelajaran ini memberi tahu Anda bahwa 100 data terlalu sedikit, dan Anda memerlukan 10.000 data. Saat Anda mengamati 10.000 data, semua orang akan menggunakan polinomial orde 99 untuk melihat polinomial orde 99 terbaik mana yang lebih konsisten dengan data pelatihan saya. Anda mungkin terkejut saat mengetahui bahwa polinomial orde 99 ini , 99, 98 sampai koefisien sebelum suku kedua sebenarnya hampir 0, sebenarnya itu adalah tingkat fenomena.
Biar saya rangkum. Teori pembelajaran ini memberitahu semua orang bahwa jika saya memilih model dari sekumpulan kandidat, jika saya ingin belajar dengan baik, jumlah data yang dibutuhkan harus berkorelasi positif dengan kompleksitas model. Mari kita gunakan pembelajaran mendalam, yang lebih umum saat ini, untuk membuat analogi yang lebih jelas. Jika Anda ingin melatih jaringan 1.000 lapisan, misalnya, jaringan ini memiliki jutaan node, dan Anda ingin melatih jaringan 10 lapisan, jaringan ini Mungkin ada beberapa ribu node. Pikirkan tentang jaringan mana yang membutuhkan lebih banyak data pelatihan? Pasti modelnya sangat kompleks, jumlah node dalam lebih banyak, dan jumlah data pelatihan yang diperlukan lebih banyak. Dengan kata lain, jika saya memberi Anda 100.000 data, berapa ukuran jaringan yang harus Anda pilih untuk pelatihan? Ini memiliki signifikansi panduan yang bagus untuk aplikasi praktis. Jika Anda tidak memahami ide dasar machine learning , Maka tidak ada petunjuk. Jadi pembelajaran mesin dapat memberi tahu Anda secara kasar dalam rentang berapa kompleksitas model yang harus dipilih. Ini sebenarnya memberi Anda untuk apa teori pembelajaran mesin itu. Ini bukan bukti konkret, tetapi memberi tahu Anda beberapa ide tingkat tinggi. Apa yang dikatakan tempat ini adalah bahwa ketika Anda memiliki sejumlah data, Anda harus memilih kompleksitas model berdasarkan jumlah data Anda. Jika Anda tidak yakin dapat kembali dan melakukan eksperimen, ambil 10.000 data dan lihat apakah Anda melatihnya dengan jaringan neural dengan ratusan lapisan. Apakah fenomena overfitting yang baru saja saya sebutkan akan terjadi? Saya memperkirakan fenomena ini akan terjadi setidaknya 8 atau 9 kali jika Anda melakukan 10 percobaan.
Saya baru saja berbicara tentang teori VC, kalau hanya cerita yang sederhana, tidak bisa disebut teori. Inti dari teori dan teknologinya adalah dapat memberikan deskripsi kuantitatif yang sangat akurat. Deskripsi kuantitatif ini pada dasarnya dapat memberikan deskripsi yang kompleks untuk himpunan yang tidak terbatas. Saya baru saja mengatakan bahwa jika himpunan terbatas, jumlah elemen dalam himpunan ini adalah deskripsi ukurannya, tetapi ketika himpunan tidak terbatas, bagaimana menjelaskannya? Oleh karena itu, V dan C mengajukan sekumpulan teori, memberikan parameter karakterisasi ke himpunan tak hingga, yang disebut VC dimesnion. Ini menggambarkan himpunan tak terbatas dengan sangat baik. Jika semua yang dikandungnya adalah pengklasifikasi, betapa rumitnya itu. Setiap orang akan menemukan bahwa ia memiliki berbagai macam aplikasi, dan Anda akan menemukan bahwa ia banyak digunakan di banyak bidang komputer.
Singkatnya, semakin besar dimensi VC, semakin kompleks modelnya. Untuk melatih model seperti itu dengan baik, dibutuhkan banyak data pelatihan. Jika guru dan siswa yang tertarik dapat melihat beberapa contoh spesifik, model umum dapat menghitung dimensi VC. Jika Anda menggunakan model yang sangat klasik seperti model linier, model ini dapat memberikan penjelasan kuantitatif secara kasar. Jika dimensi VC model Anda adalah 10, berapa banyak data pelatihan yang Anda butuhkan? Menurut saya dibutuhkan sekitar 10 kali dimensi VC, yaitu 100 data pelatihan. Jadi, jika dimensi VC Anda adalah model 100 juta, dan Anda hanya memiliki 1.000 data pelatihan, tidak mungkin untuk berlatih dengan baik, dan overfitting harus serius. Tetapi jika dimensi VC Anda terlalu jauh lebih kecil daripada jumlah data, Anda beralih ke ukuran ekstrim lainnya. Artinya, model terbaik tidak dapat memuat data pelatihan, jadi setiap orang harus lebih memperhatikan aspek ini.
-
Kesimpulannya, apa sebenarnya yang dijelaskan oleh dimensi VC?
Dimensi VC menjelaskan jenis set model tempat Anda berlatih, menjelaskan kompleksitas set model, dan mempelajari sifat struktur. Dimensi VC itu sendiri tidak memberi tahu kita algoritma apa pun. Saya hanya memberi tahu Anda bahwa ada dimensi VC seperti itu sekarang. Anda dapat memperkirakan dimensi VC dari setiap set model. Anda mungkin tahu berapa banyak data pelatihan yang dibutuhkan, tetapi tidak ada gunanya untuk algoritme pembelajaran Anda. jawab pertanyaan ini. Algoritme pembelajaran Anda menggemakan dimensi VC, yang sebenarnya menemukan satu dari set model Anda yang meminimalkan kesalahan pelatihan. Seperti yang akan Anda lihat, banyak teori pembelajaran dan teori VC lainnya sangat penting di bagian belakang. Teori VC tidak banyak berhubungan dengan algoritme. Teori ini mempelajari kompleksitas ukuran himpunan. Dengan dimensi VC D, saya mungkin bisa menggeneralisasi hubungan kuantitatif antara kesalahan generalisasi dan kesalahan pelatihan. Inti adalah D / N, N adalah jumlah data, dan D adalah dimensi VC, jadi saya hanya mengatakan bahwa jumlah datanya setidaknya 10 kali lipat dari dimensi VC untuk membuat data di bawah tanda cukup kecil.
Grafik di sini dapat lebih mencerminkan kesalahan generalisasi dan kesalahan pelatihan. Absis dari grafik ini adalah kompleksitas himpunan model, yaitu kiri rendah dan kanan tinggi; sumbu vertikal mewakili kesalahan, kurva ini adalah kesalahan empiris, dan kurva berbentuk U ini adalah kesalahan generalisasi / uji. Saat model Anda beralih dari yang paling sederhana, yaitu underfitting, error pelatihan, dan error generalisasi besar, menjadi overfitting di paling kanan, yaitu error pelatihan sangat rendah, tetapi karena modelnya sangat kompleks, error generalisasi Ini juga sangat besar, jadi Anda harus menemukan kompleksitas yang sangat sesuai sebagai kisaran pilihan untuk model akhir. Ini adalah ide yang diberikan oleh teori VC: kita harus menemukan model dengan tingkat kompleksitas yang tepat.
Teori VC yang baru saja saya bicarakan sebenarnya tidak melibatkan algoritma, tetapi pada akhirnya, pembelajaran mesin harus diimplementasikan dalam algoritma. Adakah cara untuk menggunakan ide-ide seperti teori VC untuk membantu saya merancang algoritma? Yang paling praktis adalah regularisasi (regularisasi). Banyak orang mungkin pernah mendengar metode ini, seperti yang diusulkan dalam Structural Risk Minimization (SRM), yang menggunakan hierarki untuk membuat kumpulan model. Regularisasi lainnya adalah bahwa tujuan pengoptimalan saya adalah data pelatihan saya, tetapi saya ingin menambahkan item yang terkait dengan kompleksitas model.
Saya baru saja berbicara tentang dampak kompleksitas model pada kesalahan generalisasi.Jika algoritma digunakan, ide yang wajar adalah menggunakan regularisasi. Ini diterapkan pada level algoritme, yang sangat penting. Anda dapat melihat SEM, regularisasi L2 yang sangat umum. Bagian depannya disebut kerugian pelatihan. Ada juga regularisasi L1, LASSO, dan sebagainya.
Ada juga Boosting, yang merupakan proses berulang, setiap iterasi menghasilkan pengklasifikasi dasar, dan akhirnya mengintegrasikan semua pengklasifikasi dasar menjadi satu. Jelas, karena iterasi terus meningkat, modelnya akan menjadi semakin kompleks. Bagaimana cara mengatasi overfitting yang disebabkan oleh model yang terlalu rumit? Berhenti lebih awal adalah salah satu cara. Sudahkah Anda menggunakan stoping awal dalam deep learning? Sering kali ketika Anda menggunakan Jaringan, Anda hampir selalu menggunakan penghentian awal, dan Anda harus menghentikan pelatihan selama jangka waktu tertentu. Jika terus dan berulang, saya pikir itu akan overfit pada akhirnya. Hasil Anda untuk 1000 iterasi dan 50 iterasi mungkin sangat berbeda. Tetapi epoch setelah 1.000 mungkin jauh lebih kecil dari 50, tetapi kesalahan pengujian Anda pada 1.000 iterasi mungkin terlalu besar untuk dilihat.
Artikel ini bertema laporan "Retrospect and Prospect of Machine Learning Theory" oleh Profesor Wang Liwei dari Peking University (2). Untuk tema laporan tindak lanjut, harap perhatikan laporan tindak lanjut Leifeng.com [AI Technology Review].
- Ctrip menyangkal bahwa data besar sudah dikenal; Xiaomi menyangkal bahwa Lu Qi akan bergabung dengan | Bacaan Inspirasi Pagi
- Kenaikan harga iPhone, apakah meminum racun untuk memuaskan dahaga? Anda perlu memahami logika bisnis di baliknya
- Metode input telepon masih bisa bermain seperti ini! Saya khawatir saya kecanduan mengobrol dan tidak berbisnis ... Rank
- Teknologi dan mode lintas batas, peralatan rumah tangga Siemens menafsirkan "metode hidup" yang lebih ideal