Dalam artikel pertama siri ini, kami membincangkan hubungan dan perbezaan antara kecerdasan buatan, pembelajaran mesin, pembelajaran mendalam, sains data dan bidang lain. Kami juga membuat beberapa pilihan sukar tentang bahasa pengaturcaraan, alatan dan banyak lagi yang akan digunakan oleh keseluruhan siri. Akhirnya, kami juga memperkenalkan sedikit ilmu matriks. Dalam artikel ini, kita akan membincangkan secara mendalam matriks, teras kecerdasan buatan. Tetapi sebelum itu, mari kita fahami dahulu sejarah kecerdasan buatan
Mengapa kita perlu memahami sejarah kecerdasan buatan? Terdapat banyak ledakan AI dalam sejarah, tetapi dalam banyak kes jangkaan besar untuk potensi AI gagal menjadi kenyataan. Memahami sejarah kecerdasan buatan boleh membantu kita melihat sama ada gelombang kecerdasan buatan ini akan mencipta keajaiban atau hanya gelembung lain yang akan pecah.
Bilakah kita mula memahami asal usul kecerdasan buatan? Adakah selepas penciptaan komputer digital? Atau lebih awal? Saya percaya mengejar makhluk yang maha mengetahui kembali kepada permulaan tamadun. Sebagai contoh, Delphi dalam mitologi Yunani kuno adalah seorang nabi yang boleh menjawab sebarang soalan. Pencarian mesin kreatif yang mengatasi kecerdasan manusia juga telah menarik perhatian kita sejak zaman purba. Terdapat beberapa percubaan yang gagal untuk membina mesin catur sepanjang sejarah. Antaranya ialah Mechanical Turk yang terkenal, yang bukan robot sebenar tetapi dikawal oleh pemain catur yang tersembunyi di dalamnya. Logaritma yang dicipta oleh John Napier, kalkulator Blaise Pascal dan Enjin Analitik Charles Babbage semuanya memainkan peranan penting dalam pembangunan kecerdasan buatan
Jadi, kecerdasan buatan Apakah peristiwa penting dalam perkembangannya setakat ini? Seperti yang dinyatakan sebelum ini, penciptaan komputer digital adalah peristiwa terpenting dalam sejarah penyelidikan kecerdasan buatan. Tidak seperti peranti elektromekanikal, yang berskala bergantung pada keperluan kuasa, peranti digital mendapat manfaat daripada kemajuan teknologi, seperti daripada tiub vakum kepada transistor kepada litar bersepadu dan kini VLSI.
Satu lagi peristiwa penting dalam pembangunan kecerdasan buatan ialah analisis teori pertama Alan Turing tentang kecerdasan buatan. Beliau mencadangkan ujian Turing yang terkenal
Pada akhir 1950-an, John McCarthy
Menjelang 1970-an dan 1980-an, algoritma memainkan peranan utama dalam tempoh ini memainkan peranan utama. Pada masa ini, banyak algoritma baru yang cekap telah dicadangkan. Pada akhir 1960-an, Donald Knuth (saya sangat mengesyorkan anda untuk mengenalinya, dalam dunia sains komputer, dia setara dengan Gauss atau Euler dalam dunia matematik) terkenal "The Art of Computer Programming" Penerbitan jilid pertama Pengaturcaraan menandakan permulaan era algoritma. Pada tahun-tahun ini, banyak algoritma tujuan umum dan algoritma graf telah dibangunkan. Selain itu, pengaturcaraan berasaskan rangkaian saraf tiruan juga muncul pada masa ini. Walaupun seawal tahun 1940-an, Warren S. McCulloch dan Walter Pitts
dalam era digital, kecerdasan buatan mempunyai sekurang-kurangnya dua peluang yang menjanjikan , tetapi kedua-dua peluang tidak dijangka. Adakah gelombang kecerdasan buatan semasa serupa dengan ini? Soalan ini sukar dijawab. Walau bagaimanapun, saya secara peribadi percaya bahawa kecerdasan buatan akan memberi impak yang besar kali ini (anotasi terjemahan LCTT: Artikel ini diterbitkan pada Jun 2022, ChatGTP telah dilancarkan setengah tahun kemudian). Mengapa saya mempunyai ramalan sedemikian? Pertama, peralatan pengkomputeran berprestasi tinggi kini murah dan mudah didapati. Pada tahun 1960-an atau 1980-an, terdapat hanya beberapa peranti pengkomputeran yang begitu berkuasa, sedangkan kini kita mempunyai berjuta-juta malah berbilion-bilion. Kedua, kini terdapat sejumlah besar data yang tersedia untuk melatih kecerdasan buatan dan program pembelajaran mesin. Bayangkan berapa ramai jurutera imej digital yang terlibat dalam pemprosesan imej digital pada 1990-an boleh gunakan untuk melatih algoritma? Mungkin beribu atau berpuluh ribu. Kini, platform sains data Kaggle (anak syarikat Google) sahaja mempunyai lebih daripada 10,000 set data. Sejumlah besar data yang dijana oleh Internet setiap hari menjadikannya lebih mudah untuk melatih algoritma. Ketiga, sambungan Internet berkelajuan tinggi memudahkan untuk bekerja dengan institusi besar. Dalam dekad pertama abad ke-21, kerjasama dalam kalangan saintis komputer adalah sukar. Walau bagaimanapun, kelajuan Internet kini menjadikan kerjasama dengan projek kecerdasan buatan seperti Google Colab, Kaggle dan Project Jupiter menjadi kenyataan. Berdasarkan tiga faktor ini, saya percaya bahawa kecerdasan buatan kali ini akan wujud selama-lamanya, dan akan ada banyak aplikasi yang sangat baik
#🎜 🎜 #Rajah 1: Matriks A, B, C, D
Setelah memahami sejarah kecerdasan buatan, kini tiba masanya untuk kembali kepada topik matriks dan vektor. Saya telah memperkenalkan mereka secara ringkas dalam artikel sebelum ini. Kali ini, kita akan mendalami dunia Matriks. Pertama, sila lihat Rajah 1 dan Rajah 2, yang menunjukkan sejumlah 8 matriks dari A hingga H. Mengapakah begitu banyak matriks diperlukan dalam kecerdasan buatan dan tutorial pembelajaran mesin? Pertama sekali, seperti yang dinyatakan sebelum ini, matriks ialah teras algebra linear, dan algebra linear bukanlah otak pembelajaran mesin, tetapi ia adalah teras pembelajaran mesin. Kedua, dalam perbincangan berikut, setiap matriks mempunyai tujuan tertentu
Rajah 2: Matriks E, F, G, H 🎜#Mari kita lihat bagaimana matriks diwakili dan cara mendapatkan butiran mereka. Rajah 3 menunjukkan cara mewakili matriks A menggunakan NumPy. Walaupun matriks dan tatasusunan tidak betul-betul sama, kami sering menggunakannya sebagai sinonim dalam aplikasi praktikal #
Saya amat mengesyorkan agar anda mempelajari dengan teliti cara menggunakan NumPymatriks
berfungsi untuk mencipta tatasusunan dan matriks dua dimensi. Tetapi ia akan ditamatkan pada masa hadapan, jadi penggunaannya tidak lagi disyorkan. Beberapa butiran matriks A juga ditunjukkan dalam Rajah 3. A.size
memberitahu kita bilangan elemen dalam tatasusunan. Dalam kes kami, ia adalah 9. Kod A.nidm
mewakili dimensi tatasusunan. Adalah mudah untuk melihat bahawa matriks A adalah dua dimensi. A.shape
mewakili susunan matriks A. Susunan matriks ialah bilangan baris dan lajur matriks. Walaupun saya tidak akan menerangkannya dengan lebih lanjut, anda perlu mengetahui saiz, dimensi dan susunan matriks anda apabila menggunakan perpustakaan NumPy. Rajah 4 menunjukkan mengapa saiz, dimensi dan susunan matriks perlu dikenal pasti dengan teliti. Perbezaan kecil dalam cara tatasusunan ditakrifkan boleh mengakibatkan perbezaan dalam saiz, dimensi dan susunannya. Oleh itu, pengaturcara harus memberi perhatian khusus kepada butiran ini apabila mentakrifkan matriks.
Rajah 4: Saiz, dimensi dan susunan tatasusunanSekarang kita melakukan beberapa operasi matriks asas. Rajah 5 menunjukkan bagaimana matriks A dan B ditambah. NumPy menyediakan dua kaedah untuk menambah matriks, tambah
fungsi dan +
operator. Ambil perhatian bahawa hanya matriks daripada susunan yang sama boleh ditambah. Sebagai contoh, dua matriks 4 × 3 boleh ditambah, tetapi matriks 3 × 4 dan matriks 2 × 3 tidak boleh ditambah. Walau bagaimanapun, kerana pengaturcaraan berbeza daripada matematik, NumPy sebenarnya tidak mengikut peraturan ini. Rajah 5 juga menunjukkan penambahan matriks A dan D. Ingat, penambahan matriks seperti ini adalah haram secara matematik. Satu dipanggil penyiaran penyiaran
array
函数创建矩阵。虽然 NumPy 也提供了 matrix
函数来创建二维数组和矩阵。但是它将在未来被废弃,所以不再建议使用了。在图 3 还显示了矩阵 A 的一些详细信息。A.size
告诉我们数组中元素的个数。在我们的例子中,它是 9。代码 A.nidm
表示数组的 维数dimension。很容易看出矩阵 A 是二维的。A.shape
表示矩阵 A 的阶数order,矩阵的阶数是矩阵的行数和列数。虽然我不会进一步解释,但使用 NumPy 库时需要注意矩阵的大小、维度和阶数。图 4 显示了为什么应该仔细识别矩阵的大小、维数和阶数。定义数组时的微小差异可能导致其大小、维数和阶数的不同。因此,程序员在定义矩阵时应该格外注意这些细节。
图 4:数组的大小、维数和阶数
现在我们来做一些基本的矩阵运算。图 5 显示了如何将矩阵 A 和 B 相加。NumPy 提供了两种方法将矩阵相加,add
函数和 +
Re-ungkapan 5: Matriks penjumlahan Dan
A.shape == B.shape
当然除了矩阵加法外还有其它矩阵运算。图 6 展示了矩阵减法和矩阵乘法。它们同样有两种形式,矩阵减法可以由 subtract
函数或减法运算符 -
来实现,矩阵乘法可以由 matmul
函数或矩阵乘法运算符 @
来实现。图 6 还展示了 逐元素乘法element-wise multiplication 运算符 *
的使用。请注意,只有 NumPy 的 matmul
函数和 @
运算符执行的是数学意义上的矩阵乘法。在处理矩阵时要小心使用 *
运算符。
图 6:更多矩阵运算
对于一个 m x n 阶和一个 p x q 阶的矩阵,当且仅当 n 等于 p 时它们才可以相乘,相乘的结果是一个 m x q 阶矩的阵。图 7 显示了更多矩阵相乘的示例。注意 E@A
是可行的,而 A@E
会导致错误。请仔细阅读对比 D@G
和 G@D
的示例。使用 shape
属性,确定这 8 个矩阵中哪些可以相乘。虽然根据严格的数学定义,矩阵是二维的,但我们将要处理更高维的数组。作为例子,下面的代码创建一个名为 T 的三维数组。
图 7:更多矩阵乘法的例子
T = np.array([[[11,22], [33,44]], [[55,66], [77,88]]])
到目前为止,我们都是通过键盘输入矩阵的。如果我们需要从文件或数据集中读取大型矩阵并处理,那该怎么办呢?这时我们就要用到另一个强大的 Python 库了——Pandas。我们以读取一个小的 CSV (逗号分隔值comma-separated value)文件为例。图 8 展示了如何读取 cricket.csv
文件,并将其中的前三行打印到终端上。在本系列的后续文章中将会介绍 Pandas 的更多特性。
图 8:用 Pandas 读取 CSV 文件
图 8:用 Pandas 读取 CSV 文件
需要进行改写的内容是:矩阵的秩
Rajah 9: Mencari pangkat matriks
Ini adalah penghujung kandungan ini. Dalam artikel seterusnya, kami akan mengembangkan perpustakaan alatan supaya ia boleh digunakan untuk membangunkan kecerdasan buatan dan program pembelajaran mesin. Kami juga akan membincangkan rangkaian saraf, pembelajaran diselia dan pembelajaran tanpa pengawasan dengan lebih terperinci
Atas ialah kandungan terperinci Meneroka Sejarah dan Matriks Kepintaran Buatan: Tutorial Kepintaran Buatan (2). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!