기금넷 공식사이트 - 금 선물 - 인공 신경망의 개념 빗질 및 사례 시연

인공 신경망의 개념 빗질 및 사례 시연

인공 신경망의 개념 빗질 및 사례 시연

신경망은 생물학적 뉴런을 모방하는 기계 학습 모델이다. 데이터는 입력 레이어에서 입력되어 활성 임계값이 있는 여러 노드를 통과합니다.

재귀 신경망은 이전에 입력한 데이터를 내부적으로 저장하고 기억할 수 있는 신경 네트워크이므로 데이터 흐름에서 시변 구조를 배울 수 있습니다.

현재 기계 학습은 시리, 구글노 등 스마트 어시스턴트, 추천 엔진인 아마존 추천 제품의 추천 엔진, 구글과 페이스북이 사용하는 광고 순위 시스템과 같은 많은 제품에 적용되었다. 최근 심도 있는 학습의 진전으로 기계 학습이 대중의 시야에 들어갔다. 알파고가 바둑 마스터 이세돌 (AlphaGo) 를 이긴 사건, 이미지 인식, 기계 번역 등 일부 신상품의 출현이 있었다.

이 섹션에서는 강력하고 널리 사용되는 몇 가지 기계 학습 기술을 소개합니다. 이것은 물론 현대 상업의 요구를 충족시키기 위한 심도 있는 학습과 전통적인 방법을 포함한다. 이 일련의 문장 들을 보고 나면 필요한 지식을 갖게 되고, 그런 다음 특정 기계 학습 실험을 당신의 분야에 적용할 수 있다. (존 F. 케네디, 공부명언)

심도 있는 신경망의 정확도가 높아지면서 음성 및 이미지 인식 기술의 응용이 대중의 관심을 받고 AI 와 심도 있는 학습에 대한 연구도 더욱 보편화되고 있다. 하지만 어떻게 하면 더 영향력이 있고, 더 인기가 있고, 문제가 될 수 있습니다. 이 문서의 주요 내용은 피드 포워드 신경망과 재귀 신경망을 간략하게 소개하고 시계열 데이터의 예외를 감지하기 위해 재귀 신경망을 구축하는 방법입니다. 토론을 좀 더 구체적으로 하기 위해 Deeplearning4j 를 사용하여 신경망을 구축하는 방법을 보여드리겠습니다.

1 .. 신경망이란 무엇입니까?

인공 신경망 알고리즘의 원래 의도는 생물학적 뉴런을 모방하는 것이었다. 그러나이 비유는 매우 신뢰할 수 없습니다. 인공 신경망의 각 특징은 생체 뉴런의 굴절입니다. 각 노드는 활성화 임계값과 트리거를 연결합니다.

연결된 인공 뉴런 시스템이 구축되면, 우리는 이 시스템들을 훈련시켜 데이터의 일부 패턴을 학습한 다음 회귀, 분류, 클러스터, 예측 등의 기능을 수행할 수 있습니다.

인공 신경망은 연산 노드의 모음으로 볼 수 있다. 데이터는 이러한 노드를 통해 신경망의 입력 계층으로 들어간 다음, 데이터에 대한 결론이나 결과가 나타날 때까지 신경망의 은층을 거칩니다. 이 과정은 중지되지 않습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 데이터명언) 신경 네트워크의 결과는 예상 결과와 비교되고, 신경 네트워크의 결과와 정확한 결과의 차이는 신경 네트워크 노드의 활성화 임계값을 수정하는 데 사용됩니다. 이 과정이 반복됨에 따라 신경망의 출력은 예상 결과에 무한히 근접할 것이다.

둘째, 훈련 과정

신경망 시스템을 구축하기 전에 먼저 훈련 과정과 네트워크 출력이 어떻게 생성되는지 이해해야 한다. 그러나, 우리는 이 방정식들을 너무 깊이 이해하고 싶지 않다. 아래에 간단히 소개해 드리겠습니다.

