에어컨, 공기청정기, 정수기 다 인공지능. 자동화된 상황대응을 할 수 있는 시스템은 포괄적으로 인공지능이라고 함
그 중에서 머신러닝은 스스로 학습하는 패턴을 가지고 있는 자동화 시스템이다.
딥러닝은 그 중에서도 신경망을 기반으로 알고리즘을 형성하는 머신러닝이다.
신경망이라는 알고리즘을 써서 만듦 = 딥러닝. 지금 각광을 받고 있고 기존에 있던 알고리즘을 압도하고 있는 상황
큰 카테고리의 범주의 차이이다. 특히 머신러닝과 딥러닝은 같은 목적을 가지고 있음. 그런데 딥러닝이 알고리즘 강력하니까 하나의 분류가 됨.
신경망
인간의 뇌의 동작구조를 모티브로해서 만들어진 것.
인간의 뇌가 어떻게 정보가 만들어지고 .. 전달이 되고 .. 추상돌기 .. 신경세포의 뇌 줄기가 동작원리인 것 처럼
노드들을 기반으롤 의사결정을 할 수 있게 만들면 되지 않을까.
복잡한 대규모 알고리즘을 다루는데 적합한 알고리즘이 되었음. = 딥러닝
네트워크가 패턴을 학습하도록 익히도록 만드는알고리즘
데이터로부터 표현을 학습하는 새로운 방식
원본데이터가 구성되어 있는데 다른 방식의 관점으로 표현을 바꾸어주면 해석하는데 더 좋은 가능성이 있을 것이다.
= > 딥러닝
연속된 층으로 여러개를 만들어서 결합해서 표현을 학습하는 방법이다.
층을 많게 할 수록 풍부한 표현을 학습할 수 있다.
여러 층 네트워크로 나누어서 학습 수십 수억개의 네트워크를 이루고 그 각각이 자기만의 역할을 수행하면 그 성능은 대단히 높다. 그 하나 하나가 학습하는 표현은 별 것이 아니지만 네트워크를 이루어서 총량은 큰 성과 이 층을 늘리는 것이 어려운 작업 중에 하나였다. 신경망이 발달하는 과정에서 어려운 과제였는데 2, 3개까지 늘리는 것은 가능했는데 늘려도 효과가 안나고 의미 없느 층이 되고 그 문제를 해결하는 작업이 알고리즘 상에서 문제였으나 지금은 해결이 된 상황, 수십개, 수백 개의 층을 만들어서 학습을 할 수 있도록 준비된 상황
층을 몇개를 만들고 각각 구성은 어떻게 네트워크는 어떤 방식으로 연결. 하나는 미미, 전체가 연결되면 매우 강력한 힘.
각각의 해석을 결합해서 또 다른 곳으로 넘기고 (지금까지 한 알고리즘 머신러닝은 하나의 매우 강력한 알고리즘 적용 모델은 단일 모델(앙상블제외) 였음.. 하나의 독립적인 논리를 사용하는 하나의 요소가 데이터가 들어오면 혼자서 해석하는 방식, 앙상블을 여러개의 모델을 결합해서 처리 하나가 만든 결합을 평균내는 방식일 뿐 협업하는 방식은 아님)
신경망은 그 자체로는 강력하지 않지만 그런 것들을 수만개 수십만 개를 모으면 매우 강력한 결과를 본다.
작동원리
입력 X -> 층(데이터 변환) SVC, logisticRegression Decision 객체라고 보면 예측과 타깃을 비교해서 손실함수 동일. 경사하강법에서 이야기하는 논리를 그대로 쓴다. 예측값과 실제 값 비교해서 손실을 비교 손실을 줄이는 방향 최적화 도구를 이용해서 손실을 줄이고 가중치를 주어서 변경을 주고 다시 데이터 변환 다시 손실 비교 옵티마이저가 다시 가중치 조정
경사하강법 논리 그대로 동작하게 되어있음.
다른 점은 네트워크를 거치면서 여러개의 층에서 예측값이 결정되어짐.
단일 노드가 아닌 여러 개의 층을 나눠서 만드는 것
딥러닝 성장 배경
2012년 이후 지금까지 엄청나게 발전하고 있는 상황. 성과도 내고 있고!
딥러닝을 발전하게 만드는 요인
첫 번째, 하드웨어의 성능이 굉장히 향상 되면서 기존에는 엄두가 안난 연산량을 계산
아직까지 컴퓨팅 기술로는 이 연산량을 감당할 수 없다. 알파고
그래픽 카드 개발 머신러닝 학습할 수 있도록 라이브러리 개발
딥러닝 개발 알고리즘이 게임 연산 그래픽 과 비슷
신경망은 CPU 보다 GPU에서 하는 것이 더 좋음
그래픽 카드에서 연산을 지원함으로서 엄청난 성장 계기
하드웨어의 발전이 신경망, 딥러닝을 발전시키는데 좋은 결과
두 번째, 데이터와도 연관
딥러닝은 데이터량이 많을 때 강점이 있음. 큰 효과를 보기 어려움. 특히 강점 데이터량이 많아져서 딥러닝 성장 계기
데이터 자체가 충분히 많지 않은 것은 문제
아이폰으로부터 스마트폰 성장, 휴대용 태블릿 PC, CCTV 등 디바이스 발전으로 데이터의 생산량이 급격하게 증가.
하드웨어도 데이터와 연관 데이터의 생산량이 급격하게 늘어남.
세 번째는 알고리즘 층을 늘려도 네트워크를 늘려도 효율을 못보는 문제들이 발생했는데 .. 네트워크 늘어나면 연산량이 늘어나는데 효과적이지 못했는데.. 활성화 함수에 대한 가중치 초기화. 층을 늘리면 기울기 소실, 폭증을 조절하는 방법
학습을 효과적으로 하는 가중치 업데이트
딥러닝이 모든 해결방법은 아님
데이터량이 작은 곳에서는 단점.
여전히 적정한 규모의 정형 데이터는 고전 알고리즘이 강세
주로 조건이 맞는 것이 비정형 데이터 데이터의 규모가 매우 큰 영역이라면 딥러닝이 효과적, 해결책을 만들어내고 있다.
자율 주행차가 돌아가려면 실시간으로 영상이 들어와야하고 실시간으로 영상을 해석해야 한다. 운전을 스스로 하려면 주변 상황에 대해 영상이 들어와서 실시간으로 해석 사람인지 .. 신호 보고 상황판단을 실시간으로 해야함. 학습을 통해서 연산한 작업 내용의 가중치값도 엄청나게 많은 양. 발생하는 상황이 엄청 많은데 학습을 통해야하니 요구되는 연산량이 상상을 초월함.
Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기 TensorFlow 설치 pip를 사용하여 TensorFlow 설치 목차 TensorFlow 2 패키지 사용 가능 이전 버전의 TensorFlow 시스템 요구사항 하드웨어 요구사항 1. 시스템에 Python 개발 환경 설치 TensorFlow 2 패키지 사용 가능 tensorflow - CPU와 GPU 지원 이 포함된 안정적인 최신 출시 (Ubuntu 및 Windows) tf-nightly - 미리보기 빌드 (불안정) . Ubuntu ...
www.tensorflow.org
Tensorflow 2
라이브러리가 있어서 함수와 클래스를 만들어서 택스트 수준이해만으로도 충분
TensorFlow도 동일함. 네트워크를 구성하려면 필요한 요소들을 직접 구현하지 않고 미리 다 만들어두어서 설계만 하면 되도록 몇개 만들지 어떻게 만들지, 구현을 한 라이브러리들이 여러 가지가 있음.
TensorFlow가 저수준 라이브러리로 많이 쓰임.
케라스가 하둡의 스파크 같은
저수준 작업으로 고수준 작업 가능
고수준 라이브러리를 써서 작업을 하는 것을 권장하고 그래서 충분
케라스를 중심으로 이루어진 교재 텐서플로어와 호환 가능.
파이토치
tensorflow keras pytorch
예전에는 tehnsorflow를 직접 썻지만 지금은 기반으로해서 keras를 인터페이스로 씀.
작업환경은 keras 기본적인 백엔드는 tensorflow 이다.
그래서 제일 먼저 설치하려는 것이 TensorFlow 이다.
엠비디아사에 라이브러리를 먼저 설치해야 GPU 드라이버가 있어야하고.. CUDA...
참고사항으로하고
지금은 CUDA 지원에 운영체제별로 제약이 있고 현재 시점에서는 GPU는 엠비디아이 그래픽 카드만 가능
완제품을 사는 것은 = keras -> 고수준의 쉽게 사용할 수 있는 것. 거의 모든 종류의 딥러닝 모델을 간편하게 훈련
누구나 다 사용해야하는 필수도구들이 됨.
반복적인 쓸데없고 복잡해서 keras가 필요, 잘 만들어짐.
---(쉬는 시간) ---
신경망
단층 퍼셉트론
신경망의 기원
유닛이 하나
층 하나가 어떻게 동작하는지에 관한 것.
들어오는 입력 전체에 대해서 다 데이터를 수용해야함.하나의 노드는입력되어지는 모든 데이터 요소를 받아야 함.
자기에게 부여된 가중치가 있음.
가중치로 데이터를 받음.
그것을 합함. 결국은 네트워크라는 것이 데이터가 들어오면 데이터를 어떤 형태로든가공을 해서 넘기는 것.
기존의 알고리즘은 입력도 결과도 과정도 혼자 다했는데 신경망은 네트워크를 통해 하겠다.
자기 가중치를 가지고 있고 데이터가 들어오면 가지고 있는 가중치를 결합해서 데이터를 합하고 그 결과를 반환하는데 데이터가 들어와서 연산을 하는데 특정한 방식으로 출력을 하는 작업을 수행 퍼셉트론이라고 하는 것은 하나의 노드가 어떻게 움직이는지 보여주려고 하는 것.
신경망에서는 그렇게 할 수는 없고 비선형 함수를 써서 출력값을 만드는 작업을 수행한다. 하나의 유닛은 데이터를 입력받아서 하나 하나의 유닛마다 가중치 세트가 있음 데이터 전체에 대해서 처리할 가중치 세트를 이용해서 데이터가 들어오면 처리하고 더하고 특정한 함수에 넣어서 출력값을 만드는 것이다.
다음으로 넘겨서 이 데이터를 또 다 받게 만드는 것.
일정한 조건에따라 함수에 적용하면 출력이 나오는 것.
이때 출력함수는 비선형 함수여야함. 선형함수로 구성되어있으면 층을 여러개로 두더라도 효과가 없어짐 이때 사용하는 함수들이 어떤 것이 있는지 정리하면