여러 샘플들을 참고하다 보니, tensorflow를 사용하지 않는 경우에는 직접 gradient를 계산하여 back propagation을 하도록 구현한 코드가 많다. 내가 직접 구현할 필요는 없더라도, 좀 더 명확하게 이해할 필요는 있을 것 같아서 cn231n note에서 제공하는 코드와 설명을 정리.
http://blog.naver.com/freepsw/220928184473
http://cs231n.github.io/neural-networks-case-study/ 참고
데이터를 작게 생성하여, 직접 코드와 생성된 데이터를 확인하면서 좀 더 직관적으로 이해하는 과정으로 정리하다보니, 코드보다 설명이 더 많다... 아직도 명확하지는 않지만 나름대로 정리는 되었다.
※다운로드하시면 더 선명한 자료를 보실 수 있습니다.
단순하고 반복적인 파라미터 튜닝 작업을 자동화할 방법을 설명합니다.
딥러닝에 대한 깊은 지식이 없어도 모델 성능을 개선할 수 있습니다.
목차
1. 하이퍼파라미터 튜닝이란
2. 베이지안 최적화(Bayesian Optimization)
3. 최적화 시스템 구조
대상
머신러닝/딥러닝에 관심 있는 분 누구나
■관련 동영상: https://youtu.be/PTxqPfG_lXY
데이터를 둘러싼 정책과, 기업과 기술의 진화는 빠르게 변화하고 있으며, 모든 지향점은 기업들이 다양한 데이터를 활용하여 경쟁력을 확보하고 이를 통해 AI기반의 혁신을 하고자 하는데 있다.
이 과정에서 수 많은 기업의 업무 전무가, 데이터 사이언티스트 등이 다양한 기업의 혁신을 지원할 수 있는 AI 모델을 검증하는 과정을 거치게 됩니다.
하지만, 이렇게 수 많은 AI 모델이 실제 비즈니스에 적용되기 위해서는 인프라, 및 서비스 관점의 기술이 반드시 필요하게 됩니다.
MLOps는 기업에 필요한 혁신적인 아이디어(AI Model)을 적시에 비즈니스 환경에 적용할 수 있도록 지원하는 기술 및 트렌드 입니다.
주요 내용은
- 데이터를 둘러싼 환경의 변화
- 기업의 AI Model 적용시 마주하는 현실
- MLOps가 해결 가능한 문제들
- MLOps의 영역별 주요 기술들
- MLOps 도입 시 기업의 AI 환경은 어떻게 변할까?
- AI 모델을 비즈니스 환경에 적용(배포)한다는 것은?
2021년 12월 코리아 데이터 비즈니스 트렌드(데이터산업진흥원 주최)에서 발표한 내용을 공유 가능한 부분만 정리함.
발표 영상 참고 : https://www.youtube.com/watch?v=lL-QtEzJ3WY
Cloud DW technology trends and considerations for enterprises to apply snowflakeSANG WON PARK
올해 처음 오프라인으로 진행된 "한국 데이터 엔니지어 모임"에서 발표한 cloud dw와 snowflake라는 주제로 발표한 내용을 정리하여 공유함. (2022.07)
[ 발표 주제 ]
Cloud DW 기술 트렌드와 Snowflake 적용
- Modern Data Stack에서 Cloud DW의 역할
- 기존 Data Lake + DW와 무엇이 다른가?
- Data Engineer 관점에서 어떻게 사용하면 좋을까? (기능/성능/비용 측면의 장점/단점)
[ 주요 내용 ]
- 최근 많은 Data Engineer가 기존 기술 스택(Hadoop, Spark, DW 등)의 기술적/운영적 한계를 극복하기 위한 고민중.
- 특히 Cloud의 장점과 운영 및 성능을 고려한 Cloud DW(AWS Redshift, GCP BigQuery, DataBricks, Snowflake)를 고려
- 이 중 Snowflake를 실제 프로젝트에 적용한 경험과 기술적인 특징/장점/단점을 공유하고자 함.
작년부터 정부의 데이터 정책 변화와 Cloud 기반의 기술 변화 가속화로 기업의 데이터 환경에도 많은 변화가 발생하고 있고, 기업들은 이에 적응하기 위한 다양한 시도를 하고 있다.
그 중심에 cloud dw (또는 Lake house)가 위치하고 있으며, 이를 기반으로 통합 데이터 플랫폼으로의 아키텍처로 변화하고 있다. 하지만, 아직까지 기존 DW 제품과 주요 CSP(AWS, GCP, Azure)의 제품군을 다양하게 시도하고 있으나, 기대와 다르게 생각보나 낮은 성능 또는 비싼 사용료, 운영의 복잡성으로 인한 많은 시행착오를 거치고 있다.
이 상황에서 작년에 처음 검토한 snowflake의 다양한 기능들이 기업들의 고민과 문제를 상당부분 손쉽게 해결할 수 있다는 것을 확인할 수 있었고, 이를 이용하여 실제 많은 기업들에게 적용하기 위한 POC를 수행하거나, 실제 적용하는 프로젝트를 수행하게 되었다.
본 발표 내용은 이러한 경험을 기반으로 기업(그리고 실제 업무를 수행할 Data Engineer) 관점에서 snowflake가 어떻게 문제를 해결할 수 있는지 cloud dw를 도입/활용/확장 하는 단계별로 문제와 해결 방안을 중심으로 설명하였다.
https://blog.naver.com/freepsw?Redirect=Update&logNo=222815591918
※다운로드하시면 더 선명한 자료를 보실 수 있습니다.
단순하고 반복적인 파라미터 튜닝 작업을 자동화할 방법을 설명합니다.
딥러닝에 대한 깊은 지식이 없어도 모델 성능을 개선할 수 있습니다.
목차
1. 하이퍼파라미터 튜닝이란
2. 베이지안 최적화(Bayesian Optimization)
3. 최적화 시스템 구조
대상
머신러닝/딥러닝에 관심 있는 분 누구나
■관련 동영상: https://youtu.be/PTxqPfG_lXY
데이터를 둘러싼 정책과, 기업과 기술의 진화는 빠르게 변화하고 있으며, 모든 지향점은 기업들이 다양한 데이터를 활용하여 경쟁력을 확보하고 이를 통해 AI기반의 혁신을 하고자 하는데 있다.
이 과정에서 수 많은 기업의 업무 전무가, 데이터 사이언티스트 등이 다양한 기업의 혁신을 지원할 수 있는 AI 모델을 검증하는 과정을 거치게 됩니다.
하지만, 이렇게 수 많은 AI 모델이 실제 비즈니스에 적용되기 위해서는 인프라, 및 서비스 관점의 기술이 반드시 필요하게 됩니다.
MLOps는 기업에 필요한 혁신적인 아이디어(AI Model)을 적시에 비즈니스 환경에 적용할 수 있도록 지원하는 기술 및 트렌드 입니다.
주요 내용은
- 데이터를 둘러싼 환경의 변화
- 기업의 AI Model 적용시 마주하는 현실
- MLOps가 해결 가능한 문제들
- MLOps의 영역별 주요 기술들
- MLOps 도입 시 기업의 AI 환경은 어떻게 변할까?
- AI 모델을 비즈니스 환경에 적용(배포)한다는 것은?
2021년 12월 코리아 데이터 비즈니스 트렌드(데이터산업진흥원 주최)에서 발표한 내용을 공유 가능한 부분만 정리함.
발표 영상 참고 : https://www.youtube.com/watch?v=lL-QtEzJ3WY
Cloud DW technology trends and considerations for enterprises to apply snowflakeSANG WON PARK
올해 처음 오프라인으로 진행된 "한국 데이터 엔니지어 모임"에서 발표한 cloud dw와 snowflake라는 주제로 발표한 내용을 정리하여 공유함. (2022.07)
[ 발표 주제 ]
Cloud DW 기술 트렌드와 Snowflake 적용
- Modern Data Stack에서 Cloud DW의 역할
- 기존 Data Lake + DW와 무엇이 다른가?
- Data Engineer 관점에서 어떻게 사용하면 좋을까? (기능/성능/비용 측면의 장점/단점)
[ 주요 내용 ]
- 최근 많은 Data Engineer가 기존 기술 스택(Hadoop, Spark, DW 등)의 기술적/운영적 한계를 극복하기 위한 고민중.
- 특히 Cloud의 장점과 운영 및 성능을 고려한 Cloud DW(AWS Redshift, GCP BigQuery, DataBricks, Snowflake)를 고려
- 이 중 Snowflake를 실제 프로젝트에 적용한 경험과 기술적인 특징/장점/단점을 공유하고자 함.
작년부터 정부의 데이터 정책 변화와 Cloud 기반의 기술 변화 가속화로 기업의 데이터 환경에도 많은 변화가 발생하고 있고, 기업들은 이에 적응하기 위한 다양한 시도를 하고 있다.
그 중심에 cloud dw (또는 Lake house)가 위치하고 있으며, 이를 기반으로 통합 데이터 플랫폼으로의 아키텍처로 변화하고 있다. 하지만, 아직까지 기존 DW 제품과 주요 CSP(AWS, GCP, Azure)의 제품군을 다양하게 시도하고 있으나, 기대와 다르게 생각보나 낮은 성능 또는 비싼 사용료, 운영의 복잡성으로 인한 많은 시행착오를 거치고 있다.
이 상황에서 작년에 처음 검토한 snowflake의 다양한 기능들이 기업들의 고민과 문제를 상당부분 손쉽게 해결할 수 있다는 것을 확인할 수 있었고, 이를 이용하여 실제 많은 기업들에게 적용하기 위한 POC를 수행하거나, 실제 적용하는 프로젝트를 수행하게 되었다.
본 발표 내용은 이러한 경험을 기반으로 기업(그리고 실제 업무를 수행할 Data Engineer) 관점에서 snowflake가 어떻게 문제를 해결할 수 있는지 cloud dw를 도입/활용/확장 하는 단계별로 문제와 해결 방안을 중심으로 설명하였다.
https://blog.naver.com/freepsw?Redirect=Update&logNo=222815591918
The Data tech for AI based innovation(기업의 AI기반 혁신을 지원하는 데이터 기술)SANG WON PARK
2020년 데이터산업진흥원에서 발표한 자료를 일부 편집하여 공유함.
2020년 당시에 Data Platform에서 AI lifecycle를 효율적으로 지원하는 platform을 적극적으로 검토 및 설계하는 작업을 진행하였고, 이 때 검토 및 활용했던 기술들을 기업 관점에서 필요한 내용을 기준으로 정리하였다.
기업들은 전통적인 방식으로의 혁신에 한계를 체감하고 있으며, 최근 AI기반으로 성공적인 혁신(비즈니스 강화, 새로운 비즈니스로 전환 등)에 성공한 기업들을 빠르게 벤치마크 하고 있다.
이렇게 AI 기반으로 기업을 혁신하는 것은 고도화된 AI 모델의 도입으로 해결되지 않으며, 수많은 기술들의 최적화된 조합 및 활용이 필요하다.
이 자료에서는 그 중 AI모델에 핵심적인 데이터를 적시에, 고품질의 형태로, 빠르고 안정적으로 제공할 수 기술 트렌드를 소개한다.
전체 내용은
- AI기반 혁신이란?
- 혁신을 위해서는 어떤 점이 어려운가?
- 고품질 데이터 확보 기술
- 빠르게 AI 모델을 학습하는 기술
- 적시에 다양한 AI 모델을 비즈니스에 적용하는 기술
2020년 기준으로 작성된 자료라, 일부 기술 트렌드가 반영되지 않을 수 있으나 아직까지 많은 기업들이 고민하고 해결하고자 하는 영역이라 참고할 수 있을 것 같다.
이 내용을 기준으로 발표한 영상 링크 : https://www.youtube.com/watch?v=OVm4-uk59ZA
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )SANG WON PARK
몇년 전부터 Data Architecture의 변화가 빠르게 진행되고 있고,
그 중 Cloud DW는 기존 Data Lake(Hadoop 기반)의 한계(성능, 비용, 운영 등)에 대한 대안으로 주목받으며,
많은 기업들이 이미 도입했거나, 도입을 검토하고 있다.
본 자료는 이러한 Cloud DW에 대해서 개념적으로 이해하고,
시장에 존재하는 다양한 Cloud DW 중에서 기업의 환경에 맞는 제품이 어떤 것인지 성능/비용 관점으로 비교했다.
- 왜기업들은 CloudDW에주목하는가?
- 시장에는어떤 제품들이 있는가?
- 우리Biz환경에서는 어떤 제품을 도입해야 하는가?
- CloudDW솔루션의 성능은?
- 기존DataLake(EMR)대비 성능은?
- 유사CloudDW(snowflake vs redshift) 대비성능은?
앞으로도 Data를 둘러싼 시장은 Cloud DW를 기반으로 ELT, Mata Mesh, Reverse ETL등 새로운 생테계가 급속하게 발전할 것이고,
이를 위한 데이터 엔지니어/데이터 아키텍트 관점의 기술적 검토와 고민이 필요할 것 같다.
https://blog.naver.com/freepsw/222654809552
AWS EMR을 사용하면서 비용을 최적화하기 위해 필요한 다양한 관점의 방안을 검토하여 정리한 자료.
비용 최적화 대상은 zeppelin/jupyter notebook과 apache spark를 활용하는 서비스를 대상으로 하였으며, 해당 작업이 aws emr에서 어떻게 동작하는지 내부 구조을 파악하여 확인함.
- AWS EMR이란?
- AWS EMR의 과금 방식은?
- 어떻게 비용을 최적화 할 것인가?
- 최적의 EMR 클러스터 구성 방안
- 가성비 높은 Instance 선정 방안
- Apache Spark 성능 개선 방안
가장 중요한 것은 실행할 job의 자원사용량/성능을 모니터링하고, 이에 맞게 자원을 최적화하는 것이 필요함.
Understanding of Apache kafka metrics for monitoring SANG WON PARK
2019 kafka conference seould에서 발표한 "Apache Kafka 모니터링을 위한 Metrics 이해" 슬라이드 자료
기존 2018년 자료에서 모니터링 관점에서 중요한 metrcis를 중심으로 정리하였고, 2019년 기준으로 추가/변경된 metrics를 반영하였다.
주용 내용은
- 업무에 최적화된 apache kafka 모니터링을 하려면?
- 어떤 정보를 모니터링 해야 할까?
- 적시성 관점의 모니터링 지표 (TotalTimeMs에 대한 세부 구조 이해)
- 안정성 관점의 모니터링 지표 (데이터 유실이 없이 중단없는 서비스)
- 언제 apache kafka 클러스터를 확장해야 할까? (어떤 지표를 봐야 할까?)
위 모든 지표는 producer/broker/consumer 3가지 측면에서 검토하였다.
컨퍼런스 영상 링크 : https://www.youtube.com/watch?v=p2RGsTOCHAg
Apache kafka performance(latency)_benchmark_v0.3SANG WON PARK
Apache Kafka를 이용하여 이미지 데이터를 얼마나 빠르게(with low latency) 전달 가능한지 성능 테스트.
최종 목적은 AI(ML/DL) 모델의 입력으로 대량의 실시간 영상/이미지 데이터를 전달하는 메세지 큐로 사용하기 위하여, Drone/제조공정 등의 장비에서 전송된 이미지를 얼마나 빨리 AI Model로 전달 할 수 있는지 확인하기 위함.
그래서 Kafka에서 이미지를 전송하는 간단한 테스트를 진행하였고,
이 과정에서 latency를 얼마나 줄여주는지를 확인해 보았다.(HTTP 프로토콜/Socket과 비교하여)
[현재 까지 결론]
- Apache Kafka는 대량의 요청 처리를 위한 throughtput에 최적화 된 솔루션임.
- 현재는 producer의 몇가지 옵션만 조정하여 테스트한 결과이므로,
- 잠정적인 결과이지만, kafka의 latency를 향상을 위해서는 많은 시도가 필요할 것 같음.
- 즉, 단일 요청의 latency는 확실히 느리지만,
- 대량의 처리를 기준으로 평균 latency를 비교하면 평균적인 latency는 많이 낮아짐.
Test Code : https://github.com/freepsw/kafka-latency-test
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
Apache Kafak의 빅데이터 아키텍처에서 역할이 점차 커지고, 중요한 비중을 차지하게 되면서, 성능에 대한 고민도 늘어나고 있다.
다양한 프로젝트를 진행하면서 Apache Kafka를 모니터링 하기 위해 필요한 Metrics들을 이해하고, 이를 최적화 하기 위한 Configruation 설정을 정리해 보았다.
[Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안]
Apache Kafka 성능 모니터링에 필요한 metrics에 대해 이해하고, 4가지 관점(처리량, 지연, Durability, 가용성)에서 성능을 최적화 하는 방안을 정리함. Kafka를 구성하는 3개 모듈(Producer, Broker, Consumer)별로 성능 최적화를 위한 …
[Apache Kafka 모니터링을 위한 Metrics 이해]
Apache Kafka의 상태를 모니터링 하기 위해서는 4개(System(OS), Producer, Broker, Consumer)에서 발생하는 metrics들을 살펴봐야 한다.
이번 글에서는 JVM에서 제공하는 JMX metrics를 중심으로 producer/broker/consumer의 지표를 정리하였다.
모든 지표를 정리하진 않았고, 내 관점에서 유의미한 지표들을 중심으로 이해한 내용임
[Apache Kafka 성능 Configuration 최적화]
성능목표를 4개로 구분(Throughtput, Latency, Durability, Avalibility)하고, 각 목표에 따라 어떤 Kafka configuration의 조정을 어떻게 해야하는지 정리하였다.
튜닝한 파라미터를 적용한 후, 성능테스트를 수행하면서 추출된 Metrics를 모니터링하여 현재 업무에 최적화 되도록 최적화를 수행하는 것이 필요하다.
xgboost를 이해하기 위해서 찾아보다가 내가 궁금한 내용을 따로 정리하였으나, 역시 구체적인 수식은 아직 모르겠다.
요즘 Kaggle에서 유명한 Xgboost가 뭘까?
Ensemble중 하나인 Boosting기법?
Ensemble 유형인 Bagging과 Boosting 차이는?
왜 Ensemble이 low bias, high variance 모델인가?
Bias 와 Variance 관계는?
Boosting 기법은 어떤게 있나?
Xgboost에서 사용하는 CART 알고리즘은?
Machine Learning Foundations (a case study approach) 강의 정리SANG WON PARK
실제 비즈니스에서 많이 활용되는 사례를 중심으로 어떻게 기존 데이터를 이용하여 알고리즘을 선택하고, 학습하여, 예측모델을 구축 하는지 jupyter notebook을 이용하여 실제 코드를 이용하여 실습할 수 있다.
강의 초반에 강조하는 것 처럼, 머신러닝 알고리즘은 나중에 자세히 설명하는 과정이 따로 있고, 이번 강의는 실제 어떻게 활용하는지에 완전히 초점이 맞추어져 있어서, 알고리즘은 아주 간략한 수준으로 설명해 준다. (좀 더 구체적인 내용은 심화과정이 따로 있음)
http://blog.naver.com/freepsw/221113685916 참고
https://github.com/freepsw/coursera/tree/master/ML_Foundations/A_Case_Study 코드 샘플
Apache kafka performance(throughput) - without data loss and guaranteeing dat...SANG WON PARK
Apache Kafak의 성능이 특정환경(데이터 유실일 발생하지 않고, 데이터 전송순서를 반드시 보장)에서 어느정도 제공하는지 확인하기 위한 테스트 결과 공유
데이터 전송순서를 보장하기 위해서는 Apache Kafka cluster로 partition을 분산할 수 없게되므로, 성능향상을 위한 장점을 사용하지 못하게 된다.
이번 테스트에서는 Apache Kafka의 단위 성능, 즉 partition 1개에 대한 성능만을 측정하게 된다.
향후, partition을 증가할 경우 본 테스트의 1개 partition 단위 성능을 기준으로 예측이 가능할 것 같다.
Coursera Machine Learning (by Andrew Ng)_강의정리SANG WON PARK
단순히 공식으로 설명하지 않고, 실제 코드 및 샘플데이터를 이용하여 수식의 결과가 어떻게 적용되는지 자세하게 설명하고 있다.
처음 week1 ~ week4 까지는 김성훈 교수님의 "모두를 위한 딥러닝"에서 한번 이해했던 내용이라 좀 쉽게 진행했고, 나머지는 기초가 부족한 상황이라 다른 자료를 꽤 많이 참고하면서 학습해야 했다.
여러 도서나 강의를 이용하여 머신러닝을 학습하려고 했었는데, 이 강의만큼 나에게 맞는것은 없었던거 같다. 특히 Octave code를 이용한 실습자료는 나중에도 언제든 활용가능할 것 같다.
Week1
Linear Regression with One Variable
Linear Algebra - review
Week2
Linear Regression with Multiple Variables
Octave[incomplete]
Week3
Logistic Regression
Regularization
Week4
Neural Networks - Representation
Week5
Neural Networks - Learning
Week6
Advice for applying machine learning techniques
Machine Learning System Design
Week7
Support Vector Machines
Week8
Unsupervised Learning(Clustering)
Dimensionality Reduction
Week9
Anomaly Detection
Recommender Systems
Week10
Large Scale Machine Learning
Week11
Application Example - Photo OCR
Coursera Machine Learning by Andrew NG 강의를 들으면서, 궁금했던 내용을 중심으로 정리.
내가 궁금했던건, 데이터를 분류하는 Decision boundary를 만들때...
- 왜 가중치(W)와 decision boundary가 직교해야 하는지?
- margin은 어떻게 계산하는지?
- margin은 어떻게 최대화 할 수 있는지?
- 실제로 margin을 최대화 하는 과정의 수식은 어떤지?
- 비선형 decision boundary를 찾기 위해서 어떻게 kernel을 이용하는지?...
http://blog.naver.com/freepsw/221032379891
모두를 위한 Deep Reinforcement Learning 강의를 요약정리
http://hunkim.github.io/ml/
실습에 사용된 코드
https://github.com/freepsw/tensorflow_examples/tree/master/20.RL_by_SungKim
1. Code로 이해하는 Back
propagation
CS231n 강좌에서 Python code로 잘 설명된 자료를 이용하여,
직접 디버깅한 결과를 보면서 Back propagation 이해하기
http://cs231n.github.io/neural-networks-case-study/
2017.03
freepsw
2. Minimal 2D toy data example 활용
아래 2개의 모델에서
Ø 어떻게 loss를 계산하고,
Ø Loss를 줄이기 위한 gradient 계산방식과
Ø 이를 모든 파라미터(W, b)에 역전파하여 최적화하는 것을 자세하게 확인
• Logistic Regression (softmax) 모델
• Neural Network 모델
4. 1) Data set 준비
문제를 해결할 데이터 셋을 생성한다.
전체 30개의 point가 있고, 이를 3가지로 분류한다. (0, 1, 2)로 분류
정답은 y에 저장(30개에 대한 정답)
X : (15, 2)
y : (15,1)
num_examples : 15
W : (2, 3)
b : (1, 3)
[[ 0. 0. ]
[ 0.191619 0.16056824]
[ 0.43301623 -0.24999388]
[ 0.19190666 -0.7250323 ]
[-0.74941044 -0.66210573]
[-0. -0. ]
[-0.23912461 0.07293436]
[-0.1313341 0.48244311]
[ 0.47422789 0.58104037]
[ 0.99330492 -0.115522 ]
[ 0. -0. ]
[ 0.09798095 -0.22999942]
[-0.18195402 -0.46571744]
[-0.73955213 -0.12475035]
[-0.75489743 0.65584287]]
X
[0 0 0 0 0 1 1 1 1 1 2 2 2 2 2]y
[[-0.00911365 0.00989886 0.00200746]
[-0.00616948 0.00392478 0.00670659]]
[[ 0. 0. 0.]]
W
b
• 생성된 데이터를 보면,
• 선형으로 3가지를 분류하는것은 거의 불가
능해 보인다.
• XOR 문제
5. 2) 항목별 score 계산 à 예측에 대한 loss 계산
선형함수를 이용하여 15개 데이터의 score를 계산한다.
à scores = np.dot(X, W) + b # shape(15, 3)
[[ 0.00000000e+00 0.00000000e+00 0.00000000e+00]
[ -2.73697107e-03 2.52700382e-03 1.46153308e-03]
[ -2.40402494e-03 3.30519479e-03 -8.07342618e-04]
[ 2.72410403e-03 -9.45935139e-04 -4.47724846e-03]
[ 1.09147128e-02 -1.00169251e-02 -5.94488411e-03]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00]
[ 1.72933044e-03 -2.08080898e-03 9.10717959e-06]
[ -1.77949135e-03 5.93425221e-04 2.97189953e-03]
[ -7.90666446e-03 6.97476890e-03 4.84879352e-03]
[ -8.33992094e-03 9.37918452e-03 1.21926332e-03]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00]
[ 5.26013381e-04 6.72024569e-05 -1.34581859e-03]
[ 4.53150040e-03 -3.62897478e-03 -3.48864134e-03]
[ 7.50966318e-03 -7.81033793e-03 -2.32127218e-03]
[ 2.83365892e-03 -4.89858294e-03 2.88304077e-03]]
계산된 score에 softmax 함수를 적용하여 각 항목별로 정답일 확률을 계산한다.
à exp_scores = np.exp(scores)
à probs = exp_scores / np.sum(exp_scores, axis=1, keepdims=True)
[[ 0.33333333 0.33333333 0.33333333]
[ 0.33228275 0.33403649 0.33368077]
[ 0.33252159 0.33442546 0.33305295]
[ 0.33454201 0.33331648 0.33214151]
[ 0.33754504 0.3305531 0.33190187]
[ 0.33333333 0.33333333 0.33333333]
[ 0.33394798 0.33267801 0.33337401]
[ 0.33254206 0.33333209 0.33412585]
[ 0.33026955 0.33522118 0.33450927]
[ 0.33030749 0.33621241 0.3334801 ]
[ 0.33333333 0.33333333 0.33333333]
[ 0.33359229 0.33343927 0.33296844]
[ 0.3351336 0.33240988 0.33245653]
[ 0.33613287 0.33102256 0.33284456]
[ 0.33418585 0.3316118 0.33420235]]
첫번째 항목을 보면, 3개 항목 모두 동일한 확률로 정답으로 예측하고 있다.
두번째 항목을 보면, (0,1,2) 중에서 1이 확률이 높다 (0.334)
6. 계산된 확률 벡터(probs)를 이용하여 정답과의 거리(loss)를 계산한다.
- 먼저 실제 정답을 예측한 확률을 가져온다.
-
- à probs[range(num_examples),y]
- à probs[0, 1, 2, …., 14], [0 0 0 0 0 1 1 1 1 1 2 2 2 2 2]]
- à 이렇게 하면, 0~4까지는 0번째 값을 가져오고, 5~9까지는 1번째, 10~14는 2번째 값을 가져온다.
- Loss 계산
- 위에서 가져온 값을 Log함수의 입력으로 계산하면 loss를 구할 수 있다.
àcorect_logprobs = -np.log(probs[range(num_examples),y])
[[ 0.33333333 0.33333333 0.33333333]
[ 0.33228275 0.33403649 0.33368077]
[ 0.33252159 0.33442546 0.33305295]
[ 0.33454201 0.33331648 0.33214151]
[ 0.33754504 0.3305531 0.33190187]
[ 0.33333333 0.33333333 0.33333333]
[ 0.33394798 0.33267801 0.33337401]
[ 0.33254206 0.33333209 0.33412585]
[ 0.33026955 0.33522118 0.33450927]
[ 0.33030749 0.33621241 0.3334801 ]
[ 0.33333333 0.33333333 0.33333333]
[ 0.33359229 0.33343927 0.33296844]
[ 0.3351336 0.33240988 0.33245653]
[ 0.33613287 0.33102256 0.33284456]
[ 0.33418585 0.3316118 0.33420235]]
[ 1.09861229 1.10176903 1.10105048 1.09499281 1.08605634
1.09861229 1.10058019 1.09861602 1.09296471 1.09001216
1.09861229 1.09970756 1.10124617 1.10007967 1.09600863]
(15, 1)
”2) 항목별 score계산” 의 로직을 수식으로 표현하면 아래와 같다. cross_entropy
여기서 minus를 하는 이유는 자연로그에
0이하의 값이 들어가면 음수가 나오기 때
문에 내부적으로 변환한다.
이 수식의 의미는 log(확률)에서 확률이 1(100%)에 가까워 지면, loss가 0
이 된다는것이다.
즉 잘못된 예측으로 정답을 낮게 예측하면 loss가 커지고, 이후
gradient(기울기)가 커져서 역전파를 통해 파라미터를 조정하게 된다.
예를 들어 -log(0.345) = 1.064라면 e의 1.064승은 0.345이다.
그럼 loss가 0이 나오려면 -log(1) = 0, e의 0승은 1이다
결국 loss를 줄이려면 정답을 예측한 확률이 높아져야 한다. (1에 가깝게)
어떻게 줄이나? à 다음 단계에서 정리..
2) 항목별 score 계산 à 예측에 대한 loss 계산
7. 항목(15개)별로 정답을 예측한 확률의 loss에 대한 평균을 계산한 후,
이 값과 정규화 loss와 합한다.
3) 예측에 대한 loss 계산
계산된 loss는 다음과 같다. (loss : 1.09726151839)계산된 loss는 다음과 같다. (loss : 1.09726151839)
위의 결과는 결국 -log(1/3) 동일한 값이다.
쉽게 말하면 1/3확률로 정답을 예측했다는 의미. à 정확도가 거의 향상되지 못한 상태
이유는 첫번째 학습의 결과이기 떄문에,
이를 최적화하는 단계(역전파를 통한 파라미터 업데이트)를 아직 수행하
지 못했다.
학습이 200회까지 수행되면 좀 더 정확한 확률로 예측할 것이다.
8. 4) Gradient(기울기) 계산 – 1/2
이제 loss를 최소화 하기 위해서 gradient descent를 이용해 보자.
- Loss를 줄이려면 먼저 파라미터(W, b)값을 어떻게 변경해야
- loss가 줄어드는지 알아야 한다.
아래는 loss를 계산하는 수식이고, loss를 계산하기 위한 중간과정으로 정답의 확률을 p에 저장하였다.
그럼 f 내부에서 계산된 scores가 어떻게 변경되어야 loss를 줄일수 있는지 궁금할 것이다. 다른 말로 표현하
면, ∂Li/∂fk를 계산하고자 하는 것이다.
Loss인 Li는 p를 통해서 계산이되고, p는 f함수(여기서는 scores)의 결과에 종속적이다. 최종적으로
gradient는 아래와 같은 간단한 공식으로 도출될 수 있다.
만약 scores의 계산된 확률인 p = [0.2, 0.3, 0.5] (à 정답은 index 1인 0.3)가 있다고 가정하고,
위의 공식에 따라 scores의 gradient를 계산하면 df = [0.2, -0.7, 0.5]가 된다.
이 공식이 의미하는게 무엇일까?
à다시 loss를 계산하는 수식을 보면, “Li = -log(p)” 이고 p가 높을수록 loss는 줄어든다.
à만약 우리가 loss를 줄이려고, 잘못된 정답인 scores의 inde 0 또는 2번째 값을 증가시키면 어떻게 될까?
àP값이 [0.3, 0.1, 0.6]처럼 오히려 정답의 확률이 더 떨어지게 되어, loss가 증가한다.
à그래서 정답의 scores(index 1)를 높여야 한다.
à그럼 정답의 scores를 높이려면 loss가 줄어들도록 f(scores)를 조정해야한다. (즉 기울기가 음수)
à 위 공식은 “f함수가 Loss에 minus(negative)영향을 주도록 한다”는 의미다.
à즉 df = [0.2, -0.7, 0.5] è f(scores)의 index 1에 해당하는 값을 1 증가시키면 à loss에 -0.7만큼 줄어든
다.
정답(100%)과 예측한 확률(30%)의 차이를 계산하면, f가 Li에 미치는 영향
(기울기)를 알 수 있다.