네트워크의 입력 노드는 입력 데이터를 나타내는 숫자 배열 (텐서 다차원 배열이라고도 함) 을 수신합니다. 예를 들어 이미지의 각 픽셀을 스칼라로 표시한 다음 해당 픽셀을 노드로 전달할 수 있습니다. 입력 데이터에 신경망의 매개변수를 곱합니다. 입력 데이터의 확대 또는 축소는 데이터의 중요성에 따라 달라집니다. 즉, 이 픽셀에 따라 전체 입력 데이터에 대한 신경 네트워크의 결론에는 영향을 주지 않습니다.

처음에는 이러한 매개 변수가 무작위였습니다. 즉, 신경망은 설립 초기에는 데이터 구조를 이해하지 못했습니다. 각 노드의 활성화 함수는 각 입력 노드의 출력을 결정합니다. 따라서 각 노드의 활성화 여부는 입력 데이터 및 매개변수 결과가 활성 임계값을 초과하는지 여부에 따라 충분한 자극 강도를 수신할지 여부에 따라 달라집니다.

밀집 또는 완전 연결 레이어에서는 각 노드의 출력 값이 후속 레이어의 노드로 전달되고, 모든 숨겨진 레이어를 통과한 후 출력 레이어, 즉 입력 결과가 생성되는 위치에 도달합니다. 출력층에서는 신경망이 얻은 최종 결론을 예상 결론과 비교한다. 예를 들어, 그림의 이 픽셀들은 고양이나 개를 나타낼까? (알버트 아인슈타인, Northern Exposure (미국 TV 드라마), 출력명언) ) 을 참조하십시오. 신경망 추측의 결과와 정확한 결과의 계산 오차는 모두 테스트 세트로 가져오는데, 신경망은 이러한 계산 오차를 이용하여 매개변수를 지속적으로 업데이트함으로써 그림에 있는 다른 픽셀의 중요성을 변화시킨다. 전체 프로세스의 목적은 출력과 예상 결과 사이의 오류를 줄이고 이미지가 개인지 여부를 정확하게 표시하는 것입니다.

심화 학습은 복잡한 과정이다. 행렬 대수, 도수, 확률 및 밀집된 하드웨어 사용과 관련된 많은 행렬 계수를 수정해야 하기 때문에 이러한 복잡성을 완전히 이해할 필요는 없습니다.

하지만 신경망의 기능을 이해하는 데 도움이 되는 몇 가지 기본적인 매개변수도 알아야 합니다. 여기에는 활성화 함수, 최적화 알고리즘 및 목표 함수 (손실, 비용 또는 오류 함수라고도 함) 가 포함됩니다.

활성화 기능은 신호가 연결 노드로 전송되어야 하는지 여부와 전송 정도를 결정합니다. 사다리꼴 함수는 가장 일반적으로 사용되는 활성화 함수입니다. 입력이 임계값보다 작으면 0 이고, 입력이 임계값보다 크면 1 입니다. 노드는 사다리꼴 활성화 기능을 통해 연결 노드에 0 또는 1 을 보냅니다. 최적화 알고리즘은 신경망이 어떻게 학습하는지, 그리고 오류를 테스트한 후 가중치를 더 정확하게 조정하는 방법을 결정합니다. 가장 일반적인 최적화 알고리즘은 임의 그라데이션 하강 방법입니다. 마지막으로 비용 함수를 사용하여 오류를 측정하고 주어진 교육 샘플에서 얻은 결과와 예상 결과를 비교하여 신경 네트워크의 구현 효과를 평가하는 경우가 많습니다.

Keras, Deeplearning4j 와 같은 오픈 소스 프레임워크는 신경망을 쉽게 만들 수 있습니다. 신경망 구조를 만들 때, 데이터 유형을 알려진 해결 된 문제에 일치시키고 실제 필요에 따라 기존 구조를 수정하는 방법을 고려해야합니다.

셋째, 신경망의 유형과 응용

신경망은 이미 수십 년 동안 이해되고 적용되었지만, 최근의 일부 기술 동향은 심도 있는 신경망을 더욱 효율적으로 만들었다.

