본문 바로가기

Tech

(580)
[Python] 클래스 상속 시 super() 의 쓰임 이번 포스팅에서는 Python에서 부모 클래스를 상속받을 때 자주 사용하는 super() 메소드에 대해 헷갈렸던 점을 기록하고자 한다. 우선 다음과 같은 부모 클래스가 있다고 가정하자. class Parent: def __init__(self, p1, p2): self.p1 = p1 self.p2 = p2 def add_string(self): return self.p1 + '+' + self.p2 위 Parent 클래스 생성자 함수에 인자(argument)가 필요한 상태이다. 이 상태에서 우리는 Parent 클래스를 상속받는 Child 클래스를 만들어보자. class Child(Parent): def __init__(self): self.c1 = 'child1' # 클래스 정의 child = Child..
[추천시스템] 딥러닝과 FM, Deep FM(Factorization Machine) 이번 포스팅에서는 FM(Factorization Machine)에 딥러닝을 적용한 Deep FM에 대해 알아보려고 한다. FM에 대한 사전지식이 필요하므로 FM에 대해 모른다면 여기를 읽어보고 오자. Deep FM은 FM에 딥러닝을 적용했다고 문두에서 소개했지만 구체적으로 말하면 직전 포스팅에서 배운 Wide & Deep Learning 추천시스템과 FM을 결합한 것이라고 할 수 있다. 결국 두 모델의 장점만을 갖고와서 만든 것이 Deep FM이라는 것인데, 두 모델의 장점만 알고 있다면 Deep FM에 대한 이해는 매우 수월할 것이다. 1. Wide를 FM으로 바꾸면 Deep FM! 직전 포스팅에서 배웠던 Wide & Deep Learning 추천 시스템을 다시 상기시켜보자. Wide, Deep 각각의..
[추천시스템] 딥러닝과 추천시스템, Wide & Deep Learning 이번 포스팅에서는 추천 시스템에 딥러닝을 적용한 또 하나의 모델인 Wide & Deep Learning 추천 시스템에 대해 알아보려고 한다. 저번 포스팅에서 추천 시스템에 딥러닝을 적용한 첫 번째 모델인 Neural CF에 대해 알아보았다. 이번엔 또 다른 모델인 Wide & Deep Learning 추천 시스템에 대해 알아보고 말미에는 Neural CF와 어떤 차이점이 있는지에 대해서도 살펴보자. 이번에 소개할 Wide & Deep Learning 모델은 이름에서도 추측할 수 있다시피 Wide 구성요소와 Deep 구성요소로 구성되어 있다. 먼저 Wide & Deep Learning 모델의 개괄적인 구조는 아래와 같다. 이제 각각의 구성요소가 하는 역할이 무엇인지 살펴보자. 1. Wide Componen..
[추천시스템] FM(Factorization Machine) 이번 포스팅에서는 추천 시스템 종류 중 하나인 Factorization Machine 이른바 FM이라 불리는 모델에 대해 알아보려고 한다. 참고로 이 FM 모델에 딥러닝을 적용한 모델이 Deep FM이라는 추천 시스템이고 이에 대해서는 추후에 다루어 보려고 한다. 우선 FM이라는 구조에 대해 이해가 선행되어야 나중에 배울 Deep FM에 대한 이해도 수월할 것이다. FM에 대해 처음 소개된 논문은 여기를 참고하자. Factorization은 추천 시스템에 있어서 행렬 분해라는 것은 익히 들었을 것이다. 기존에 배웠던 협업 필터링 추천 시스템에서 잠재 요인 기반이라는 추천 시스템은 SVD, PCA같은 행렬 분해 기법을 사용했었다. 그렇다면 앞으로 소개할 FM은 어떤 것을 '분해' 한다는 것일까? 1. FM..
[Docker] Container의 파일시스템과 Host의 파일시스템 연결하기 🔊 해당 포스팅은 이고잉님의 생활코딩 오픈튜토리얼의 Docker 입문 수업을 듣고 제 개인적으로 정리하는 목적하에 작성되는 포스팅입니다. 보다 자세한 강의는 여기를 참고해주세요. 저번 포스팅 말미에서 잠깐 언급했던 Docker에서 만든 컨테이너의 파일 시스템과 Docker를 설치한 Host 서버(로컬 컴퓨터)의 파일 시스템을 연결하는 방법에 대해 알아보려고 한다. 사용할 예시는 Docker에서 제공하는 아파치 웹서버 소프트웨어인 httpd 라는 이미지를 pull 하고 그 위에 컨테이너를 만들자. 그리고 아파치 웹서버에 기본적으로 내장되어 있는 index.html을 어떻게 Host의 파일시스템과 동기화시키는지 방법에 대해 알아보자. 그 전에 앞서 Docker에서 컨테이너를 하나 만들고 그 컨테이너 안에 있..
[추천시스템] 딥러닝과 추천시스템, Neural CF(Collaborative Filtering) 이번 포스팅에서는 추천시스템의 협업 필터링에 딥러닝을 적용한 모델인 Neural Collaborative Filtering인 이른바 Neural CF에 대해 배워보려고 한다. 해당 포스팅을 이해하는 데 있어서 추천 시스템의 협업 필터링에 대한 이해가 필요할 수 있어 협업 필터링에 대한 포스팅은 여기를 참고하자. 1. 추천시스템에 딥러닝이 등장한 이유 딥러닝이 등장한 이유는 어떻게 보면 항상 당연한 이유로부터 출발하는 듯하다. 바로 주어진 데이터가 선형의 관계로 설명될 수 없을 때이다. 즉, 선형회귀, 의사결정나무 같은 선형 함수로 구현되는 머신러닝 모델들로 풀 수 없는 문제는 그동안 분야를 불문하고 모두 딥러닝이 적용되어 왔다. 왜냐하면 딥러닝이 주어진 데이터의 비선형 관계를 파악할 수 있었기 때문이었다..
[Docker] Image를 pull 하고 Container를 run 시키기 🔊 해당 포스팅은 이고잉님의 생활코딩 오픈튜토리얼의 Docker 입문 수업을 듣고 제 개인적으로 정리하는 목적하에 작성되는 포스팅입니다. 보다 자세한 강의는 여기를 참고해주세요. 저번 포스팅에 이어서 Docker를 잘 설치했으니 이제 Docker에서 CLI로 Image를 pull 하고 Container를 run 시켜보자. pull 할 image는 아파치 웹서버인 httpd를 다운로드 받아보자. 1. Docker에서 Image를 Pull 시켜보자 image를 pull 하는 것은 간단하다. 다음의 명령어를 사용하면 된다. docker pull httpd 잘 설치되었다면 위와 같이 나오게 된다. 그러면 설치한 image의 목록을 확인해보자. 명령어는 다음과 같다. docker images 위 화면을 보면 방금..
[Docker] Docker를 시작해보자 🔊 해당 포스팅은 이고잉님의 생활코딩 오픈튜토리얼의 Docker 입문 수업을 듣고 제 개인적으로 정리하는 목적하에 작성되는 포스팅입니다. 보다 자세한 강의는 여기를 참고해주세요. Docker는 항상 궁금했지만 다가가기 어려웠던 개념이었다. 무엇인가 백엔드 지식과 관련이 있는 것 같아 지레 겁먹고 어떤 개념인지 조차 알아보지도 않았던 것이 팩트이다. 얼마 전 이고잉님께서 오픈 튜토리얼스로 Docker에 대한 입문 강의를 제작해주셨고 바로 강의를 들으러 갔다. 이번 강의도 다가가기 쉽고 강의 시간도 매우 짧을 뿐더러 설명도 잘해주셨다! 심지어 무료 강의이다. 개인적으로 Docker가 무엇인지 모르겠다면 꼭 들어보자. Docker를 다루는 엔지니어가 아니더라도 Docker에 대한 이해가 전제된다면 추후에 같이..
[ML] Explainable AI - CAM & Grad CAM 🔉해당 포스팅에서 사용된 자료는 고려대학교 산업경영공학부 김성범교수님의 Youtube 강의자료에 기반했음을 알려드립니다. 혹여나 출처를 밝혔음에도 불구하고 저작권의 문제가 된다면 joyh951021@gmail.com으로 연락주시면 해당 자료를 삭제하겠습니다. 감사합니다. 이번 포스팅에서는 컴퓨터 비전 분야의 이미지 분류 문제에 있어서 CNN 딥러닝 모델의 예측 결과를 설명해줄 수 있는 요소 중 하나인 CAM(Class Activation Map) 과 이를 응용한 방법인 Grad CAM 방법에 대해 알아보려고 한다. 저번 포스팅에서는 Tabular data 즉, 정형 데이터에서 예측 결과를 설명할 수 있는 요소인 Shapley Value를 알아보았다. 이번에는 도메인을 변경하여 컴퓨터 비전 분야에서 알아보..
[ML] Explainable AI - Shapley Value 🔉해당 포스팅에서 사용된 자료는 고려대학교 산업경영공학부 김성범교수님의 Youtube 강의자료에 기반했음을 알려드립니다. 혹여나 출처를 밝혔음에도 불구하고 저작권의 문제가 된다면 joyh951021@gmail.com으로 연락주시면 해당 자료를 삭제하겠습니다. 감사합니다. 이번 포스팅에서는 설명이 가능한 인공지능(Explainable AI)을 만들기 위한 하나의 요소로서 Shapley Value에 대해 소개하고자 한다. Explainable AI라고 하면 무엇인가 엄청 거대해 보일 수 있지만 우리가 흔히 사용해왔던 Scikit-learn 라이브러리에서도 관련된 것들을 찾아볼 수 있다. 예를 들면 Tree-based 알고리즘이나 Boosting 계열 알고리즘들은 Feature Importance라고 Feat..
[ML] Unbiased boosting : CatBoost 이번 포스팅에서는 Boosting 계열의 알고리즘 중에서 GBM(Gradient Boosting Machines) 알고리즘에 기반하여 만들어진 CatBoost 알고리즘에 대해 알아보려고 한다. CatBoost는 2017년 논문에서 소개되었으며 현재까지 현업에서도 활발하게 사용되고 있다고 한다. 우선 CatBoost 를 본격적으로 소개하기 전에 GBM에 대한 개념부터 살펴보고 들어가자. 1. Gradient Boosting = Residual Boosting Gradient Boosting의 기본적인 아이디어는 주어진 데이터의 일부를 학습시켜 만든 모델로 다른 데이터를 예측한 후 알게되는 잔차를 이용하는 것이다. 이렇게 주어진 데이터에 대해 계속적으로 학습 후 모델을 만들고 다른 데이터를 예측함으로써 결국..
[서평] 카네기 인간관계론 오랜만에 글을 작성한다. 얼마 전 최초로 사회라는 환경에 뛰어들기 시작하면서 여러가지 복잡한 생각이 들었다. 특히, 나의 기술적인 역량도 중요하겠지만 인간관계를 하는 방법에 대한 중요성도 마음속 한 켠에는 항상 생각하고 있었던 듯 하다. 그래서 인간관계를 하는 것에 있어서도 근간이 되는 기초가 있지 않을까 하는 마음에 인간관계 관련 서적의 가장 명저라고도 불리우는 데일 카네기의 인간관계론을 중고서점에서 구입해 읽기 시작했다. 현재 책 내용의 절반 이상을 읽었지만 그 절반을 읽으면서도 느끼는 바가 매우 많았고 내가 그동안 해왔던 대인관계에 대한 회고와 성찰도 많이 하게 되는 것 같아 이 느낌을 글로 작성해보고 싶었다. 사람들이 인생을 살면서 가장 많이 하는 행동은 무엇일까? 인간의 기초적인 생활을 충족시키..
[서평] 존리의 금융문맹 탈출 회고록 최근 서점에서 경제 관련 서적을 처음 구입해보았다. 요즘에는 초등학생들도 주식에 입문할 정도로 전국민이 주식, 부동산, 코인과 같은 재테크 수단에 뜨거운 관심을 쏟고 있는 듯 하다. 물론 이러한 트렌드 때문만은 아니지만 항상 부자가 되고 싶어하는 꿈을 꾸었기에 재테크 공부를 조금씩 해보고자 결심을 하고 이 책을 구입해 읽어보았다. 어떤 분야 또는 어떤 학문이던 간에 항상 기초가 중요하다고 생각한다. 그래서 대한민국이라는 자본주의 사회에서 왜 재테크가 필수적인지 또, 어떤 식으로 시작해야 하는지에 대해 알고 싶었다. 이번 포스팅에서는 지난 서평들 처럼 이야기식으로 풀어나가기 보다 항목별로 열거하듯이 정리하려고 한다. 앞으로 소개할 내용은 필자가 책을 읽은 후 정리한 내용이며 일부 필자와 저자 '존리'님의 ..
[서평] 폴리매스 회고록 몇 주 전에 지인과 함께 알라딘 중고 서점을 방문해서 책을 구입했다. 구입한 책 중 하나는 '폴리매스'라는 책이었다. 유독 이 책을 읽는 데 시간이 좀 걸렸다. 이유를 생각해보았을 때, 아마 책 내용 중 수많은 인물들의 어려운 이름들이 자주 등장했기 때문인 것 같다.😟 어쨌거나 약 2~3주 기간에 걸쳐 폴리매스라는 책을 읽고 나만의 서평을 남겨보려 한다. 폴리매스란 무엇일까? 우선 폴리매스는 영어로 바꾸면 'Polymath'이며 'Poly'는 '셋 이상의 많은'을 의미하는 영어 접두사이다. 폴리매스는 다양한 분야에 재능과 전문성이 있는 박식가, 만능가, 또는 르네상스적 인간이라고도 한다. 즉, 간단히 말해서 다재다능한 사람을 의미한다. 이 책은 역사적 또는 현대의 폴리매스 유형의 사람들의 업적을 예시로 ..
[ML] Mask RCNN Instance Segmentation 모델 🔊 해당 포스팅에서 사용된 컨텐츠는 인프런의 딥러닝 컴퓨터 비전 완벽 가이드 강의 내용을 기반으로 했음을 알립니다. 설명에서 사용된 자료는 최대한 제가 직접 재구성한 자료임을 알립니다. 이번 포스팅에서는 Pixel-level로 Object Detection을 수행하는 Instance Segmentation 모델인 Mask RCNN에 대해 알아보려고 한다. Mask RCNN은 Two-Stage Object Detection 모델인 Faster RCNN 과 Semantic Segmentation 기법인 FCN으로 구성되어 있다. 1. Segmentation이란? Segmentation은 픽셀 단위, 이른바 Pixel-level로 Classification을 수행하는 것이다. 다음 그림을 보면 직관적으로 이해..
[서평] 완벽한 공부법 회고록 필자가 가장 즐겨보는 유투브 채널 중 하나가 체인지 그라운드이다. 해당 채널에서는 여러가지 컨텐츠를 다루지만 본인이 가장 자주 보는 영상은 삶의 '동기부여' 관련 영상이다. 그런데 얼마 전에 서점을 방문하다가 '완벽한 공부법'이라는 책을 보았다. 알고보니 체인지 그라운드 채널의 다양한 컨텐츠를 제작해주시는 신영준 박사님과 고영성 작가님이 집필하신 책이었다. 약 500쪽의 두꺼운 책이였지만 하루에 한 챕터씩 읽어나가자는 마음으로 책을 구입하게 되었다. 그리고 약 3주 동안 독서를 틈틈이 해서 다 읽은 후 서평을 남겨보려고 한다. 완벽한 공부법 책은 삶의 목표를 설정하는 방법, 동기부여 방법 등 뿐만 아니라 실질적으로 영어공부를 잘하는 방법, 대인관계, 직장에서 일을 잘하는 방법과 같이 실제에 적용할 수 있..
[ML] Retina Net Object Detection 모델 🔊 해당 포스팅에서 사용된 컨텐츠는 인프런의 딥러닝 컴퓨터 비전 완벽 가이드 강의 내용을 기반으로 했음을 알립니다. 설명에서 사용된 자료는 최대한 제가 직접 재구성한 자료임을 알립니다. 이번 포스팅에서는 One-Stage Object Detection의 또 다른 모델 중 하나인 Retina Net 모델에 대해 알아보려고 한다. 그동안에 살펴보았던 One-Stage 모델 중 하나인 YOLO 모델은 매우 빠른 Detection 속도를 자랑했지만 Detection 정확도는 Two-Stage 모델 중 가장 정확도가 높은 Faster RCNN 모델보다는 현저히 낮은 수준이었다. 특히 One-Stage 모델들은 작은 객체를 탐지하지 못하는 문제가 발생했다. 따라서 연구자들은 One-Stage 모델로서 YOLO 만큼..
[Infra] 데이터 인프라 - Ingestion&Transformation(Event Streaming) 🔊 해당 포스팅은 YouTube GeekNews 채널의 데이터 인프라 강의 내용에 기반해 제가 재구성하여 작성함을 알려드립니다. 이번 포스팅에서는 데이터 인프라 구조에서 주로 ETL 도구를 다루는 Ingestion & Transformation에 해당하는 또 다른 요소 중 하나인 Event Streaming에 대해 알아보려 한다. 우선 Event Streaming 이란 무엇일까? 위키백과에 따르면 정확히 Event Stream Processing이란, 이벤트 중심 정보시스템의 구축을 지원하도록 설계된 일련의 기술이라고 정의한다. 결국 실시간 스트리밍을 의미한다. 모든 데이터가 실시간 스트리밍이 필요한 것은 아니지만 금융기관이 주식의 시장 변화를 모니터링한다거나 운송차량, 농기계에 붙어있는 센서의 데이터를..
[Infra] 데이터 인프라 - Ingestion&Transformation(Spark Platform, Python Lib, Batch Query Engine) 🔊 해당 포스팅은 YouTube GeekNews 채널의 데이터 인프라 강의 내용, 하용호님의 SlideShare 슬라이드에 기반해 제가 재구성하여 작성함을 알려드립니다. 이번 포스팅에서는 저번 포스팅에서 살펴본 Ingestion & Transformation 단계의 또 다른 도구인 Apache Spark Platform에 대해 알아보려고 한다. PySpark에 대해 공식 문서를 읽고 어느정도 공부한 내용을 저번에 포스팅한 적이 있다. 그런데 역시 공식 문서만으로 이해한 것이 모든 걸 내가 다 이해한 것이 아니었다.. 그래서 2가지 매체를 통해 더 공부를 하고 정리한 내용을 포스팅하려 한다. 위 빨간색 네모칸의 요소들을 각각 소개하기 전에 이 요소들인 Spark Platform, Python Libs, B..
[Infra] 데이터 인프라 - Ingestion&Transformation 🔊 해당 포스팅은 YouTube GeekNews 채널의 데이터 인프라 강의 내용에 기반해 제가 재구성하여 작성함을 알려드립니다. 이번 포스팅에서는 저번 포스팅에서 알아본 데이터 인프라 구조의 첫 번째 구성요소 Sources에 이어 다음 단계인 Ingestion & Transformation을 알아보려 한다. Ingestion & Transformation 흔히 말하는 ETL 도구들이 이번 단계에 해당하는 것들이다. 즉, Sources 로부터 얻은 많은 데이터들을 추출, 변환하는 단계이다. 이번 포스팅에서는 위 그림에서 빨간색 네모칸 안에 있는 Connectors, Data Modeling, Workflow Manager에 대해 알아보려고 한다. 1. Connectors 위 그림에서 Connectors가 ..