The brain’s housekeeping

Watched a Deutsche Welle documentary called “How to get a good night’s sleep”.

Takeaways
– glial cells in the brain play a role in getting rid of ‘brain waste’ during sleep. Sleep is essential for keeping the brain working in tip top condition
– Sara Mednick – Take a Nap! Change your Life (book)

Broken Nest, Eggs Fall Out

When the nest breaks, the eggs are bound to fall out.

So were the final words of the scions of a noble house, unperturbed by impending death even as it came scampering up the steps where they sat, engaged in a round of xiangqi.

Many years ago, I came across the book “Without Their Permission: How the 21st Century Will Be Made, Not Managed” written by Reddit founder Alexis Ohanian. The title and the deeper meaning it conveys is all that has remained with me after having read it so long ago.

The premise is simple: don’t go around asking for permission to do what you will. In other words, don’t let anyone dictate what you can or cannot do.

You decide what you have got to do.

While the message is simple, it unfortunately did not translate into action for me.

For years I found myself seeking permission before acting. Whose permission exactly I don’t quite know. I like to think I had some good ideas, but there was always that voice inside my head telling me that it won’t work, that it’ll fail, that I’m too old to do that, that someone is already doing it several orders of magnitude better than I ever could. I was the quintessential think before you act person. Too much of it.

During a conversation today, I came to a startling realization. He said that if the same voice that told you ten years ago that you’re too old to do something is telling you in the present (i.e. ten years after the fact) that you’re still too old to do something, there’s something amiss. That same voice – whoever is its owner – hasn’t aged one bit! Or rather, I was deathly old ten years ago and I am only even older now.

It means that the same voice that told me I couldn’t do it back then hasn’t changed one bit. I haven’t changed one bit. And that that voice never will go change nor go away. That voice will always be there, tantalizing in its self-assured tone coaxing me to stay put on terra firma, rather than venturing forth on terra incognita. It’s one of those things that you need to live with and put up with, take it in stride as you go about the business of life.

Once you realize that it will always be there, you just have to brush past the voice and take action. It’s the fear that ensnares you and keeps you from moving forward. I’m still too old to do that thing I’m so scared to do, when will I ever be too young to do it?

When the nest breaks, the eggs will inevitably fall out. But all the better for it.

美 MIT “AI와 로봇, 일자리 감소 아닌 증가 이끌 것” [노경목의 미래노트]

Source: https://news.v.daum.net/v/20201128104303215

스위스 다보스포럼에서 4차 산업혁명이라는 단어가 소개된지 만 5년이 가까워 오고 있다. 사물인터넷(IoT) 등을 활용한 지능화로 생산과 물류, 일상생활에 큰 변화가 일어날 것이라는 주장이었다.

여기에 2016년 구글의 인공지능(AI)이 이세돌을 꺾는 ‘알파고 쇼크’가 겹쳤다. 의사와 변호사 등 전문직부터 화물차 운전사와 생산직 근로자까지 AI에 대체될 것이라는 전망이 나왔다. 5년, 10년이면 일자리가 크게 감소할 것이라는 예상이 대세가 됐다.

AI와 로봇은 실제로 일자리에 어떤 영향을 주고 있을까. 정말 사람의 일자리가 크게 줄어들게 될까. 이같은 질문에 답하기 위한 미국 MIT(메사추세츠공과대학)의 보고서가 지난 17일 발표됐다. ‘미래의 일: 지능화된 기계의 시대에 더 좋은 일자리를 만들기’라는 제목의 보고서다.

MIT의 각 분야 전문가 수십명이 2017년부터 3년간 연구한 결과물이다. 결론부터 이야기하면 AI와 로봇이 일자리 없는 세상을 예고하는 것은 아니다. 혁명보다는 진화에 대한 변화가 각 분야에서 서서히 일어나며 앞으로 20년간 현재보다 더 많은 일자리가 생길 것으로 예측됐다.

 AI로 더 많은 직업 만들어지는 이유

MIT 리포트는 우선 앞으로 10년간 AI와 로봇이 대체할 수 있는 인간의 일자리는 상당히 제한적일 것이라고 예상한다. 우선 AI와 관련해서는 신뢰성 있는 결과를 산출할만한 데이터를 쌓기가 쉽지 않다는 점을 문제로 든다.