GPU 는 행렬 연산을 더 빠르게 만듭니다. 분산 컴퓨팅 구조는 컴퓨팅 능력을 크게 향상시킵니다. 여러 수퍼 매개변수의 조합도 반복 속도를 높입니다. 이 모든 것이 훈련 속도를 크게 높이고 적절한 구조를 빠르게 찾을 수 있게 한다.

더 큰 데이터 세트가 생성됨에 따라 ImageNet 과 같은 대규모 고품질 레이블 데이터 세트가 등장했습니다. 기계 학습 알고리즘 훈련에 대한 데이터가 많을수록 정확도가 높아진다.

마지막으로, 우리의 이해력과 신경망 알고리즘이 지속적으로 향상됨에 따라, 신경 네트워크의 정확도는 음성 인식, 기계 번역, 일부 기계 인식 및 일부 객체 지향 작업에서 지속적으로 기록을 새로 고칩니다.

신경망 아키텍처는 매우 크지만 사용되는 주요 신경망 유형은 다음과 같습니다.

3. 1 피드 포워드 신경망

피드 포워드 신경 네트워크는 입력 레이어, 출력 레이어 및 하나 이상의 암시적 레이어로 구성됩니다. 피드 포워드 신경망은 범용 모델을 만드는 데 사용할 수 있는 좋은 범용 근사기입니다.

이 유형의 신경망은 분류 및 회귀에 사용할 수 있습니다. 예를 들어 현재 공급 네트워크가 분류에 사용되는 경우 출력 레이어의 뉴런 수는 범주 수와 같습니다. 개념적으로, 활성화된 출력 뉴런은 신경망 예측의 범주를 결정한다. 더 정확히 말하자면, 각 출력 뉴런은 분류와 일치하는 기록의 확률 수를 반환하며, 확률이 가장 높은 분류가 모델의 출력 분류로 선택됩니다.

피드 포워드 신경망의 장점은 사용하기 쉽고, 다른 유형의 신경망보다 간단하며, 많은 응용 사례가 있다는 것이다.

3.2 컨볼 루션 신경망

컨볼 루션 신경망과 피드 포워드 신경망은 매우 유사하며, 적어도 데이터 전송 방식에서는 그렇습니다. 그들의 구조는 대략 시각 피질을 모방한다. 컨볼 루션 신경망은 많은 필터를 통과합니다. 이러한 필터는 주로 이미지 하위 세트, 블록 및 블록의 피쳐 인식에 중점을 둡니다. 각 필터는 시각적 데이터의 다양한 패턴을 찾습니다. 예를 들어, 일부는 수평선을 찾고, 일부는 대각선을 찾고, 일부는 수직선을 찾을 수 있습니다. 이러한 선은 피쳐로 간주됩니다. 필터가 이미지를 통과하면 다양한 선이 이미지에 나타나는 위치를 찾는 기능이 구성됩니다. 고양이, 747, 과즙 짜는기구 등 이미지의 다른 대상. 서로 다른 이미지 특징을 갖게 되며, 이러한 이미지 특징을 통해 이미지를 분류할 수 있습니다. 컨볼 루션 신경망은 이미지 인식과 음성 인식에 매우 효과적입니다.

컨볼 루션 신경망과 피드 포워드 신경망의 이미지 인식에서의 유사점과 차이점 비교. 두 네트워크 유형 모두 이미지 인식을 수행할 수 있지만 방법은 다릅니다. 컨볼 루션 신경망은 이미지의 겹치는 부분을 인식한 다음 다른 부분의 특징을 인식하는 법을 배워 훈련한다. 피드 포워드 신경망은 전체 사진에서 훈련됩니다. 피드 포워드 신경망은 항상 그림의 특정 부분이나 방향에서 훈련을 하기 때문에 그림의 특징이 다른 곳에 나타날 때 인식되지 않는다. 컨볼 루션 신경망은 이것을 잘 피할 수 있습니다.

컨볼 루션 신경망은 주로 이미지, 비디오, 음성, 사운드 인식 및 무인 작업에 사용됩니다. 이 기사에서는 주로 재귀 신경망을 다루지만 컨볼 루션 신경망은 이미지 인식에서도 매우 효과적이므로 이해할 필요가 있습니다.

3.3 재귀 신경망

