책 소개
≪인공지능 딥러닝 직접 코딩하기 with 라즈베리파이 피코≫ 책을 통해 복잡하고 어려운 수학을 몰라도 다음과 같은 지식을 습득할 수 있습니다.
첫째, 파이썬 언어를 공부하고 활용할 수 있습니다.
둘째, 인공지능의 딥러닝 알고리즘을 직접 구현해보고 활용할 수 있습니다.
셋째, 텐서플로우를 활용하여 인공지능 프로그램을 작성할 수 있습니다.
넷째, 라즈베리파이 피코를 이용하여 하드웨어를 직접 제어할 수 있습니다.
이 책을 통해서 해결할 수 있는 인공지능과 관련된 2가지 오해
- Q1 인공지능은 반드시 고사양의 컴퓨터 환경이 필요할까요?
A 아닙니다. 이 책에서 아두이노와 같은 저사양 컴퓨터인 라즈베리파이 피코 상에서 인공지능을 학습하는 구체적인 방법을 자세히 설명하였습니다.
- Q2 인공지능은 복잡한 수학적 지식이 필요할까요?
A 아닙니다. 이 책에서는 중학교 수준의 수학으로 인공지능의 주요 알고리즘을 누구나 직접 구현할 수 있도록 아주 쉽게 설명하였습니다.
인공지능은 여러분이 생각하는 것보다 어렵지 않습니다. 그에 반해 인공지능의 힘은 알파고와 같이 지대합니다. 요술램프를 문지르는 정도로 쉽지만 ‘지니’와 같은 힘을 가진 인공지능을 공부하지 않는다면 그것은 독자 여러분의 큰 손해가 될 것입니다. 이 책을 통해 직접 구현하면서 이해하기 쉽게 공부합시다!
※ 이 책의 예제 소스파일 다운로드 방법은 7쪽을 참조하고, 책을 보면서 궁금한 사항의 질의응답 방법은 6쪽을 참조합니다.
※ 이 책의 실습 준비물은 5쪽 또는 61쪽을 참조합니다.
≪인공지능 딥러닝 직접 코딩하기 with 라즈베리파이 피코≫ 책을 통해서 다음과 같은 4가지 주요 기술을 습득하게 됩니다.
첫 번째, 파이썬 언어를 공부하고 활용할 수 있게 됩니다.
두 번째 인공지능의 딥러닝 알고리즘을 직접 구현해보고 활용할 수 있게 됩니다.
세 번째 텐서플로우를 활용하여 인공지능 프로그램을 작성할 줄 알게 됩니다.
네 번째 라즈베리파이 피코를 이용하여 하드웨어를 제어할 수 있게 됩니다.
라즈베리파이 피코 상에서 코딩과 제어 그리고 중학교 수준의 수학으로 인공지능 딥러닝 알고리즘을 쉽게 이해할 수 있도록 다음과 같이 구성하였습니다.
Chapter 01에서는 인공지능의 딥러닝을 이해해 봅니다.
첫 번째, 딥러닝의 핵심인 인공 신경망이 무엇인지 알아보고, 딥러닝에 대해 어떤 학습 방법이 있는지 살펴보고, 생물학적 신경과 비교해 보며 딥러닝의 인공 신경망을 이해해 봅니다. 두 번째 딥러닝에 대한 기본 예제를 구글의 코랩과 Keras 라이브러리를 이용해 수행해 보면서 딥러닝을 접해봅니다. 세 번째 중고등학교 때 배웠던 기본적인 함수를 딥러닝의 인공 신경망으로 구현해 보면서 딥러닝의 인공 신경망과 함수의 관계를 이해해 봅니다.
Chapter 02에서는 파이썬 인공지능(A.I.) 키트를 살펴보고, 파이썬 인공지능 개발 환경을 구성하고, 라즈베리파이 피코 용 파이썬이 제공하는 패키지를 이용하여 파이썬 인공지능(A.I.) 키트 상에 있는 LED, 버튼, 부저, 빛 센서, RGB 네오픽셀, RGB LCD 등의 하드웨어를 제어해 봅니다.
Chapter 03에서는 파이썬을 이용하여 기초적인 딥러닝 알고리즘을 살펴보고 구현해 봅니다.
첫 번째, DNN 라이브러리를 이용하여 2차 함수를 라즈베리파이 피코 상에서 근사해 봅니다. 두 번째, 딥러닝의 단일 인공 신경 알고리즘을 살펴보고 구현해 봅니다. 이 과정에서 순전파, 목표 값, 평균값 오차, 역전파 오차, 오차 역전파, 학습률, 경사 하강법, 인공 신경망 학습 등에 대한 용어를 정리하고 구현에 적용해 봅니다. 세 번째, 다양한 인공 신경망을 구현해 봅니다. 구체적으로 2입력 1출력 인공 신경, 2입력 2출력 인공 신경망, 3입력 3출력 인공 신경망, 2입력 2은닉 2출력 인공 신경망에 딥러닝 알고리즘을 적용해 봅니다. 네 번째, 딥러닝에서 주로 사용되는 활성화 함수인 sigmoid, tanh, ReLU, softmax를 살펴보고 적용해 봅니다. 또 softmax와 관련된 cross entropy 오차 함수에 대해서도 정리해 봅니다.
Chapter 04에서는 NumPy 라이브러리를 이용하여 행렬 기반으로 DNN 알고리즘을 구현하고 활용해 봅니다. 행렬을 이용하면 딥러닝 알고리즘을 일반화하여 자유자재로 인공 신경망을 확장할 수 있습니다. 첫 번째, NumPy를 이용하여 2입력 2출력 인공 신경망, 3입력 3출력 인공 신경망, 2입력 1출력 인공 신경, 1입력 1출력 인공 신경, 2입력 2은닉 2출력 인공 신경망을 구현해 봅니다. 이 과정에서 딥러닝 학습에 필요한 행렬 계산식을 유도하고 일반화합니다. 두 번째, 직접 구현한 NumPy DNN 라이브러리를 활용해 봅니다. 이 과정에서 7세그먼트 입력 2진수 출력 인공 신경망, 초음파 센서 자율주행 인공 신경망에 DNN 라이브러리를 적용해 봅니다.
부록에서는 편미분을 통한 역전파 수식 유도 과정을 자세히 소개합니다.
작가 소개
서민우
현) 코코랩스(http://www.kocolabs.co.kr/) 대표
MDS 아카데미 Cortex-M3/M4, 드론, 리눅스 교육
대한상공회의소 서울기술교육센터 출강
LG 전자 신입사원 C/C++ 교육
SK 하이닉스 RTOS 교육
삼성전자 리눅스 드라이버/RTOS 교육
Xilinx FPGA/HDL 교육
ETRI verilogHDL 교육
숭실대 아두이노 IoT 교육
국민대 Cortex-M3 교육
[저서]
한 권으로 끝내는 파이썬 아두이노 입문+실전(종합편) (2021. 9 앤써북)
아두이노로 코딩하며 배우는 딥러닝 (2021. 06 앤써북)
ESP32 아두이노 드론 만들고 직접 코딩으로 PID 제어하기 (2021. 02 앤써북)
아두이노 자율주행 RC카 만들고 직접 코딩하기(2020. 12 앤써북)
진짜 코딩하며 배우는 파이썬(2020. 07 앤써북)
아두이노 드론 만들고 날리고 직접 코딩하기(2020. 03 앤써북)
마이크로비트로 배우는 파이썬(2020. 02 앤써북)
아두이노 배우면서 사물 인터넷(IoT) 직접 코딩하기(2019. 07 앤써북)
한 권으로 끝내는 아두이노 입문 + 실전(종합편)(2019. 02 앤써북)
아두이노 사용자를 위한 라즈베리 파이 드론 만들고 직접 코딩하기 (2018. 07 앤써북)
아두이노 드론 만들고 코딩하고 날리기 입문(2017. 03 앤써북) 외 다수
목 차
CHAPTER 01 인공 지능 딥러닝의 이해
01 _ 인공 신경망의 이해
01-1 인공 신경망이란?
인공 신경망으로 할 수 있는 일들
인공 신경망의 구조
01-2 인공 신경망의 학습 방법
지도 학습
비지도 학습
강화 학습
01-3 인공 신경 살펴보기
인공 신경과 생물학적 신경
인공 신경 내부 살펴보기
인공 신경 함수 수식
02 _ 딥러닝 맛보기
02-1 Hello 딥러닝
02-2 머신 러닝은 무엇일까요
02-3 구글 코랩 개발 환경 구성하기
02-4 기존 방식의 함수 정의와 사용
함수 정의하고 사용해 보기
02-5 머신러닝 방식의 신경망 함수 생성과 사용
02-6 축하합니다!
03 _ 인공 신경망과 근사 함수
03-1 2차 함수 근사해 보기
2차 함수 그리기
실제 데이터 생성하기
훈련, 실험 데이터 분리하기
인공 신경망 구성하기
인공 신경망 학습시키기
03-2 5차 함수 근사해 보기
03-3 다양한 함수 근사해 보기
분수 함수 근사해 보기
sin 함수 근사해 보기
tanh 함수 근사해 보기
e 함수 근사해 보기
sigmoid 함수 근사해 보기
로그함수 근사해 보기
제곱근함수 근사해 보기
ReLU 함수 근사해 보기
leaky ReLU 함수 근사해 보기
blink 함수 근사해 보기
fading 함수 근사해 보기
CHAPTER 02 파이썬 인공지능(A.I.) 키트 시작하기
01 _ 인파이썬 인공지능(A.I.) 키트 살펴보기
01-1 라즈베리파이 피코 살펴보기
라즈베리파이 피코 사양 살펴보기
01-2 Reaspberry Pi Pico A.I. KIT 살펴보기
라즈베리파이 피코 장착
LCD 장착
01-3 Raspberry Pi Pico A.I. KIT 핀 살펴보기
02 _ 파이썬 인공지능 개발 환경 구성하기
02-1 마이크로 파이썬 이미지 설치하기
02-2 Thonny IDE 설치하기
02-3 파이썬 실습 환경 설정하기
마이크로 파이썬 쉘 실행하기
마이크로 파이썬 쉘에 명령 주기
파이썬 프로그램 작성하기
파이썬 프로그램 실행하기
파이썬 프로그램 종료하기
03 _ print 함수
03-1 print
03-2 while
03-3 time.sleep
03-4 문자열, 숫자 출력하기
03-5 형식 문자열 사용하기
03-6 정수, 실수 출력하기
03-7 str.format 함수 사용해 보기
04 _ LED켜고 끄기 : Pin.value 함수
04-1 LED 켜고 끄기
LED 켜기
LED 끄기
04-2 LED 점멸 반복해보기
04-3 LED 점멸 간격 줄여보기
04-4 LED를 밝기로 느껴보기
04-5 LED 밝기 변경해보기
LED 어둡게 해 보기
LED 밝게 해 보기
04-6 LED 밝기 조절해보기
04-7 A.I. 키트 LED 켜보기
05 _ machine.PWM 모듈
05-1 LED 점멸 반복해보기
05-2 LED 점멸을 밝기로 느껴보기
05-3 LED 밝기 변경해보기
주파수 늘리기
LED 어둡게 해 보기
LED 밝게 해 보기
05-4 LED 밝기 조절해보기
05-5 부저와 소리 이해하기
부저 살펴보기
소리와 주파수 이해하기
05-6 부저 소리내보기
도 소리 내보기
도레 소리 내보기
부저 멜로디 연주하기
06 _ input 함수
07 _ 버튼 상태 읽기 : Pin.value 함수
07-1 푸시 버튼 살펴보기
풀다운 저항 회로
풀업 저항 회로
버튼 회로도 살펴보기
07-2 0, 1 읽어보기
07-3 버튼 값에 따라 LED 켜기
07-4 버튼 토글하기
08 _ Pin.irq 함수
08-1 외부 인터럽트 살펴보기
외부 인터럽트 처리하기
08-2 버튼 인터럽트로 LED 켜기
09 _ machinem.Timer 클래스
10 _ thread.start_new_thread
10-1 쓰레드 생성하기
10-2 쓰레드 이중 작업하기
10-3 쓰레드 LED 점멸 반복해보기
10-4 쓰레드로 LED 밝기 조절해보기
11 _ ADC 클래스
11-1 빛 센서 값 측정해 보기
11-2 온도 센서 측정해 보기
12 _ RGB 네오픽셀 LED 켜고 끄기
12-1 WS2812 LED 라이브러리 설치하기
파일 복사 방법 2
12-2 RGB 네오픽셀 LED 제어해 보기
LED 한 개 켜고 꺼 보기
전체 LED 켜고 꺼 보기
전체 LED 여러 색깔 켜고 꺼 보기
무지개 색깔 내보기
13 _ RGB LCD 제어하기
RGB LED 핀 설명
13-1 ST7735 라이브러리 설치하기
13-2 RGB LCD 제어해 보기
문자열 표시해보기
그림 그려보기
픽셀 찍어보기
LCD 귀퉁이 점찍어보기
기타 함수 사용해 보기
CHAPTER 03 인공 지능의 딥러닝 알고리즘 동작 원리 이해와 구현
01 _ DNN 라이브러리 사용해 보기
01-1 ulab 마이크로 파이썬 이미지 설치하기
01-2 DNN 인공 신경망 라이브러리 설치하기
01-3 2차 함수 근사해 보기
2차 함수 그리기
실제 데이터 생성하기
훈련, 실험 데이터 분리하기
인공 신경망 구성하고 학습시키기
02 _ 딥러닝 동작 원리 이해하기
02-1 기본 인공 신경 동작 살펴보기
순전파
목표 값과 역전파 오차
오차 역전파
순전파 정리하기
역전파 정리하기
최적화 하기
학습률
경사 하강법과 인공 신경망 학습
02-2 기본 인공 신경 동작 구현해 보기
반복 학습 2회 수행하기
반복 학습 20회 수행하기
반복 학습 200회 수행하기
오차 값 계산하기
학습률 변경하기
02-3 y=3*x+1 학습시켜 보기
전체 입력 데이터 학습 수행하기
가중치, 편향 학습과정 살펴보기
반복 학습 2회 수행하기
반복 학습 20회 수행하기
반복 학습 200회 수행하기
반복 학습 2000회 수행하기
가중치, 편향 바꿔보기 1
가중치, 편향 바꿔보기 2
03 _ 다양한 인공 신경망 구현해 보기
03-1 2입력 1출력 인공 신경 구현하기
03-2 2입력 2출력 인공 신경망 구현하기
03-3 3입력 3출력 인공 신경망 구현하기
03-4 2입력 2은닉 2출력 인공 신경망 구현하기
04 _ 활성화 함수 추가하기
04-1 활성화 함수 살펴보기
sigmoid 함수
tanh 함수
ReLU 함수
04-2 활성화 함수의 필요성
활성화 함수는 무엇인가요?
활성화 함수는 왜 필요한가요?
어떤 활성화 함수가 있나요?
04-3 활성화 함수의 순전파와 역전파
tanh 함수 적용해 보기
ReLU 함수 적용해 보기
04-4 출력 층에 softmax 함수 적용해 보기
softmax와 cross entropy
출력 층에 softmax 함수 적용해 보기
tanh와 softmax
ReLU와 softmax
CHAPTER 04 NumPy DNN 구현과 활용
01 _ NumPy DNN 구현하기
01-1 2입력 2출력 인공 신경망 구현하기
행렬 계산식 유도하기
순전파
입력 역전파
가중치 역전파
인공 신경망 행렬 계산식 정리하기
NumPy로 인공 신경망 구현하기
01-2 3입력 3출력 인공 신경망 구현하기
행렬 계산식 유도하기
인공 신경망 행렬 계산식 정리하기
NumPy로 인공 신경망 구현하기
01-3 2입력 1출력 인공 신경 구현하기
행렬 계산식 유도하기
인공 신경망 행렬 계산식 정리하기
NumPy로 인공 신경망 구현하기
01-4 1입력 1출력 인공 신경 구현하기
행렬 계산식 유도하기
인공 신경망 행렬 계산식 정리하기
NumPy로 인공 신경망 구현하기
01-5 행렬 계산식과 1입력 1출력 수식 비교하기
01-6 2입력 2은닉 2출력 인공 신경망 구현하기
행렬 계산식 유도하기
인공 신경망 행렬 계산식 정리하기
NumPy로 인공 신경망 구현하기
01-7 활성화 함수 적용하기
sigmoid 함수 적용해 보기
tanh 함수 적용해 보기
ReLU 함수 적용해 보기
01-8 출력 층에 softmax 함수 적용해 보기
sigmoid 함수 적용해 보기
tanh와 softmax
ReLU와 softmax
01-9 인공 신경망 행렬 계산식
01-10 가중치 초기화하기
ReLU-sigmoid-mse 신경망
ReLU-softmax-cee 신경망
ReLU와 He 초기화
sigmoid, softmax와 Lecun 초기화
He와 Lecun 가중치 초기화하기
02 _ NumPy DNN 활용하기
02-1 세그먼트 입력 2 진수 출력 인공 신경망
02-2 7 세그먼트 입력 2 진수 출력 인공 신경망 2
02-3 입력 데이터 임의로 섞기
02-4 은닉층 추가하기
02-5 입력층과 목표층 바꿔보기
02-6 7 세그먼트 비트열로 매카넘 바퀴 제어하기
02-7 7 초음파 센서 자율주행 인공 신경망
APPENDIX 편미분과 연쇄법칙을 통한 역전파 수식 유도
01 _ 기본 인공 신경
02 _ 편미분 정리하기
03 _2입력 1출력 인공 신경
04 _ 2입력 2출력 인공 신경망
05 _2입력 2은닉 2출력 인공 신경망
- 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
- 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
반품사유 | 반품 배송비 부담자 |
---|---|
단순변심 | 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다. |
고객 부담이 아닙니다. |
진행 상태 | 결제완료 | 상품준비중 | 배송지시/배송중/배송완료 |
---|---|---|---|
어떤 상태 | 주문 내역 확인 전 | 상품 발송 준비 중 | 상품이 택배사로 이미 발송 됨 |
환불 | 즉시환불 | 구매취소 의사전달 → 발송중지 → 환불 | 반품회수 → 반품상품 확인 → 환불 |
- 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
- 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
결제수단 | 환불시점 | 환불방법 |
---|---|---|
신용카드 | 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) | 신용카드 승인취소 |
계좌이체 |
실시간 계좌이체 또는 무통장입금 취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준) |
계좌입금 |
휴대폰 결제 |
당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소 전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준) |
당일취소 : 휴대폰 결제 승인취소 익월취소 : 계좌입금 |
포인트 | 취소 완료 후, 당일 포인트 적립 | 환불 포인트 적립 |
- 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
- 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
- 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
- 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
- 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
- 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.
상품군 | 취소/반품 불가사유 |
---|---|
의류/잡화/수입명품 | 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우 |
계절상품/식품/화장품 | 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 |
가전/설치상품 | 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.) |
자동차용품 | 상품을 개봉하여 장착한 이후 단순변심의 경우 |
CD/DVD/GAME/BOOK등 | 복제가 가능한 상품의 포장 등을 훼손한 경우 |
상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우 | |
노트북, 테스크탑 PC 등 | 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우 |