구글 딥마인드가 이세돌에게 이길 수 있었던 것은 수십년간의 기보를 학습했기 때문이다. 하지만 개별 공정과 서비스에서 이같이 데이터를 모을 수 있는 분야는 많지 않다. 설령 모으더라도 끊임없이 변하는 작업 환경과 공정에 맞춰 AI의 작동 방식을 수정하기도 쉽지 않다. 수천년간 거의 동일한 규칙 하에 대국이 이뤄지는 바둑과 다른 점이다.

로봇은 범용성의 문제에 부딪힌다. MIT 보고서는 도넛용 로봇팔을 예로 들었다. 현재 로봇기술은 도넛을 집어 초콜릿 소스통에 담아 알맞은 소스를 묻힌 뒤 고객에게 서비스할 수 있을만큼 섬세한 로봇팔을 만들었다.

하지만 이같은 로봇팔을 그대로 농산물이나 건설 자재 운반에 투입할 수는 없다. 각각의 용도에 맞는 로봇팔을 별도로 만들거나 구입해야 한다. 인간 노동에 비해 복잡한 관리체계와 높은 비용을 필요로 하는 부분이다.

MIT 보고서는 이같은 판단을 근거로 대부분의 AI와 로봇은 기존 근로 영역에서 인간 노동의 생산성을 높이는 결과로 이어질 것으로 전망했다. 이는 필연적으로 일자리의 증가를 낳는다는 것이 보고서의 설명이다.

생산성이 높아지면서 전체 경제의 산출이 늘어나고 이는 필연적으로 소비 증가로 이어진다는 것이다. 소비 수준이 높아지면서 과거에는 없던 새로운 서비스와 재화가 나타나고 해당 분야에서 추가 고용이 발생할 것이라는 설명이다.


기술 발전과 일자리의 관계는 오랜 기간을 놓고 판단하면 더욱 명확해진다. MIT 조사에 따르면 2018년에 존재하는 일자리 중 63%는 1940년에는 존재하지 않았다. 컴퓨터 산업과 태양광 에너지, TV네트워크 등과 관련된 직업은 새로운 기술을 기반으로 출현했다.

새로 생기는 일자리의 대부분은 기존 일자리보다 더 높은 숙련도를 요구하고 그만큼 더 많은 급여를 지급한다. 경제 고도화가 국민 생활수준 상승으로 연결되는 구조다.

MIT 보고서는 “1980년대와 1990년대에 개발된 컴퓨터 및 인터넷 기술이 최근 20년간 양질의 일자리 증가로 이어지고 있다”며 “AI와 로봇 분야의 혁신은 미래 20년의 일자리 혁신과 창출로 이어질 것”이라고 내다봤다.

 인간 노동 대체 힘든 로봇

 MIT 팀은 현장조사를 통해 AI와 로봇이 실제로 어느 정도의 변화를 이끌어내고 있는지 조사했다. 제조업과 자율주행, 의료산업, 보험업종 등에 대해서다.

우선 제조업에서는 딥러닝을 적용하기에는 축적된 데이터가 기대에 못 미친다는 점을 문제로 든다. 각종 공정 및 공구에 센서를 부착해 데이터를 수집하는 기업들이 늘고 있지만 데이터 부족 문제는 근본적으로 해결되기 어렵다. 시대 변화에 따라 계속 생산제품이 바뀌며 공정을 계속 수정해야 하는데 그에 맞는 데이터는 확보하기 어렵기 때문이다.

이같은 문제는 대기업보다 중소기업에 더 큰 걸림돌이 된다. 대기업에 비해 더 다양한 제품을 소량으로 생산해야하는 특성상 데이터를 쌓기가 쉽지 않기 때문이다. 제품에 따라 공정을 전환하는 것도 쉽지 않다.

생산 체계 전반을 로봇 도입에 맞춰 수정해야 한다는 점도 숙제다. 로봇이 최대한 효율을 낼 수 있도록 공정 흐름부터 인력 배치까지 바꿔야 하기 때문이다. 미국 중부 일대에서 500인 이하 제조업체 34곳을 분석한 MIT 연구팀은 해당 작업에 들어가는 비용이 로봇 구입 비용의 9배 이상이라고 진단했다.