피드 포워드 신경망과 달리 재귀 신경망 숨겨진 계층의 노드에는 메모리 저장 기능이 있으며 입력 데이터가 변경되면 메모리 내용이 계속 업데이트됩니다. 재귀 신경망의 결론은 현재 입력과 이전에 저장된 데이터를 기반으로 합니다. 재귀 신경망은 이 메모리 저장 상태를 최대한 활용하여 시계열과 같은 시퀀스 데이터를 처리할 수 있습니다.

재귀 신경망은 필기 인식, 음성 인식, 로그 분석, 사기 탐지 및 네트워크 보안에 자주 사용됩니다.

재귀 신경망은 네트워크 로그와 서버 활동, 하드웨어 또는 의료 기기의 센서 데이터, 금융 거래 및 전화 기록과 같은 데이터를 처리하는 시간 차원 데이터 세트를 처리하는 가장 좋은 방법입니다. 여러 단계의 데이터에 대한 의존성과 종속성을 추적하려면 현재 및 이전 데이터 상태를 알아야 합니다. 피드 포워드 신경망을 통해 이벤트를 얻고 시간이 지남에 따라 다른 이벤트로 이동할 수도 있지만, 이는 이벤트에 대한 의존도를 제한하므로 이 방법은 매우 유연하지 않습니다.

시간 차원에서 장기적인 의존성을 가진 데이터를 추적하는 더 좋은 방법은 중요한 이벤트를 메모리에 저장하여 최근 발생한 이벤트를 이해하고 분류하는 것입니다. 재귀 신경망의 가장 좋은 점은 그 함축된 층이' 기억' 을 가지고 있어 시간 관련 특성의 중요성을 배울 수 있다는 것이다.

다음으로 문자 생성기 및 네트워크 이상 탐지에서 재귀 신경 네트워크의 적용에 대해 살펴보겠습니다. 재귀 신경망이 서로 다른 시간대와 관련된 특징을 감지할 수 있는 능력은 시계열 데이터의 이상을 감지할 수 있게 한다.

재귀 신경망의 응용

인터넷에는 RNNs 를 사용하여 텍스트를 생성하는 예가 많이 있습니다. 코퍼스에서 훈련한 후 재귀 신경망은 한 문자만 입력하면 다음 문자를 예측할 수 있다. 몇 가지 실제 예를 통해 RNNs 의 더 많은 기능을 찾아봅시다.

적용 1: RNNs 는 문자 생성에 사용됩니다.

