이 시리즈의 첫 번째 기사에서는 인공 지능, 기계 학습, 딥 러닝, 데이터 과학 및 기타 분야 간의 연관성과 차이점에 대해 논의했습니다. 또한 전체 시리즈에서 사용할 프로그래밍 언어, 도구 등에 대해 몇 가지 어려운 선택을 했습니다. 마지막으로 약간의 행렬 지식도 소개했습니다. 이번 글에서는 인공지능의 핵심인 매트릭스에 대해 심도있게 논의해보겠습니다. 하지만 그 전에 먼저 인공지능의 역사를 이해해보자
왜 인공지능의 역사를 이해해야 할까요? 역사상 수많은 AI 붐이 있었지만, AI의 잠재력에 대한 큰 기대는 실현되지 못한 경우가 많았다. 인공지능의 역사를 이해하면 이 인공지능의 물결이 기적을 일으킬지 아니면 터질 또 다른 거품일지 알 수 있습니다.
우리는 언제부터 인공지능의 기원을 이해하기 시작했나요? 디지털 컴퓨터가 발명된 이후였나요? 아니면 더 빨리? 나는 전지한 존재에 대한 추구가 문명의 시작으로 거슬러 올라간다고 믿는다. 예를 들어, 고대 그리스 신화에 나오는 델포이는 어떤 질문에도 답할 수 있는 선지자였습니다. 인간의 지능을 능가하는 창의적인 기계에 대한 탐구는 고대부터 우리를 매료시켜 왔습니다. 역사상 체스 기계를 만들려는 시도는 여러 번 실패했습니다. 그중에는 악명 높은 Mechanical Turk가 있는데, 실제 로봇은 아니지만 내부에 숨겨진 체스 플레이어가 조종하는 로봇입니다. 존 네이피어의 로그 발명, 블레즈 파스칼의 계산기, 찰스 배비지의 분석 엔진은 모두 인공지능 발전에 핵심적인 역할을 했습니다
그렇다면 지금까지 인공지능 발전의 이정표는 무엇일까요? 앞서 언급한 바와 같이, 디지털 컴퓨터의 발명은 인공지능 연구 역사상 가장 중요한 사건이다. 확장성이 전력 요구 사항에 따라 달라지는 전기 기계 장치와 달리 디지털 장치는 진공관, 트랜지스터, 집적 회로 및 현재 VLSI와 같은 기술 발전의 혜택을 받습니다.
인공지능 발전의 또 다른 중요한 이정표는 앨런 튜링의 인공지능에 대한 최초의 이론적 분석입니다. 그는 유명한 튜링 테스트를 제안했습니다
1950년대 후반 John McCarthy
1970년대와 1980년대에는 알고리즘이 이 시기에 중요한 역할을 했습니다. 이 기간 동안 새롭고 효율적인 알고리즘이 많이 제안되었습니다. 1960년대 후반 도널드 커누스(그를 꼭 알아두시기를 권합니다. 컴퓨터 과학계에서는 그는 수학계의 가우스나 오일러에 해당합니다)로 유명한 『컴퓨터 프로그래밍의 예술』 제1권을 출판했습니다. 프로그래밍의 시대는 알고리즘 시대의 시작을 알렸습니다. 이 기간 동안 많은 범용 알고리즘과 그래프 알고리즘이 개발되었습니다. 또한 인공신경망을 기반으로 한 프로그래밍도 이때 등장했다. 1940년대 초에 Warren S. McCulloch와 Walter Pitts는
디지털 시대에 인공 지능에 대한 유망한 기회가 두 가지 이상 있었지만 이 두 가지 기회는 모두 기대에 미치지 못했습니다. 요즘 인공지능의 물결도 이와 비슷할까요? 이 질문은 대답하기 어렵습니다. 하지만 저는 개인적으로 이번에는 인공지능이 큰 영향을 미칠 것이라고 믿습니다. 왜 그런 예측이 있습니까? 첫째, 고성능 컴퓨팅 장비는 이제 저렴하고 쉽게 구할 수 있습니다. 1960년대나 1980년대에는 그러한 강력한 컴퓨팅 장치가 몇 개밖에 없었지만 지금은 수백만, 심지어 수십억 개가 있습니다. 둘째, 이제 인공 지능과 기계 학습 프로그램을 훈련하는 데 사용할 수 있는 방대한 양의 데이터가 있습니다. 1990년대 디지털 이미지 처리에 종사했던 디지털 이미지 엔지니어 중 얼마나 많은 디지털 이미지 엔지니어가 알고리즘을 훈련하는 데 사용할 수 있었는지 상상해 보십시오. 어쩌면 수천, 수만일 수도 있습니다. 이제 데이터 과학 플랫폼 Kaggle(Google 자회사)에만 10,000개 이상의 데이터 세트가 있습니다. 매일 인터넷에서 생성되는 방대한 양의 데이터로 인해 알고리즘 훈련이 더 쉬워집니다. 셋째, 고속 인터넷 연결을 통해 대규모 기관과의 협력이 더 쉬워졌습니다. 21세기의 첫 10년 동안에는 컴퓨터 과학자들 간의 협력이 어려웠습니다. 그러나 이제 인터넷의 속도로 인해 Google Colab, Kaggle, Project Jupiter 등 인공지능 프로젝트와의 협업이 현실화되었습니다. 이 세 가지 요소를 바탕으로 인공지능은 앞으로도 영원히 존재할 것이며 우수한 응용 프로그램이 많이 나올 것이라고 믿습니다
그림 1: 행렬 A, B, C, D
인공지능의 역사를 이해했다면 이제 행렬과 벡터라는 주제로 돌아갈 차례입니다. 이전 글에서 간략하게 소개한 적이 있습니다. 이번에는 매트릭스의 세계를 좀 더 깊이 파헤쳐 보겠습니다. 먼저 A부터 H까지 총 8개의 행렬을 보여주는 그림 1과 그림 2를 살펴보자. 인공 지능 및 기계 학습 자습서에 왜 그렇게 많은 행렬이 필요한가요? 우선 앞서 언급한 것처럼 행렬은 선형대수학의 핵심이고, 선형대수학은 머신러닝의 두뇌가 아니라 머신러닝의 핵심이다. 둘째, 다음 논의에서 각 행렬에는 특정 목적이 있습니다.
그림 2: 행렬 E, F, G, H
행렬이 어떻게 표현되고 세부 정보를 얻는지 살펴보겠습니다. 그림 3은 NumPy를 사용하여 행렬 A를 표현하는 방법을 보여줍니다. 행렬과 배열은 정확히 동일하지는 않지만 실제 응용 프로그램에서는 동의어로 사용하는 경우가 많습니다
그림 3: NumPy에서 행렬 A 표현
NumPy의 A.size
는 배열의 요소 수를 알려줍니다. 우리의 경우에는 9입니다. 코드 A.nidm
은 배열의 차원을 나타냅니다. 행렬 A가 2차원임을 쉽게 알 수 있습니다. A.shape
는 행렬 A의 순서를 나타냅니다. 행렬의 순서는 행렬의 행과 열의 개수입니다. 더 이상 설명하지는 않겠지만 NumPy 라이브러리를 사용할 때는 행렬의 크기, 차원, 순서를 알아야 합니다. 그림 4는 행렬의 크기, 차원, 순서를 주의 깊게 식별해야 하는 이유를 보여줍니다. 배열 정의 방법의 작은 차이로 인해 크기, 차원 및 순서가 달라질 수 있습니다. 따라서 프로그래머는 행렬을 정의할 때 이러한 세부 사항에 특별한 주의를 기울여야 합니다. array
函数创建矩阵。虽然 NumPy 也提供了 matrix
函数来创建二维数组和矩阵。但是它将在未来被废弃,所以不再建议使用了。在图 3 还显示了矩阵 A 的一些详细信息。A.size
告诉我们数组中元素的个数。在我们的例子中,它是 9。代码 A.nidm
表示数组的 维数dimension。很容易看出矩阵 A 是二维的。A.shape
表示矩阵 A 的阶数order,矩阵的阶数是矩阵的行数和列数。虽然我不会进一步解释,但使用 NumPy 库时需要注意矩阵的大小、维度和阶数。图 4 显示了为什么应该仔细识别矩阵的大小、维数和阶数。定义数组时的微小差异可能导致其大小、维数和阶数的不同。因此,程序员在定义矩阵时应该格外注意这些细节。
图 4:数组的大小、维数和阶数
现在我们来做一些基本的矩阵运算。图 5 显示了如何将矩阵 A 和 B 相加。NumPy 提供了两种方法将矩阵相加,add
函数和 +
그림 4: 배열의 크기, 차원 및 순서이제 몇 가지 기본 행렬 연산을 수행해 보겠습니다. 그림 5는 행렬 A와 B가 어떻게 추가되는지 보여줍니다. NumPy는 행렬을 추가하는 두 가지 방법을 제공합니다. 추가
함수 및 +
연산자. 동일한 순서의 행렬만 추가할 수 있습니다. 예를 들어 4×3 행렬 2개를 추가할 수 있지만 3×4 행렬과 2×3 행렬은 추가할 수 없습니다. 그러나 프로그래밍은 수학과 다르기 때문에 NumPy는 실제로 이 규칙을 따르지 않습니다. 그림 5는 또한 행렬 A와 D를 추가하는 것을 보여줍니다. 이러한 종류의 행렬 추가는 수학적으로 불법이라는 점을 기억하십시오. 하나는 방송이라고 합니다
재표현: 그림 5: 행렬 합산
🎜🎜재표현: 그림 5: 행렬 합산🎜A.shape == B.shape🎜 행렬 D와 H를 추가하려고 하면 방송 메커니즘이 전능하지 않습니다. 작업 오류가 발생합니다. 🎜
当然除了矩阵加法外还有其它矩阵运算。图 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 文件
需要进行改写的内容是:矩阵的秩
그림 9: 행렬의 순위 찾기
이 콘텐츠의 끝입니다. 다음 글에서는 인공지능과 머신러닝 프로그램을 개발하는 데 사용할 수 있도록 도구 라이브러리를 확장해 보겠습니다. 신경망, 지도 학습, 비지도 학습에 대해서도 더 자세히 다루겠습니다
위 내용은 인공지능의 역사와 매트릭스 탐구: 인공지능 튜토리얼(2)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!