인공 지능(AI)은 최근 몇 년 동안 상당한 인기를 얻었습니다.
일반적으로 소프트웨어 엔지니어, 컴퓨터 과학자 또는 데이터 과학 애호가라면 이 분야에서 제공하는 이미지 처리, 패턴 인식 및 물체 감지의 놀라운 응용 프로그램에 흥미를 느꼈을 것입니다.
아마도 들어본 AI의 가장 중요한 하위 분야는 딥 러닝입니다. 이 분야는 다음으로 알려진 인간 두뇌 기능을 모델로 한 강력한 알고리즘(컴퓨터 프로그램 명령)에 중점을 둡니다. 신경망.
이 기사에서는 신경망의 개념과 다음을 사용하여 이러한 모델을 구축, 컴파일, 적합 및 평가하는 방법을 살펴보겠습니다. Python.
신경망
신경망(NN)은 인간 두뇌의 생물학적 활동을 모델로 한 일련의 알고리즘입니다. 신경망은 뉴런이라고도 하는 노드로 구성됩니다.
수직 노드 모음을 레이어라고 합니다. 모델은 하나의 입력, 하나의 출력 및 여러 개의 은닉층으로 구성됩니다. 각 레이어는 계산이 이루어지는 노드(뉴런이라고도 함)로 구성됩니다.
다음 다이어그램에서 원은 노드를 나타내고 노드의 수직 컬렉션은 레이어를 나타냅니다. 이 모델에는 세 개의 레이어가 있습니다.
한 레이어의 노드는 아래와 같이 전송선을 통해 다음 레이어로 연결됩니다.
우리의 데이터 세트는 레이블이 지정된 데이터로 구성됩니다. 이는 각 데이터 엔터티에 특정 이름 값이 할당되었음을 의미합니다.
따라서 동물 분류 데이터 세트의 경우 '고양이'와 '개'를 레이블로 사용하여 고양이와 개의 이미지를 데이터로 사용할 것입니다.
모델이 레이블을 이해하려면 레이블을 숫자 값으로 변환해야 하므로 동물 레이블은 고양이의 경우 '0', 개의 경우 '1'이 됩니다. 데이터와 레이블 모두 모델을 통해 전달됩니다.
러닝
데이터는 한 번에 하나의 엔터티 모델에 공급됩니다. 이 데이터는 청크로 분할되어 모델의 각 노드를 통해 전달됩니다. 노드는 이러한 청크에 대해 수학 연산을 수행합니다.
이 튜토리얼에서 수학 함수나 계산을 알 필요는 없지만 이러한 모델이 어떻게 작동하는지에 대한 일반적인 아이디어를 갖는 것이 중요합니다. 한 레이어에서 일련의 계산을 수행한 후 데이터는 다음 레이어로 전달되는 식으로 진행됩니다.
완료되면 우리 모델은 출력 계층에서 데이터 레이블을 예측합니다(예: 동물 분류 문제에서 고양이에 대한 예측 '0'을 얻음).
그런 다음 모델은 이 예측된 값을 실제 레이블 값과 비교합니다.
값이 일치하면 모델은 다음 입력을 사용하지만 값이 다르면 모델은 손실이라고 하는 두 값의 차이를 계산하고 다음에 일치하는 레이블을 생성하도록 노드 계산을 조정합니다.
딥 러닝 프레임워크
코드로 신경망을 구축하려면 다음을 가져와야 합니다. 딥 러닝 프레임워크 IDE(통합 개발 환경)를 사용하는 라이브러리로 알려져 있습니다.
이러한 프레임워크는 이 튜토리얼에서 도움이 될 미리 작성된 기능 모음입니다. 우리는 Keras 프레임워크를 사용하여 모델을 구축할 것입니다.
Keras는 딥 러닝 및 인공 지능 백엔드를 사용하는 Python 라이브러리입니다. 텐서 플로우 간단한 순차 모델의 형태로 NN을 쉽게 생성합니다.
Keras는 또한 사용할 수 있는 자체 기존 모델과 함께 제공됩니다. 이 자습서에서는 Keras를 사용하여 자체 모델을 생성합니다.
이 딥 러닝 프레임워크에 대해 자세히 알아볼 수 있습니다. 케라스 웹사이트.
신경망 구축(자습서)
Python을 사용하여 신경망을 구축해 보겠습니다.
문제 정책
신경망은 AI 기반 문제에 대한 솔루션 유형입니다. 이 튜토리얼에서는 사용 가능한 Pima 인디언 당뇨병 데이터를 살펴볼 것입니다. 여기에서 지금 확인해 보세요..
UCI 머신 러닝이 이 데이터 세트를 컴파일했습니다. 인도 환자의 의료 기록이 포함되어 있습니다. 우리 모델은 환자가 5년 이내에 당뇨병 발병 여부를 예측해야 합니다.
데이터 세트 로드 중
우리의 데이터 세트는 Microsoft Excel을 사용하여 쉽게 조작할 수 있는 'diabetes.csv'라는 단일 CSV 파일입니다.
모델을 만들기 전에 데이터 세트를 가져와야 합니다. 다음 코드를 사용하여 이 작업을 수행할 수 있습니다.
팬더를 pd로 가져 오기
데이터 = pd.read_csv('당뇨병.csv')
x = data.drop("결과")
y = 데이터["결과"]
여기서 우리는 판다 CSV 파일 데이터를 조작할 수 있는 라이브러리인 read_csv()는 파일의 값을 'data'라는 변수에 저장할 수 있도록 하는 Pandas의 내장 함수입니다.
변수 x는 결과(레이블) 데이터가 없는 데이터 세트를 포함합니다. x에 대한 레이블을 제거하는 data.drop() 함수를 사용하여 이를 달성하고 y에는 결과(레이블) 데이터만 포함합니다.
순차 모델 구축
1단계: 라이브러리 가져오기
먼저 모델에 필요한 특정 매개변수와 함께 TensorFlow 및 Keras를 가져와야 합니다. 다음 코드를 통해 이를 수행할 수 있습니다.
tensorflow를 tf로 가져 오기
tensorflow import keras에서
tensorflow.keras.models에서 가져오기 순차
tensorflow.keras.layers에서 활성화, 고밀도 가져오기
tensorflow.keras.optimizers에서 Adam 가져오기
tensorflow.keras.metrics에서 categorical_crossentropy 가져오기
우리 모델의 경우 고밀도 레이어를 가져옵니다. 이들은 완전히 연결된 레이어입니다. 즉, 레이어의 각 노드는 다음 레이어의 다른 노드와 완전히 연결됩니다.
수입도 하고 있습니다 활성화 노드로 전송되는 데이터를 확장하는 데 필요한 기능입니다. 최적화 도구 또한 손실을 최소화하기 위해 수입되었습니다.
Adam은 모델 업데이트 노드 계산을 보다 효율적으로 만드는 유명한 최적화 도구입니다. categorical_crossentropy는 우리가 사용할 손실 함수 유형(실제 레이블 값과 예측 레이블 값 간의 차이 계산).
2단계: 모델 설계
내가 만들고 있는 모델에는 하나의 입력(16개 장치 포함), 하나의 숨겨진(32개 장치 포함) 및 하나의 출력(2개 장치 포함) 레이어가 있습니다. 이 숫자는 고정되어 있지 않으며 주어진 문제에 전적으로 의존합니다.
적절한 수의 단위와 레이어를 설정하는 것은 연습을 통해 시간이 지남에 따라 향상될 수 있는 프로세스입니다. 활성화는 데이터를 노드를 통해 전달하기 전에 데이터에 대해 수행할 확장 유형에 해당합니다.
Relu 및 Softmax는 이 작업에 대한 유명한 활성화 기능입니다.
모델 = 순차([
Dense(단위 = 16, input_shape = (1,), 활성화 = 'relu'),
밀도(단위 = 32, 활성화 = 'relu'),
Dense(단위 = 2, 활성화 = 'softmax')
])
모델의 요약은 다음과 같아야 합니다.
모델 훈련
우리 모델은 두 단계로 훈련될 것입니다. 첫 번째 단계는 모델을 컴파일하는 것이고(모델을 함께 모으는 것) 다음 단계는 주어진 데이터 세트에 모델을 맞추는 것입니다.
이것은 model.compile() 함수 다음에 model.fit() 함수를 사용하여 수행할 수 있습니다.
model.compile(optimizer = Adam(learning_rate = 0.0001), loss = 'binary_crossentropy', 메트릭 = ['accuracy'])
model.fit(x, y, 에포크 = 30, 배치_크기 = 10)
'accuracy' 메트릭을 지정하면 훈련 중에 모델의 정확도를 관찰할 수 있습니다.
레이블이 1과 0의 형태이기 때문에 이진 손실 함수를 사용하여 실제 레이블과 예측 레이블 간의 차이를 계산합니다.
데이터 세트도 10개의 배치(batch_size)로 분할되고 모델을 30번(에포크) 전달됩니다. 주어진 데이터 세트의 경우 x는 데이터이고 y는 데이터에 해당하는 레이블입니다.
예측을 사용한 테스트 모델
모델을 평가하기 위해 predict() 함수를 사용하여 테스트 데이터에 대한 예측을 수행합니다.
예측 = model.predict(x)
그리고 그게 다야!
이제 에 대해 잘 이해해야 합니다. 깊은 학습 응용 프로그램, 신경망, 일반적으로 작동하는 방법 및 Python 코드에서 모델을 빌드, 훈련 및 테스트하는 방법.
이 튜토리얼이 자체 딥 러닝 모델을 만들고 배포하는 데 도움이 되기를 바랍니다.
기사가 도움이 되었다면 댓글로 알려주세요.
댓글을 남겨주세요.