훈련을 받은 후 재귀 신경망은 영어 문자를 일련의 시간 관련 이벤트로 간주할 수 있다. 훈련을 받은 후 한 문자가 항상 다른 문자를 따르는 것을 배웁니다 ("E" 는 종종 "H" 를 따릅니다 (예: "the, he, she"). 다음 문자가 무엇인지 예측할 수 있기 때문에 텍스트 입력 오류를 효과적으로 줄일 수 있습니다.

Java 는 구조에 많은 중첩 구조가 포함되어 있기 때문에 매우 흥미로운 예입니다. 왼쪽 괄호 뒤에는 반드시 오른쪽 괄호가 뒤따를 것이고, 중괄호도 마찬가지이다. 여러 이벤트 간의 관계는 위치의 원근에 의해 결정되지 않기 때문에 위치 간에 의존성이 뚜렷하지 않습니다. 그러나 재귀 신경망 Java 에서 사건의 의존성을 명확하게 알려주지 않아도 스스로 배울 수 있다.

이상 탐지에서, 우리는 데이터에서 유사하고 숨겨진 패턴을 감지하기 위해 신경망이 필요하다. 문자 생성기가 데이터 구조를 완전히 이해한 후 데이터의 시뮬레이션을 생성하는 것처럼, 재귀 신경망의 이상 탐지는 데이터 구조를 완전히 이해한 후 입력 데이터가 정상인지 여부를 판단하는 것입니다.

문자 생성의 예는 재귀 신경망이 서로 다른 시간 범위 동안 시간 의존성을 학습할 수 있는 능력을 가지고 있으며 네트워크 활동 로그에서 예외를 감지하는 데도 사용할 수 있음을 보여 줍니다.

이상 탐지는 텍스트 표면에 문법 오류가 발생할 수 있습니다. 왜냐하면 우리가 쓴 것은 문법 구조에 의해 결정되기 때문입니다. 마찬가지로, 네트워크 동작은 구조화되어 있으며 배울 수 있는 예측 가능한 패턴도 있습니다. 정상적인 네트워크 활동에서 훈련된 재귀 신경망은 문장 부호가 없는 문장처럼 비정상적이기 때문에 침입을 감지할 수 있습니다.

응용 프로그램 2. 네트워크 예외 감지 프로젝트 예

우리가 알고 싶은 네트워크 이상 탐지는 하드웨어 장애, 어플리케이션 장애, 침입에 대한 정보를 얻는 것입니다.

모델은 우리에게 무엇을 보여줄 것인가?

대량의 네트워크 활동 로그가 재귀 신경 네트워크에 입력됨에 따라 신경망은 정상적인 네트워크 활동이 어떤 모습인지 배울 수 있다. 훈련된 네트워크가 새로운 데이터에 입력될 때, 어떤 활동이 정상인지, 어떤 활동이 예상되는지, 어떤 것이 이상한지 판단할 수 있다.

신경 네트워크를 훈련시켜 예상되는 행동을 식별하는 것이 좋다. 비정상적인 데이터가 많지 않거나 비정상적인 행동을 정확하게 분류할 수 없기 때문이다. 만약 우리가 정상적인 데이터에서 훈련한다면, 그것은 우리에게 미래의 어느 시점에서 비정상적인 활동을 일깨워 줄 수 있다.

여담의 경우, 훈련된 신경망이 특정 사건이 발생한 특정 시점을 반드시 식별할 필요는 없지만 (예를 들어, 그 특정 날이 일요일이라는 것을 모르는 경우), 좀 더 뚜렷한 시간 패턴과 분명하지 않을 수 있는 사건들 사이의 관계를 발견할 수 있을 것이다.

JVM 에서 널리 사용되는 심화 학습 오픈 소스 데이터베이스인 Deep Learning 4J 를 사용하여 이 문제를 해결하는 방법에 대해 간략하게 설명합니다. Deeplearning4j 는 모델 개발 과정에서 유용한 도구를 많이 제공합니다. DataVec 는 ETL (추출-변환-로드) 작업을 위한 모델 교육 데이터를 준비하는 통합 도구입니다. Sqoop 가 Hadoop 에 대한 데이터를 로드하는 것처럼 DataVec 는 데이터를 청소, 사전 처리, 정규화 및 표준화하여 신경 네트워크로 로드합니다. 이것은 Trifacta 의 목마인과 비슷하지만 이진 데이터에 더 많은 관심을 기울이고 있습니다.

초기 단계

첫 번째 단계에는 일반적인 대용량 데이터 작업과 ETL 이 포함됩니다. 로그를 수집, 이동, 저장, 준비, 표준화 및 안내해야 합니다. 시간 범위의 길이를 지정해야 합니다. JSON 로그, 텍스트 로그 및 일부 불연속적인 주석 패턴을 인식하고 디지털 배열로 변환해야 하기 때문에 데이터를 변환하는 데 약간의 노력이 필요합니다. DataVec 는 데이터 변환 및 표준화를 지원합니다. 기계 학습을 위한 교육 모델을 개발할 때 데이터를 교육 세트와 테스트 세트로 나누어야 합니다.

신경망을 훈련시키다

신경 네트워크의 초기 훈련은 훈련 데이터 세트에서 진행해야 한다.

첫 번째 훈련에서는 모델이 데이터에서 학습되도록 몇 가지 수퍼 매개변수를 조정해야 합니다. 이 과정은 합리적인 시간 내에 통제해야 한다. 우리는 나중에 하이퍼인수에 대해 토론할 것이다. 모형 훈련 과정에서 너는 실수를 줄이는 것을 목표로 해야 한다.

그러나 이로 인해 신경망 모델이 과도하게 맞을 위험이 있습니다. 오버피팅 모델은 트레이닝 세트에서 높은 점수를 받는 경우가 많지만 새로운 데이터를 만나면 잘못된 결론을 내리게 됩니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 스포츠명언) 기계로 배우는 언어로는 통용되지 않는다. Deeplearning4J 는 정규화 도구와 "조기 중지" 를 제공하여 교육 중 과잉 맞춤을 방지합니다.