공정 지능화를 하더라도 기존 인력을 줄이는 것보다 훈련시키는 쪽이 선호됐다. 관련 전문 지식을 신규로 고용하는데 드는 비용이 훈련비용보다 높기 때문이다. 생산 현장을 잘 아는 기존 인력을 훈련시켜 각종 지능화 공정을 제어하는 것이 보다 확실한 성과를 보장한다는 점도 이유다.

 자율주행으로 생길 새로운 직업들

자율주행 역시 앞으로 최소 10년 이상은 택시나 트럭 운전 기사의 일자리를 위협하지 못할 전망이다. 완전 자율주행보다는 운전자 보조를 중심으로 관련 기술이 발전하고 있어서다.

이미 1980년대에 보편화된 항공기의 자동운항 장치가 대표적이다. 장치가 도입되면서 파일럿의 업무 부담이 줄었지만 이·착륙 등 중요한 단계에서는 여전히 인간의 손길이 필요하다. MIT는 이같은 공존이 예상한 것보다 오래 지속될 수 있다고 내다봤다.

MIT 리포트는 “자율주행 기술이 경쟁하는 것은 운전자가 아니라, 운전자와 함께 유기적으로 작동하는 운전자 보조 시스템”이라며 “이같은 시스템의 도움을 받는 운전자를 신뢰성과 안전성 등에서 자율주행 기술이 넘어서는데는 상당한 시간이 걸릴 것”이라고 분석했다.

운전자 보조시스템을 중심으로 자율주행 기술 적용이 확대되면서 새로운 직업도 나타날 것으로 예상된다. 이미 자율주행 기술 개발업체들에 존재하는 ‘사이트 슈퍼바이저’라는 것이다.

자율주행 기술은 일종의 운전 서비스인만큼 서비스 과정에서 발생하는 문제를 청취하고 이를 회사에 전달할 사람이 필요하다. 자율주행의 도움을 받는 운전자와 해당 기술을 개발한 엔지니어를 연결하는 업무다.

자율주행에 필요한 다양한 센서를 점검하고 관리하는 인력도 필요하다. 안전 운전에 직결되는만큼 잦은 점검이 필요하고, 완전히 무인화하기에도 부담이 있다.

MIT는 이들 직업들이 중산층 이하의 계층에 새로운 일자리를 만들어 줄 것으로 예상했다. 어느 정도의 급여를 보장하지만 4년제 대학을 졸업해야할 정도의 숙련도를 요구하지 않는다는 이유에서다.

 챗봇도 인간 상담사 대체 못해

의료산업 역시 마찬가지다. 부가가치가 높은 산업인만큼 2000년대 초반부터 각종 첨단기술 적용이 확대되고 있지만 실제 일자리는 늘고 있다. 간호사 등 관련 인력 숫자가 늘어나는 것은 물론 처우도 좋아지고 있다.


고령화와 결합해 성장하는 의료 산업에서 AI 등은 일자리를 줄이는 대신 늘어나는 인력의 생산성을 한층 끌어올리는 역할을 하고 있다는 분석이다.

여러 분야에서 AI가 적극적으로 도입된 보험업계 역시 마찬가지다. MIT 팀이 접촉한 한 보험회사(이 리포트에서 모든 업체는 익명으로 처리된다)는 20여명이 일하는 법무 감사팀에 AI 알고리즘을 도입했다.

법무 감사팀은 손해사정과 보험금 지급 등의 과정에서 고용된 수천명의 변호사들에게 재대로 급여가 지급되고 있는지를 살피는 것이 주업무다. AI알고리즘이 도입되며 업무의 85%는 사람이 따로 살피지 않고도 이뤄질 수 있게 됐다.

하지만 해당 팀 인력의 85%가 쓸모 없어진 것은 아니다. 이들은 알고리즘에 맡길 수 없는 보자 복잡하고 중요한 업무에 집중했다. 덕분에 회사는 수백억달러의 비용을 절감할 수 있게 됐다.

알고리즘이 향상되며 인간 상담사를 대체할 것으로 기대됐던 챗봇(모바일 메신저 등을 통해 고객과 상담하는 AI 알고리즘) 역시 마찬가지다. 보험사들은 모바일 및 온라인 활용도가 높은 고객들의 비중이 높아지면서 챗봇이 사람을 대신해 많은 상담을 처리할 것으로 기대했다.

하지만 고객들은 실제 보험 계약 전에는 인간 상담사와 통화하기를 원했다. 챗봇 도입에도 인간 상담사의 일자리가 줄지 않은 이유다. 기술 접근성이 높아지는 것만으로 사용자 경험이 바뀌지 않는다는 것을 보여주는 사례다.

 “수만개 작은 혁신 누적돼야 AI발 일자리 혁명 올 것”

AI와 로봇의 일자리 대체가 느리거나 현실화되지 않는만큼 우리는 안심하면 될까. MIT 리포트는 사회 전체의 일자리 숫자가 줄지는 않겠지만 사라지거나 새로운 모습으로 바뀌는 일자리는 크게 늘 것으로 예상했다.

특히 인사와 재무 등 지원 부문에서 과거 일자리가 줄어들 수 있을 것으로 내다봤다. 의료산업에서만 해당 분야에서 50~60%의 일자리가 사라질 수 있다는 예측이다. AI에 따른 일자리 변화 속도가 상대적으로  더딜 것으로 예상되는 10~20년동안 개인과 사회가 준비를 해야할 부분이다.

MIT는 이 기간동안 재교육이 현실적으로 불가능한 고령 인력을 질서 있게 은퇴시키면서 젊은 인력은 적극적으로 재교육해야 한다고 했다. 리포트에서는 산업현장에서 CNC 선반을 다루면서 최근 CAD와 CAM 소프트웨어 기술을 익힌 근로자의 말을 소개했다.

“기술이 한발짝 발전하면 근로자도 한발짝 전진해야 합니다.”

다만 4~5년 전 4차산업 혁명 열풍이 강하게 불었던 것에 비해 현재의 상황은 기대에 못 미치는 것이 사실이다. MIT 보고서에 나타나 있듯 AI와 로봇의 현장 적용은 곳곳에서 좌절하고 있으며 도입 속도는 정체되고 있다.

여기에 대해 MIT 보고서는 다음과 같이 설명한다.

“기업가와 엔지니어, 벤처 캐피털리스트와 언론인들은 자신들이 바라는 미래를 보여주고 다른 이들을 설득하는 사람들이다. 이를 통해 그들은 실제로 세상을 자신의 비전에 맞춰 바꾼다.

하지만 실제로 재화나 서비스를 생산하고 유통하는 이들은 공장 및 서비스 분야의 관리자들과 실제 생산 과정에 참여하는 수천개의 직종에 있는 사람들이다. 이들이 진짜 경제를 굴러가게 한다.

매일 결과물을 만들고 여기에 책임져야 하는 이들은 새로운 기술에 회의적일 수 밖에 없다. 새로운 기술로 소개된 것들의 대부분은 현장에서 제대로 작동하지 않았기 때문이다.

결국 AI와 로봇 등이 개별 업종의 모습을 바꾸는 데까지는 수만개의 작은 실천들이 누적되야 가능하다. 해당 기술의 잠재력으로 일상적인 업무의 개선을 시도할 수 있는 현장 인력들의 용기 있는 실천 말이다.”보고서 원문은 기자의 개인 페이스북을 방문하면 확인할 수 있다. 네이버 등 포털용 기사에 전화번호와 링크를 게시하면 광고로 인정돼 뉴스 송출사가 불이익을 받는 문제 때문이다.

Best wiki themes

Best wiki style themes

https://colorlib.com/wp/wordpress-wiki-themes/

1) Lore

  • dashboard home
  • knowledge base -> category archive

1) Knowledge Base

  • love the home page overview page

2) flatbase minimal

3) HelpGuru

4) Knowledge Press

 

Dante theme
https://themeforest.net/item/dante-responsive-multipurpose-wordpress-theme/6175269

classic wordpress wiki style
https://codecanyon.net/item/minervakb-knowledge-base-for-wordpress-with-analytics/19185769

Blue version is what I like. Default demo is also not bad
https://codecanyon.net/item/knowledge-base-helpdesk-wiki-wordpress-plugin/5758910