신경 네트워크의 훈련은 가장 시간이 많이 걸리고 하드웨어 집약적인 단계이다. GPU 에서의 훈련은 특히 이미지 인식을 할 때 훈련 시간을 효과적으로 줄일 수 있다. 그러나 추가 하드웨어 시설은 불필요한 오버헤드를 초래하므로 심도 있는 학습 프레임워크는 하드웨어 시설을 효율적으로 활용할 수 있어야 합니다. Azure, Amazon 과 같은 클라우드 서비스는 GPU 기반 사례를 제공하며, 신경망은 이기종 클러스터에서도 훈련할 수 있습니다.

모형을 작성합니다

Deeplearning4J 는 교육 모델을 저장할 수 있는 ModelSerializer 를 제공합니다. 교육 모델은 저장하거나 향후 교육에서 사용하거나 업데이트할 수 있습니다.

예외 감지 중 로그 파일의 형식은 교육 모델과 일치해야 합니다. 신경망 기반 출력 결과는 현재 활동이 정상적인 네트워크 행동 기대에 부합하는지 여부에 대한 결론을 얻을 수 있습니다.

코드 예

재귀 신경망의 구조는 다음과 같아야합니다.

MultiLayerConfiguration conf = 새로운 NeuralNetConfiguration. 건설자 (

。 시드 (123)

。 Optimization go (optimization algorithm). 임의 그라데이션 감소). 반복 횟수 (1)

。 루시디니트 (루시디니트). 제빌)

。 업데이트자 (updater). 네스트로프스). 운동량 (0.9)

。 학습률 (0.005)

。 Gradient normalization (gradient normalization). ClipElementWiseAbsoluteValue)

。 그라데이션 정규화 임계값 (0.5)

。 목록 ()

。 레이어 (0, new GravesLSTM. 생성자 (). (tanh) 를 활성화합니다. NIn( 1) 입니다. NOut( 10). 빌드 ())

。 레이어 (1, 새 RnnOutputLayer. 빌더 (LossFunctions). LossFunction.MCXENT)

。 (softmax) 를 활성화합니다. NIn( 10). NOut(numLabelClasses). 빌드 ())

。 사전 훈련 (거짓). Backprop(true). 빌드 ();

다중 계층 네트워크 net = 새로운 다중 계층 네트워크 (conf);

Net.init ();

다음은 몇 줄의 중요한 코드입니다.

。 시드 (123)

임의로 시드 값을 설정하여 신경망의 가중치를 초기화하여 반복 가능한 결과를 얻습니다. 계수는 일반적으로 무작위로 초기화되므로 다른 하이퍼매개변수를 조정할 때 일관된 결과를 얻을 수 있습니다. 조정 및 테스트 시 이 임의 가중치를 사용할 수 있도록 시드 값을 설정해야 합니다.

。 Optimization go (optimization algorithm). 임의 그라데이션 감소). 반복 횟수 (1)

가중치를 조정하여 오류 점수를 개선하는 데 사용할 최적 알고리즘 (이 경우 임의 그라데이션 하강 방법) 을 결정합니다. 이를 수정할 필요가 없을 수도 있습니다.

。 학습률 (0.005)

무작위 그라데이션 하강 방법을 사용할 때 오차 그라데이션을 계산합니다. 오차 값을 최소화하려는 과정에서 가중치 값도 변경됩니다. SGD 는 우리에게 오차를 줄일 수 있는 방향을 주었는데, 이 학습 효율성은 우리가 이 방향으로 얼마나 가야 하는지를 결정한다. 학습 효율이 너무 높으면, 너는 이미 최소 오차를 초과했을 것이다. 너무 낮 으면 훈련이 계속 될 수 있습니다. 이것은 당신이 조정해야 할 하이퍼매개변수입니다.