Super lightweight and simplistic
https://wordpress.org/themes/mywiki/

Good guide to follow
https://wpengine.com/resources/how-to-create-wordpress-wiki/

Flatbase (I like the minimalist version)
https://themeforest.net/item/flatbase-a-responsive-knowledge-basewiki-theme/7264664?

This one looks lke Confluence
https://demo.herothemes.com/wikipress/

WordPress Guide
https://wpengine.com/resources/how-to-use-wordpress/

A different take on the future: 未來

Coming into the office today, this thought – or rather, this word – popped into my head.

The word future in Korean – 미래 – is merely the surface representation of the Hanja (Chinese characters) 未來 (みらい in Japanese; wèilái in Mandarin Chinese). And I started thinking about the meaning of the individual characters.

The first character 未 is used often as the first syllable in a two-syllable word in Korean to denote ‘not’ or ‘un-‘, effectively negating or diminishing the effect or meaning of the following syllable. I venture a guess to say that the character is used similarly in Japanese and Chinese, although I cannot say with absolute certainty as I am not well-read enough nor a native speaker in those languages.

Some examples of this character in use are as follows:
미흡 (未洽) – inadequate, insufficient
미숙 (未熟) – immature

And the second character of our word at the outset is 來, meaning ‘to come’. Now comes the kicker. In my mind, I got thinking about the semantic communion of these two characters, side by side. Perhaps a literal translation could be rendered as ‘un-come’ or ‘not-come’. A more convenient construal – and philosophical – could be ‘that which has not yet come’.

This is the more natural meaning that occurred in my mind as I was walking on a quiet alleyway to the office during a Thursday during Chuseok (Korean Thanksgiving) week.

And I kind of liked it because it has something of a philosophical meaning to it. Perhaps even a deterministic ring to it. The future, in the Chinese, is something that has not come yet. In time, it will come.

As soon as I got into the office, I looked up the etymology of the word ‘future’. Dictionary.com and the online Oxford English dictionaries traced the etymology of the now English word future back up to Latin fūtūrus, which apparently means ‘about to be’, coming from the future participle of the verb ‘to be’ – esse. The online Oxford English dictionary also noted that the future participle form of esse comes from the stem -fu, which ultimately came from a base meaning of ‘grow, become‘. So in that sense, the connotation of the word future in English can be construed as being ‘about to grow’ or ‘about to become’. Of course, these are all my own conjectures and interpretations, which are all subservient to any rectification or adjustment.

In all, it intrigues me to ponder in what different – yet similar – ways the Latin and Chinese captured into writing that concept of what comes next in the changing states of our lives. The Latin seems to say that with the passing of time, we grow or we become: we change with the times, and hopefully for the better. And the Chinese seems to say that the future is something that is not yet come, but inevitably will, so long as the time continues its relentless march. The Latin kind of has a sort of optimistic glow or outlook on what the future holds, while I feel that the Chinese gives off a sense of mystery and curious pondering of what that which will befall me going forward. I like this kind of thing. It feels to me like etymology with sensibilities. And etymology is after all, a history of a people’s outlook on life, so long as words can be said to capture the sense of what people thought and felt at the time.

TIL how to install packages using Anaconda Navigator

To do my web crawling, I started using Selenium,which is a Python module for doing web crawling.

I installed it from my command prompt by doing ‘pip install selenium’, and Selenium was working just fine in PyCharm and Python shell. But when I tried doing ‘import selenium’ in a Jupyter notebook, I kept getting a module not found error.

It turned out to be a Python path issue. In short, Selenium had already been installed, but Jupyter could not import Selenium because it wasn’t pointing to the path where Selenium had been installed.

The usual digging led me to this helpful thread, but in the end I couldn’t get Selenium to work on my Jupyter notebook by following the instructions provided.

Fortunately, an intern told me about Anaconda Navigator, a GUI-based application that could be used to install packages for the (virtual) environment running Jupyter notebook. As long as you have anaconda installed, you just had to run the below command to install Navigator:

So I tried searching for the Selenium package on Anaconda Navigator, but the search returned no results.

 

 

After doing some digging, I came across this site that had a piece of code I could run to get Selenium:

conda install -c conda-forge selenium

After running this code in my command prompt, I got selenium to work on Jupyter notebook!

Now I could use Selenium and Chrome Driver in a Jupyter notebook just fine.

TIL great explanation of named entity recognition (NER)

I came across a great explanation of named entity recognition (NER).

Since my startup is building a chatbot as well, I’ve heard the term NER being tossed around, and this link helped to clarify what exactly NER is.

Below is a definition of NER from the site:

NER is a subtask of information extraction that seeks to locate and classify named entities in text into predefined categories such as the names of persons, organizations, locations, expressions of times, quantities, monetary values, percentages, etc.

I figured that NER will be very important for enabling a chatbot to derive semantic information from a conversation.

This hierarchy below shows a possible categorization of entities:

The four general types of entities in the image are as follows:

  • numerals: numbers

  • patterns: strings that have predictable patterns and thus can be captured using regular
    expressions (e.g. email addresses, phone numbers, etc.)

  • temporal: time and date

  • textual: strings that have been pre-defined in a dictionary (e.g. names of cities, user-location, etc.)

Some important parameters required for entity detection:

  • message: the actual message from user

  • entity name: If a dictionary is used, this entity name is important.

  • structured value: value grabbed from structured text

  • fallback value: this is the value that is returned in the event that detection logic fails to grab any value from either structured value or message.

  • bot message: previous message from the bot or agent.

TIL how to indent within WordPress code snippet without plugin

After tons and tons of googling, and almost giving up, I finally found out how to do two things:

  1. Add code snippets / blocks to WordPress posts with syntax highlighting
  2. How to indent lines

All of this without installing any plugins!

To begin the code snippet / block, use the following code:

And to indent, add the ASCII code for <tab> which is :

The above code will be rendered as follows:

for x in y:
	print x

TIL to use replace() to eliminate commas in numbers

I learned something so simple that it boggles the mind why I didn’t get it the first time. Well, I guess it goes to show how much of a novice I still am. While doing some web scraping/crawling, I needed to grab a string of number+text shown on the webpage (the string shown in the red box in image below:

I had to grab that string because it indicated the total number of articles within that sub-directory.

I needed a way to tell my for loop to to iterate over n pages/articles, and I thought that number would make the job easier.

So I grab the string, which looks like ‘2,443건’. Now I needed to do two things:
1. Strip away the final text ‘건’, which is a measure word for counting articles, incidents, etc.
2. Remove the comma as Python cannot process the commas in numbers as we do

Being the tyro that I am, I didn’t know what would be the best way to do #1. Fortunately, I got some help from someone, who suggested that I try doing the following:

Which of course, worked!!! I had learned about [:-1] on strings to capture range of characters in string up to the final character – exclusive – but it was my first time to actually try using it in practice! But it served its purpose, and I was glad to learn something new of course.

Now on to no. #2. The above example is a three-digit number, so there are no commas, but in the real web crawling example that I did, the number returned was 2,443, which of course has a comma. I had to find a way to strip the comma and return just the number.

A quick google search led me to multiple Stack Overflow pages that addressed the very issue I had. The solution was surprisingly simple: just use the replace() string function to replace the comma with a null space.

So I went about coding it up, and the following is what I did first:

asdf = '2,443건'
asdf.replace(',','')
asdf

But when I ran this code, the result I got was still ‘2,443건’. The comma still remained!

I didn’t get what was going on, and I enlisted the help of someone much more skilled at coding than I am. He was quick to point out that the reason why I was still getting ‘2,443건’ with the comma and all was because the return value of a replace() function must be stored in a variable. So I did the following to rectify this and it worked:

asdf = '2,443건'
asdf = asdf.replace(',','')
asdf

Voilà! It’s all in the details…

Once I managed to do #2, I got the code to work and successfully scraped exactly that number of pages/articles from the sub-directory in question. That felt good.

But when I ran the code on a sub-directory with a lot more articles, the code kept running and ended up scraping nearly double the amount of the actual articles in the sub-directory. I suppose this means that somewhere along the line, the code is scraping the same content over and over again. Need to do some code review to see where things are going wrong.

Meanwhile, I’m going to be looking into recursive call to do this kind of web scraping on a broader level.